Mercurial > pub > Impl
view Lib/IMPL/Web/Application/ResourceInterface.pm @ 229:47f77e6409f7
heavily reworked the resource model of the web application:
*some ResourcesContraact functionality moved to Resource
+Added CustomResource
*Corrected action handlers
author | sergey |
---|---|
date | Sat, 29 Sep 2012 02:34:47 +0400 |
parents | |
children | 6d8092d8ce1b |
line wrap: on
line source
package IMPL::Web::Application::ResourceInterface; use strict; use IMPL::require { Exception => 'IMPL::Exception', NotImplException => '-IMPL::NotImplementedException' }; sub InvokeHttpVerb { die NotImplException->new(); } sub FetchChildResource { die NotImplementedException->new(); } 1; __END__ =pod =head1 NAME C<IMPL::Web::Application::ResourceInterface> - Интерфейс для Web-ресурса. =head1 SYNOPSIS =begin code package MyApp::Web::Resource; use IMPL::lang qw(:constants); use IMPL::declare { require => { NotAllowedException => 'IMPL::Web::NotAllowedException' }, base => [ 'IMPL::Object' => undef, 'IMPL::Web::Application::ResourceInterface' => undef ], props => [ model => PROP_ALL ] }; sub InvokeHttpVerb { my ($this,$verb,$action) = @_; if($verb eq 'GET') { return $this->model; } else { die NotAllowedException->new(allow => 'GET'); } } sub FetchChildResource { # no child resources return; } =end code =head1 DESCRIPTION Данный модуль объявляет только интерфейс, тоесть в нем есть заглушки для функций которые необходимо реализовать. Для создания класса, который может быть использоваться для создания Web-ресурсов нужно унаследовать данный интерфейс и реализовать его методы. =head1 MEMBERS =head2 C<InvokeHttpVerb($verb,$action)> Выполняет операцию над ресурсом и возвращает результат ее выполнения. Результатом может быть произвольный объект, который будет передан по цепочке обработчиков приложения для формирования ответа вервера, либо C<IMPL::Web::HttpResponse>, который описывает (не обязательно полностью) ответ. В любом случае результат будет передан далее в цепочку обработчиков и может быть изменен. =head2 C<FetchChildResource($childId)> Используется для получения дочернего ресурса (который содержится в данном контейнере). Метод должен возвращать либо Web-ресурс C<IMPL::Web::Application::ResourceInterface>, либо C<undef> если дочерний ресурс не найден. =cut