diff options
author | Jesse Luehrs <doy@tozt.net> | 2011-04-16 09:54:50 -0500 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2011-04-16 09:54:50 -0500 |
commit | 2a5b6f7d3dc3a2afdf5efb254720bd1b1fafcc4a (patch) | |
tree | 99b2bb3b96e7ba6b77317359b32de7522b615c28 /lib/Bread/Board/Declare/Role | |
parent | 4e893b484f3b307995dae8ba66163cadb44a8a18 (diff) | |
download | bread-board-declare-2a5b6f7d3dc3a2afdf5efb254720bd1b1fafcc4a.tar.gz bread-board-declare-2a5b6f7d3dc3a2afdf5efb254720bd1b1fafcc4a.zip |
allow explicitly not creating a type mapping for certain services
Diffstat (limited to 'lib/Bread/Board/Declare/Role')
-rw-r--r-- | lib/Bread/Board/Declare/Role/Object.pm | 3 | ||||
-rw-r--r-- | lib/Bread/Board/Declare/Role/Service.pm | 11 |
2 files changed, 13 insertions, 1 deletions
diff --git a/lib/Bread/Board/Declare/Role/Object.pm b/lib/Bread/Board/Declare/Role/Object.pm index 7a5a71c..6ea4d91 100644 --- a/lib/Bread/Board/Declare/Role/Object.pm +++ b/lib/Bread/Board/Declare/Role/Object.pm @@ -35,7 +35,8 @@ after BUILD => sub { )->infer_service($service->class); $self->add_service($inferred); - $self->add_type_mapping_for($service->class, $inferred); + $self->add_type_mapping_for($service->class, $inferred) + if $service->should_create_typemap; $self->add_service( Bread::Board::Service::Alias->new( diff --git a/lib/Bread/Board/Declare/Role/Service.pm b/lib/Bread/Board/Declare/Role/Service.pm index 96bdaf7..d1972db 100644 --- a/lib/Bread/Board/Declare/Role/Service.pm +++ b/lib/Bread/Board/Declare/Role/Service.pm @@ -24,6 +24,17 @@ has associated_attribute => ( weak_ref => 1, ); +=method should_create_typemap + +Whether this service will create a type mapping, when it is added to a +container. + +=cut + +sub should_create_typemap { + return shift->associated_attribute->typemap; +} + around get => sub { my $orig = shift; my $self = shift; |