diff Lib/IMPL/Web/Handler/RestController.pm @ 268:4abda21186cd

*refactoring IMPL::Web: added 'application' property to resources
author cin
date Mon, 21 Jan 2013 02:08:17 +0400
parents 32aceba4ee6d
children 04a093f0a5a6
line wrap: on
line diff
--- a/Lib/IMPL/Web/Handler/RestController.pm	Thu Jan 17 02:39:44 2013 +0400
+++ b/Lib/IMPL/Web/Handler/RestController.pm	Mon Jan 21 02:08:17 2013 +0400
@@ -57,7 +57,8 @@
 	
 	my $res = $this->resourceFactory->new(
 	   id => 'root',
-	   location => Locator->new(base => $action->application->baseUrl)
+	   location => Locator->new(base => $action->application->baseUrl),
+	   application => $action->application
 	);
 	
 	while(@segments) {
@@ -89,7 +90,7 @@
 
     <handlers type="ARRAY">
         <item type="IMPL::Web::Handler::RestController">
-            <rootResource type="My::App::Web::RootResource"/>
+            <resourceFactory>My::App::Web::RootResource"</resourceFactory>
         </item>
         <item type="IMPL::Web::Handler::JSONView" />
         <item type="IMPL::Web::Handler::SecureCookie" />
@@ -111,6 +112,11 @@
 Для чего используется метод
 C<< IMPL::Web::Application::ResourceInterface->FetchChildResource($childId) >>.
 
+Дерево ресурсов сущестувет независимо от обрабатываемого запроса, однако оно
+может полностью или частично загружаться в начале обработки запроса и
+освобождаться по окончании обработки запроса. Поэтому при получении дочерних
+ресурсов не участвует C<HTTP> запрос, он адресуется только последнему ресурсу.
+
 =begin text
 
 /music/audio.mp3 -> ['music','audio.mp3']
@@ -124,6 +130,11 @@
 Фабрика для создания корневого ресурса приложения, полученный ресурс должен
 реализовывать интерфейс C<IMPL::Web::Application::ResourceInterface>.
 
+Фабрика может сохранять ссылку на корневой ресурс и каждый раз не создавать
+его, а возвращать уже существующий. Это вполне оправдано, если хранение
+дерева ресурсов требует меньше ресурсов, чем его создание и при этом приложение
+остается в памяти между C<HTTP> запросами.
+
 =head2 C<[get]trailingSlash>
 
 Если данная переменная имеет значение C<true>, то слеш в конце пути к ресурсу