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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
7c517134c42f Added Unsupported media type Web exception
sergey
parents: 240
diff changeset
16 use IMPL::Resources::Strings {
7c517134c42f Added Unsupported media type Web exception
sergey
parents: 240
diff changeset
17 MsgNoMethod => 'Method "%method%" isn\'t found in "%target%"'
7c517134c42f Added Unsupported media type Web exception
sergey
parents: 240
diff changeset
18 };
7c517134c42f Added Unsupported media type Web exception
sergey
parents: 240
diff changeset
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
7c517134c42f Added Unsupported media type Web exception
sergey
parents: 240
diff changeset
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;