lets simplify stuff
[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
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 781;