NAME

App::Service - Provides core methods for App-Context Services

SYNOPSIS

use App::Service;

# never really used, because this is a base class
%named = (
    # named args would go here
);
$service = App::Service->new(%named);

DESCRIPTION

The App::Service class is a base class for all App-Context services.

* Throws: App::Exception
* Since:  0.01

Constructor Methods:

new()

This constructor is used to create all objects which are App-Context services. Customized behavior for a particular service is achieved by overriding the _init() method.

* Signature: $service = App::Service->new(%named)
* Return:    $service       App::Service
* Throws:    App::Exception
* Since:     0.01

Sample Usage: (never used because this is a base class, but the
constructors of all services follow these rules)

* If the number of arguments is odd, the first arg is the service name
  (otherwise, "default" is assumed)
* If there are remaining arguments, they are variable/value pairs
* If there are no arguments at all, the "default" name is assumed
* If a "name" was supplied using any of these methods,
  the master config is consulted to find the config for this
  particular service instance (service_type/name).

$service = App::Service->new();        # assumes "default" name
$service = App::Service->new("srv1");  # instantiate named service
$service = App::Service->new(          # "default" with named args
    arg1 => 'value1',
    arg2 => 'value2',
);

service_type()

Returns the service type (i.e. CallDispatcher, Repository, SessionObject, etc.).

* Signature: $service_type = App::Service->service_type();
* Param:     void
* Return:    $service_type  string
* Since:     0.01

$service_type = $service->service_type();

content()

* Signature: $content = $self->content();
* Param:     void
* Return:    $content   any
* Throws:    App::Exception
* Since:     0.01

$content = $so->content();
if (ref($content)) {
    App::Reference->print($content);
    print "\n";
}
else {
    print $content, "\n";
}

content_type()

* Signature: $content_type = $service->content_type();
* Param:     void
* Return:    $content_type   string
* Throws:    App::Exception
* Since:     0.01

Sample Usage: 

$content_type = $service->content_type();

content_description()

* Signature: $content_description = $service->content_description();
* Param:     void
* Return:    $content_description   string
* Throws:    App::Exception
* Since:     0.01

Provide a description of the content which is useful for diagnostic purposes (such as for the timing log implemented in App::Context::HTTP).

This method can be overridden by an application-specific service such as a web application user interface widget to provide more useful information in the description.

Sample Usage: 

$content_description = $service->content_description();

internals()

* Signature: $guts = $self->internals();
* Param:     void
* Return:    $guts     {}
* Throws:    App::Exception
* Since:     0.01

$guts = $so->internals();
App::Reference->print($guts);
print App::Reference->dump($guts), "\n";

Copy the internals of the current SessionObject to a new hash and return a reference to that hash for debugging purposes. The resulting hash reference may be printed using Data::Dumper (or App::Reference). The refe

dump()

* Signature: $perl = $service->dump();
* Param:     void
* Return:    $perl      text
* Throws:    App::Exception
* Since:     0.01

Sample Usage: 

$service = $context->repository();
print $service->dump(), "\n";

print()

* Signature: $service->print();
* Param:     void
* Return:    void
* Throws:    App::Exception
* Since:     0.01

Sample Usage: 

$service->print();

substitute()

* Signature: $result = $service->substitute($target);
* Signature: $result = $service->substitute($target, $values);
* Param:     $target         HASH,string
* Param:     $values         HASH
* Return:    $result         string
* Throws:    App::Exception
* Since:     0.01

Sample Usage: 

$welcome_message = $service->substitute("Welcome, {default-user}");

my $auto_params = { user => "{default-user}", org_id => "{org_id}", };
my $auto_values = { org_id => 1, };
$params = $service->substitute($auto_params, $auto_values);

The substitute() method scans the $target string (or hash of strings) for instances of variables (i.e. "{varname}") and makes substitutions. It makes substitutions from a hash of $values if provided or from the values of SessionObjects of the same name.

The substitute() method returns a string (or hash of strings) which is the result of the substitution.

Protected Methods:

The following methods are intended to be called by subclasses of the current class.

_init()

The _init() method is called from within the standard Service constructor. It allows subclasses of the Service to customize the behavior of the constructor by overriding the _init() method. The _init() method in this class simply calls the _init() method to allow each service instance to initialize itself.

* Signature: _init($named)
* Param:     $named      {}   [in]
* Return:    void
* Throws:    App::Exception
* Since:     0.01

Sample Usage: 

$service->_init(\%args);

ACKNOWLEDGEMENTS

* Author:  Stephen Adkins <spadkins@gmail.com>
* License: This is free software. It is licensed under the same terms as Perl itself.

SEE ALSO

App, App::Context, App::Conf