package Egg::Plugin::Session;
# Masatoshi Mizuno E<lt>lusheE<64>cpan.orgE<gt>
# $Id: 303 2008-03-05 07:47:05Z lushe $
use strict;
use warnings;
use Carp qw/ croak /;
use Digest::SHA1 qw/ sha1_hex /;

our $VERSION= '0.02';

sub _setup {
	my($e)= @_;
	    || die q{I want setup of 'Egg::Model::Session'.};
sub session {
	my $e= shift;
	my $pkg= $e->project_name. '::Model::Session';
	return $e->{session_default}
	   ||= $e->model_manager->context($pkg->default) unless @_;
	my $name= shift || croak q{I want session label name.};
	my $label= $pkg->labels->{$name}            ? $name
	         : $pkg->labels->{"session::$name"} ? "session::$name"
	         : croak q{Session of the label of '$name' is not found.};
	$label eq $pkg->default
	  ? do { $e->{session_default}  ||= $e->model_manager->context($label) }
	  : do { $e->{"session_$label"} ||= $e->model_manager->context($label) };



=head1 NAME

Egg::Plugin::Session - Plugin for session.


  package MyApp
  use Egg qw/ Session /;

  # The session object of default is acquired.
  my $session= $e->session;
  # The object is acquired specifying the label of the session.
  my $session= $e->session('session_label');


It is a plugin that conveniently makes L<Egg::Model::Session> available only a 

=head1 METHODS

=head2 session ([LABEL_NAME])

The session object is returned.

The one that default with L<Egg::Model::Session> when LABEL_NAME is omitted and
has been treated is returned.

  my $s= $e->session;

When LABEL_NAME is specified, the object of correspondence is returned.

  my $s= $e->session('label_name');

If it is a label name that starts by 'session::', the first part can be omitted.

  # For instance, if it is 'Session::myname' ...
  my $s= $e->session('myname');

=head1 SEE ALSO


=head1 AUTHOR

Masatoshi Mizuno E<lt>lusheE<64>cpan.orgE<gt>


Copyright (C) 2008 Bee Flag, Corp. E<lt>L<>E<gt>, All Rights Reserved.

This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself, either Perl version 5.8.6 or,
at your option, any later version of Perl 5 you may have available.