You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axkit-dev@xml.apache.org by ma...@apache.org on 2004/05/20 20:33:45 UTC
cvs commit: xml-axkit/lib AxKit.pm
mach 2004/05/20 11:33:45
Modified: lib Tag: axkit-pipeline-2 AxKit.pm
Log:
Moving get styles,
calling pipeline controller class
reimplementing somestuff that shouldn't have moved
Revision Changes Path
No revision
No revision
1.53.2.5 +39 -85 xml-axkit/lib/AxKit.pm
Index: AxKit.pm
===================================================================
RCS file: /home/cvs/xml-axkit/lib/AxKit.pm,v
retrieving revision 1.53.2.4
retrieving revision 1.53.2.5
diff -u -r1.53.2.4 -r1.53.2.5
--- AxKit.pm 10 Dec 2003 22:43:08 -0000 1.53.2.4
+++ AxKit.pm 20 May 2004 18:33:45 -0000 1.53.2.5
@@ -14,7 +14,6 @@
use Apache::AxKit::Provider::File;
use Apache::AxKit::Provider::Scalar;
use Apache::AxKit::CharsetConv;
-use Apache::AxKit::PipeCtrl;
use File::Basename ();
use Compress::Zlib ();
use Fcntl;
@@ -178,11 +177,17 @@
local $SIG{'USR2'} = sub {
Carp::confess("caught SIGUSR2!");
};
+
+ local($AxKit::Cfg) = Apache::AxKit::ConfigReader->new($r);
+
+ my $controller = $AxKit::Cfg->PipelineControllerClass();
+
+ load_module( $controller );
- local($AxKit::Pipeline) = Apache::AxKit::PipeCtrl->new();
+ local($AxKit::Pipeline) = $controller->new($r);
+
my $rc = $r->status();
- $AxKit::Cfg = Apache::AxKit::ConfigReader->new($r);
# if ($AxKit::Cfg->DebugTime) {
# require Time::HiRes;
@@ -233,13 +238,20 @@
local $AxKit::Cfg;
local $AxKit::DebugLevel;
local $Error::Debug;
- local($AxKit::Pipeline) = Apache::AxKit::PipeCtrl->new();
-
+ local $AxKit::Pipeline;
+
my $rc = $r->status();
$AxKit::Cfg = Apache::AxKit::ConfigReader->new($r);
+ my $controller = $AxKit::Cfg->PipelineControllerClass();
+
+ load_module( $controller );
+
+ $AxKit::Pipeline = $controller->new();
+
+
if ($AxKit::Cfg->DebugTime) {
require Time::HiRes;
$AxKit::T0 = [Time::HiRes::gettimeofday()] if $AxKit::Cfg->DebugTime;
@@ -272,6 +284,22 @@
bless $r, 'AxKit::Apache';
my $provider = Apache::AxKit::Provider->new_content_provider($r);
+ if (my $charset = $AxKit::Cfg->OutputCharset) {
+ AxKit::Debug(5, "Different output charset: $charset");
+ if (!$r->notes('axkit_passthru_type')) {
+ $r->content_type("text/html; charset=$charset");
+ }
+ }
+
+ # This is here so that lookup_uri() works on the real thing
+ # that we're requesting, not on the thing plus the PATH_INFO
+
+ my $uri = $r->uri();
+ my $path_info = $r->path_info();
+ substr($uri, -length($path_info)) = '' if length($path_info); # trim off the end that many chars (negative offset to substr)
+ $r->uri($uri);
+ $ENV{PATH_INFO} = $path_info;
+
my $retcode = eval {
return $provider->decline(reason => "passthru set")
@@ -292,10 +320,8 @@
reset_depends();
- my $pipeline = build_pipeline($r, $provider, 0);
-
- return $pipeline->send($r);
-
+ return $AxKit::Pipeline->send($r, $provider); # returns ret_code;
+
};
my $E = $@;
unless ($E) {
@@ -384,41 +410,6 @@
return DECLINED;
}
-sub build_pipeline{
- my ($r, $provider, $no_output) = @_;
-
- # get preferred stylesheet and media type
- my ($preferred, $media) = get_style_and_media();
- AxKit::Debug(2, "media: $media, preferred style: $preferred");
-
- my $styles = get_styles($media, $preferred, $provider, $r);
-
- if (my $charset = $AxKit::Cfg->OutputCharset) {
- AxKit::Debug(5, "Different output charset: $charset");
- if (!$r->notes('axkit_passthru_type')) {
- $r->content_type("text/html; charset=$charset");
- }
- }
-
- # This is here so that lookup_uri() works on the real thing
- # that we're requesting, not on the thing plus the PATH_INFO
-
- my $uri = $r->uri();
- my $path_info = $r->path_info();
- substr($uri, -length($path_info)) = '' if length($path_info); # trim off the end that many chars (negative offset to substr)
- $r->uri($uri);
- $ENV{PATH_INFO} = $path_info;
-
- $AxKit::Pipeline->add_styles( @$styles );
-
- my ($transformer, $doit) = AxKit::get_output_transformer();
- my $last_in_chain = !($no_output || $doit || lc($r->dir_config('Filter')) eq 'on' );
-
- my $pipeline = $AxKit::Pipeline->create_pipeline( $r, $provider, $last_in_chain );
-
- return $pipeline;
-}
-
sub get_axkit_uri {
my ($uri) = @_;
@@ -463,17 +454,13 @@
my $provider = Apache::AxKit::Provider->new_content_provider($r);
- local($AxKit::Pipeline) = Apache::AxKit::PipeCtrl->new();
-
- my $pipeline = build_pipeline($r, $provider, 1); # no output;
-
+ local($AxKit::Pipeline) = $AxKit::Cfg->PipelineControllerClass()->new();
+
bless $r, 'AxKit::Apache';
my $result_code;
- my $str_ref = eval {
- $pipeline->get_strref( $r );
- };
+ my $str_ref = eval { $AxKit::Pipeline->get_subrequest_ref( $r, $provider ) };
if ($@) {
my $E = $@;
@@ -558,7 +545,7 @@
}
sub reset_stylesheets {
- $AxKit::Pipeline = Apache::AxKit::PipeCtrl->new();
+ $AxKit::Pipeline = AxKit::Cfg->PipelineControllerClass()->new();
}
sub get_style_and_media {
@@ -572,39 +559,6 @@
# }
return ($style, $media);
-}
-
-sub get_styles {
- my ($media, $style, $provider, $r) = @_;
-
- # This cache is only generating a key for the style cache.
-
- my $key = Apache::AxKit::Cache->new($r, $provider->key() .
- ($r->path_info() || ''), $style, $media )->key();
-
- AxKit::Debug(2, "getting styles and external entities from the XML");
- # get styles/ext_ents from cache or re-parse
-
- my $styles;
-
- if (!$r->dir_config('AxDisableGetStylesCache')
- && exists($AxKit::Stash{$key})
- && !$provider->has_changed($AxKit::Stash{$key}{mtime}))
- {
- AxKit::Debug(3, "styles cached");
- return $AxKit::Stash{$key}{'styles'};
- }
- else {
- AxKit::Debug(3, "styles not cached - calling \$provider->get_styles()");
- my $styles = $provider->get_styles($media, $style);
-
- $AxKit::Stash{$key} = {
- styles => $styles,
- mtime => $provider->mtime(),
- };
-
- return $styles;
- }
}
sub prep_exception {