created get_component_from_sub_container
[catagits/Catalyst-Runtime.git] / lib / Catalyst / IOC / Container.pm
index 9983cf0..75da32b 100644 (file)
@@ -81,19 +81,25 @@ sub BUILD {
 sub build_model_subcontainer {
     my $self = shift;
 
-    return $self->new_sub_container( name => 'model' );
+    return $self->new_sub_container(
+        name => 'model',
+    );
 }
 
 sub build_view_subcontainer {
     my $self = shift;
 
-    return $self->new_sub_container( name => 'view' );
+    return $self->new_sub_container(
+        name => 'view',
+    );
 }
 
 sub build_controller_subcontainer {
     my $self = shift;
 
-    return $self->new_sub_container( name => 'controller' );
+    return $self->new_sub_container(
+        name => 'controller',
+    );
 }
 
 sub build_name_service {
@@ -374,6 +380,25 @@ sub _config_substitutions {
     return $arg;
 }
 
+sub get_component_from_sub_container {
+    my ( $self, $sub_container_name, $name, $c, @args ) = @_;
+
+    my $sub_container = $self->get_sub_container( $sub_container_name );
+
+    return $sub_container->get_component_regexp( $name, $c, @args )
+        if ref $name;
+
+    return $sub_container->get_component( $name, $c, @args )
+        if $sub_container->has_service( $name );
+
+    $c->log->warn(
+        "Attempted to use $sub_container_name '$name', " .
+        "but it does not exist"
+    );
+
+    return;
+}
+
 1;
 
 __END__