Ambrosia
view release on metacpan or search on metacpan
lib/Ambrosia/BaseManager.pm view on Meta::CPAN
}
return $self;
}
sub relegate
{
controller->__relegate($_[1]);
}
sub reset
{
if ( $_[1])
{
Context->mqueue->clear();
controller->__relegate($_[1]);
}
}
sub forward
{
controller->__relegate($_[1], &FORWARD);
}
sub internal_redirect
{
if ( $_[1] )
{
controller->__relegate($_[1], &INTERNALREDIRECT);
}
else
{
my ($manager_params, $state) = @{Context->mqueue->first() || []};
if ( $manager_params )
{
if ( $state == &INTERNALREDIRECT )
{
Context->mqueue->first()->[1] = &RELEGATE;
return 1;
}
}
return 0;
}
}
sub immediate
{#may need to add one more queue in the Context of a higher priority
my $self = shift;
return create_object($self->managers->{+shift})->prepare();
}
sub create_object
{
my $manager_info = controller->__last_manager = shift;
if ( my $m = $manager_info->{manager} )
{
return Ambrosia::core::ClassFactory::create_object($m);
}
else
{
throw Ambrosia::error::Exception "Manager not defined.";
}
}
sub _addEWM
{
my $self = shift;
my $level = shift;
my $msg = shift;
return undef unless $msg;
my $refMsg = ref $msg;
my $error_h = Context->repository->get('mng_EWM') || {};
my $log = '';
if ( $refMsg eq 'Ambrosia::Validator::Violation' )
{
push @{$error_h->{$level}}, $msg->errorSummary;
$log = "ERROR bad request(VALIDATOR): $msg";
}
elsif ( $refMsg eq 'Ambrosia::core::Exception::BadParams' )
{
push @{$error_h->{$level}}, $msg->message;
$log = "ERROR bad request(VALIDATOR): " . $msg->message;
}
elsif ( $refMsg eq 'ARRAY' )
{
foreach my $m ( @$msg )
{
$self->_addEWM($level, $m);
}
return $msg;
}
elsif ( $refMsg eq 'HASH' )
{
foreach my $m ( values %$msg )
{
$self->_addEWM($level, $m);
}
return $msg;
}
elsif ( $refMsg )
{
$error_h->{error} = ['Internal Error'];
$log = "ERROR bad request(OTHER): '$refMsg' ==>> '$msg'";
}
elsif ( $msg )
{
$log = $msg;
$msg =~ s/ at.*//;
push @{$error_h->{$level}}, $msg;
}
Context->repository->set('mng_EWM' => $error_h);
carp ('BaseManager::_addEWM: ' . $log) if $log && $level ne 'message';
return $msg;
}
( run in 0.573 second using v1.01-cache-2.11-cpan-ceb78f64989 )