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 {