view Lib/IMPL/Web/View/ObjectFactory.pm @ 242:fe9d62d9054d

requestCharset support
author sergey
date Thu, 18 Oct 2012 20:02:51 +0400
parents abc7c26bf615
children 7c517134c42f
line wrap: on
line source

package IMPL::Web::View::ObjectFactory;
use strict;

our $AUTOLOAD;

use IMPL::declare {
	require => {
		Exception => 'IMPL::Exception',
		OpException => '-IMPL::InvalidOperationException'
	},
	base =>[
	   'IMPL::Object::Factory' => '@_'
	]
};

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("Method '$method' isn't found in '$target'")
	}
}

1;