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 | |
11 | $self->get_sub_container('component')->add_service( |
12 | Catalyst::IOC::ConstructorInjection->new( |
13 | name => 'model_Bar', |
14 | class => 'TestAppCustomContainer::Model::Bar', |
15 | dependencies => [ |
16 | depends_on( '/application_name' ), |
17 | depends_on( '/config' ), |
18 | depends_on( '/model/Foo' ), |
19 | ], |
20 | ) |
21 | ); |
22 | $self->get_sub_container('model')->add_service( |
23 | Catalyst::IOC::BlockInjection->new( |
24 | name => 'Bar', |
25 | dependencies => [ |
26 | depends_on( '/model/Foo' ), |
27 | depends_on( '/component/model_Bar' ), |
28 | ], |
29 | block => sub { |
b463fcad |
30 | my $s = shift; |
31 | |
32 | my $foo = $s->param('Foo'); |
33 | $foo->inc_bar_got_it; |
34 | |
35 | return $s->param('model_Bar'); |
f831deb1 |
36 | }, |
37 | ) |
38 | ); |
39 | |
3ef84846 |
40 | $self->get_sub_container('component')->add_service( |
41 | Catalyst::IOC::ConstructorInjection->new( |
42 | name => 'model_Baz', |
88cea23c |
43 | class => 'TestAppCustomContainer::Model::Baz', |
b18a77bd |
44 | lifecycle => '+Catalyst::IOC::LifeCycle::Request', |
3ef84846 |
45 | dependencies => [ |
46 | depends_on( '/application_name' ), |
47 | depends_on( '/config' ), |
48 | depends_on( '/model/Foo' ), |
49 | ], |
50 | ) |
51 | ); |
52 | $self->get_sub_container('model')->add_service( |
53 | Catalyst::IOC::BlockInjection->new( |
54 | name => 'Baz', |
55 | dependencies => [ |
56 | depends_on( '/model/Foo' ), |
57 | depends_on( '/component/model_Baz' ), |
58 | ], |
59 | block => sub { |
b463fcad |
60 | my $s = shift; |
61 | |
62 | my $foo = $s->param('Foo'); |
63 | $foo->inc_baz_got_it; |
64 | |
65 | return $s->param('model_Baz'); |
3ef84846 |
66 | }, |
67 | ) |
68 | ); |
f831deb1 |
69 | |
70 | $self->get_sub_container('model')->add_service( |
71 | Catalyst::IOC::BlockInjection->new( |
72 | name => 'Quux', |
f831deb1 |
73 | lifecycle => 'Singleton', |
74 | dependencies => [ |
75 | depends_on( '/component/model_Quux' ), |
76 | ], |
77 | block => sub { shift->param('model_Bar') }, |
78 | ) |
79 | ); |
80 | |
81 | $self->get_sub_container('component')->add_service( |
82 | Catalyst::IOC::ConstructorInjection->new( |
83 | name => 'model_Fnar', |
84 | lifecycle => 'Singleton', |
b463fcad |
85 | class => 'TestAppCustomContainer::External::Class', |
f831deb1 |
86 | dependencies => [ |
87 | depends_on( '/application_name' ), |
88 | depends_on( '/config' ), |
89 | ], |
90 | ) |
91 | ); |
92 | $self->get_sub_container('model')->add_service( |
93 | Catalyst::IOC::BlockInjection->new( |
94 | name => 'model_Fnar', |
95 | lifecycle => 'Singleton', |
96 | dependencies => [ |
97 | depends_on( '/config' ), |
98 | depends_on( '/component/model_Fnar' ), |
99 | ], |
100 | block => sub { shift->param('model_Fnar') }, |
101 | ) |
102 | ); |
3ef84846 |
103 | } |
104 | |
88cea23c |
105 | __PACKAGE__->meta->make_immutable; |
106 | |
3ef84846 |
107 | 1; |