sub setup_components {
my $self = shift;
+ warn("Setting up default components");
my $class = $self->resolve( service => 'application_name' );
my @comps = @{ $self->resolve( service => 'locate_components' ) };
my %comps = map { $_ => 1 } @comps;
my $self = shift;
my %components;
- my $container = $self->get_sub_container('component');
+ foreach my $type (qw/model view controller /) {
+ my $container = $self->get_sub_container($type);
- for my $component ($container->get_service_list) {
- my $comp = $container->resolve(
- service => $component
- );
- my $comp_name = ref $comp || $comp;
- $components{$comp_name} = $comp;
+ 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;
# sub every time they are called, when it exists.
my $instance_container = $self->get_sub_container('component');
my $accept_context_container = $self->get_sub_container($type);
+ my $app_config = $self->resolve( service => 'config' );
+ my $config = $app_config->{Catalyst::Utils::class2classsuffix($component)} || {};
$instance_container->add_service(
Catalyst::IOC::ConstructorInjection->new(
name => $component_service_name,
class => $component,
lifecycle => 'Singleton',
+ config => $config,
dependencies => [
depends_on( '/application_name' ),
- depends_on( '/config' ),
],
)
) unless $instance_container->has_service( $component_service_name );