view 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 source

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