Get the 'real' components, not the compat ones for the list
Tomas Doran [Wed, 10 Aug 2011 21:44:34 +0000 (22:44 +0100)]
lib/Catalyst/IOC/Container.pm

index 30a7a77..880fa96 100644 (file)
@@ -611,14 +611,19 @@ sub get_all_components {
     my $self = shift;
     my %components;
 
-    my $container = $self->get_sub_container('component');
-
-    for my $component ($container->get_service_list) {
-        my $comp = $container->resolve(
-            service => $component
-        );
-        my $comp_name = ref $comp || $comp;
-        $components{$comp_name} = $comp;
+    foreach my $type (qw/model view controller /) {
+        my $container = $self->get_sub_container('component');
+
+        for my $component ($container->get_service_list) {
+            my $comp = $container->resolve(
+                service => $component
+            );
+            my $comp_name = ref $comp || $comp; # THIS IS WRONG! :)
+                                                # Just as it is called Model::Foo
+                                                # does not mean it has to be
+                                                # an instance of model::foo
+            $components{$comp_name} = $comp;
+        }
     }
 
     return lock_hash %components;