X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FDispatcher.pm;h=ec62c1fb0cf352f60483443c6c4134af87b7a507;hb=9779c885c17ff277c42aea35bd95f48284ae502f;hp=be7787ac96154fec802084fa3cf59c557160e949;hpb=c24de5794898ba21b47ee67b7bc94dc074df1b75;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst/Dispatcher.pm b/lib/Catalyst/Dispatcher.pm index be7787a..ec62c1f 100644 --- a/lib/Catalyst/Dispatcher.pm +++ b/lib/Catalyst/Dispatcher.pm @@ -34,17 +34,14 @@ has _registered_dispatch_types => (is => 'rw', default => sub { {} }, required = has _method_action_class => (is => 'rw', default => 'Catalyst::Action'); has _action_hash => (is => 'rw', required => 1, lazy => 1, default => sub { {} }); has _container_hash => (is => 'rw', required => 1, lazy => 1, default => sub { {} }); -has preload_dispatch_types => (is => 'rw', required => 1, lazy => 1, default => sub { [@PRELOAD] }); -has postload_dispatch_types => (is => 'rw', required => 1, lazy => 1, default => sub { [@POSTLOAD] }); - -# Wrap accessors so you can assign a list and it will capture a list ref. -around qw/preload_dispatch_types postload_dispatch_types/ => sub { - my $orig = shift; - my $self = shift; - return $self->$orig([@_]) if (scalar @_ && ref $_[0] ne 'ARRAY'); - return $self->$orig(@_); -}; +my %dispatch_types = ( pre => \@PRELOAD, post => \@POSTLOAD ); +foreach my $type (keys %dispatch_types) { + has $type . "load_dispatch_types" => ( + is => 'rw', required => 1, lazy => 1, default => sub { $dispatch_types{$type} }, + traits => ['MooseX::Emulate::Class::Accessor::Fast::Meta::Role::Attribute'], # List assignment is CAF style + ); +} =head1 NAME @@ -225,7 +222,7 @@ Documented in L sub go { my $self = shift; $self->_do_visit('go', @_); - die $Catalyst::GO; + Catalyst::Exception::Go->throw; } =head2 $self->forward( $c, $command [, \@arguments ] ) @@ -271,7 +268,7 @@ Documented in L sub detach { my ( $self, $c, $command, @args ) = @_; $self->_do_forward(detach => $c, $command, @args ) if $command; - die $Catalyst::DETACH; + Catalyst::Exception::Detach->throw; } sub _action_rel2abs { @@ -680,7 +677,7 @@ of course it's being used.) sub dispatch_type { my ($self, $name) = @_; - + # first param is undef because we cannot get the appclass $name = Catalyst::Utils::resolve_namespace(undef, 'Catalyst::DispatchType', $name);