diff Lib/IMPL/Web/Application/Action.pm @ 206:c8fe3f84feba

+IMPL::Web::Handlers::ViewSelector +IMPL::Web::Handlers::ErrorHandler *IMPL::Web::Handlers::RestController moved types mappings to ViewSelector
author sergey
date Thu, 03 May 2012 16:48:39 +0400
parents 4d0e1962161c
children 47f77e6409f7
line wrap: on
line diff
--- a/Lib/IMPL/Web/Application/Action.pm	Thu May 03 01:00:02 2012 +0400
+++ b/Lib/IMPL/Web/Application/Action.pm	Thu May 03 16:48:39 2012 +0400
@@ -6,6 +6,7 @@
 __PACKAGE__->PassThroughArgs;
 
 use IMPL::Class::Property;
+use Carp qw(carp);
 
 BEGIN {
     public property application => prop_get | owner_set;
@@ -46,6 +47,8 @@
 sub ChainHandler {
     my ($this,$handler) = @_;
     
+    carp "deprecated, use Application->handlers instead";
+    
     my $delegateNext = $this->_entryPoint();
     
     if (ref $handler eq 'CODE') {
@@ -125,103 +128,7 @@
 =head1 DESCRIPTION
 
 C<[Infrastructure]>
-
-Определяет порядок выполнения запроса. Запрос выполняется последовательным вызовом
-цепочки обработчиков, при этом обработчики сами вызывают следующие.
-Обработчики выполняются в порядке, обратном их добавлению.
-
-Типичная цепочка может быть такой, в порядке добавления
-
-=begin code
-
-IMPL::Web::QueryHandler::SecCallToMethod
-IMPL::Web::QueryHandler::AuthenticateCookie
-IMPL::Web::QueryHandler::PageFormat
-
-=end code
-
-что приведет к следующей последовательности
-
-=begin code
-
-# the application creates a new Action object 
-
-my $action = $application->actionFactory->new(
-    action => $application, # the application passes self
-    query => $query # current CGI query
-);
-
-# forms query handlers stack
-
-$action->ChainHandler($_) foreach qw (
-    IMPL::Web::QueryHandler::SecCallToMethod
-    IMPL::Web::QueryHandler::AuthenticateCookie
-    IMPL::Web::QueryHandler::PageFormat
-);
-
-# and finally invokes the action
-
-$action->Invoke() {
-    
-    # some internals
-    
-    IMPL::Web::QueryHandler::PageFormat->Invoke($action,$nextHandlerIsAuthHandler) {
-        
-        #some internals
-        
-        my $result = $nextHandlerIsAuthHandler() {
-            
-            # some internals
-
-            IMPL::Web::QueryHandler::AuthenticateCookie->Invoke($action,$nextHandlerIsSecCall) {
-                
-                # some internals
-                # do auth and generate security $context 
-                
-                # impersonate $context and call the next handler                
-                return $context->Impersonate($nextHandlerIsSecCall) {
-                    
-                    # some internals 
-                    
-                    IMPL::Web::QueryHandler::SecCallToMethod->Invoke($action,undef) {
-                        
-                        # next handler isn't present as it is the last hanler
-                        
-                        # some internals
-                        # calculate the $method and the $target from CGI request
-                                                
-                        IMPL::Security->AccessCheck($target,$method);
-                        return $target->$method();
-                        
-                    }
-                    
-                }
-                
-            }
-        }
-        
-        # some intenals
-        # formatted output to $action->response->streamBody        
-    }        
-}
-
-=end code
-
-или как альтернатива может быть еще
-
-=begin code
-
-IMPL::Web::QueryHandler::SecCallToMethod
-IMPL::Web::QueryHandler::AuthenticateCookie
-IMPL::Web::QueryHandler::Filter->new( target => IMPL::Transform::ObjectToJSON->new() , method => 'Transform')
-IMLP::Web::QueryHandler::JSONFormat
-
-
-=end code
-
-В данной цепочке также происходит вызов метода, но его результат потом преобразуется
-в простые структуры и передается JSON преобразователю. Таким образом модулю логики
-не требуется знать о выходном формате, всю работу проделают дополнительные фильтры.
+Свзяывет CGI запрос, приложение, орабатывающее его и ответ, который будет отправлен клиенту.
 
 =head1 MEMBERS
 
@@ -264,37 +171,4 @@
 что эта операция не возможна, если ответ частично или полностью
 отправлен клиенту. Тогда возникает исключение C<IMPL::InvalidOperationException>.
 
-=item C< ChainHandler($handler) >
-
-Добавляет новый обработчик в цепочку. Выполнение цепочки начинается с конца,
-тоесть последний добавленный будет выполнен первым. 
-
-=back
-
-=head1 HANDLERS
-
-=head2 subroutines
-
-=over
-
-=item CODE ref
-
-Ссылка на процедуру может являться обработчиком, при этом функция будет вызвана с
-двумя параметрами: ссылкой на action объект, и точкой входа следующего обработчика.
-
-=item Method Name
-
-Имя метода, передается в виде строки. У текущего объекта action ищется метод с
-указанным именем, после чего используется ссылка на этот метод для вызова с двумя
-параметрами: ссылкой на action объект, и точкой входа следующего обработчика.
-
-Получается вызов идентичный следующему C<< $action->MethodName($nextHandler) >>; 
-
-=back 
-
-=head2 C< IMPL::Web::QueryHandler >
-
-Любой объект наследованный от C< IMPL::Web::QueryHandler > может быть
-использован в качестве обработчика запроса
-
 =cut