Merge branch 'master' into gsoc_breadboard
[catagits/Catalyst-Runtime.git] / lib / Catalyst.pm
index 2dd7d5d..ccc6853 100644 (file)
@@ -866,6 +866,9 @@ sub component {
             return $c->_filter_component( $comp, @args ) if $comp;
         }
 
+        return
+            if $c->config->{disable_component_resolution_regex_fallback};
+
         # This is here so $c->comp( '::M::' ) works
         my $query = ref $name ? $name : qr{$name}i;
 
@@ -2455,18 +2458,15 @@ sub setup_config {
 
     my %args = %{ $class->config || {} };
 
-# FIXME: what is this 'MyApp' doing here?
-    my @container_classes = qw/MyApp::Container Catalyst::Container/;
+    my @container_classes = ( "${class}::Container", 'Catalyst::Container');
     unshift @container_classes, delete $args{container_class} if exists $args{container_class};
 
     my $container_class = Class::MOP::load_first_existing_class(@container_classes);
 
     my $container = $container_class->new( %args, name => "$class" );
-
-    $container->add_sub_container(Bread::Board::Container->new( name => $_ )) for qw(model controller view);
     $class->container($container);
 
-    my $config = $container->fetch('config')->get;
+    my $config = $container->resolve(service => 'config');
     $class->config($config);
     $class->finalize_config; # back-compat
 }
@@ -2547,9 +2547,9 @@ sub _get_component_type {
     my @parts     = split /::/, $component;
 
     for (@parts) {
-        return 'controller' if /c|controller/i;
-        return 'model'      if /m|model/i;
-        return 'view'       if /v|view/i;
+        return 'controller' if /^c|controller$/i;
+        return 'model'      if /^m|model$/i;
+        return 'view'       if /^v|view$/i;
     }
 }
 
@@ -2623,8 +2623,7 @@ sub setup_component {
             message => qq/Couldn't instantiate component "$component", "$error"/
         );
     }
-
-    unless (blessed $instance) {
+    elsif (!blessed $instance) {
         my $metaclass = Moose::Util::find_meta($component);
         my $method_meta = $metaclass->find_method_by_name('COMPONENT');
         my $component_method_from = $method_meta->associated_metaclass->name;
@@ -2634,6 +2633,7 @@ sub setup_component {
             qq/Couldn't instantiate component "$component", COMPONENT() method (from $component_method_from) didn't return an object-like value (value was $value)./
         );
     }
+
     return $instance;
 }
 
@@ -2897,7 +2897,7 @@ the plugin name does not begin with C<Catalyst::Plugin::>.
         my $class = ref $proto || $proto;
 
         Class::MOP::load_class( $plugin );
-        $class->log->warn( "$plugin inherits from 'Catalyst::Component' - this is decated and will not work in 5.81" )
+        $class->log->warn( "$plugin inherits from 'Catalyst::Component' - this is deprecated and will not work in 5.81" )
             if $plugin->isa( 'Catalyst::Component' );
         $proto->_plugins->{$plugin} = 1;
         unless ($instant) {