package Catalyst;
use Moose;
-#use MooseX::ClassAttribute;
extends 'Catalyst::Component';
-
use bytes;
use Catalyst::Exception;
use Catalyst::Log;
BEGIN { require 5.008001; }
-has counter => ( is => 'rw');
-has request => ( is => 'rw');
-has response => ( is => 'rw');
-has state => ( is => 'rw');
-has action => ( is => 'rw');
-has stack => ( is => 'rw');
-has namespace => ( is => 'rw');
-has stats => ( is => 'rw');
-
+__PACKAGE__->mk_accessors(
+ qw/counter request response state action stack namespace stats stash/
+);
attributes->import( __PACKAGE__, \&namespace, 'lvalue' );
our $RECURSION = 1000;
our $DETACH = "catalyst_detach\n";
-# class_has components => (is => 'rw');
-# class_has arguments => (is => 'rw');
-# class_has dispatcher => (is => 'rw');
-# class_has engine => (is => 'rw');
-# class_has log => (is => 'rw');
-# class_has dispatcher_class => (is => 'rw', required => 1, default => sub {'Catalyst::Dispatcher'});
-# class_has engine_class => (is => 'rw', required => 1, default => sub {'Catalyst::Engine::CGI'});
-# class_has context_class => (is => 'rw');
-# class_has request_class => (is => 'rw', required => 1, default => sub {'Catalyst::Request'});
-# class_has response_class => (is => 'rw', required => 1, default => sub {'Catalyst::Response'});
-# class_has stats_class => (is => 'rw', required => 1, default => sub {'Catalyst::Stats'});
-# class_has setup_finished => (is => 'rw');
-
__PACKAGE__->mk_classdata($_)
for qw/components arguments dispatcher engine log dispatcher_class
engine_class context_class request_class response_class stats_class
unless ( $caller->isa('Catalyst') ) {
no strict 'refs';
- push @{"$caller\::ISA"}, $class, 'Catalyst::Controller';
- #my $caller_meta = $caller->meta;
- #my @isa = $caller_meta->superclasses;
- #$caller_meta->superclasses(@isa, $class, 'Catalyst::Controller');
+ if( $caller->can('meta') ){
+ my @superclasses = ($caller->meta->superclasses, $class, 'Catalyst::Controller');
+ $caller->meta->superclasses(@superclasses);
+ } else {
+ push @{"$caller\::ISA"}, $class, 'Catalyst::Controller';
+ }
}
$caller->arguments( [@arguments] );
=cut
-sub stash {
+around stash => sub {
+ my $orig = shift;
my $c = shift;
if (@_) {
my $stash = @_ > 1 ? {@_} : $_[0];
croak('stash takes a hash or hashref') unless ref $stash;
foreach my $key ( keys %$stash ) {
- $c->{stash}->{$key} = $stash->{$key};
+ $c->$orig()->{$key} = $stash->{$key};
}
}
- return $c->{stash};
-}
+ return $c->$orig();
+};
=head2 $c->error
$class->_register_plugin( $plugin, 1 );
eval { $plugin->import };
- #MooseX::ClassAttribute::process_class_attribute($class, $name => (is => 'rw'));
$class->mk_classdata($name);
my $obj;
eval { $obj = $plugin->new(@args) };
# Model::DBI::Schema sub-classes are loaded - if it's in @comps
# we know M::P::O found a file on disk so this is safe
- Catalyst::Utils::ensure_class_loaded( $component, { ignore_loaded => 1 } );
+ #Catalyst::Utils::ensure_class_loaded( $component, { ignore_loaded => 1 } );
+ Class::MOP::load_class($component);
my $module = $class->setup_component( $component );
my %modules = (
$proto->_plugins->{$plugin} = 1;
unless ($instant) {
no strict 'refs';
- unshift @{"$class\::ISA"}, $plugin;
- # $class->meta->superclasses($plugin, $class->meta->superclasses);
+ if( $class->can('meta') ){
+ my @superclasses = ($plugin, $class->meta->superclasses );
+ $class->meta->superclasses(@superclasses);
+ } else {
+ unshift @{"$class\::ISA"}, $plugin;
+ }
}
return $class;
}