annotate Lib/IMPL/Web/Application/CustomResource.pm @ 245:7c517134c42f

Added Unsupported media type Web exception corrected resourceLocation setting in the resource Implemented localizable resources for text messages fixed TT view scopings, INIT block in controls now sets globals correctly.
author sergey
date Mon, 29 Oct 2012 03:15:22 +0400
parents abc7c26bf615
children 814d755e5d12
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
229
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
1 package IMPL::Web::Application::CustomResource;
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
2 use strict;
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
3
230
6d8092d8ce1b *reworked IMPL::Security
sergey
parents: 229
diff changeset
4 use IMPL::Const qw(:prop);
229
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
5
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
6 use IMPL::declare {
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
7 require => {
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
8 CustomResourceContract => 'IMPL::Web::Application::CustomResourceContract'
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
9 },
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
10 base => [
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
11 'IMPL::Web::Application::Resource' => '@_'
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
12 ]
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
13 };
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
14
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
15 __PACKAGE__->static_accessor(contractFactory => CustomResourceContract );
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
16 __PACKAGE__->static_accessor_own(_contractInstance => undef);
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
17
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
18 sub contractInstance {
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
19 my ($self) = @_;
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
20
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
21 $self = ref $self || $self;
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
22 $self->_contractInstance ? $self->_contractInstance : $self->InitContract();
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
23 }
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
24
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
25 sub InitContract {
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
26 my ($self) = @_;
230
6d8092d8ce1b *reworked IMPL::Security
sergey
parents: 229
diff changeset
27 $self->_contractInstance(
6d8092d8ce1b *reworked IMPL::Security
sergey
parents: 229
diff changeset
28 $self->contractFactory->new(
6d8092d8ce1b *reworked IMPL::Security
sergey
parents: 229
diff changeset
29 resourceFactory => $self,
6d8092d8ce1b *reworked IMPL::Security
sergey
parents: 229
diff changeset
30 resources => [ $self->GetChildResources() ]
6d8092d8ce1b *reworked IMPL::Security
sergey
parents: 229
diff changeset
31 )
6d8092d8ce1b *reworked IMPL::Security
sergey
parents: 229
diff changeset
32 );
229
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
33 }
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
34
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
35 sub GetChildResources {
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
36
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
37 }
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
38
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
39
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
40 1;
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
41
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
42 __END__
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
43
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
44 =pod
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
45
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
46 =head1 NAME
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
47
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
48 C<IMPL::Web::Application::CustomResource> - базовый класс для ресурсов,
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
49 реальзуемых в коде.
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
50
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
51 =head1 SYNOPSIS
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
52
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
53 =begin code
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
54
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
55 package MyApp::Web::Resources::ProfileResource;
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
56 use IMPL::declare {
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
57 base => [
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
58 'IMPL::Web::Application::CustomResource' => '@_'
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
59 ]
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
60 }
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
61
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
62 sub HttpGet {
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
63 my ($this) = @_;
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
64 return $this->model;
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
65 }
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
66
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
67 sub HttpPut {
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
68 my ($this,$action) = @_;
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
69
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
70 my $form = MyApp::Web::Schema::UpdateUser->new();
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
71
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
72 $this->model->update( $form->Bind($action) );
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
73 }
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
74
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
75 =end code
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
76
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
77 =head1 MEMBERS
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
78
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
79 =head2 C<[static]contractFactory>
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
80
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
81 Фабрика, используемая для получения контракта ресурса. По умолчанию
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
82 C<IMPL::Web::Application::CustomResourceContract>.
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
83
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
84 =head2 C<[static]contractInstance>
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
85
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
86 Экземпляр контракта для ресурса. Создается при первом обращении при помощи
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
87 метода C<InitContract()>.
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
88
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
89 =head2 C<[static]InitContract()>
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
90
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
91 Создает новый экземпляр контракта, используя фабрику из свойства C<contractFactory>.
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
92
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
93 =head2 C<[static]GetChildResources()>
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
94
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
95 Статический метод, который должны переопределять новые классы ресурсов, у
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
96 которых есть дочерние ресурсы.
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
97
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
98 =begin code
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
99
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
100 package MyApp::Web::MyResource
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
101
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
102 sub GetChildResources {
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
103 my $self = shift;
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
104 return
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
105 $self->SUPER::GetChildResources(),
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
106 {
230
6d8092d8ce1b *reworked IMPL::Security
sergey
parents: 229
diff changeset
107 name => 'info',
6d8092d8ce1b *reworked IMPL::Security
sergey
parents: 229
diff changeset
108 contract => $contractInfo
229
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
109 };
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
110 }
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
111
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
112 =end code
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
113
230
6d8092d8ce1b *reworked IMPL::Security
sergey
parents: 229
diff changeset
114 Метод возвращает список из хешей, которые будут переданы в качестве параметра
6d8092d8ce1b *reworked IMPL::Security
sergey
parents: 229
diff changeset
115 C<resources> контракту данного ресурса.
229
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
116
47f77e6409f7 heavily reworked the resource model of the web application:
sergey
parents:
diff changeset
117 =cut