228
|
1 package IMPL::Web::Application::OperationContract;
|
|
2 use strict;
|
|
3
|
|
4 use IMPL::declare {
|
|
5 base => [
|
|
6 'IMPL::Object' => undef,
|
|
7 'IMPL::Object::Autofill' => '@_'
|
|
8 ],
|
|
9 props => [
|
|
10 binding => PROP_ALL,
|
|
11 response => PROP_ALL
|
|
12 ]
|
|
13 };
|
|
14
|
|
15 sub Invoke {
|
|
16 my ($this, $resource, $httpAction) = @_;
|
|
17
|
|
18 if ($this->)
|
|
19
|
|
20 }
|
|
21
|
|
22 1;
|
|
23
|
|
24 __END__
|
|
25
|
|
26 =pod
|
|
27
|
|
28 =head1 NAME
|
|
29
|
|
30 C<IMPL::Web::Application::OperationContract> - Описание операции над
|
|
31 веб-ресурсом.
|
|
32
|
|
33 =head1 SYNOPSIS
|
|
34
|
|
35 =begin code
|
|
36
|
|
37 use IMPL::require {
|
|
38 'OperationContract' => 'IMPL::Web::Application::OperationContract',
|
|
39 'RedirectResponse' => 'IMPL::Web::Application::RedirectResponse'
|
|
40 };
|
|
41
|
|
42 my $operation = OperationContract->new(
|
|
43 bind => sub {
|
|
44 my ($resource,$model,$itemName) = @_;
|
|
45
|
|
46 return $model->findItem($itemName);
|
|
47 },
|
|
48 response => RedirectResponse->new(
|
|
49 locator => $relativeLocator
|
|
50 )
|
|
51 );
|
|
52
|
|
53 my $response = $operation->InvokeOperation($resource);
|
|
54
|
|
55 =end code
|
|
56
|
|
57 =head1 DESCRIPTION
|
|
58
|
|
59 Связывает методы предметной области с операциями над ресурсами. Для связи с
|
|
60 моделью используется функция, которой будут переданы параметры:
|
|
61
|
|
62 =over
|
|
63
|
|
64 =item C<$reousrce> Ресурс для которого выполняется операция
|
|
65
|
|
66 =item C<$model> Объект модели данных, связанный с данным ресурсом, тоже, что
|
|
67 и C<<>$resource->model>> только для краткости
|
|
68
|
|
69 =item C<$action> Контекст текущего C<HTTP> запроса.
|
|
70
|
|
71 =back
|
|
72
|
|
73 Результат выполнения будет передан дополнительному обработчику C<response>,
|
|
74 который выполнит необходимое преобразование.
|
|
75
|
|
76 =head1 MEMBERS
|
|
77
|
|
78 =cut |