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 } $c->container->get_sub_container_list;
+
# 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/ } keys %{ $c->components };
+ grep { /$filter/ } @components;
# undef for a name will return all
return keys %eligible if !defined $name;
my $appclass = ref($c) || $c;
if( $name ) {
unless ( ref($name) ) { # Direct component hash lookup to avoid costly regexps
- my $comps = $c->components;
my $check = $appclass."::Controller::".$name;
- return $c->_filter_component( $comps->{$check}, @args ) if exists $comps->{$check};
+ return $c->_filter_component( $c->container->get_sub_container('controller')->get_service($check)->get, @args ) if $c->container->get_sub_container('controller')->has_service($check);
}
my @result = $c->_comp_search_prefixes( $name, qw/Controller C/ );
return map { $c->_filter_component( $_, @args ) } @result if ref $name;
my $appclass = ref($c) || $c;
if( $name ) {
unless ( ref($name) ) { # Direct component hash lookup to avoid costly regexps
- my $comps = $c->components;
my $check = $appclass."::Model::".$name;
- return $c->_filter_component( $comps->{$check}, @args ) if exists $comps->{$check};
+ return $c->_filter_component( $c->container->get_sub_container('model')->get_service($check)->get, @args ) if $c->container->get_sub_container('model')->has_service($check);
}
my @result = $c->_comp_search_prefixes( $name, qw/Model M/ );
return map { $c->_filter_component( $_, @args ) } @result if ref $name;
my $appclass = ref($c) || $c;
if( $name ) {
unless ( ref($name) ) { # Direct component hash lookup to avoid costly regexps
- my $comps = $c->components;
my $check = $appclass."::View::".$name;
- if( exists $comps->{$check} ) {
- return $c->_filter_component( $comps->{$check}, @args );
+ if ($c->container->get_sub_container('view')->has_service($check)) {
+
+ return $c->_filter_component( $c->container->get_sub_container('view')->get_service($check)->get, @args );
}
else {
$c->log->warn( "Attempted to use view '$check', but does not exist" );
for my $component (@comps) {
my $instance = $class->components->{ $component } = $class->setup_component($component);
my $type = lc((split /::/, $component)[1]);
+ if ($deprecatedcatalyst_component_names) {
+ $type = 'controller' if $type eq 'c';
+ $type = 'model' if $type eq 'm';
+ $type = 'view' if $type eq 'v';
+ }
$containers->{$type}->add_service(Bread::Board::BlockInjection->new( name => $component, block => sub { return $instance } ));
my @expanded_components = $instance->can('expand_modules')
? $instance->expand_modules( $component, $config )
: $class->expand_component_module( $component, $config );
for my $component (@expanded_components) {
next if $comps{$component};
+
+ $deprecatedcatalyst_component_names = grep { /::[CMV]::/ } @expanded_components;
+ $class->log->warn(qq{Your application is using the deprecated ::[MVC]:: type naming scheme.\n}.
+ qq{Please switch your class names to ::Model::, ::View:: and ::Controller: as appropriate.\n}
+ ) if $deprecatedcatalyst_component_names;
+
+ if ($deprecatedcatalyst_component_names) {
+ $type = lc((split /::/, $component)[1]);
+ $type = 'controller' if $type eq 'c';
+ $type = 'model' if $type eq 'm';
+ $type = 'view' if $type eq 'v';
+ }
+ $containers->{$type}->add_service(Bread::Board::BlockInjection->new( name => $component, block => sub { return $class->setup_component($component) } ));
$class->components->{ $component } = $class->setup_component($component);
}
}