use base qw/Catalyst::Component Catalyst::AttrContainer/;
use Moose;
+use Class::MOP::Object ();
use Scalar::Util qw/blessed/;
use Catalyst::Exception;
use Catalyst::Utils;
-use Class::Inspector;
+
+with 'Catalyst::Component::Role::CaptureApp';
has path_prefix =>
(
init_arg => undef,
);
-# isa => 'ClassName|Catalyst' ?
-has _application => (is => 'rw');
-sub _app{ shift->_application(@_) }
-
sub BUILD {
my ($self, $args) = @_;
my $action = delete $args->{action} || {};
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);
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