LICENSE
Copyright [1999-2015] Wellcome Trust Sanger Institute and the EMBL-European Bioinformatics Institute Copyright [2016-2024] EMBL-European Bioinformatics Institute
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
CONTACT
Please email comments or questions to the public Ensembl
developers list at <http://lists.ensembl.org/mailman/listinfo/dev>.
Questions may also be sent to the Ensembl help desk at
<http://www.ensembl.org/Help/Contact>.
NAME
Bio::EnsEMBL::Utils::Proxy
SYNOPSIS
#Simple arounds logging proxy
package myproxy;
use base qw/Bio::EnsEMBL::Utils::Proxy/;
sub __resolver {
my ($invoker, $package, $method) = @_;
return sub {
my ($self, @args);
warn "Entering into ${package}::${method}";
my @capture = $self->$method(@args);
warn "Exiting from ${package}::${method}";
return @capture;
};
}
1;
DESCRIPTION
This class offers Proxy objects similar to those found in Java's java.lang.reflect.Proxy
object. This class should be overriden and then implement __resolver()
. The __resolver()
method returns a subroutine to the intended action which the proxy object installs into the calling class' scope.
All methods internal to the proxy are prefixed with a double underscore to avoid corruption/intrusion into the normal public and private scope of most classes.
METHODS
new
Arg [1] : The object to proxy
Example : my $newobj = Bio::EnsEMBL::Utils::Proxy->new($myobj);
Description : Provides a new instance of a proxy
Returntype : Bio::EnsEMBL::Utils::Proxy the new instance
Exceptions : None
Caller : public
Status : -
__proxy
Example : -
Description : The proxy accessor
Returntype : Any the proxied object
Exceptions : None
Caller : -
Status : -
isa
Args : Object type to test
Example : $obj->isa('Bio::EnsEMBL::Utils::Proxy');
Description : Overriden to provide C<isa()> support for proxies. Will return
true if this object is assignable to the given type or the
proxied object is
Returntype : Boolean; performs same as a normal can
Exceptions : None
Caller : caller
Status : status
can
Args : Method name to test
Example : $obj->can('__proxy');
Description : Overriden to provide C<can()> support for proxies. Will return
true if this object implements the given method or the
proxied object can
Returntype : Code; performs same as a normal can
Exceptions : None
Caller : caller
Status : status
DESTROY
Example : -
Description : Provided because of AutoLoad
Returntype : None
Exceptions : None
Caller : -
Status : -
AUTOLOAD
Example : -
Description : Performs calls to C<__resolver()> and installs the subroutine
into the current package scope.
Returntype : None
Exceptions : Thrown if C<__resolver()> could not return a subroutine
Caller : -
Status : -