eval not needed round can, it just returns false
[catagits/Catalyst-Runtime.git] / lib / Catalyst / Service / WithContext.pm
1 package Catalyst::Service::WithContext;
2 use Moose::Role;
3
4 use Bread::Board::Types;
5
6 with 'Bread::Board::Service';
7
8 has accept_context_sub => (
9     is => 'ro',
10     isa => 'Str',
11     default => 'ACCEPT_CONTEXT',
12 );
13
14 around 'get' => sub {
15     my ( $orig, $self, %params ) = @_;
16
17     my $context = delete $params{context};
18
19     my $instance = $self->$orig(%params);
20     my $ac_sub   = $self->accept_context_sub;
21
22     if ( $instance->can($ac_sub) ) {
23         return $instance->$ac_sub( @$context );
24     }
25
26     return $instance;
27 };
28
29 no Moose::Role;
30 1;