X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FDispatcher.pm;h=d92c7dce52b81ca292f0bab1aea97a4eeeb72fa8;hb=8c11318848e17f92027484614d393b6ebd365f7d;hp=5d92eb2e4d3debd46aa4485fd6291bc052ff49cc;hpb=91d4abc5cc6b75fb46cef7aac04f3cb58f6b3551;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst/Dispatcher.pm b/lib/Catalyst/Dispatcher.pm index 5d92eb2..d92c7dc 100644 --- a/lib/Catalyst/Dispatcher.pm +++ b/lib/Catalyst/Dispatcher.pm @@ -112,7 +112,9 @@ sub forward { unless ( $result ) { - unless ( $c->components->{$command} ) { + my $comp; + + unless ( $comp = $c->component($command) ) { my $error = qq/Couldn't forward to command "$command". Invalid action or component./; $c->error($error); @@ -120,10 +122,10 @@ qq/Couldn't forward to command "$command". Invalid action or component./; return 0; } - my $class = $command; + my $class = ref $comp; my $method = shift || 'process'; - if ( my $code = $c->components->{$class}->can($method) ) { + if ( my $code = $class->can($method) ) { my $action = Catalyst::Action->new( { name => $method, @@ -148,7 +150,6 @@ qq/Couldn't forward to command "$command". Invalid action or component./; } local $c->request->{arguments} = [ @{$arguments} ]; - local $c->{namespace} = $result->namespace; $result->execute($c); @@ -393,6 +394,7 @@ sub setup_actions { =head1 AUTHOR Sebastian Riedel, C +Matt S Trout, C =head1 COPYRIGHT