Mercurial > pub > Impl
comparison Lib/IMPL/Web/Application/RestCustomResource.pm @ 200:a9dbe534d236
sync
author | sergey |
---|---|
date | Tue, 24 Apr 2012 02:34:49 +0400 |
parents | |
children | 0c018a247c8a |
comparison
equal
deleted
inserted
replaced
199:e743a8481327 | 200:a9dbe534d236 |
---|---|
1 package IMPL::Web::Application::RestCustomResource; | |
2 use strict; | |
3 | |
4 use IMPL::lang qw(:declare :constants); | |
5 use IMPL::declare { | |
6 require => { | |
7 Exception => "IMPL::Exception", | |
8 ArgumentException => '-IMPL::InvalidArgumentException', | |
9 ForbiddenException => 'IMPL::Web::ForbiddenException' | |
10 }, | |
11 base => { | |
12 'IMPL::Web::Application::RestBaseResource' => '@_' | |
13 } | |
14 }; | |
15 | |
16 BEGIN { | |
17 public property get => PROP_GET | PROP_OWNERSET; | |
18 public property put => PROP_GET | PROP_OWNERSET; | |
19 public property post => PROP_GET | PROP_OWNERSET; | |
20 public property delete => PROP_GET | PROP_OWNERSET; | |
21 } | |
22 | |
23 sub CTOR { | |
24 my ($this) = @_; | |
25 | |
26 die ArgumentException->new("parent") unless $this->parent; | |
27 } | |
28 | |
29 sub FetchChildResource { | |
30 my ($this,$id,$action) = @_; | |
31 | |
32 return $this->contract->Transform( $this->GetImpl($action), { parent => $this, id => $id } )->FetchChildResource($id,$action); | |
33 } | |
34 | |
35 sub GetImpl { | |
36 my ($this,$action) = @_; | |
37 | |
38 my $method = $this->get or die ForbiddenException->new(); | |
39 return $this->$method($action); | |
40 } | |
41 | |
42 sub PutImpl { | |
43 my ($this,$action) = @_; | |
44 my $method = $this->put or die ForbiddenException->new(); | |
45 return $this->$method($action); | |
46 } | |
47 | |
48 sub PostImpl { | |
49 my ($this,$action) = @_; | |
50 my $method = $this->post or die ForbiddenException->new(); | |
51 return $this->$method($action); | |
52 } | |
53 | |
54 sub DeleteImpl { | |
55 my ($this,$action) = @_; | |
56 my $method = $this->delete or die ForbiddenException->new(); | |
57 return $this->$method($action); | |
58 } | |
59 | |
60 1; |