X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FController.pm;h=6d3c85a3918811c6d4d5e52b8482fa18e3a35225;hb=e4d346514a2e0b5d239cc22f28205846d00f93bb;hp=972b6a3020b33a7f4819395fa26ac3b1b0d75d70;hpb=8f6cebb2303a0b0eda9422430f926c3f83c72aed;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst/Controller.pm b/lib/Catalyst/Controller.pm index 972b6a3..6d3c85a 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, ); @@ -137,21 +137,23 @@ 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"); } @@ -198,7 +200,7 @@ sub get_action_methods { . ( ref $self ) ) } keys %{ $self->_controller_actions } ) if ( ref $self ); - return @methods; + return uniq @methods; } @@ -213,10 +215,9 @@ sub register_action_methods { #this is still not correct for some reason. my $namespace = $self->action_namespace($c); - # Uncomment as soon as you fix the tests :) - #if (!blessed($self) && $self eq $c && scalar(@methods)) { - # $c->log->warn("Action methods found defined in your application class, $self. This is deprecated, please move them into a Root controller."); - #} + if (!blessed($self) && $self eq $c && scalar(@methods)) { + $c->log->warn("Action methods found defined in your application class, $self. This is deprecated, please move them into a Root controller."); + } foreach my $method (@methods) { my $name = $method->name;