annotate Lib/IMPL/Web/Application/OperationContract.pm @ 228:431db7034a88

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