Mercurial > pub > Impl
comparison Lib/IMPL/Web/QueryHandler/UrlController.pm @ 139:5a9f64890c31
Fixed module loading by the UriController
author | wizard |
---|---|
date | Thu, 01 Jul 2010 17:32:29 +0400 |
parents | c13a215508ca |
children | e6447ad85cb4 |
comparison
equal
deleted
inserted
replaced
138:c5bc900eefd3 | 139:5a9f64890c31 |
---|---|
2 use strict; | 2 use strict; |
3 use base qw(IMPL::Web::QueryHandler); | 3 use base qw(IMPL::Web::QueryHandler); |
4 | 4 |
5 use IMPL::Class::Property; | 5 use IMPL::Class::Property; |
6 use IMPL::Exception; | 6 use IMPL::Exception; |
7 use Carp; | 7 use Carp qw(croak); |
8 | 8 |
9 BEGIN { | 9 BEGIN { |
10 public property namespace => prop_all; | 10 public property namespace => prop_all; |
11 } | 11 } |
12 | 12 |
22 my $method = pop @target; | 22 my $method = pop @target; |
23 $method =~ s/\.\w+$//; | 23 $method =~ s/\.\w+$//; |
24 | 24 |
25 my $module = join '::',$namespace,@target; | 25 my $module = join '::',$namespace,@target; |
26 | 26 |
27 eval "require $module; 1;" unless $INC{$module}; | 27 eval "require $module; 1;" unless eval{ $module->can('InvokeAction'); }; |
28 carp $@ if $@; | 28 if (my $err = $@ ) { |
29 die new IMPL::Exception("Failed to load module",$module,$err); | |
30 } | |
29 | 31 |
30 if(UNIVERSAL::can($module,'InvokeAction')) { | 32 if(UNIVERSAL::can($module,'InvokeAction')) { |
31 $module->InvokeAction($method,$action); | 33 $module->InvokeAction($method,$action); |
32 } else { | 34 } else { |
33 die new IMPL::InvalidOperationException("Failed to invoke action",$ENV{PATH_INFO},$module,$method); | 35 die new IMPL::InvalidOperationException("Failed to invoke action",$ENV{PATH_INFO},$module,$method); |