AMF-Perl
view release on metacpan or search on metacpan
lib/AMF/Perl/App/Executive.pm view on Meta::CPAN
#my $_classConstruct;
# the method to execute in the construct
#my $_methodname;
# the defined return type
#my $_returnType;
# the instance name to use for this gateway executive
#my $_instanceName;
# the list with registered service-packagees
#my $services = {};
# The original incoming classpath
#my $_target;
# The original classpath
#my $_origClassPath;
# switch to take different actions based on the header
#my $_headerFilter;
# constructor
sub new
{
my ($proto)=@_;
my $self={};
bless $self, $proto;
return $self;
# nothing really to do here yet?
}
# setter for the _headerFilter
sub setHeaderFilter
{
my ($self, $header) = @_;
$self->{_headerFilter} = $header;
}
# Set the base classpath. This is the path from which will be search for the packagees and functions
# $basecp should end with a "/";
sub setBaseClassPath
{
my ($self, $basecp) = @_;
$self->{_basecp} = $basecp;
}
sub setInstanceName
{
my ($self, $name) = @_;
$self->{_instanceName} = $name;
}
# you pass directory.script.method to this and it will build
# the classpath, classname and methodname values
sub setTarget
{
my ($self, $target)=@_;
$self->{target} = $target;
# grab the position of the last . char
my $lpos = strrpos($target, ".");
# there were none
unless ($lpos)
{
print STDERR "Service name $target does not contain a dot.\n";
# throw an error because there has to be atleast 1
}
else
{
# the method name is the very last part
$self->{_methodname} = substr($target, $lpos+1);
}
# truncate the method name from the string
my $trunced = substr($target, 0, $lpos);
$self->{_classname} = $trunced;
}
sub registerService
{
my ($self, $package, $servicepackage) = @_;
$self->{services}->{$package} = $servicepackage;
}
# returns the return type for this method
sub getReturnType
{
my ($self)=@_;
return $self->{_returnType};
}
# execute the method using dynamic inclusion of Perl files
sub doMethodCall
{
my ($self, $a) = @_;
#First try to call a registered class...
my $package = $self->{_classname};
my $method = $self->{_methodname};
my $calledMethod = $method;
if(exists $self->{services}->{$package})
{
return $self->doMethodCall_registered($package, $method, $a);
}
#Otherwise, browse in the directory specified by the user.
push @INC, $self->{_basecp};
# build the class object
$package =~ s#\.#::#g;
unless (eval ("require " . $package))
{
# report back to flash that the class wasn't properly formatted
print STDERR "Class $package does not exist or could not be loaded.\n";
print STDERR $@;
return;
}
# build the construct from the extended class
my $object = $package->new;
( run in 0.498 second using v1.01-cache-2.11-cpan-39bf76dae61 )