Mercurial > pub > Impl
annotate Lib/IMPL/Web/View/ObjectFactory.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 |
rev | line source |
---|---|
240
abc7c26bf615
+Added ObjectFactory for templates with static members support
sergey
parents:
diff
changeset
|
1 package IMPL::Web::View::ObjectFactory; |
abc7c26bf615
+Added ObjectFactory for templates with static members support
sergey
parents:
diff
changeset
|
2 use strict; |
abc7c26bf615
+Added ObjectFactory for templates with static members support
sergey
parents:
diff
changeset
|
3 |
abc7c26bf615
+Added ObjectFactory for templates with static members support
sergey
parents:
diff
changeset
|
4 our $AUTOLOAD; |
abc7c26bf615
+Added ObjectFactory for templates with static members support
sergey
parents:
diff
changeset
|
5 |
abc7c26bf615
+Added ObjectFactory for templates with static members support
sergey
parents:
diff
changeset
|
6 use IMPL::declare { |
abc7c26bf615
+Added ObjectFactory for templates with static members support
sergey
parents:
diff
changeset
|
7 require => { |
abc7c26bf615
+Added ObjectFactory for templates with static members support
sergey
parents:
diff
changeset
|
8 Exception => 'IMPL::Exception', |
abc7c26bf615
+Added ObjectFactory for templates with static members support
sergey
parents:
diff
changeset
|
9 OpException => '-IMPL::InvalidOperationException' |
abc7c26bf615
+Added ObjectFactory for templates with static members support
sergey
parents:
diff
changeset
|
10 }, |
abc7c26bf615
+Added ObjectFactory for templates with static members support
sergey
parents:
diff
changeset
|
11 base =>[ |
abc7c26bf615
+Added ObjectFactory for templates with static members support
sergey
parents:
diff
changeset
|
12 'IMPL::Object::Factory' => '@_' |
abc7c26bf615
+Added ObjectFactory for templates with static members support
sergey
parents:
diff
changeset
|
13 ] |
abc7c26bf615
+Added ObjectFactory for templates with static members support
sergey
parents:
diff
changeset
|
14 }; |
abc7c26bf615
+Added ObjectFactory for templates with static members support
sergey
parents:
diff
changeset
|
15 |
245 | 16 use IMPL::Resources::Strings { |
17 MsgNoMethod => 'Method "%method%" isn\'t found in "%target%"' | |
18 }; | |
19 | |
240
abc7c26bf615
+Added ObjectFactory for templates with static members support
sergey
parents:
diff
changeset
|
20 sub AUTOLOAD { |
abc7c26bf615
+Added ObjectFactory for templates with static members support
sergey
parents:
diff
changeset
|
21 my $this = shift; |
abc7c26bf615
+Added ObjectFactory for templates with static members support
sergey
parents:
diff
changeset
|
22 my ($method) = ($AUTOLOAD =~ m/(\w+)$/); |
abc7c26bf615
+Added ObjectFactory for templates with static members support
sergey
parents:
diff
changeset
|
23 |
abc7c26bf615
+Added ObjectFactory for templates with static members support
sergey
parents:
diff
changeset
|
24 return if $method eq 'DESTROY'; |
abc7c26bf615
+Added ObjectFactory for templates with static members support
sergey
parents:
diff
changeset
|
25 my $target = $this->factory; |
abc7c26bf615
+Added ObjectFactory for templates with static members support
sergey
parents:
diff
changeset
|
26 if ( $target->can($method) ) { |
abc7c26bf615
+Added ObjectFactory for templates with static members support
sergey
parents:
diff
changeset
|
27 return $target->$method(@_); |
abc7c26bf615
+Added ObjectFactory for templates with static members support
sergey
parents:
diff
changeset
|
28 } else { |
245 | 29 die OpException->new( MsgNoMethod( method => $method, target => $target ) ); |
240
abc7c26bf615
+Added ObjectFactory for templates with static members support
sergey
parents:
diff
changeset
|
30 } |
abc7c26bf615
+Added ObjectFactory for templates with static members support
sergey
parents:
diff
changeset
|
31 } |
abc7c26bf615
+Added ObjectFactory for templates with static members support
sergey
parents:
diff
changeset
|
32 |
abc7c26bf615
+Added ObjectFactory for templates with static members support
sergey
parents:
diff
changeset
|
33 1; |