my $filter = "^${appclass}::(" . join( '|', @prefixes ) . ')::';
$filter = qr/$filter/; # Compile regex now rather than once per loop
- my @components = map { $c->container->get_sub_container($_)->get_service_list } qw(controller view model);
+ my @components = map { $c->container->get_sub_container($_)->get_service_list } qw(controller view model);
# map the original component name to the sub part that we will search against
my %eligible = map { my $n = $_; $n =~ s{^$appclass\::[^:]+::}{}; $_ => $n; }
- grep { /$filter/ } @components;
+ grep { /$filter/ } @components;
# undef for a name will return all
return keys %eligible if !defined $name;
unless ( ref($name) ) { # Direct component hash lookup to avoid costly regexps
my $check = $appclass."::Controller::".$name;
my $container = $c->container->get_sub_container('controller');
- return $c->_filter_component( $container->resolve(service => "$check"), @args )
+ return $c->_filter_component( $container->resolve(service => "$check"), @args )
if $container->has_service($check);
}
my @result = $c->_comp_search_prefixes( $name, qw/Controller C/ );
unless ( ref($name) ) { # Direct component hash lookup to avoid costly regexps
my $check = $appclass."::Model::".$name;
my $container = $c->container->get_sub_container('model');
- return $c->_filter_component( $container->resolve(service => "$check"), @args )
+ return $c->_filter_component( $container->resolve(service => "$check"), @args )
if $container->has_service($check);
}
my @result = $c->_comp_search_prefixes( $name, qw/Model M/ );
my $container = $c->container->get_sub_container('view');
if ($container->has_service($check)) {
- return $c->_filter_component( $container->get_service($check)->get, @args );
+ return $c->_filter_component( $container->resolve(service => $check), @args );
}
else {
$c->log->warn( "Attempted to use view '$check', but does not exist" );
around components => sub {
my $orig = shift;
- my $class = shift;
+ my $class = shift;
my $comps = shift;
return $class->$orig if ( !$comps );
+# FIXME: should this ugly kludge exist?
$class->setup_config unless defined $class->container;
-# should there be a warning here, not to use this accessor to create the components?
+# FIXME: should there be a warning here, not to use this accessor to create the components?
my $components = {};
my $containers;
sub setup_config {
my $class = shift;
- my %args = %{$class->config || {} };
+ my %args = %{ $class->config || {} };
+
+# FIXME: what is this 'MyApp' doing here?
my @container_classes = qw/MyApp::Container Catalyst::Container/;
unshift @container_classes, delete $args{container_class} if exists $args{container_class};
$container->add_sub_container(Bread::Board::Container->new( name => $_ )) for qw(model controller view);
$class->container($container);
- my $config = $container->fetch('config')->get;
+ my $config = $container->resolve(service => 'config');
$class->config($config);
$class->finalize_config; # back-compat
}
my @parts = split /::/, $component;
for (@parts) {
- return 'controller' if /c|controller/i;
- return 'model' if /m|model/i;
- return 'view' if /v|view/i;
+ return 'controller' if /^c|controller$/i;
+ return 'model' if /^m|model$/i;
+ return 'view' if /^v|view$/i;
}
}
message => qq/Couldn't instantiate component "$component", "$error"/
);
}
-
- unless (blessed $instance) {
+ elsif (!blessed $instance) {
my $metaclass = Moose::Util::find_meta($component);
my $method_meta = $metaclass->find_method_by_name('COMPONENT');
my $component_method_from = $method_meta->associated_metaclass->name;
qq/Couldn't instantiate component "$component", COMPONENT() method (from $component_method_from) didn't return an object-like value (value was $value)./
);
}
+
return $instance;
}