From 2a5b6f7d3dc3a2afdf5efb254720bd1b1fafcc4a Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Sat, 16 Apr 2011 09:54:50 -0500 Subject: allow explicitly not creating a type mapping for certain services --- lib/Bread/Board/Declare/Role/Object.pm | 3 ++- lib/Bread/Board/Declare/Role/Service.pm | 11 +++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) (limited to 'lib/Bread/Board/Declare/Role') 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; -- cgit v1.2.3-54-g00ecf