X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FController.pm;h=f23ad4a1d84e1923427a82d915be44fa63d3ef0e;hb=a202886b47ea577ff9e29c18214a7c02cfd8b9e3;hp=69244057f7773e2478288ef8d6045ebfae592677;hpb=a8f4e833e16a5d2f034afbaf3a94ecdb475ec9cb;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst/Controller.pm b/lib/Catalyst/Controller.pm index 6924405..f23ad4a 100644 --- a/lib/Catalyst/Controller.pm +++ b/lib/Catalyst/Controller.pm @@ -156,7 +156,7 @@ around action_namespace => sub { } } - my $namespace = Catalyst::Utils::class2prefix(ref($self) || $self, $case_s) || ''; + my $namespace = Catalyst::Utils::class2prefix($self->_component_name, $case_s) || ''; $self->$orig($namespace) if ref($self); return $namespace; }; @@ -189,8 +189,8 @@ sub get_action_methods { push( @methods, map { - $meta->get_method($_) - || confess( 'Action "' + $meta->find_method_by_name($_) + || confess( 'Action "' . $_ . '" is not available from controller ' . ( ref $self ) ) @@ -207,10 +207,14 @@ sub register_actions { sub register_action_methods { my ( $self, $c, @methods ) = @_; - my $class = ref $self || $self; + my $class = $self->_component_name; #this is still not correct for some reason. my $namespace = $self->action_namespace($c); + 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; my $attributes = $method->attributes; @@ -384,13 +388,14 @@ sub _parse_ChainedParent_attr { } sub _parse_PathPrefix_attr { - my $self = shift; - return PathPart => $self->path_prefix; + my ( $self, $c ) = @_; + return PathPart => $self->path_prefix($c); } sub _parse_ActionClass_attr { my ( $self, $c, $name, $value ) = @_; - $value = Catalyst::Utils::resolve_namespace($self->_action_class, $value); + my $appname = $self->_application; + $value = Catalyst::Utils::resolve_namespace($appname . '::Action', $self->_action_class, $value); return ( 'ActionClass', $value ); } @@ -487,7 +492,7 @@ Catalyst Contributors, see Catalyst.pm =head1 COPYRIGHT -This program is free software, you can redistribute it and/or modify +This library is free software. You can redistribute it and/or modify it under the same terms as Perl itself. =cut