Extending TestAppCustomContainer (without sugar)
[catagits/Catalyst-Runtime.git] / t / lib / TestAppCustomContainer / NoSugarContainer.pm
CommitLineData
88cea23c 1package TestAppCustomContainer::NoSugarContainer;
3ef84846 2use Moose;
88cea23c 3use namespace::autoclean;
4use Catalyst::IOC;
3ef84846 5
6extends 'Catalyst::IOC::Container';
7
8sub 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 1071;