# This file documents the revision history for Perl extension Catalyst.
+ - Use ~ as prefix for plugins or action classes which are located in MyApp::Plugin / MyApp::Action
+
+
5.80005 2009-06-06 14:40:00
Behaviour changes:
TODO for brach namespace_handling_refactor:
-- refactor code in
+- refactor code in
* Catalyst::Dispatcher::get_containers # No Idea
* Catalyst::Dispatcher::dispatch_type # DONE
$class->_plugins( {} ) unless $class->_plugins;
$plugins ||= [];
-
- my @plugins = Catalyst::Utils::resolve_namespace('Catalyst::Plugin', @$plugins);
+
+ my @plugins = Catalyst::Utils::resolve_namespace($class . '::Plugin', 'Catalyst::Plugin', @$plugins);
for my $plugin ( reverse @plugins ) {
Class::MOP::load_class($plugin);
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 );
}
my ( $self, @types ) = @_;
my @loaded;
-
# Preload action types
for my $type (@types) {
- my $class = Catalyst::Utils::resolve_namespace('Catalyst::DispatchType', $type);
+ # first param is undef because we cannot get the appclass
+ my $class = Catalyst::Utils::resolve_namespace(undef, 'Catalyst::DispatchType', $type);
eval { Class::MOP::load_class($class) };
Catalyst::Exception->throw( message => qq/Couldn't load "$class"/ )
sub dispatch_type {
my ($self, $name) = @_;
-
- $name = Catalyst::Utils::resolve_namespace('Catalyst::DispatchType', $name);
+
+ # first param is undef because we cannot get the appclass
+ $name = Catalyst::Utils::resolve_namespace(undef, 'Catalyst::DispatchType', $name);
for (@{ $self->_dispatch_types }) {
return $_ if ref($_) eq $name;
sub resolve_namespace {
+ my $appnamespace = shift;
my $namespace = shift;
my @classes = @_;
return String::RewritePrefix->rewrite(
- { '' => $namespace.'::', '+' => '' }, @classes,
+ { '' => $namespace.'::', '+' => '', '~' => $appnamespace . '::' }, @classes,
);
}
BEGIN { $iters = $ENV{CAT_BENCH_ITERS} || 1; }
-use Test::More tests => 28 * $iters;
+use Test::More tests => 42 * $iters;
use Catalyst::Test 'TestApp';
if ( $ENV{CAT_BENCHMARK} ) {
'Content is a serialized Catalyst::Request'
);
}
+
+ {
+ ok( my $response = request('http://localhost/action_action_five'),
+ 'Request' );
+ ok( $response->is_success, 'Response Successful 2xx' );
+ is( $response->content_type, 'text/plain', 'Response Content-Type' );
+ is( $response->header('X-Catalyst-Action'),
+ 'action_action_five', 'Test Action' );
+ is(
+ $response->header('X-Test-Class'),
+ 'TestApp::Controller::Action::Action',
+ 'Test Class'
+ );
+ is( $response->header('X-Action'), 'works' );
+ like(
+ $response->content,
+ qr/^bless\( .* 'Catalyst::Request' \)$/s,
+ 'Content is a serialized Catalyst::Request'
+ );
+ }
+
+
+ {
+ ok( my $response = request('http://localhost/action_action_six'),
+ 'Request' );
+ ok( $response->is_success, 'Response Successful 2xx' );
+ is( $response->content_type, 'text/plain', 'Response Content-Type' );
+ is( $response->header('X-Catalyst-Action'),
+ 'action_action_six', 'Test Action' );
+ is(
+ $response->header('X-Test-Class'),
+ 'TestApp::Controller::Action::Action',
+ 'Test Class'
+ );
+ is( $response->header('X-TestAppActionTestMyAction'), 'MyAction works' );
+ like(
+ $response->content,
+ qr/^bless\( .* 'Catalyst::Request' \)$/s,
+ 'Content is a serialized Catalyst::Request'
+ );
+ }
}
use strict;
use base 'TestApp::Controller::Action';
+__PACKAGE__->config( actions => { action_action_five => { ActionClass => '+Catalyst::Action::TestBefore' } } );
+
sub action_action_one : Global : ActionClass('TestBefore') {
my ( $self, $c ) = @_;
$c->res->header( 'X-Action', $c->stash->{test} );
$c->forward('TestApp::View::Dump::Request');
}
+sub action_action_five : Global {
+ my ( $self, $c ) = @_;
+ $c->res->header( 'X-Action', $c->stash->{test} );
+ $c->forward('TestApp::View::Dump::Request');
+}
+
+sub action_action_six : Global : ActionClass('~TestMyAction') {
+ my ( $self, $c ) = @_;
+ $c->forward('TestApp::View::Dump::Request');
+}
+
1;