From: André Walker Date: Mon, 27 Jun 2011 20:17:55 +0000 (-0300) Subject: created attribute for the container class that will be used for subcontainers X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=commitdiff_plain;h=2bb0da6d84bec5f827e95e3c3aed6f12a94f91d7 created attribute for the container class that will be used for subcontainers --- diff --git a/Makefile.PL b/Makefile.PL index fc5c1b9..0dee6c7 100644 --- a/Makefile.PL +++ b/Makefile.PL @@ -51,6 +51,7 @@ requires 'MRO::Compat'; requires 'MooseX::Getopt' => '0.30'; requires 'MooseX::Types'; requires 'MooseX::Types::Common::Numeric'; +requires 'MooseX::Types::LoadableClass'; requires 'String::RewritePrefix' => '0.004'; # Catalyst::Utils::resolve_namespace test_requires 'Class::Data::Inheritable'; diff --git a/lib/Catalyst/Container.pm b/lib/Catalyst/Container.pm index aa20c66..2e885e3 100644 --- a/lib/Catalyst/Container.pm +++ b/lib/Catalyst/Container.pm @@ -4,6 +4,7 @@ use Moose; use Config::Any; use Data::Visitor::Callback; use Catalyst::Utils (); +use MooseX::Types::LoadableClass qw/ LoadableClass /; extends 'Bread::Board::Container'; @@ -37,15 +38,16 @@ has name => ( default => 'TestApp', ); +has sub_container_class => ( + isa => LoadableClass, + is => 'ro', + coerce => 1, + default => 'Bread::Board::Container', +); + sub BUILD { my $self = shift; - return if ( - $self->name eq 'model' or - $self->name eq 'view' or - $self->name eq 'controller' - ); - $self->build_root_container; $self->build_model_subcontainer; @@ -56,19 +58,25 @@ sub BUILD { sub build_model_subcontainer { my $self = shift; - $self->add_sub_container(__PACKAGE__->new( name => 'model' )); + $self->add_sub_container( + $self->sub_container_class->new( name => 'model' ) + ); } sub build_view_subcontainer { my $self = shift; - $self->add_sub_container(__PACKAGE__->new( name => 'view' )); + $self->add_sub_container( + $self->sub_container_class->new( name => 'view' ) + ); } sub build_controller_subcontainer { my $self = shift; - $self->add_sub_container(__PACKAGE__->new( name => 'controller' )); + $self->add_sub_container( + $self->sub_container_class->new( name => 'controller' ) + ); } sub build_root_container {