Mercurial > pub > Impl
diff lib/IMPL/Web/View/ObjectFactory.pm @ 407:c6e90e02dd17 ref20150831
renamed Lib->lib
author | cin |
---|---|
date | Fri, 04 Sep 2015 19:40:23 +0300 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/IMPL/Web/View/ObjectFactory.pm Fri Sep 04 19:40:23 2015 +0300 @@ -0,0 +1,33 @@ +package IMPL::Web::View::ObjectFactory; +use strict; + +our $AUTOLOAD; + +use IMPL::declare { + require => { + Exception => 'IMPL::Exception', + OpException => '-IMPL::InvalidOperationException' + }, + base =>[ + 'IMPL::Object::Factory' => '@_' + ] +}; + +use IMPL::Resources::Strings { + MsgNoMethod => 'Method "%method%" isn\'t found in "%target%"' +}; + +sub AUTOLOAD { + my $this = shift; + my ($method) = ($AUTOLOAD =~ m/(\w+)$/); + + return if $method eq 'DESTROY'; + my $target = $this->factory; + if ( $target->can($method) ) { + return $target->$method(@_); + } else { + die OpException->new( MsgNoMethod( method => $method, target => $target ) ); + } +} + +1; \ No newline at end of file