Mercurial > pub > Impl
diff 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 diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/IMPL/Web/Application/ResourceInterface.pm Sat Sep 29 02:34:47 2012 +0400 @@ -0,0 +1,89 @@ +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 \ No newline at end of file