From: André Walker Date: Wed, 27 Jul 2011 20:44:11 +0000 (-0300) Subject: moved setup_components to Container X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=commitdiff_plain;h=a1c3fa901f0a80af9dca412fae97ffbb72092b7d moved setup_components to Container --- diff --git a/lib/Catalyst.pm b/lib/Catalyst.pm index b6d6231..500d286 100644 --- a/lib/Catalyst.pm +++ b/lib/Catalyst.pm @@ -2318,52 +2318,9 @@ The C config option is passed to both of the above methods. sub setup_components { my $class = shift; - my $container = $class->container; - - my $config = $class->config->{ setup_components }; - - Catalyst::Exception->throw( - qq{You are using search_extra config option. That option is\n} . - qq{deprecated, please refer to the documentation for\n} . - qq{other ways of achieving the same results.\n} - ) if delete $config->{ search_extra }; - - my @comps = $container->locate_components($class, $config); - my %comps = map { $_ => 1 } @comps; - - my $deprecatedcatalyst_component_names = grep { /::[CMV]::/ } @comps; - $class->log->warn(qq{Your application is using the deprecated ::[MVC]:: type naming scheme.\n}. - qq{Please switch your class names to ::Model::, ::View:: and ::Controller: as appropriate.\n} - ) if $deprecatedcatalyst_component_names; - - for my $component ( @comps ) { - - # We pass ignore_loaded here so that overlay files for (e.g.) - # Model::DBI::Schema sub-classes are loaded - if it's in @comps - # we know M::P::O found a file on disk so this is safe - - Catalyst::Utils::ensure_class_loaded( $component, { ignore_loaded => 1 } ); - } - - for my $component (@comps) { - $container->add_component( $component, $class ); -# FIXME - $instance->expand_modules() is broken - my @expanded_components = $container->expand_component_module( $component ); - for my $component (@expanded_components) { - next if $comps{$component}; - - # FIXME - Why is it inside the for loop? It makes no sense - $deprecatedcatalyst_component_names = grep { /::[CMV]::/ } @expanded_components; - $class->log->warn(qq{Your application is using the deprecated ::[MVC]:: type naming scheme.\n}. - qq{Please switch your class names to ::Model::, ::View:: and ::Controller: as appropriate.\n} - ) if $deprecatedcatalyst_component_names; - - $container->add_component( $component, $class ); - } - } - - $container->get_sub_container('model')->make_single_default; - $container->get_sub_container('view')->make_single_default; + # FIXME - I believe I shouldn't be handing $class over + # Just don't know how to solve this. + return $class->container->setup_components( $class ); } # FIXME - removed locate_components diff --git a/lib/Catalyst/IOC/Container.pm b/lib/Catalyst/IOC/Container.pm index d1f7413..dbb66d7 100644 --- a/lib/Catalyst/IOC/Container.pm +++ b/lib/Catalyst/IOC/Container.pm @@ -623,6 +623,59 @@ sub locate_components { return @comps; } +sub setup_components { + my ( $self, $class ) = @_; + + # FIXME - should I get config as an argument, and throw the exception in + # Catalyst.pm? + my $config = $self->resolve(service => 'config')->{ setup_components }; + + Catalyst::Exception->throw( + qq{You are using search_extra config option. That option is\n} . + qq{deprecated, please refer to the documentation for\n} . + qq{other ways of achieving the same results.\n} + ) if delete $config->{ search_extra }; + + my @comps = $self->locate_components( $class, $config ); + my %comps = map { $_ => 1 } @comps; + + my $deprecatedcatalyst_component_names = grep { /::[CMV]::/ } @comps; + $class->log->warn(qq{Your application is using the deprecated ::[MVC]:: type naming scheme.\n}. + qq{Please switch your class names to ::Model::, ::View:: and ::Controller: as appropriate.\n} + ) if $deprecatedcatalyst_component_names; + + for my $component ( @comps ) { + + # We pass ignore_loaded here so that overlay files for (e.g.) + # Model::DBI::Schema sub-classes are loaded - if it's in @comps + # we know M::P::O found a file on disk so this is safe + + Catalyst::Utils::ensure_class_loaded( $component, { ignore_loaded => 1 } ); + } + + for my $component (@comps) { + $self->add_component( $component, $class ); + # FIXME - $instance->expand_modules() is broken + my @expanded_components = $self->expand_component_module( $component ); + for my $component (@expanded_components) { + next if $comps{$component}; + + # FIXME - Why is it inside the for loop? It makes no sense + $deprecatedcatalyst_component_names = grep { /::[CMV]::/ } @expanded_components; + + # FIXME - should I be calling warn here? + $class->log->warn(qq{Your application is using the deprecated ::[MVC]:: type naming scheme.\n}. + qq{Please switch your class names to ::Model::, ::View:: and ::Controller: as appropriate.\n} + ) if $deprecatedcatalyst_component_names; + + $self->add_component( $component, $class ); + } + } + + $self->get_sub_container('model')->make_single_default; + $self->get_sub_container('view')->make_single_default; +} + 1; __END__