1 package TestAppCustomContainer::NoSugarContainer;
3 use namespace::autoclean;
6 extends 'Catalyst::IOC::Container';
11 warn("Add Bar to model");
12 my $bar_config = $self->resolve(service => 'config')->{'Model::Bar'} || {};
13 $self->get_sub_container('model')->add_service(
14 Catalyst::IOC::ConstructorInjection->new(
16 lifecycle => 'Singleton',
17 class => 'TestAppCustomContainer::Model::Bar',
18 config => $bar_config,
20 application_name => depends_on( '/application_name' ),
21 config => depends_on( '/config' ),
22 foo => depends_on('/model/DefaultSetup'),
27 # $self->get_sub_container('model')->add_service(
28 # # FIXME - i think it should be a ConstructorInjection
29 # # but only BlockInjection gets ctx parameter
30 # Catalyst::IOC::BlockInjection->new(
32 # lifecycle => '+Catalyst::IOC::LifeCycle::Request',
34 # Bread::Board::Dependency->new(
35 # service_name => 'foo',
36 # service_path => 'Foo',
38 # # FIXME - same as above
41 # accept_context_args => [ +{} ],
46 # TestAppCustomContainer::Model::Baz->new(foo => shift->param('foo'));
52 # $self->get_sub_container('model')->add_service(
53 # Catalyst::IOC::BlockInjection->new(
55 # lifecycle => 'Singleton',
57 # depends_on( '/component/model_Quux' ),
59 # block => sub { shift->param('model_Bar') },
63 my $fnar_config = $self->resolve(service => 'config')->{'Model::Fnar'} || {};
64 $self->get_sub_container('component')->add_service(
65 Catalyst::IOC::ConstructorInjection->new(
67 lifecycle => 'Singleton',
68 class => 'TestAppCustomContainer::External::Class',
70 depends_on( '/application_name' ),
72 config => $fnar_config,
75 $self->get_sub_container('model')->add_service(
76 Catalyst::IOC::BlockInjection->new(
78 lifecycle => 'Singleton',
80 depends_on( '/config' ),
81 depends_on( '/component/model_Fnar' ),
83 block => sub { shift->param('model_Fnar') },
88 __PACKAGE__->meta->make_immutable;