Mercurial > pub > Impl
changeset 128:08753833173d
Fixed a error handling issue in JSON output: errors are correctly transfered
A complete documentation for a IMPL::Web::Application::ControllerUnit
author | wizard |
---|---|
date | Tue, 15 Jun 2010 02:41:07 +0400 |
parents | 0dce0470a3d8 |
children | e4f15cbc3f1a |
files | Lib/IMPL/Web/Application/ControllerUnit.pm Lib/IMPL/Web/QueryHandler/JsonFormat.pm |
diffstat | 2 files changed, 26 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- 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<InvokeAction($method,$action)>, который создает/восстанавливает контекст транзакции. -Транзакции на данный момент делятся на простые и формы. +Транзакции на данный момент делятся на простые и формы. Различные типы транзакций выполняются при помощи +различных оберток (C<TransactionWrapper> и C<FormWrapper>). Каждая обертка отвечает за конструирование +экземпляра объекта и вызов метода для выполнения транзакции, а также за возврат результата выполнения. =head2 Простые транзакции @@ -180,7 +182,7 @@ Для постороенния DOM документа используется схема. При этом становятся доступны дополнительные свойства C<formData>, C<formSchema>, C<formErrors>. -Результат выполнения транзакции не возвращается напрямую пользователю, а включается в общий ответ, который +Результат выполнения транзакции не возвращается наверх напрямую, а включается в структуру, которая выглядит следующим образом =begin code @@ -234,7 +236,7 @@ =item C<formErrors> -Ошибки верификации данных, если таковые были +Ссылка на массив с ошибками при проверки формы. =back @@ -244,16 +246,29 @@ =item C<[get] application> +Объект приложения, которое обрабатывает запрос. + =item C<[get] query> +Текущий запрос. + =item C<[get] response> +Текущий ответ. + =item C<[get] formData> +C<IMPL::DOM::Document> документ с данныим, если данный запрос является формой. + =item C<[get] formSchema> +C<IMPL::DOM::Schema> документ со схемой формы данного запроса. + =item C<[get] formErrors> +Ошибки верификации данных, если таковые были. Обычно при наличии ошибок в форме, транзакция +не выполняется, а эти ошибки передаются в ответ. + =item C<InvokeAction($method,$action)> Конструирует контекст выполнения транзакции, может быть переопределен для конструирования контекста по
--- 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 {