add_component only needs one arg now
[catagits/Catalyst-Runtime.git] / lib / Catalyst / IOC / Container.pm
index 4409816..faafcaf 100644 (file)
@@ -418,7 +418,7 @@ sub setup_components {
     }
 
     for my $component (@comps) {
-        $self->add_component( $component, $class );
+        $self->add_component( $component );
         # FIXME - $instance->expand_modules() is broken
         my @expanded_components = $self->expand_component_module( $component );
 
@@ -428,13 +428,14 @@ sub setup_components {
             ($deprecatedcatalyst_component_names = grep { /::[CMV]::/ } @expanded_components)
         ) {
             # FIXME - should I be calling warn here?
+            # Maybe it's time to remove it, or become fatal
             $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}
             );
         }
 
         for my $component (@expanded_components) {
-            $self->add_component( $component, $class )
+            $self->add_component( $component )
                 unless $comps{$component};
         }
     }
@@ -610,7 +611,7 @@ sub get_all_components {
 }
 
 sub add_component {
-    my ( $self, $component, $class ) = @_;
+    my ( $self, $component ) = @_;
     my ( $type, $name ) = _get_component_type_name($component);
 
     return unless $type;
@@ -629,8 +630,9 @@ sub add_component {
                     default => Catalyst::Utils::class2classsuffix( $component ),
                 },
                 accept_context_args => {
-                    isa => 'ArrayRef',
-                    default => sub { [] },
+                    isa => 'ArrayRef|Undef',
+                    required => 0,
+                    default => undef,
                 },
             },
         )
@@ -680,7 +682,7 @@ Catalyst::Container - IOC for Catalyst components
 
 =head1 METHODS
 
-=head1 Containers
+=head1 Building Containers
 
 =head2 build_model_subcontainer
 
@@ -694,7 +696,7 @@ Container that stores all views.
 
 Container that stores all controllers.
 
-=head1 Services
+=head1 Building Services
 
 =head2 build_application_name_service
 
@@ -710,28 +712,78 @@ Config options passed directly to the driver being used.
 
 =head2 build_substitutions_service
 
-Executes all the substitutions in config. See L</_config_substitutions> method.
+This method substitutes macros found with calls to a function. There are a
+number of default macros:
+
+=over
+
+=item * C<__HOME__> - replaced with C<$c-E<gt>path_to('')>
+
+=item * C<__ENV(foo)__> - replaced with the value of C<$ENV{foo}>
+
+=item * C<__path_to(foo/bar)__> - replaced with C<$c-E<gt>path_to('foo/bar')>
+
+=item * C<__literal(__FOO__)__> - leaves __FOO__ alone (allows you to use
+C<__DATA__> as a config value, for example)
+
+=back
+
+The parameter list is split on comma (C<,>). You can override this method to
+do your own string munging, or you can define your own macros in
+C<MyApp-E<gt>config-E<gt>{ 'Plugin::ConfigLoader' }-E<gt>{ substitutions }>.
+Example:
+
+    MyApp->config->{ 'Plugin::ConfigLoader' }->{ substitutions } = {
+        baz => sub { my $c = shift; qux( @_ ); }
+    }
+
+The above will respond to C<__baz(x,y)__> in config strings.
 
 =head2 build_extensions_service
 
+Config::Any's available config file extensions (e.g. xml, json, pl, etc).
+
 =head2 build_prefix_service
 
+The prefix, based on the application name, that will be used to lookup the
+config files (which will be in the format $prefix.$extension). If the app is
+MyApp::Foo, the prefix will be myapp_foo.
+
 =head2 build_path_service
 
+The path to the config file (or environment variable, if defined).
+
 =head2 build_config_service
 
+The resulting configuration for the application, after it has successfully
+been loaded, and all substitutions have been made.
+
 =head2 build_raw_config_service
 
+The merge of local_config and global_config hashes, before substitutions.
+
 =head2 build_global_files_service
 
+Gets all files for config that don't have the local_suffix, such as myapp.conf.
+
 =head2 build_local_files_service
 
+Gets all files for config that have the local_suffix, such as myapp_local.conf.
+
 =head2 build_global_config_service
 
+Reads config from global_files.
+
 =head2 build_local_config_service
 
+Reads config from local_files.
+
 =head2 build_config_path_service
 
+Splits the path to the config file, and returns on array ref containing
+the path to the config file minus the extension in the first position,
+and the extension in the second.
+
 =head2 build_config_local_suffix_service
 
 Determines the suffix of files used to override the main config. By default
@@ -753,6 +805,16 @@ For example, if C< $ENV{ MYAPP_CONFIG_LOCAL_SUFFIX }> is set to C<testing>,
 ConfigLoader will try and load C<myapp_testing.conf> instead of
 C<myapp_local.conf>.
 
+=head2 build_locate_components_service
+
+This method is meant to provide a list of component modules that should be
+setup for the application.  By default, it will use L<Module::Pluggable>.
+
+Specify a C<setup_components> config option to pass additional options directly
+to L<Module::Pluggable>.
+
+=head1 Other methods
+
 =head2 get_component_from_sub_container($sub_container, $name, $c, @args)
 
 Looks for components in a given subcontainer (such as controller, model or view), and returns the searched component. If $name is undef, it returns the default component (such as default_view, if $sub_container is 'view'). If $name is a regexp, it returns an array of matching components. Otherwise, it looks for the component with name $name.
@@ -775,50 +837,11 @@ Searches for components in all containers. If $component is the full class name,
 
 Finds components that match a given regexp. Used internally, by find_component.
 
-=head2 _fix_syntax
-
-=head2 _config_substitutions
-
-This method substitutes macros found with calls to a function. There are a
-number of default macros:
-
-=over
-
-=item * C<__HOME__> - replaced with C<$c-E<gt>path_to('')>
-
-=item * C<__ENV(foo)__> - replaced with the value of C<$ENV{foo}>
-
-=item * C<__path_to(foo/bar)__> - replaced with C<$c-E<gt>path_to('foo/bar')>
-
-=item * C<__literal(__FOO__)__> - leaves __FOO__ alone (allows you to use
-C<__DATA__> as a config value, for example)
-
-=back
-
-The parameter list is split on comma (C<,>). You can override this method to
-do your own string munging, or you can define your own macros in
-C<MyApp-E<gt>config-E<gt>{ 'Plugin::ConfigLoader' }-E<gt>{ substitutions }>.
-Example:
-
-    MyApp->config->{ 'Plugin::ConfigLoader' }->{ substitutions } = {
-        baz => sub { my $c = shift; qux( @_ ); }
-    }
-
-The above will respond to C<__baz(x,y)__> in config strings.
-
-=head2 $c->expand_component_module( $component, $setup_component_config )
+=head2 expand_component_module
 
 Components found by C<locate_components> will be passed to this method, which
 is expected to return a list of component (package) names to be set up.
 
-=head2 build_locate_components_service
-
-This method is meant to provide a list of component modules that should be
-setup for the application.  By default, it will use L<Module::Pluggable>.
-
-Specify a C<setup_components> config option to pass additional options directly
-to L<Module::Pluggable>.
-
 =head2 setup_components
 
 =head1 AUTHORS