Commit | Line | Data |
88cea23c |
1 | package TestAppCustomContainer::NoSugarContainer; |
3ef84846 |
2 | use Moose; |
88cea23c |
3 | use namespace::autoclean; |
4 | use Catalyst::IOC; |
3ef84846 |
5 | |
6 | extends 'Catalyst::IOC::Container'; |
7 | |
8 | sub BUILD { |
9 | my $self = shift; |
f831deb1 |
10 | |
a5f37ed6 |
11 | warn("Add SingletonLifeCycle to model"); |
ced6f9e2 |
12 | $self->get_sub_container('model')->add_service( |
13 | Catalyst::IOC::ConstructorInjection->new( |
04189a0f |
14 | name => 'SingletonLifeCycle', |
a0475a83 |
15 | lifecycle => 'Singleton', |
04189a0f |
16 | class => 'TestAppCustomContainer::Model::SingletonLifeCycle', |
17 | catalyst_component_name => 'TestAppCustomContainer::Model::SingletonLifeCycle', |
a0475a83 |
18 | dependencies => { |
19 | application_name => depends_on( '/application_name' ), |
b32d8169 |
20 | foo => depends_on('/model/DefaultSetup'), |
f831deb1 |
21 | }, |
22 | ) |
23 | ); |
24 | |
a5f37ed6 |
25 | $self->get_sub_container('model')->add_service( |
26 | # FIXME - i think it should be a ConstructorInjection |
27 | # but only BlockInjection gets ctx parameter |
28 | Catalyst::IOC::ConstructorInjection->new( |
54f4b8d1 |
29 | name => 'RequestLifeCycle', |
a5f37ed6 |
30 | lifecycle => '+Catalyst::IOC::LifeCycle::Request', |
54f4b8d1 |
31 | class => 'TestAppCustomContainer::Model::RequestLifeCycle', |
a5f37ed6 |
32 | dependencies => { |
33 | application_name => depends_on( '/application_name' ), |
34 | foo => depends_on('/model/DefaultSetup'), |
35 | }, |
36 | ) |
37 | ); |
f831deb1 |
38 | |
b32d8169 |
39 | # Broken deps!?! |
40 | # $self->get_sub_container('model')->add_service( |
41 | # Catalyst::IOC::BlockInjection->new( |
42 | # name => 'Quux', |
43 | # lifecycle => 'Singleton', |
44 | # dependencies => [ |
45 | # depends_on( '/component/model_Quux' ), |
46 | # ], |
47 | # block => sub { shift->param('model_Bar') }, |
48 | # ) |
49 | # ); |
f831deb1 |
50 | |
00f61c9b |
51 | my $fnar_config = $self->resolve(service => 'config')->{'Model::Fnar'} || {}; |
f831deb1 |
52 | $self->get_sub_container('component')->add_service( |
53 | Catalyst::IOC::ConstructorInjection->new( |
54 | name => 'model_Fnar', |
55 | lifecycle => 'Singleton', |
b463fcad |
56 | class => 'TestAppCustomContainer::External::Class', |
f831deb1 |
57 | dependencies => [ |
58 | depends_on( '/application_name' ), |
f831deb1 |
59 | ], |
00f61c9b |
60 | config => $fnar_config, |
f831deb1 |
61 | ) |
62 | ); |
63 | $self->get_sub_container('model')->add_service( |
64 | Catalyst::IOC::BlockInjection->new( |
65 | name => 'model_Fnar', |
66 | lifecycle => 'Singleton', |
67 | dependencies => [ |
68 | depends_on( '/config' ), |
69 | depends_on( '/component/model_Fnar' ), |
70 | ], |
71 | block => sub { shift->param('model_Fnar') }, |
72 | ) |
73 | ); |
3ef84846 |
74 | } |
75 | |
88cea23c |
76 | __PACKAGE__->meta->make_immutable; |
77 | |
3ef84846 |
78 | 1; |