namespace::clean Catalyst::Controller.
[catagits/Catalyst-Runtime.git] / lib / Catalyst / Controller.pm
index 17b5c52..f52f062 100644 (file)
@@ -1,13 +1,17 @@
 package Catalyst::Controller;
 
-#switch to BEGIN { extends qw/ ... /; } ?
-use base qw/Catalyst::Component Catalyst::AttrContainer/;
 use Moose;
 
-use Scalar::Util qw/blessed/;
+use namespace::clean -except => 'meta';
+
+# Note - Must be done at compile time due to attributes (::AttrContainer)
+BEGIN { extends qw/Catalyst::Component Catalyst::AttrContainer/; }
+
+use Class::MOP::Object ();
 use Catalyst::Exception;
 use Catalyst::Utils;
-use Class::Inspector;
+
+with 'Catalyst::Component::ApplicationAttribute';
 
 has path_prefix =>
     (
@@ -32,10 +36,6 @@ has actions =>
      init_arg => undef,
     );
 
-# isa => 'ClassName|Catalyst' ?
-has _application => (is => 'rw');
-sub _app{ shift->_application(@_) } 
-
 sub BUILD {
     my ($self, $args) = @_;
     my $action  = delete $args->{action}  || {};
@@ -122,15 +122,6 @@ sub _END : Private {
     return !@{ $c->error };
 }
 
-around new => sub {
-    my $orig = shift;
-    my $self = shift;
-    my $app = $_[0];
-    my $new = $self->$orig(@_);
-    $new->_application( $app );
-    return $new;
-};
-
 sub action_for {
     my ( $self, $name ) = @_;
     my $app = ($self->isa('Catalyst') ? $self : $self->_application);
@@ -190,11 +181,10 @@ sub register_actions {
     my $class = ref $self || $self;
     #this is still not correct for some reason.
     my $namespace = $self->action_namespace($c);
-    my $meta = $self->meta;
-    my %methods = map{ $_->{code}->body => $_->{name} }
-        grep {$_->{class} ne 'Moose::Object'} #ignore Moose::Object methods
-            $meta->compute_all_applicable_methods;
-
+    my $meta = $self->Class::MOP::Object::meta();
+    my %methods = map { $_->body => $_->name }
+        grep { $_->package_name ne 'Moose::Object' } #ignore Moose::Object methods
+            $meta->get_all_methods;
 
     # Advanced inheritance support for plugins and the like
     #moose todo: migrate to eliminate CDI compat
@@ -400,8 +390,6 @@ sub _parse_MyAction_attr {
     return ( 'ActionClass', $value );
 }
 
-no Moose;
-
 __PACKAGE__->meta->make_immutable;
 
 1;