Catalyst-Model-MultiAdaptor
view release on metacpan or search on metacpan
inc/Catalyst.pm view on Meta::CPAN
sub prepare_uploads {
my $c = shift;
$c->engine->prepare_uploads( $c, @_ );
if ( $c->debug && keys %{ $c->request->uploads } ) {
my $t = Text::SimpleTable->new(
[ 12, 'Parameter' ],
[ 26, 'Filename' ],
[ 18, 'Type' ],
[ 9, 'Size' ]
);
for my $key ( sort keys %{ $c->request->uploads } ) {
my $upload = $c->request->uploads->{$key};
for my $u ( ref $upload eq 'ARRAY' ? @{$upload} : ($upload) ) {
$t->row( $key, $u->filename, $u->type, $u->size );
}
}
$c->log->debug( "File Uploads are:\n" . $t->draw );
}
}
#line 2146
sub prepare_write { my $c = shift; $c->engine->prepare_write( $c, @_ ) }
#line 2171
sub read { my $c = shift; return $c->engine->read( $c, @_ ) }
#line 2179
sub run { my $c = shift; return $c->engine->run( $c, @_ ) }
#line 2187
sub set_action { my $c = shift; $c->dispatcher->set_action( $c, @_ ) }
#line 2195
sub setup_actions { my $c = shift; $c->dispatcher->setup_actions( $c, @_ ) }
#line 2212
sub setup_components {
my $class = shift;
my $config = $class->config->{ setup_components };
my @comps = sort { length $a <=> length $b }
$class->locate_components($config);
my %comps = map { $_ => 1 } @comps;
my $deprecatedcatalyst_component_names = grep { /::[CMV]::/ } @comps;
$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;
for my $component ( @comps ) {
# We pass ignore_loaded here so that overlay files for (e.g.)
# Model::DBI::Schema sub-classes are loaded - if it's in @comps
# we know M::P::O found a file on disk so this is safe
Catalyst::Utils::ensure_class_loaded( $component, { ignore_loaded => 1 } );
# Needs to be done as soon as the component is loaded, as loading a sub-component
# (next time round the loop) can cause us to get the wrong metaclass..
$class->_controller_init_base_classes($component);
}
for my $component (@comps) {
$class->components->{ $component } = $class->setup_component($component);
for my $component ($class->expand_component_module( $component, $config )) {
next if $comps{$component};
$class->_controller_init_base_classes($component); # Also cover inner packages
$class->components->{ $component } = $class->setup_component($component);
}
}
}
#line 2261
sub locate_components {
my $class = shift;
my $config = shift;
my @paths = qw( ::Controller ::C ::Model ::M ::View ::V );
my $extra = delete $config->{ search_extra } || [];
push @paths, @$extra;
my $locator = Module::Pluggable::Object->new(
search_path => [ map { s/^(?=::)/$class/; $_; } @paths ],
%$config
);
my @comps = $locator->plugins;
return @comps;
}
#line 2287
sub expand_component_module {
my ($class, $module) = @_;
return Devel::InnerPackage::list_packages( $module );
}
#line 2296
# FIXME - Ugly, ugly hack to ensure the we force initialize non-moose base classes
# nearest to Catalyst::Controller first, no matter what order stuff happens
# to be loaded. There are TODO tests in Moose for this, see
# f2391d17574eff81d911b97be15ea51080500003
sub _controller_init_base_classes {
my ($app_class, $component) = @_;
return unless $component->isa('Catalyst::Controller');
foreach my $class ( reverse @{ mro::get_linear_isa($component) } ) {
Moose::Meta::Class->initialize( $class )
unless find_meta($class);
( run in 0.429 second using v1.01-cache-2.11-cpan-df04353d9ac )