removed solved fixme's
[catagits/Catalyst-Runtime.git] / t / lib / TestAppCustomContainer / NoSugarContainer.pm
1 package TestAppCustomContainer::NoSugarContainer;
2 use Moose;
3 use namespace::autoclean;
4 use Catalyst::IOC;
5
6 extends 'Catalyst::IOC::Container';
7
8 sub BUILD {
9     my $self = shift;
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
38     $self->get_sub_container('component')->add_service(
39         Catalyst::IOC::ConstructorInjection->new(
40             name         => 'model_Baz',
41             class        => 'TestAppCustomContainer::Model::Baz',
42             lifecycle    => '+Catalyst::IOC::LifeCycle::Request',
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     );
65
66     $self->get_sub_container('model')->add_service(
67         Catalyst::IOC::BlockInjection->new(
68             name         => 'Quux',
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     );
99 }
100
101 __PACKAGE__->meta->make_immutable;
102
103 1;