Mercurial > pub > Impl
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/IMPL/Web/Application/OperationContract.pm Thu Sep 13 17:55:01 2012 +0400 @@ -0,0 +1,78 @@ +package IMPL::Web::Application::OperationContract; +use strict; + +use IMPL::declare { + base => [ + 'IMPL::Object' => undef, + 'IMPL::Object::Autofill' => '@_' + ], + props => [ + binding => PROP_ALL, + response => PROP_ALL + ] +}; + +sub Invoke { + my ($this, $resource, $httpAction) = @_; + + if ($this->) + +} + +1; + +__END__ + +=pod + +=head1 NAME + +C<IMPL::Web::Application::OperationContract> - Описание операции над +веб-ресурсом. + +=head1 SYNOPSIS + +=begin code + +use IMPL::require { + 'OperationContract' => 'IMPL::Web::Application::OperationContract', + 'RedirectResponse' => 'IMPL::Web::Application::RedirectResponse' +}; + +my $operation = OperationContract->new( + bind => sub { + my ($resource,$model,$itemName) = @_; + + return $model->findItem($itemName); + }, + response => RedirectResponse->new( + locator => $relativeLocator + ) +); + +my $response = $operation->InvokeOperation($resource); + +=end code + +=head1 DESCRIPTION + +Связывает методы предметной области с операциями над ресурсами. Для связи с +моделью используется функция, которой будут переданы параметры: + +=over + +=item C<$reousrce> Ресурс для которого выполняется операция + +=item C<$model> Объект модели данных, связанный с данным ресурсом, тоже, что +и C<<>$resource->model>> только для краткости + +=item C<$action> Контекст текущего C<HTTP> запроса. + +=back + +Результат выполнения будет передан дополнительному обработчику C<response>, +который выполнит необходимое преобразование. + +=head1 MEMBERS + +=cut \ No newline at end of file