Mercurial > pub > Impl
comparison 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 |
comparison
equal
deleted
inserted
replaced
228:431db7034a88 | 229:47f77e6409f7 |
---|---|
1 package IMPL::Web::Application::ResourceInterface; | |
2 use strict; | |
3 | |
4 use IMPL::require { | |
5 Exception => 'IMPL::Exception', | |
6 NotImplException => '-IMPL::NotImplementedException' | |
7 }; | |
8 | |
9 sub InvokeHttpVerb { | |
10 die NotImplException->new(); | |
11 } | |
12 | |
13 sub FetchChildResource { | |
14 die NotImplementedException->new(); | |
15 } | |
16 | |
17 1; | |
18 | |
19 __END__ | |
20 | |
21 =pod | |
22 | |
23 =head1 NAME | |
24 | |
25 C<IMPL::Web::Application::ResourceInterface> - Интерфейс для Web-ресурса. | |
26 | |
27 =head1 SYNOPSIS | |
28 | |
29 =begin code | |
30 | |
31 package MyApp::Web::Resource; | |
32 use IMPL::lang qw(:constants); | |
33 use IMPL::declare { | |
34 require => { | |
35 NotAllowedException => 'IMPL::Web::NotAllowedException' | |
36 }, | |
37 base => [ | |
38 'IMPL::Object' => undef, | |
39 'IMPL::Web::Application::ResourceInterface' => undef | |
40 ], | |
41 props => [ | |
42 model => PROP_ALL | |
43 ] | |
44 }; | |
45 | |
46 sub InvokeHttpVerb { | |
47 my ($this,$verb,$action) = @_; | |
48 | |
49 if($verb eq 'GET') { | |
50 return $this->model; | |
51 } else { | |
52 die NotAllowedException->new(allow => 'GET'); | |
53 } | |
54 } | |
55 | |
56 sub FetchChildResource { | |
57 # no child resources | |
58 return; | |
59 } | |
60 | |
61 =end code | |
62 | |
63 =head1 DESCRIPTION | |
64 | |
65 Данный модуль объявляет только интерфейс, тоесть в нем есть заглушки для функций | |
66 которые необходимо реализовать. | |
67 | |
68 Для создания класса, который может быть использоваться для создания Web-ресурсов | |
69 нужно унаследовать данный интерфейс и реализовать его методы. | |
70 | |
71 =head1 MEMBERS | |
72 | |
73 =head2 C<InvokeHttpVerb($verb,$action)> | |
74 | |
75 Выполняет операцию над ресурсом и возвращает результат ее выполнения. | |
76 Результатом может быть произвольный объект, который будет передан по цепочке | |
77 обработчиков приложения для формирования ответа вервера, либо | |
78 C<IMPL::Web::HttpResponse>, который описывает (не обязательно полностью) ответ. | |
79 В любом случае результат будет передан далее в цепочку обработчиков и может | |
80 быть изменен. | |
81 | |
82 =head2 C<FetchChildResource($childId)> | |
83 | |
84 Используется для получения дочернего ресурса (который содержится в данном | |
85 контейнере). Метод должен возвращать либо Web-ресурс | |
86 C<IMPL::Web::Application::ResourceInterface>, либо C<undef> если дочерний ресурс | |
87 не найден. | |
88 | |
89 =cut |