comparison Lib/IMPL/Web/Application/Resource.pm @ 333:cd6409f66a5f

small fixes, request environment is deprecated
author cin
date Tue, 11 Jun 2013 20:22:52 +0400
parents 04a093f0a5a6
children 71221d79e6b4
comparison
equal deleted inserted replaced
332:04a093f0a5a6 333:cd6409f66a5f
1 package IMPL::Web::Application::Resource; 1 package IMPL::Web::Application::Resource;
2 use strict; 2 use strict;
3 3
4 use URI; 4 use URI;
5 use Carp qw(carp);
5 use IMPL::Const qw(:prop); 6 use IMPL::Const qw(:prop);
6 use IMPL::declare { 7 use IMPL::declare {
7 require => { 8 require => {
8 ViewResult => 'IMPL::Web::ViewResult', 9 ViewResult => 'IMPL::Web::ViewResult',
9 Exception => 'IMPL::Exception', 10 Exception => 'IMPL::Exception',
33 die ArgumentException->new( id => 'A resource identifier is required' ) 34 die ArgumentException->new( id => 'A resource identifier is required' )
34 unless $args{id}; 35 unless $args{id};
35 die ArgumentException->new( contract => 'A contract is required' ) 36 die ArgumentException->new( contract => 'A contract is required' )
36 unless $args{contract}; 37 unless $args{contract};
37 38
38 $this->request($args{action}) 39 $this->request($args{request})
39 or die ArgumentException->new(request => 'A request object must be specified'); 40 or die ArgumentException->new(request => 'A request object must be specified');
40 $this->parent( $args{parent} ); 41 $this->parent( $args{parent} );
41 $this->model( $args{model} ); 42 $this->model( $args{model} );
42 $this->id( $args{id} ); 43 $this->id( $args{id} );
43 $this->contract( $args{contract} ); 44 $this->contract( $args{contract} );
44 $this->application( $args{action}{application} ); 45 $this->application( $args{request}->application );
45 46
46 # если расположение явно не указано, то оно вычисляется автоматически, 47 # если расположение явно не указано, то оно вычисляется автоматически,
47 # либо остается не заданным 48 # либо остается не заданным
48 $this->location( $args{location} 49 $this->location( $args{location}
49 || eval { $this->parent->location->Child( $this->id ) } ); 50 || eval { $this->parent->location->Child( $this->id ) } );
68 # это свойство специфично только для REST приложений. 69 # это свойство специфично только для REST приложений.
69 # сохранение текущего ресурса не повлечет за собой существенных расходов, 70 # сохранение текущего ресурса не повлечет за собой существенных расходов,
70 # т.к. они просто освободятся несколько позже. 71 # т.к. они просто освободятся несколько позже.
71 if ( not $request->context->{resource} ) { 72 if ( not $request->context->{resource} ) {
72 $request->context->{resource} = $this; 73 $request->context->{resource} = $this;
73 $request->context->{environment} = sub { $this->PrepareEnvironment() }; 74 $request->context->{environment} = sub {
75 carp "using request environment is deprecated";
76 $this->PrepareEnvironment()
77 };
74 } 78 }
75 79
76 return _InvokeDelegate( $operation, $this, $request ); 80 return _InvokeDelegate( $operation, $this, $request );
77 } 81 }
78 82