Mercurial > pub > Impl
comparison Lib/IMPL/Web/Application/Resource.pm @ 285:546957c50a36
*IMPL::Web::Handler::TTView Reworked template selection mechanism
*IMPL::Web::Application: refactoring
-Removed obsolete IMPL::Text modules
author | cin |
---|---|
date | Mon, 18 Feb 2013 02:55:59 +0400 |
parents | 4abda21186cd |
children | fe725fad2d90 |
comparison
equal
deleted
inserted
replaced
284:f2a6bc5f3184 | 285:546957c50a36 |
---|---|
56 unless $operation; | 56 unless $operation; |
57 | 57 |
58 # в случае, когда один ресурс вызывает HTTP метод другого ресурса, нужно | 58 # в случае, когда один ресурс вызывает HTTP метод другого ресурса, нужно |
59 # сохранить оригинальный resourceLocation | 59 # сохранить оригинальный resourceLocation |
60 $action->context->{resourceLocation} ||= $this->location; | 60 $action->context->{resourceLocation} ||= $this->location; |
61 | |
62 # это свойство специфично только для REST приложений. | |
63 # сохранение текущего ресурса не повлечет за собой существенных расходов, | |
64 # т.к. они просто освободятся несколько позже. | |
65 if(not $action->context->{resource}) { | |
66 $action->context->{resource} = $this; | |
67 $action->context->{environment} = sub { $this->PrepareEnvironment() }; | |
68 } | |
61 | 69 |
62 return _InvokeDelegate($operation, $this, $action ); | 70 return _InvokeDelegate($operation, $this, $action ); |
71 } | |
72 | |
73 sub PrepareEnvironment { | |
74 my ($this) = @_; | |
75 | |
76 my @stack; | |
77 my $env = {}; | |
78 | |
79 for(my $res = $this; $res; $res = $res->parent) { | |
80 push @stack,$res if $res->can('SetupEnvironment'); | |
81 } | |
82 | |
83 map $_->SetupEnvironment($env), reverse @stack; | |
84 | |
85 return $env; | |
63 } | 86 } |
64 | 87 |
65 # это реализация по умолчанию, базируется информации о ресурсах, содержащийся | 88 # это реализация по умолчанию, базируется информации о ресурсах, содержащийся |
66 # в контракте. | 89 # в контракте. |
67 sub FetchChildResource { | 90 sub FetchChildResource { |