Highlight back compat after discussion/confusion earlier. Also clean up BUILD =>...
[catagits/Catalyst-Runtime.git] / lib / Catalyst / Controller.pm
index 81be71d..028737f 100644 (file)
@@ -7,6 +7,7 @@ use namespace::clean -except => 'meta';
 
 BEGIN { extends qw/Catalyst::Component MooseX::MethodAttributes::Inheritable/; }
 
+use MooseX::MethodAttributes;
 use Catalyst::Exception;
 use Catalyst::Utils;
 
@@ -16,7 +17,7 @@ has path_prefix =>
     (
      is => 'rw',
      isa => 'Str',
-     init_arg => 'path',
+     init_arg => 'path', # 5.7 compat
      predicate => 'has_path_prefix',
     );
 
@@ -24,24 +25,26 @@ has action_namespace =>
     (
      is => 'rw',
      isa => 'Str',
-     init_arg => 'namespace',
+     init_arg => 'namespace', # 5.7 compat
      predicate => 'has_action_namespace',
     );
 
-has actions =>
+has _controller_actions =>
     (
      is => 'rw',
      isa => 'HashRef',
-     init_arg => undef,
+     init_arg => 'action', # 5.7 compat
     );
 
-sub BUILD {
-    my ($self, $args) = @_;
+around BUILDARGS => sub { # Icky 5.7 compat
+    my $orig = shift;
+    my $self = shift;
+    my $args = $self->$orig(@_);
     my $action  = delete $args->{action}  || {};
     my $actions = delete $args->{actions} || {};
-    my $attr_value = $self->merge_config_hashes($actions, $action);
-    $self->actions($attr_value);
-}
+    $args->{action} = $self->merge_config_hashes($actions, $action);
+    return $args;
+};
 
 =head1 NAME
 
@@ -179,8 +182,8 @@ sub get_action_methods {
     my $meta = find_meta($self);
     confess("Metaclass for " . ref($meta) ." for " . $meta->name
         . " cannot support register_actions.")
-        unless $meta->can('get_all_methods_with_attributes');
-    my @methods = $meta->get_all_methods_with_attributes;
+        unless $meta->can('get_nearest_methods_with_attributes');
+    my @methods = $meta->get_nearest_methods_with_attributes;
     return @methods;
 }
 
@@ -259,7 +262,7 @@ sub _parse_attrs {
     # superior while mantaining really high degree of compat
     my $actions;
     if( ref($self) ) {
-        $actions = $self->actions;
+        $actions = $self->_controller_actions;
     } else {
         my $cfg = $self->config;
         $actions = $self->merge_config_hashes($cfg->{actions}, $cfg->{action});