summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2011-10-10 18:17:38 -0500
committerJesse Luehrs <doy@tozt.net>2011-10-10 18:17:38 -0500
commitc722482a26ab64d3cf35b1c79ee089b79f177357 (patch)
tree667ebd2ea107a5a4c83489ee7bd3bb59e08c2483
parente1c675f0a434b6323cff812c8293eee5dc0c6c28 (diff)
downloadbread-board-declare-c722482a26ab64d3cf35b1c79ee089b79f177357.tar.gz
bread-board-declare-c722482a26ab64d3cf35b1c79ee089b79f177357.zip
handle setting name slightly better
-rw-r--r--lib/Bread/Board/Declare/Role/Object.pm20
1 files changed, 16 insertions, 4 deletions
diff --git a/lib/Bread/Board/Declare/Role/Object.pm b/lib/Bread/Board/Declare/Role/Object.pm
index b1f5fbd..b4f509d 100644
--- a/lib/Bread/Board/Declare/Role/Object.pm
+++ b/lib/Bread/Board/Declare/Role/Object.pm
@@ -53,19 +53,31 @@ after BUILD => sub {
my $container;
if ($attr->has_value($self) || $attr->has_default || $attr->has_builder) {
$container = $attr->get_value($self);
+ $container->name($attr->name);
}
else {
+ my $dependencies = $attr->has_dependencies
+ ? $attr->dependencies
+ : {};
+
+ if (!exists $dependencies->{name}) {
+ my $name_dep = Bread::Board::Dependency->new(
+ service => Bread::Board::Literal->new(
+ name => '__ANON__',
+ value => $attr->name,
+ ),
+ );
+ $dependencies->{name} = $name_dep;
+ }
+
my $s = Bread::Board::ConstructorInjection->new(
name => '__ANON__',
parent => $self,
class => $attr->type_constraint->class,
- ($attr->has_dependencies
- ? (dependencies => $attr->dependencies)
- : ()),
+ dependencies => $dependencies,
);
$container = $s->get;
}
- $container->name($attr->name);
$self->add_sub_container($container);
}
};