X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=blobdiff_plain;f=lib%2FCatalyst%2FController.pm;h=1d91b3ccf6b9d4df31eb05c0c28511e63e031a74;hp=3f79106397f87872e9808b80b20f66ed38b9a820;hb=9563d3701ebb2e6a4ac4760ab84af6eb3ab7adc2;hpb=dbf6a6fcd7a51226a353e2a800a1cf5c7e8e9c66 diff --git a/lib/Catalyst/Controller.pm b/lib/Catalyst/Controller.pm index 3f79106..1d91b3c 100644 --- a/lib/Catalyst/Controller.pm +++ b/lib/Catalyst/Controller.pm @@ -2,7 +2,7 @@ package Catalyst::Controller; use Moose; use Moose::Util qw/find_meta/; - +use List::MoreUtils qw/uniq/; use namespace::clean -except => 'meta'; BEGIN { extends qw/Catalyst::Component MooseX::MethodAttributes::Inheritable/; } @@ -29,9 +29,9 @@ has action_namespace => predicate => 'has_action_namespace', ); -has _controller_actions => +has actions => ( - is => 'rw', + accessor => '_controller_actions', isa => 'HashRef', init_arg => undef, ); @@ -44,6 +44,8 @@ sub BUILD { $self->_controller_actions($attr_value); } + + =head1 NAME Catalyst::Controller - Catalyst Controller base class @@ -135,28 +137,30 @@ around action_namespace => sub { my $orig = shift; my ( $self, $c ) = @_; + my $class = ref($self) || $self; + my $appclass = ref($c) || $c; if( ref($self) ){ return $self->$orig if $self->has_action_namespace; } else { - return $self->config->{namespace} if exists $self->config->{namespace}; + return $class->config->{namespace} if exists $class->config->{namespace}; } my $case_s; if( $c ){ - $case_s = $c->config->{case_sensitive}; + $case_s = $appclass->config->{case_sensitive}; } else { if ($self->isa('Catalyst')) { - $case_s = $self->config->{case_sensitive}; + $case_s = $class->config->{case_sensitive}; } else { if (ref $self) { - $case_s = $self->_application->config->{case_sensitive}; + $case_s = ref($self->_application)->config->{case_sensitive}; } else { confess("Can't figure out case_sensitive setting"); } } } - my $namespace = Catalyst::Utils::class2prefix($self->_component_name, $case_s) || ''; + my $namespace = Catalyst::Utils::class2prefix($self->catalyst_component_name, $case_s) || ''; $self->$orig($namespace) if ref($self); return $namespace; }; @@ -177,8 +181,8 @@ around path_prefix => sub { sub get_action_methods { my $self = shift; - my $meta = find_meta($self); - confess("Metaclass for " + my $meta = find_meta($self) || confess("No metaclass setup for $self"); + confess("Metaclass " . ref($meta) . " for " . $meta->name . " cannot support register_actions." ) @@ -196,7 +200,7 @@ sub get_action_methods { . ( ref $self ) ) } keys %{ $self->_controller_actions } ) if ( ref $self ); - return @methods; + return uniq @methods; } @@ -207,7 +211,7 @@ sub register_actions { sub register_action_methods { my ( $self, $c, @methods ) = @_; - my $class = $self->_component_name; + my $class = $self->catalyst_component_name; #this is still not correct for some reason. my $namespace = $self->action_namespace($c);