The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
=head1 NAME

OpenFrame::WebApp::Segment::Session - abstract class for getting Sessions
from the store.

=head1 SYNOPSIS

  # abstract class - cannot be used directly

  use base qw( OpenFrame::WebApp::Segment::Session );

  sub dispatch {
      ...
      my $session $self->get_session_from_store;
      ...
  }

=cut

package OpenFrame::WebApp::Segment::Session;

use strict;
use warnings::register;

use OpenFrame::WebApp::Session;
use OpenFrame::WebApp::Error::Abstract;

our $VERSION = (split(/ /, '$Revision: 1.2 $'))[1];

use base qw( Pipeline::Segment );

## try various methods to find a session in the store
sub get_session_from_store {
    my $self = shift;
    my $session;

    if ($self->store->isa( 'Pipeline::Store::ISA' )) {
	$session = $self->store->get('OpenFrame::WebApp::Session');
    } else {
	foreach my $class (values %{ OpenFrame::WebApp::Session->types }) {
	    last if( $session = $self->store->get($class) );
	}
    }

    return $session;
}

1;

__END__

=head1 DESCRIPTION

The C<OpenFrame::WebApp::Segment::Session> class provides a method for getting
Session objects from the store.

This class inherits its interface from C<Pipeline::Segment>.  You must override
dispatch() for it to do anything.

=head1 METHODS

=over 4

=item get_session_from_store

If the store is a C<Pipeline::Store::ISA>, looks for a descendant of
C<OpenFrame::WebApp::Session>, otherwise looks for known
OpenFrame::WebApp::Session->types().

=back

=head1 AUTHOR

Steve Purkis <spurkis@epn.nu>

=head1 COPYRIGHT

Copyright (c) 2003 Steve Purkis.  All rights reserved.
Released under the same license as Perl itself.

=head1 SEE ALSO

L<Pipeline::Segment>,
L<OpenFrame::WebApp::Session>

=cut