# HG changeset patch # User wizard # Date 1276555267 -14400 # Node ID 08753833173d71f4a3a80b36eb21893a85238797 # Parent 0dce0470a3d80f42e814ec1c7a7cd0792179864c Fixed a error handling issue in JSON output: errors are correctly transfered A complete documentation for a IMPL::Web::Application::ControllerUnit diff -r 0dce0470a3d8 -r 08753833173d Lib/IMPL/Web/Application/ControllerUnit.pm --- a/Lib/IMPL/Web/Application/ControllerUnit.pm Fri Jun 11 20:21:07 2010 +0400 +++ b/Lib/IMPL/Web/Application/ControllerUnit.pm Tue Jun 15 02:41:07 2010 +0400 @@ -167,7 +167,9 @@ Для этого вызывается метод C, который создает/восстанавливает контекст транзакции. -Транзакции на данный момент делятся на простые и формы. +Транзакции на данный момент делятся на простые и формы. Различные типы транзакций выполняются при помощи +различных оберток (C и C). Каждая обертка отвечает за конструирование +экземпляра объекта и вызов метода для выполнения транзакции, а также за возврат результата выполнения. =head2 Простые транзакции @@ -180,7 +182,7 @@ Для постороенния DOM документа используется схема. При этом становятся доступны дополнительные свойства C, C, C. -Результат выполнения транзакции не возвращается напрямую пользователю, а включается в общий ответ, который +Результат выполнения транзакции не возвращается наверх напрямую, а включается в структуру, которая выглядит следующим образом =begin code @@ -234,7 +236,7 @@ =item C -Ошибки верификации данных, если таковые были +Ссылка на массив с ошибками при проверки формы. =back @@ -244,16 +246,29 @@ =item C<[get] application> +Объект приложения, которое обрабатывает запрос. + =item C<[get] query> +Текущий запрос. + =item C<[get] response> +Текущий ответ. + =item C<[get] formData> +C документ с данныим, если данный запрос является формой. + =item C<[get] formSchema> +C документ со схемой формы данного запроса. + =item C<[get] formErrors> +Ошибки верификации данных, если таковые были. Обычно при наличии ошибок в форме, транзакция +не выполняется, а эти ошибки передаются в ответ. + =item C Конструирует контекст выполнения транзакции, может быть переопределен для конструирования контекста по diff -r 0dce0470a3d8 -r 08753833173d Lib/IMPL/Web/QueryHandler/JsonFormat.pm --- a/Lib/IMPL/Web/QueryHandler/JsonFormat.pm Fri Jun 11 20:21:07 2010 +0400 +++ b/Lib/IMPL/Web/QueryHandler/JsonFormat.pm Tue Jun 15 02:41:07 2010 +0400 @@ -55,15 +55,6 @@ map { $this->Transform($_) } @$object ]; }, - 'IMPL::Exception' => sub { - my ($this,$object) = @_; - - return { - type => $object->type, - message => $object->Message, - arguments => $this->Transform(scalar $object->Args) - }; - }, -plain => sub { $_[1]; }, @@ -72,6 +63,14 @@ return "$object" unless $object->isa('IMPL::Object::Abstract'); + if ( $object->isa(typeof IMPL::Exception) ) { + return { + type => $object->typeof, + message => $object->Message, + arguments => $this->Transform(scalar $object->Args) + }; + } + my $propList = $propListCache{ref $object}; unless ( $propList ) { my %props = map {