NAME
Froody::Implementation - define what should be run for a Froody::Method
SYNOPSIS
# run the code from the froody method
my $implementation_obj = $froody_method->implementation();
my $response = $implementation_obj->invoke($froody_method, \%params);
$response->render;
DESCRIPTION
You probably don't care about this class unless you want to change the way that your Perl code is called for a given method (e.g. you want to dynamically create methods or do something clever with sessions.)
Froody::Implementation and its subclasses are responsible for implementing the Perl code that is run when a Froody::Method is called. Essentially a Froody::Method only really knows what it's called and that the instance of another class - its implementation - knows how to run the code.
In reality, all a Froody::Implementation really has to do is implement an invoke
method, that when passed a Froody::Method and a hashref containing named parameters can 'execute' that method and return a Froody::Response:
my $response = $implementation_obj->invoke($froody_method, $hash_params);
This module provides a default implementation that calculates a Perl method name by transforming the Froody::Method name. Before it runs that method it pokes around with the arguments passed in based on the Froody::Method's arguments. When that Perl method returns, it transforms the hashref that code returned into a proper Froody::Response based on the response defined for the Froody::Method that is being processed. Essentially, it wraps the Perl code that you have to write in such a way you don't even have to think about what's going on from Froody's point of view.
METHODS
- $self->repository
-
A get/set accessor that gets/sets what repository this invoker is associated with. This is a weak reference.
- $self->get_invoke_function( name )
-
returns the function to be called to invoke a method. Simply returns the result of 'can' in the default implementation.
- $self->module($method)
-
Given a Froody::Method object, require and return the module that the method will be dispatched to.
- $self->create_context($params)
-
Returns the context of the current invocation. By default this return the class, so it's not instantiating. Override this to provide session management in
store_context
. - $self->store_context($response)
-
Serialize the current context into
$response
. By default this does nothing, you can override this and add a cookie to the response object. - $context->pre_process($method, $params)
-
Called by
invoke
before the actual method call. - $context->post_process($method, $data)
-
Builds a Froody::Response::Terse object according to the method's response specification and the data returned from the method.
- $context->error_handler($method_name, $error)
SEE ALSO
Froody::Repository, Froody::API and for other implementations Froody::Implementation::OneClass and Froody::Implementation::Remote
AUTHORS
Copyright Fotango 2005. All rights reserved.
Please see the main Froody documentation for details of who has worked on this project.
This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.