Mercurial > pub > Impl
diff Lib/IMPL/Web/QueryHandler.pm @ 62:c64bd1bf727d
Web application
Page query handler
author | wizard |
---|---|
date | Fri, 12 Mar 2010 16:23:46 +0300 |
parents | |
children | 2840c4c85db8 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/IMPL/Web/QueryHandler.pm Fri Mar 12 16:23:46 2010 +0300 @@ -0,0 +1,53 @@ +package IMPL::Web::QueryHandler; + +use base qw(IMPL::Object IMPL::Object::Autofill); +use IMPL::Class::Property; + +__PACKAGE__->PassThroughArgs; + +use IMPL::Exception; + +sub Invoke { + my ($self,$action,$nextHandler) = @_; + + if (not ref $self or UNIVERSAL::isa($self,'IMPL::Object::Factory')) { + return $self->new( action => $action )->Invoke($action,$nextHandler); + } else { + return $self->Process($action,$nextHandler); + } +} + +sub Process { + die new NotImplementedException("The method isn't implemented", __PACKAGE__, 'Process'); +} + +1; + +__END__ + +=pod + +=head1 DESCRIPTION + +Базовый класс для обработчиков запросов. + +=head1 MEMBERS + +=over 4 + +=item C< Invoke($action,$nextHandler) > + +Вызывается механизмом обработки запроса, для передачи управления обработчику. Данная реализация +проверяет как была вызвана, если как статический метод, то создает экземпляр класса и вызывает +у созданного объекта метод C< Invoke > с параметрами C< $action >, C< $nextHandler >. + +Если метод был вызван у объекта, то управление передается методу C< Process > + +C< $action > Экземпляр запроса + +C< $nextHandler > Делегат для вызова следующего обработчика. Вызывается без параметров, но следующему обработчику +втоматически будут переданы необходимые параметры. + +=back + +=cut \ No newline at end of file