annotate Lib/IMPL/Web/Application.pm @ 59:0f3e369553bd

Rewritten property implementation (probably become slower but more flexible) Configuration infrastructure in progress (in the aspect of the lazy activation) Initial concept for the code generator
author wizard
date Tue, 09 Mar 2010 02:50:45 +0300
parents a35b60b16a99
children b0c068da93ac
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
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 47
diff changeset
5 use base qw(IMPL::Object 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
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 47
diff changeset
13 BEGIN {
52
15d720913562 security in work
wizard@linux-odin.local
parents: 49
diff changeset
14 public property handlerError => prop_all;
57
bf59ee1cd506 Web application main class functionality
wizard
parents: 52
diff changeset
15 public property factoryAction => prop_all;
59
0f3e369553bd Rewritten property implementation (probably become slower but more flexible)
wizard
parents: 58
diff changeset
16 public property handlersQuery => prop_all | prop_list;
49
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 47
diff changeset
17 }
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 47
diff changeset
18
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 47
diff changeset
19 # custom factory
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 47
diff changeset
20 sub new {
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 47
diff changeset
21 my ($self,$file) = @_;
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 47
diff changeset
22
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 47
diff changeset
23 return $self->LoadXMLFile($file);
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 47
diff changeset
24 }
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 47
diff changeset
25
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 47
diff changeset
26 sub Run {
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 47
diff changeset
27 my ($this) = @_;
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 47
diff changeset
28
58
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
29 while (my $query = $this->FetchRequest()) {
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
30 my $response = new IMPL::Web::Application::Response(request => $query);
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
31
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
32 my $action = new IMPL::Web::Application::Action(
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
33 request => $query,
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
34 response => $response,
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
35 application => $this,
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
36 );
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
37
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
38 $action->ChainHandler($_) foreach $this->handlersQuery;
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
39
a35b60b16a99 Configuration, late activation
wizard
parents: 57
diff changeset
40 $action->Invoke();
49
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 47
diff changeset
41 }
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 47
diff changeset
42 }
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 47
diff changeset
43
57
bf59ee1cd506 Web application main class functionality
wizard
parents: 52
diff changeset
44 {
bf59ee1cd506 Web application main class functionality
wizard
parents: 52
diff changeset
45 my $hasFetched = 0;
bf59ee1cd506 Web application main class functionality
wizard
parents: 52
diff changeset
46
bf59ee1cd506 Web application main class functionality
wizard
parents: 52
diff changeset
47 sub FetchRequest {
bf59ee1cd506 Web application main class functionality
wizard
parents: 52
diff changeset
48 return undef if $hasFetched;
bf59ee1cd506 Web application main class functionality
wizard
parents: 52
diff changeset
49 $hasFetched = 1;
bf59ee1cd506 Web application main class functionality
wizard
parents: 52
diff changeset
50 return CGI->new();
bf59ee1cd506 Web application main class functionality
wizard
parents: 52
diff changeset
51 }
bf59ee1cd506 Web application main class functionality
wizard
parents: 52
diff changeset
52 }
bf59ee1cd506 Web application main class functionality
wizard
parents: 52
diff changeset
53
49
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 47
diff changeset
54 1;
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 47
diff changeset
55
52
15d720913562 security in work
wizard@linux-odin.local
parents: 49
diff changeset
56 __END__
15d720913562 security in work
wizard@linux-odin.local
parents: 49
diff changeset
57
49
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 47
diff changeset
58 =pod
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 =head1 SYNOPSIS
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 47
diff changeset
61
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 47
diff changeset
62 require MyApp;
59
0f3e369553bd Rewritten property implementation (probably become slower but more flexible)
wizard
parents: 58
diff changeset
63 MyApp->spawn('app.config')->Run();
49
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 47
diff changeset
64
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 47
diff changeset
65 =head1 DESCRIPTION
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 47
diff changeset
66
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 47
diff changeset
67 Зкземпляр приложения содержит в себе глобальные настройки, реализует контроллер запросов,
52
15d720913562 security in work
wizard@linux-odin.local
parents: 49
diff changeset
68 в качестве источника запросов используется CGI или иной совместимый модуль.
49
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 47
diff changeset
69
52
15d720913562 security in work
wizard@linux-odin.local
parents: 49
diff changeset
70 Процесс обработки запроса состоит из следующих частей
49
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 47
diff changeset
71
52
15d720913562 security in work
wizard@linux-odin.local
parents: 49
diff changeset
72 1. Получение cgi запроса
15d720913562 security in work
wizard@linux-odin.local
parents: 49
diff changeset
73 2. Вызов модуля для инициализации объекта действия
15d720913562 security in work
wizard@linux-odin.local
parents: 49
diff changeset
74 3. Инициализация контекста выполнения
15d720913562 security in work
wizard@linux-odin.local
parents: 49
diff changeset
75 4. Выполнение запроса
15d720913562 security in work
wizard@linux-odin.local
parents: 49
diff changeset
76 5. Преобразование полученных данных в тело ответа
15d720913562 security in work
wizard@linux-odin.local
parents: 49
diff changeset
77
15d720913562 security in work
wizard@linux-odin.local
parents: 49
diff changeset
78
15d720913562 security in work
wizard@linux-odin.local
parents: 49
diff changeset
79
49
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 47
diff changeset
80
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 47
diff changeset
81 =cut