created attribute for the container class that will be used for subcontainers
André Walker [Mon, 27 Jun 2011 20:17:55 +0000 (17:17 -0300)]
Makefile.PL
lib/Catalyst/Container.pm

index fc5c1b9..0dee6c7 100644 (file)
@@ -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';
index aa20c66..2e885e3 100644 (file)
@@ -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 {