annotate Lib/IMPL/Web/Application.pm @ 134:44977efed303

Significant performance optimizations Fixed recursion problems due converting objects to JSON Added cache support for the templates Added discovery feature for the web methods
author wizard
date Mon, 21 Jun 2010 02:39:53 +0400
parents 06a34c197b05
children c5bc900eefd3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
49
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 47
diff changeset
1 package IMPL::Web::Application;
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 47
diff changeset
2 use strict;
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 47
diff changeset
3 use warnings;
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 47
diff changeset
4
60
b0c068da93ac Lazy activation for the configuration objects (final concept)
wizard
parents: 59
diff changeset
5 use base qw(IMPL::Config IMPL::Object::Singleton);
58
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
6
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
7 require IMPL::Web::Application::Action;
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
8 require IMPL::Web::Application::Response;
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
9
49
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 47
diff changeset
10 use IMPL::Class::Property;
57
bf59ee1cd506 Web application main class functionality
wizard
parents: 52
diff changeset
11 use CGI;
49
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 47
diff changeset
12
60
b0c068da93ac Lazy activation for the configuration objects (final concept)
wizard
parents: 59
diff changeset
13 __PACKAGE__->PassThroughArgs;
b0c068da93ac Lazy activation for the configuration objects (final concept)
wizard
parents: 59
diff changeset
14
49
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 47
diff changeset
15 BEGIN {
52
15d720913562 security in work
wizard@linux-odin.local
parents: 49
diff changeset
16 public property handlerError => prop_all;
67
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
17 public property actionFactory => prop_all;
59
0f3e369553bd Rewritten property implementation (probably become slower but more flexible)
wizard
parents: 58
diff changeset
18 public property handlersQuery => prop_all | prop_list;
65
2840c4c85db8 Application configuration improvements
wizard
parents: 63
diff changeset
19 public property responseCharset => prop_all;
73
wizard
parents: 67
diff changeset
20 public property security => prop_all;
63
76b878ad6596 Added serialization support for the IMPL::Object::List
wizard
parents: 62
diff changeset
21 public property options => prop_all;
97
964587c5183c Added SecureCall to Web QueryHandlers stack
wizard
parents: 73
diff changeset
22 public property fetchRequestMethod => prop_all;
49
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 47
diff changeset
23 }
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 47
diff changeset
24
62
c64bd1bf727d Web application
wizard
parents: 60
diff changeset
25 sub CTOR {
c64bd1bf727d Web application
wizard
parents: 60
diff changeset
26 my ($this) = @_;
c64bd1bf727d Web application
wizard
parents: 60
diff changeset
27
67
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
28 $this->actionFactory('IMPL::Web::Application::Action') unless $this->actionFactory;
65
2840c4c85db8 Application configuration improvements
wizard
parents: 63
diff changeset
29 $this->responseCharset('utf-8') unless $this->responseCharset;
97
964587c5183c Added SecureCall to Web QueryHandlers stack
wizard
parents: 73
diff changeset
30 $this->fetchRequestMethod(\&defaultFetchRequest) unless $this->fetchRequestMethod;
964587c5183c Added SecureCall to Web QueryHandlers stack
wizard
parents: 73
diff changeset
31 $this->handlerError(\&defaultHandlerError) unless $this->handlerError;
62
c64bd1bf727d Web application
wizard
parents: 60
diff changeset
32 }
c64bd1bf727d Web application
wizard
parents: 60
diff changeset
33
49
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 47
diff changeset
34 sub Run {
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 47
diff changeset
35 my ($this) = @_;
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 47
diff changeset
36
58
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
37 while (my $query = $this->FetchRequest()) {
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
38
67
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
39 my $action = $this->actionFactory->new(
62
c64bd1bf727d Web application
wizard
parents: 60
diff changeset
40 query => $query,
58
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
41 application => $this,
65
2840c4c85db8 Application configuration improvements
wizard
parents: 63
diff changeset
42 );
2840c4c85db8 Application configuration improvements
wizard
parents: 63
diff changeset
43
97
964587c5183c Added SecureCall to Web QueryHandlers stack
wizard
parents: 73
diff changeset
44 eval {
964587c5183c Added SecureCall to Web QueryHandlers stack
wizard
parents: 73
diff changeset
45 $action->response->charset($this->responseCharset);
964587c5183c Added SecureCall to Web QueryHandlers stack
wizard
parents: 73
diff changeset
46
964587c5183c Added SecureCall to Web QueryHandlers stack
wizard
parents: 73
diff changeset
47 $action->ChainHandler($_) foreach $this->handlersQuery;
964587c5183c Added SecureCall to Web QueryHandlers stack
wizard
parents: 73
diff changeset
48
964587c5183c Added SecureCall to Web QueryHandlers stack
wizard
parents: 73
diff changeset
49 $action->Invoke();
964587c5183c Added SecureCall to Web QueryHandlers stack
wizard
parents: 73
diff changeset
50
964587c5183c Added SecureCall to Web QueryHandlers stack
wizard
parents: 73
diff changeset
51 $action->response->Complete;
964587c5183c Added SecureCall to Web QueryHandlers stack
wizard
parents: 73
diff changeset
52 };
964587c5183c Added SecureCall to Web QueryHandlers stack
wizard
parents: 73
diff changeset
53 if ($@) {
99
6dd659f6f66c Minor changes, DOM schema is in development (in the aspect of a forms)
wizard
parents: 97
diff changeset
54 my $e = $@;
129
e4f15cbc3f1a Fixed utf-8 problem
wizard
parents: 99
diff changeset
55 # we are expecting this method to be safe otherwise we can trust nothing in this wolrd
99
6dd659f6f66c Minor changes, DOM schema is in development (in the aspect of a forms)
wizard
parents: 97
diff changeset
56 $this->handlerError()->($this,$action,$e);
97
964587c5183c Added SecureCall to Web QueryHandlers stack
wizard
parents: 73
diff changeset
57 }
49
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 47
diff changeset
58 }
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 47
diff changeset
59 }
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 47
diff changeset
60
97
964587c5183c Added SecureCall to Web QueryHandlers stack
wizard
parents: 73
diff changeset
61 sub FetchRequest {
964587c5183c Added SecureCall to Web QueryHandlers stack
wizard
parents: 73
diff changeset
62 my ($this) = @_;
964587c5183c Added SecureCall to Web QueryHandlers stack
wizard
parents: 73
diff changeset
63
964587c5183c Added SecureCall to Web QueryHandlers stack
wizard
parents: 73
diff changeset
64 if( ref $this->fetchRequestMethod eq 'CODE' ) {
964587c5183c Added SecureCall to Web QueryHandlers stack
wizard
parents: 73
diff changeset
65 return $this->fetchRequestMethod->($this);
964587c5183c Added SecureCall to Web QueryHandlers stack
wizard
parents: 73
diff changeset
66 } else {
964587c5183c Added SecureCall to Web QueryHandlers stack
wizard
parents: 73
diff changeset
67 die new IMPL::Exception("Unknown fetchRequestMethod type",ref $this->fetchRequestMethod);
964587c5183c Added SecureCall to Web QueryHandlers stack
wizard
parents: 73
diff changeset
68 }
964587c5183c Added SecureCall to Web QueryHandlers stack
wizard
parents: 73
diff changeset
69 }
964587c5183c Added SecureCall to Web QueryHandlers stack
wizard
parents: 73
diff changeset
70
57
bf59ee1cd506 Web application main class functionality
wizard
parents: 52
diff changeset
71 {
bf59ee1cd506 Web application main class functionality
wizard
parents: 52
diff changeset
72 my $hasFetched = 0;
bf59ee1cd506 Web application main class functionality
wizard
parents: 52
diff changeset
73
97
964587c5183c Added SecureCall to Web QueryHandlers stack
wizard
parents: 73
diff changeset
74 sub defaultFetchRequest {
129
e4f15cbc3f1a Fixed utf-8 problem
wizard
parents: 99
diff changeset
75 my ($this) = @_;
57
bf59ee1cd506 Web application main class functionality
wizard
parents: 52
diff changeset
76 return undef if $hasFetched;
bf59ee1cd506 Web application main class functionality
wizard
parents: 52
diff changeset
77 $hasFetched = 1;
130
06a34c197b05 Added support for utf-8 and old versions of CGI module
wizard
parents: 129
diff changeset
78 my $query = CGIWrapper->new();
129
e4f15cbc3f1a Fixed utf-8 problem
wizard
parents: 99
diff changeset
79 $query->charset($this->responseCharset);
e4f15cbc3f1a Fixed utf-8 problem
wizard
parents: 99
diff changeset
80 return $query;
57
bf59ee1cd506 Web application main class functionality
wizard
parents: 52
diff changeset
81 }
bf59ee1cd506 Web application main class functionality
wizard
parents: 52
diff changeset
82 }
bf59ee1cd506 Web application main class functionality
wizard
parents: 52
diff changeset
83
97
964587c5183c Added SecureCall to Web QueryHandlers stack
wizard
parents: 73
diff changeset
84 sub defaultHandlerError {
964587c5183c Added SecureCall to Web QueryHandlers stack
wizard
parents: 73
diff changeset
85 my ($this,$action,$e) = @_;
964587c5183c Added SecureCall to Web QueryHandlers stack
wizard
parents: 73
diff changeset
86 warn $e;
964587c5183c Added SecureCall to Web QueryHandlers stack
wizard
parents: 73
diff changeset
87 if ( eval { $action->ReinitResponse(); 1; } ) {
964587c5183c Added SecureCall to Web QueryHandlers stack
wizard
parents: 73
diff changeset
88 $action->response->contentType('text/plain');
964587c5183c Added SecureCall to Web QueryHandlers stack
wizard
parents: 73
diff changeset
89 $action->response->charset($this->responseCharset);
964587c5183c Added SecureCall to Web QueryHandlers stack
wizard
parents: 73
diff changeset
90 $action->response->status(500);
964587c5183c Added SecureCall to Web QueryHandlers stack
wizard
parents: 73
diff changeset
91 my $hout = $action->response->streamBody;
964587c5183c Added SecureCall to Web QueryHandlers stack
wizard
parents: 73
diff changeset
92 print $hout $e;
964587c5183c Added SecureCall to Web QueryHandlers stack
wizard
parents: 73
diff changeset
93 $action->response->Complete();
964587c5183c Added SecureCall to Web QueryHandlers stack
wizard
parents: 73
diff changeset
94 }
964587c5183c Added SecureCall to Web QueryHandlers stack
wizard
parents: 73
diff changeset
95 }
964587c5183c Added SecureCall to Web QueryHandlers stack
wizard
parents: 73
diff changeset
96
130
06a34c197b05 Added support for utf-8 and old versions of CGI module
wizard
parents: 129
diff changeset
97 package CGIWrapper;
06a34c197b05 Added support for utf-8 and old versions of CGI module
wizard
parents: 129
diff changeset
98 use base qw(CGI);
06a34c197b05 Added support for utf-8 and old versions of CGI module
wizard
parents: 129
diff changeset
99
06a34c197b05 Added support for utf-8 and old versions of CGI module
wizard
parents: 129
diff changeset
100 use Encode;
06a34c197b05 Added support for utf-8 and old versions of CGI module
wizard
parents: 129
diff changeset
101
06a34c197b05 Added support for utf-8 and old versions of CGI module
wizard
parents: 129
diff changeset
102 sub param {
06a34c197b05 Added support for utf-8 and old versions of CGI module
wizard
parents: 129
diff changeset
103 my $this = shift;
06a34c197b05 Added support for utf-8 and old versions of CGI module
wizard
parents: 129
diff changeset
104
06a34c197b05 Added support for utf-8 and old versions of CGI module
wizard
parents: 129
diff changeset
105 if (wantarray) {
06a34c197b05 Added support for utf-8 and old versions of CGI module
wizard
parents: 129
diff changeset
106 my @result = $this->SUPER::param(@_);
06a34c197b05 Added support for utf-8 and old versions of CGI module
wizard
parents: 129
diff changeset
107
06a34c197b05 Added support for utf-8 and old versions of CGI module
wizard
parents: 129
diff changeset
108 return map Encode::is_utf8($_) ? $_ : Encode::decode($this->charset,$_,Encode::LEAVE_SRC), @result;
06a34c197b05 Added support for utf-8 and old versions of CGI module
wizard
parents: 129
diff changeset
109 } else {
06a34c197b05 Added support for utf-8 and old versions of CGI module
wizard
parents: 129
diff changeset
110 my $result = $this->SUPER::param(@_);
06a34c197b05 Added support for utf-8 and old versions of CGI module
wizard
parents: 129
diff changeset
111
06a34c197b05 Added support for utf-8 and old versions of CGI module
wizard
parents: 129
diff changeset
112 return Encode::is_utf8($result) ? $result : Encode::decode($this->charset,$result,Encode::LEAVE_SRC);
06a34c197b05 Added support for utf-8 and old versions of CGI module
wizard
parents: 129
diff changeset
113 }
06a34c197b05 Added support for utf-8 and old versions of CGI module
wizard
parents: 129
diff changeset
114
06a34c197b05 Added support for utf-8 and old versions of CGI module
wizard
parents: 129
diff changeset
115 }
06a34c197b05 Added support for utf-8 and old versions of CGI module
wizard
parents: 129
diff changeset
116
49
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 47
diff changeset
117 1;
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 47
diff changeset
118
52
15d720913562 security in work
wizard@linux-odin.local
parents: 49
diff changeset
119 __END__
15d720913562 security in work
wizard@linux-odin.local
parents: 49
diff changeset
120
49
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 47
diff changeset
121 =pod
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 47
diff changeset
122
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 47
diff changeset
123 =head1 SYNOPSIS
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 47
diff changeset
124
67
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
125 =begin code
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
126
49
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 47
diff changeset
127 require MyApp;
67
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
128
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
129 my $instance = spawn MyApp('app.config');
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
130
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
131 $instance->Run();
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
132
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
133 =end code
49
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 47
diff changeset
134
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 47
diff changeset
135 =head1 DESCRIPTION
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 47
diff changeset
136
73
wizard
parents: 67
diff changeset
137 C< use base qw( IMPL::Config IMPL::Object::Singleton )>
wizard
parents: 67
diff changeset
138
49
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 47
diff changeset
139 Зкземпляр приложения содержит в себе глобальные настройки, реализует контроллер запросов,
52
15d720913562 security in work
wizard@linux-odin.local
parents: 49
diff changeset
140 в качестве источника запросов используется CGI или иной совместимый модуль.
49
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 47
diff changeset
141
52
15d720913562 security in work
wizard@linux-odin.local
parents: 49
diff changeset
142 Процесс обработки запроса состоит из следующих частей
49
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 47
diff changeset
143
67
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
144 =over
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
145
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
146 =item 1
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
147
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
148 Получение cgi запроса
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
149
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
150 =item 2
52
15d720913562 security in work
wizard@linux-odin.local
parents: 49
diff changeset
151
67
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
152 Создание объекта C<IMPL::Web::Application::Action>
52
15d720913562 security in work
wizard@linux-odin.local
parents: 49
diff changeset
153
67
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
154 =item 3
52
15d720913562 security in work
wizard@linux-odin.local
parents: 49
diff changeset
155
67
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
156 Формирование цепочки вызовов при помощи C<< IMPL::Web::Application::Action->ChainHandler >>
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
157
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
158 =item 4
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
159
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
160 Выполнение запроса C<< IMPL::Web::Application::Action->Invoke >>
49
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 47
diff changeset
161
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 47
diff changeset
162 =cut
67
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
163
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
164 Также приложение поддерживает отложенное создание объектов, которые по первому обращению
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
165 к свойствам. Это реализовано в базовом классе C< IMPL::Configuration >. Для настройки
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
166 активаторов можно использовать свойство C<options>, в которое должен быть помещен хеш
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
167 со ссылками на активаторы, см. пример ниже C<CONFIGURATION>.
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
168
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
169 =head2 CONFIGURATION
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
170
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
171 Ниже приведен пример конфигурации приложения
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
172
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
173 =begin code xml
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
174
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
175 <?xml version="1.0" encoding="UTF-8"?>
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
176 <Application id='app' type="Test::Web::Application::Instance">
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
177
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
178 <!-- Begin custom properties -->
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
179 <name>Sample application</name>
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
180 <dataSource type='IMPL::Config::Activator' id='ds'>
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
181 <factory>IMPL::Object</factory>
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
182 <parameters type='HASH'>
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
183 <db>data</db>
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
184 <user>nobody</user>
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
185 </parameters>
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
186 </dataSource>
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
187 <securityMod type='IMPL::Config::Activator'>
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
188 <factory>IMPL::Object</factory>
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
189 <parameters type='HASH'>
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
190 <ds refid='ds'/>
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
191 </parameters>
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
192 </securityMod>
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
193 <!-- End custom properties -->
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
194
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
195 <!-- direct access to the activators -->
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
196 <options type="HASH">
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
197 <dataSource refid='ds'/>
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
198 </options>
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
199
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
200 <!-- Set default output encoding, can be changed due query handling -->
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
201 <responseCharset>utf-8</responseCharset>
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
202
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
203 <!-- Actions creation configuration -->
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
204 <actionFactory type="IMPL::Object::Factory">
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
205
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
206 <!-- Construct actions -->
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
207 <factory>IMPL::Web::Application::Action</factory>
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
208 <parameters type='HASH'>
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
209
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
210 <!-- with special responseFactory -->
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
211 <responseFactory type='IMPL::Object::Factory'>
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
212
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
213 <!-- Where resopnses have a special streamOut -->
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
214 <factory>IMPL::Web::Application::Response</factory>
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
215 <parameters type='HASH'>
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
216
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
217 <!-- in memory dummy output instead of STDOUT -->
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
218 <streamOut>memory</streamOut>
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
219
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
220 </parameters>
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
221 </responseFactory>
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
222 </parameters>
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
223 </actionFactory>
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
224
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
225 <!-- Query processing chain -->
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
226 <handlersQuery type="IMPL::Object::List">
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
227 <item type="IMPL::Web::QueryHandler::PageFormat">
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
228 <templatesCharset>cp1251</templatesCharset>
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
229 </item>
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
230 </handlersQuery>
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
231 </Application>
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
232
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
233 =end code xml
9f5795a10939 Documentation, minor fixes
wizard
parents: 65
diff changeset
234
73
wizard
parents: 67
diff changeset
235 =head1 MEMBERS
wizard
parents: 67
diff changeset
236
wizard
parents: 67
diff changeset
237 =over
wizard
parents: 67
diff changeset
238
wizard
parents: 67
diff changeset
239 =item C<[get,set] handlerError>
wizard
parents: 67
diff changeset
240
wizard
parents: 67
diff changeset
241 Обработчик который будет вызван в случае возникновения необработанной ошибки
wizard
parents: 67
diff changeset
242 в процессе работы приложения. После чего приложение корректно завершается.
wizard
parents: 67
diff changeset
243
wizard
parents: 67
diff changeset
244 =item C<[get,set] actionFactory>
wizard
parents: 67
diff changeset
245
wizard
parents: 67
diff changeset
246 Фабрика объектов, которая используется приложением, для создания объектов
wizard
parents: 67
diff changeset
247 типа C<IMPL::Web::Application::Action> при обработки C<CGI> запросов.
wizard
parents: 67
diff changeset
248
wizard
parents: 67
diff changeset
249 =begin code
wizard
parents: 67
diff changeset
250
wizard
parents: 67
diff changeset
251 my $action = $this->actionFactory->new(
wizard
parents: 67
diff changeset
252 query => $query,
wizard
parents: 67
diff changeset
253 application => $this,
wizard
parents: 67
diff changeset
254 );
wizard
parents: 67
diff changeset
255
wizard
parents: 67
diff changeset
256 =end code
wizard
parents: 67
diff changeset
257
97
964587c5183c Added SecureCall to Web QueryHandlers stack
wizard
parents: 73
diff changeset
258 =item C< [get,set] fetchRequestMethod >
964587c5183c Added SecureCall to Web QueryHandlers stack
wizard
parents: 73
diff changeset
259
964587c5183c Added SecureCall to Web QueryHandlers stack
wizard
parents: 73
diff changeset
260 Метод получения CGI запроса. Возвращает C<CGI> объект следующего запроса, если
964587c5183c Added SecureCall to Web QueryHandlers stack
wizard
parents: 73
diff changeset
261 запросов больше нет, то возвращает C<undef>. По-умолчанию использует C<defaultFetchRequest>.
964587c5183c Added SecureCall to Web QueryHandlers stack
wizard
parents: 73
diff changeset
262
964587c5183c Added SecureCall to Web QueryHandlers stack
wizard
parents: 73
diff changeset
263 Может быть как ссылкой на функцию, так и объектом типа C<IMPL::Web::Application::RequestFetcher>.
964587c5183c Added SecureCall to Web QueryHandlers stack
wizard
parents: 73
diff changeset
264
73
wizard
parents: 67
diff changeset
265 =item C< [get,set,list] handlersQuery >
wizard
parents: 67
diff changeset
266
wizard
parents: 67
diff changeset
267 Список обработчиков запросов, которые будут переданы созданному объекту-действию.
wizard
parents: 67
diff changeset
268
wizard
parents: 67
diff changeset
269 =item C< [get,set] responseCharset>
wizard
parents: 67
diff changeset
270
wizard
parents: 67
diff changeset
271 Кодировка ответа клиенту.
wizard
parents: 67
diff changeset
272
wizard
parents: 67
diff changeset
273 =item C< [get,set] security >
wizard
parents: 67
diff changeset
274
wizard
parents: 67
diff changeset
275 Объект C<IMPL::Web::Security>, для работы с инфраструктурой безопасности.
wizard
parents: 67
diff changeset
276
wizard
parents: 67
diff changeset
277 =item C< [get,set] options >
wizard
parents: 67
diff changeset
278
wizard
parents: 67
diff changeset
279 Обычно ссылка на хеш с настраиваемыми объектами, используется для возможности
wizard
parents: 67
diff changeset
280 програмной настройки активаторов, т.к. напрямую через свойства приложения получить
wizard
parents: 67
diff changeset
281 к ним доступ не получится.
wizard
parents: 67
diff changeset
282
wizard
parents: 67
diff changeset
283 =back
wizard
parents: 67
diff changeset
284
wizard
parents: 67
diff changeset
285 =cut