diff Lib/IMPL/Web/Application.pm @ 67:9f5795a10939

Documentation, minor fixes
author wizard
date Fri, 19 Mar 2010 20:06:12 +0300
parents 2840c4c85db8
children 2f31ecabe9ea
line wrap: on
line diff
--- a/Lib/IMPL/Web/Application.pm	Thu Mar 18 17:58:33 2010 +0300
+++ b/Lib/IMPL/Web/Application.pm	Fri Mar 19 20:06:12 2010 +0300
@@ -14,7 +14,7 @@
 
 BEGIN {
     public property handlerError => prop_all;
-    public property factoryAction => prop_all;
+    public property actionFactory => prop_all;
     public property handlersQuery => prop_all | prop_list;
     public property responseCharset => prop_all;
     public property options => prop_all;
@@ -30,7 +30,7 @@
 sub CTOR {
 	my ($this) = @_;
 	
-	$this->factoryAction('IMPL::Web::Application::Action') unless $this->factoryAction;
+	$this->actionFactory('IMPL::Web::Application::Action') unless $this->actionFactory;
 	$this->responseCharset('utf-8') unless $this->responseCharset;
 }
 
@@ -39,7 +39,7 @@
     
     while (my $query = $this->FetchRequest()) {
         
-        my $action = $this->factoryAction->new(
+        my $action = $this->actionFactory->new(
         	query => $query,
         	application => $this, 
         );
@@ -72,8 +72,15 @@
 
 =head1 SYNOPSIS
 
+=begin code
+
 require MyApp;
-MyApp->spawn('app.config')->Run();
+
+my $instance = spawn MyApp('app.config');
+
+$instance->Run();
+
+=end code
 
 =head1 DESCRIPTION
 
@@ -82,13 +89,94 @@
 
 Процесс обработки запроса состоит из следующих частей
 
-1. Получение cgi запроса
-2. Вызов модуля для инициализации объекта действия
-3. Инициализация контекста выполнения 
-4. Выполнение запроса
-5. Преобразование полученных данных в тело ответа
+=over
+
+=item 1
+
+Получение cgi запроса
+
+=item 2
 
+Создание объекта C<IMPL::Web::Application::Action>
 
+=item 3
 
+Формирование цепочки вызовов при помощи C<< IMPL::Web::Application::Action->ChainHandler >>
+
+=item 4
+
+Выполнение запроса C<< IMPL::Web::Application::Action->Invoke >>
 
 =cut
+
+Также приложение поддерживает отложенное создание объектов, которые по первому обращению
+к свойствам. Это реализовано в базовом классе C< IMPL::Configuration >. Для настройки
+активаторов можно использовать свойство C<options>, в которое должен быть помещен хеш
+со ссылками на активаторы, см. пример ниже C<CONFIGURATION>. 
+
+=head2 CONFIGURATION
+
+Ниже приведен пример конфигурации приложения
+
+=begin code xml
+
+<?xml version="1.0" encoding="UTF-8"?>
+<Application id='app' type="Test::Web::Application::Instance">
+	
+	<!-- Begin custom properties -->
+	<name>Sample application</name>
+	<dataSource type='IMPL::Config::Activator' id='ds'>
+		<factory>IMPL::Object</factory>
+		<parameters type='HASH'>
+			<db>data</db>
+			<user>nobody</user>
+		</parameters>
+	</dataSource>
+	<securityMod type='IMPL::Config::Activator'>
+		<factory>IMPL::Object</factory>
+		<parameters type='HASH'>
+			<ds refid='ds'/>
+		</parameters>
+	</securityMod>	
+	<!-- End custom properties -->
+	
+	<!-- direct access to the activators -->
+	<options type="HASH">
+		<dataSource refid='ds'/>
+	</options>
+	
+	<!-- Set default output encoding, can be changed due query handling -->
+	<responseCharset>utf-8</responseCharset>
+	
+	<!-- Actions creation configuration -->
+	<actionFactory type="IMPL::Object::Factory">
+		
+		<!-- Construct actions -->		
+		<factory>IMPL::Web::Application::Action</factory>
+		<parameters type='HASH'>
+			
+			<!-- with special responseFactory -->
+			<responseFactory type='IMPL::Object::Factory'>
+			
+				<!-- Where resopnses have a special streamOut -->
+				<factory>IMPL::Web::Application::Response</factory>
+				<parameters type='HASH'>
+				
+					<!-- in memory dummy output instead of STDOUT -->
+					<streamOut>memory</streamOut>
+					
+				</parameters>
+			</responseFactory>
+		</parameters>
+	</actionFactory>
+	
+	<!-- Query processing chain -->
+	<handlersQuery type="IMPL::Object::List">
+		<item type="IMPL::Web::QueryHandler::PageFormat">
+			<templatesCharset>cp1251</templatesCharset>
+		</item>
+	</handlersQuery>
+</Application>
+
+=end code xml
+