X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FIOC%2FContainer.pm;fp=lib%2FCatalyst%2FIOC%2FContainer.pm;h=03c850a7284c388e8c0ffe54c1d22d0f9b2282b7;hb=a2c0d07186c771bfd7b07bd8786cd5299b6639f6;hp=c2e75bfde6afb51eed261e7027a83f3562e7907c;hpb=af5df7d1f17d65499d0a7b4bbd8237add631bb33;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst/IOC/Container.pm b/lib/Catalyst/IOC/Container.pm index c2e75bf..03c850a 100644 --- a/lib/Catalyst/IOC/Container.pm +++ b/lib/Catalyst/IOC/Container.pm @@ -51,13 +51,11 @@ has sub_container_class => ( ); sub BUILD { - my $self = shift; + my ( $self, $params ) = @_; $self->add_service( $self->${\"build_${_}_service"} ) for qw/ - default_view - default_model substitutions file driver @@ -76,14 +74,26 @@ sub BUILD { /; $self->add_sub_container( - $self->${ \"build_${_}_subcontainer" } - ) for qw/ model view controller /; + $self->build_controller_subcontainer + ); + + $self->add_sub_container( + $self->build_view_subcontainer( + default_component => $params->{default_view}, + ) + ); + + $self->add_sub_container( + $self->build_model_subcontainer( + default_component => $params->{default_model}, + ) + ); } sub build_model_subcontainer { my $self = shift; - return $self->new_sub_container( + return $self->new_sub_container( @_, name => 'model', ); } @@ -91,7 +101,7 @@ sub build_model_subcontainer { sub build_view_subcontainer { my $self = shift; - return $self->new_sub_container( + return $self->new_sub_container( @_, name => 'view', ); } @@ -104,26 +114,6 @@ sub build_controller_subcontainer { ); } -sub build_default_model_service { - Bread::Board::BlockInjection->new( - name => 'default_model', - block => sub { - shift->param('config')->{default_model}; - }, - dependencies => [ depends_on('config') ], - ); -} - -sub build_default_view_service { - Bread::Board::BlockInjection->new( - name => 'default_view', - block => sub { - shift->param('config')->{default_view}; - }, - dependencies => [ depends_on('config') ], - ); -} - sub build_name_service { my $self = shift; @@ -408,9 +398,7 @@ sub get_component_from_sub_container { my $sub_container = $self->get_sub_container( $sub_container_name ); if (!$name) { - my $default_name = 'default_' . $sub_container_name; - my $default = $self->resolve( service => $default_name ) - if $self->has_service($default_name); + my $default = $sub_container->default_component; return $sub_container->get_component( $default, $c, @args ) if $default && $sub_container->has_service( $default ); @@ -420,6 +408,8 @@ sub get_component_from_sub_container { $c->log->warn( "* \$c->config(default_$sub_container_name => 'the name of the default $sub_container_name to use')" ); $c->log->warn( "* \$c->stash->{current_$sub_container_name} # the name of the view to use for this request" ); $c->log->warn( "* \$c->stash->{current_${sub_container_name}_instance} # the instance of the $sub_container_name to use for this request" ); + + return; } return $sub_container->get_component_regexp( $name, $c, @args )