summaryrefslogtreecommitdiffstats
path: root/lib/Bread/Board/Declare/Role
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Bread/Board/Declare/Role')
-rw-r--r--lib/Bread/Board/Declare/Role/Object.pm3
-rw-r--r--lib/Bread/Board/Declare/Role/Service.pm11
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;