view Lib/IMPL/Web/Application/ResourceInterface.pm @ 250:129e48bb5afb

DOM refactoring ObjectToDOM methods are virtual QueryToDOM uses inflators Fixed transform for the complex values in the ObjectToDOM QueryToDOM doesn't allow to use complex values (HASHes) as values for nodes (overpost problem)
author sergey
date Wed, 07 Nov 2012 04:17:53 +0400
parents 6d8092d8ce1b
children a8dbddf491dd
line wrap: on
line source

package IMPL::Web::Application::ResourceInterface;
use strict;

use IMPL::require {
    Exception => 'IMPL::Exception',
    NotImplException => '-IMPL::NotImplementedException'
};

sub InvokeHttpVerb {
    die NotImplException->new();
}

sub FetchChildResource {
    die NotImplementedException->new();
}

1;

__END__

=pod

=head1 NAME

C<IMPL::Web::Application::ResourceInterface> - Интерфейс для Web-ресурса.

=head1 SYNOPSIS

=begin code

package MyApp::Web::Resource;
use IMPL::Const qw(:prop);
use IMPL::declare {
    require => {
        NotAllowedException => 'IMPL::Web::NotAllowedException'        
    },
    base => [
        'IMPL::Object' => undef,
        'IMPL::Web::Application::ResourceInterface' => undef
    ],
    props => [
        model => PROP_ALL
    ]    
};

sub InvokeHttpVerb {
    my ($this,$verb,$action) = @_;
    
    if($verb eq 'GET') {
        return $this->model;
    } else {
        die NotAllowedException->new(allow => 'GET');
    }
}

sub FetchChildResource {
    # no child resources
    return;
}

=end code

=head1 DESCRIPTION

Данный модуль объявляет только интерфейс, тоесть в нем есть заглушки для функций
которые необходимо реализовать.

Для создания класса, который может быть использоваться для создания Web-ресурсов
нужно унаследовать данный интерфейс и реализовать его методы.

=head1 MEMBERS

=head2 C<InvokeHttpVerb($verb,$action)>

Выполняет операцию над ресурсом и возвращает результат ее выполнения.
Результатом может быть произвольный объект, который будет передан по цепочке
обработчиков приложения для формирования ответа вервера, либо
C<IMPL::Web::HttpResponse>, который описывает (не обязательно полностью) ответ.
В любом случае результат будет передан далее в цепочку обработчиков и может
быть изменен.  

=head2 C<FetchChildResource($childId)>

Используется для получения дочернего ресурса (который содержится в данном
контейнере). Метод должен возвращать либо Web-ресурс
C<IMPL::Web::Application::ResourceInterface>, либо C<undef> если дочерний ресурс
не найден.

=cut