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