package Catalyst::Controller;
-#switch to BEGIN { extends qw/ ... /; } ?
-use base qw/Catalyst::Component Catalyst::AttrContainer/;
use Moose;
+use Moose::Util qw/find_meta/;
+
+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 Scalar::Util qw/blessed/;
use Catalyst::Exception;
use Catalyst::Utils;
+with 'Catalyst::Component::ApplicationAttribute';
+
has path_prefix =>
(
is => 'rw',
init_arg => undef,
);
-# Future - isa => 'ClassName|Catalyst' performance?
-# required => 1 breaks tests..
-has _application => (is => 'ro');
-sub _app { shift->_application(@_) }
-
-override 'BUILDARGS' => sub {
- my ($self, $app) = @_;
-
- my $args = super();
- $args->{_application} = $app;
-
- return $args;
-};
-
sub BUILD {
my ($self, $args) = @_;
my $action = delete $args->{action} || {};
my $class = ref $self || $self;
#this is still not correct for some reason.
my $namespace = $self->action_namespace($c);
- my $meta = $self->Class::MOP::Object::meta();
+ my $meta = find_meta($self);
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
return ( 'ActionClass', $value );
}
-no Moose;
-
__PACKAGE__->meta->make_immutable;
1;