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