# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You 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.
#
package ModPerl::Registry;
use strict;
use warnings FATAL => 'all';
# we try to develop so we reload ourselves without die'ing on the warning
no warnings qw(redefine); # XXX, this should go away in production!
our $VERSION = '1.99';
use base qw(ModPerl::RegistryCooker);
sub handler : method {
my $class = (@_ >= 2) ? shift : __PACKAGE__;
my $r = shift;
return $class->new($r)->default_handler();
}
my $parent = 'ModPerl::RegistryCooker';
# the following code:
# - specifies package's behavior different from default of $parent class
# - speeds things up by shortcutting @ISA search, so even if the
# default is used we still use the alias
my %aliases = (
new => 'new',
init => 'init',
default_handler => 'default_handler',
run => 'run',
can_compile => 'can_compile',
make_namespace => 'make_namespace',
namespace_root => 'namespace_root',
namespace_from => 'namespace_from_filename',
is_cached => 'is_cached',
should_compile => 'should_compile_if_modified',
flush_namespace => 'NOP',
cache_table => 'cache_table_common',
cache_it => 'cache_it',
read_script => 'read_script',
shebang_to_perl => 'shebang_to_perl',
get_script_name => 'get_script_name',
chdir_file => 'NOP',
get_mark_line => 'get_mark_line',
compile => 'compile',
error_check => 'error_check',
strip_end_data_segment => 'strip_end_data_segment',
convert_script_to_compiled_handler => 'convert_script_to_compiled_handler',
);
# in this module, all the methods are inherited from the same parent
# class, so we fixup aliases instead of using the source package in
# first place.
$aliases{$_} = $parent . "::" . $aliases{$_} for keys %aliases;
__PACKAGE__->install_aliases(\%aliases);
# Note that you don't have to do the aliases if you use defaults, it
# just speeds things up the first time the sub runs, after that
# methods are cached.
#
# But it's still handy, since you explicitly specify which subs from
# the parent package you are using
#
# META: if the ISA search results are cached on the first lookup, may
# be we need to alias only those methods that override the defaults?
1;
__END__