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=49591d3b64e24ea8586436d5c9f255d37d7c2e9d;hp=fbc8768a47398b1e64117df6bbbc6f33837fdc3b;hb=e9ba5c119a81f59f8339cd5c749709f5bc56b6d6;hpb=9cdb85d28dad6a60a5b5d3241c0073567d6983b8 diff --git a/lib/Catalyst/Controller.pm b/lib/Catalyst/Controller.pm index fbc8768..49591d3 100644 --- a/lib/Catalyst/Controller.pm +++ b/lib/Catalyst/Controller.pm @@ -71,11 +71,14 @@ for more info about how Catalyst dispatches to actions. #I think both of these could be attributes. doesn't really seem like they need #to ble class data. i think that attributes +default would work just fine -__PACKAGE__->mk_classdata($_) for qw/_dispatch_steps _action_class/; +__PACKAGE__->mk_classdata($_) for qw/_dispatch_steps/; __PACKAGE__->_dispatch_steps( [qw/_BEGIN _AUTO _ACTION/] ); -__PACKAGE__->_action_class('Catalyst::Action'); +has _action_class => ( + is => 'rw', + default => 'Catalyst::Action', +); sub _DISPATCH : Private { my ( $self, $c ) = @_; @@ -248,14 +251,21 @@ sub register_action_methods { } } -sub create_action { - my $self = shift; - my %args = @_; +sub action_class { + my ($self, %args) = @_; my $class = (exists $args{attributes}{ActionClass} ? $args{attributes}{ActionClass}[0] : $self->_action_class); Class::MOP::load_class($class); + return $class; +} + +sub create_action { + my $self = shift; + my %args = @_; + + my $class = $self->action_class(%args); my $action_args = $self->config->{action_args}; my %extra_args = (