mach 2003/12/10 14:50:45
Modified: lib/Apache/AxKit Tag: axkit-pipeline-2 Pipeline.pm
lib/Apache/AxKit/Pipeline Tag: axkit-pipeline-2 Cache.pm
Head.pm Language.pm LibXSLT.pm SAX.pm Trace.pm
Transformer.pm XSP.pm
Removed: lib/Apache/AxKit/Pipeline Tag: axkit-pipeline-2 Tail.pm
Log:
fixes and api changes
Revision Changes Path
No revision
No revision
1.1.2.7 +61 -51 xml-axkit/lib/Apache/AxKit/Attic/Pipeline.pm
Index: Pipeline.pm
===================================================================
RCS file: /home/cvs/xml-axkit/lib/Apache/AxKit/Attic/Pipeline.pm,v
retrieving revision 1.1.2.6
retrieving revision 1.1.2.7
diff -u -r1.1.2.6 -r1.1.2.7
--- Pipeline.pm 31 Oct 2003 00:06:22 -0000 1.1.2.6
+++ Pipeline.pm 10 Dec 2003 22:50:45 -0000 1.1.2.7
@@ -5,6 +5,7 @@
use Apache::Constants;
use Apache::Request;
use Apache::AxKit::Provider;
+use Apache::AxKit::Provider::Scalar;
sub new{
my ($class) = shift;
@@ -12,18 +13,37 @@
my $self = {
upstream => $args{'upstream'},
href => $args{'href'},
+ stage => $args{'stage'},
};
bless $self, $class;
return $self;
}
-sub init{
+sub pipeline_init{
+ # $self, $r
+ shift->upstream()->pipeline_init( @_ );
+}
+
+sub stage{
my $self = shift;
- my $r = shift;
+ if(@_) {
+ $self->{'stage'} = shift;
+ return $self;
+ } else {
+ if($self->{'stage'}) {
+ return $self->{'stage'}
+ } else {
+ return $self->upstream()->stage();
+ }
+ }
+}
- $self->upstream()->init( $r );
+sub href{ return shift->{'href'} }
- if ($self->stylesheet_exists()) {
+sub style_provider{
+ my $self = shift;
+ my $r = shift;
+ unless( $self->{'style_provider'} ) {
my $styleprovider =
Apache::AxKit::Provider->new_style_provider( $r, uri => $self->href());
@@ -33,27 +53,10 @@
);
}
- $self->style( $styleprovider );
- }
-
-}
-
-# Useful for debugging.
-sub set_stage{
- my $self = shift;
- my $stage = $self->upstream()->set_stage() + 1;
- $self->{'stage'} = $stage;
- return $stage;
-}
-
-
-sub stage{ return shift->{'stage'} }
-sub href{ return shift->{'href'} }
+ $self->{'style_provider'}= $styleprovider ;
-sub style{
- my $self = shift;
- if(@_) { $self->{'style'} = shift; return $self;}
- return $self->{'style'}
+ }
+ return $self->{'style_provider'};
}
@@ -63,7 +66,7 @@
if($self->{'upstream'}) {
# Allow pipelines to be treated as one object
- $self->{'upstream'}->upstream( shift )
+ $self->{'upstream'}->upstream( @_ )
} else {
$self->{'upstream'} = shift;
}
@@ -87,18 +90,20 @@
# into it's key), so we can ignore all parameters.....
# In the middle ideally we should only take into account parameters
which are actually used.
- my $key = $self->upstream()->key( $r );
- $key .= $self->stage();
- $key .= $self->style()->key() if $self->stylesheet_exists();
+ return join('', $self->upstream()->key( $r ), $self->stage(),
$self->href());
+
+ # use href() over style()->key() as it amounts to the same thing,
+ # but href() avoids a SLOW call to $r->lookup_uri()
+ # $key .= $self->style()->key() if $self->stylesheet_exists();
- return $key;
-
}
-sub has_changed{ return shift->upstream()->has_changed( shift ) };
+sub has_changed{
+ return shift->upstream()->has_changed( @_ )
+};
-sub get_ext_ent_handler{
- return shift->upstream()->get_ext_ent_handler( @_ );
+sub get_ext_ent_handler{
+ return shift->upstream()->get_ext_ent_handler( @_ );
}
sub cache_required{
@@ -106,28 +111,37 @@
}
sub get_dom {
- my $self = shift;
- # sub classes should overload this
- # or get_strref at a minimum.
+ my $self = shift;
my $r = shift;
+
my $parser = XML::LibXML->new();
$parser->expand_entities(1);
Apache::AxKit::LibXMLSupport->reset;
- return $parser->parse_string(${$self->get_strref($r, 0)}, $r->uri());
+ return $parser->parse_string(${ $self->get_strref( $r )}, $r->uri());
}
sub get_strref{
- my $self = shift;
- my $r = shift;
- my $str = $self->get_dom( $r )->toString();
+ # $self, $r
+ my $str = shift->get_dom( @_ )->toString();
return \$str;
}
sub get_bytes_ref{
+ my ($self, $r ) = @_;
+ my $str_ref = $self->get_strref( $r );
+ if($AxKit::Pipeline->post_styles_pending()){
+ my $provider = Apache::AxKit::Provider::Scalar->new( $r,
${$str_ref} );
+ $str_ref = $AxKit::Pipeline->create_post_pipeline( $r,
$provider )->get_bytes_ref( $r );
+ }
+ return $str_ref;
+}
+
+sub get_provider{
my $self = shift;
my $r = shift;
- my $str = $self->get_strref( $r );
- return $str
+ my $str_ref = $self->get_strref( $r );
+ my $provider = Apache::Axkit::Provider::Scalar->new($r, ${$str_ref} );
+ return $provider;
}
sub send_sax{
@@ -157,16 +171,14 @@
# Let's call this feature deprecated. (sp?), ie, it ain't going
# to be here for long.
- bless $r, 'AxKit::Apache';
- tie *STDOUT, 'AxKit::Apache', $r;
-
- my $bytes = $self->get_bytes_ref( $r );
-
- my $result_code = $r->status();
+ my $bytes;
+ my $result_code;
+ $bytes = $self->get_bytes_ref( $r );
+ $result_code = $r->status();
+
if (ref($r) eq 'AxKit::Apache') {
bless $r, 'Apache';
- tie *STDOUT, 'Apache', $r;
}
if( $AxKit::Cfg->DoGzip() ) {
@@ -181,8 +193,6 @@
$r->print($$bytes);
return OK;
}
-
-sub stylesheet_exists { 1; }
sub enable_dynamic_styles{ 0 };
No revision
No revision
1.1.2.3 +56 -63 xml-axkit/lib/Apache/AxKit/Pipeline/Attic/Cache.pm
Index: Cache.pm
===================================================================
RCS file: /home/cvs/xml-axkit/lib/Apache/AxKit/Pipeline/Attic/Cache.pm,v
retrieving revision 1.1.2.2
retrieving revision 1.1.2.3
diff -u -r1.1.2.2 -r1.1.2.3
--- Cache.pm 29 Oct 2003 21:42:53 -0000 1.1.2.2
+++ Cache.pm 10 Dec 2003 22:50:45 -0000 1.1.2.3
@@ -40,7 +40,7 @@
local *AxKit::add_depends = sub { $self->add_depends(@_);
&$axkit_add_depends(@_) };
# removed media/style from the cache key
- # since $self->key() is not the pipeline key
+ # since $self->key() is now the pipeline key
# which is the result of the media/style choice.
# No .gzip bit here, since we'll always be wanting a dom....we are not
last in chain.
@@ -169,78 +169,75 @@
sub send{
my ($self, $r) = @_;
+ my $bytes;
# See A::A::Pipeline.pm for what this is about.
+ do {
+# local(*STDOUT);
- bless $r, 'AxKit::Apache';
- tie *STDOUT, 'AxKit::Apache', $r;
-
- # chain in a add_depends handler
- # which will call the underlying one.
- # This way we see everything loaded in the pipeline above us, without
- # changing any interfaces
+ # chain in a add_depends handler
+ # which will call the underlying one.
+ # This way we see everything loaded in the pipeline above us,
without
+ # changing any interfaces
- my $axkit_add_depends = \&AxKit::add_depends;
- local *AxKit::add_depends = sub {
- $self->add_depends(@_); &$axkit_add_depends(@_) };
+ my $axkit_add_depends = \&AxKit::add_depends;
+ local *AxKit::add_depends = sub {
+ $self->add_depends(@_); &$axkit_add_depends(@_) };
- # removed media/style from the cache key
- # since $self->key() is not the pipeline key
- # which is the result of the media/style choice.
+ # removed media/style from the cache key
+ # since $self->key() is not the pipeline key
+ # which is the result of the media/style choice.
- my $debug = $r->dir_config('AxCacheDebugHeaders');
+ my $debug = $r->dir_config('AxCacheDebugHeaders');
- my $cache = Apache::AxKit::Cache->new(
- $r, $self->key( $r ) . ($AxKit::Cfg->GzipOutput ? '.gzip' : '') .
($r->path_info() || ''),
- );
+ my $cache = Apache::AxKit::Cache->new(
+ $r, $self->key( $r ) . ($AxKit::Cfg->GzipOutput ? '.gzip' : '')
. ($r->path_info() || ''),
+ );
- $self->{'_cache'} = $cache;
+ $self->{'_cache'} = $cache;
- my $bytes;
- my $str;
- my $stage = $self->stage();
+ my $str;
+ my $stage = $self->stage();
# if provider is newer or dependancies not upto date
# then call upstream, cache response, and save dependancies.
- if( $cache->no_cache() || $r->no_cache() || $r->method() eq 'POST' ||
$r->status() != 200) {
- AxKit::Debug(4, "Cache[$stage]: Cache disabled, requesting
upstream XML");
- $r->no_cache(1);
- $bytes = $self->upstream()->get_bytes_ref( $r );
- $r->header_out('X-AxKit-Cache', 'disabled') if $debug;
-
- } elsif( !$self->upstream()->has_changed( $cache->mtime() ) &&
- # Cache->read() does dependency checks.
- $cache->exists() && ( $str = $cache->read( ) )
) {
- AxKit::Debug(4, "Cache[$stage] Successful cache read,
attempting fast-deliver...");
- $r->header_out('X-AxKit-Cache', 'hit') if $debug;
- $cache->deliver( $r );
- return DECLINED;
- } else {
- AxKit::Debug(4, "Cache[$stage]: Cache miss, requesting upstream
XML.");
- $self->cached(0);
- $bytes = $self->upstream()->get_bytes_ref( $r );
+ if( $cache->no_cache() || $r->no_cache() || $r->method() eq
'POST' || $r->status() != 200) {
+ AxKit::Debug(4, "Cache[$stage]: Cache disabled,
requesting upstream XML");
+ $r->no_cache(1);
+ $bytes = $self->upstream()->get_bytes_ref( $r );
+ $r->header_out('X-AxKit-Cache', 'disabled') if $debug;
+
+ } elsif( !$self->upstream()->has_changed( $cache->mtime() ) &&
+ $cache->exists() && (
$cache->check_dependencies( ) ) ) {
+ AxKit::Debug(4, "Cache[$stage] Successful cache read,
attempting fast-deliver...");
+ $r->header_out('X-AxKit-Cache', 'hit') if $debug;
+ $cache->deliver( $r );
+ return DECLINED;
+ } else {
+ AxKit::Debug(4, "Cache[$stage]: Cache miss, requesting
upstream XML.");
+ $self->cached(0);
+ $bytes = $self->upstream()->get_bytes_ref( $r );
- if($r->status() == 200 && ! $r->no_cache() ) {
+ if($r->status() == 200 && ! $r->no_cache() ) {
- AxKit::Debug(4, "Cache[$stage]: Cache doing write and
pass-through.");
- $cache->set_type( $r->content_type() );
- $cache->add_dependencies( $self->get_depends() );
- $r->header_out('X-AxKit-Cache', 'miss+write') if $debug;
- if($cache->write( $bytes )) {
- AxKit::Debug(4, "Cache[$stage]: Cache doing
write and fast-deliver.");
- # We're last in chain, and there are no output
transformers.
- # do a fast delivery.
- $cache->deliver( $r );
- return DECLINED;
+ AxKit::Debug(4, "Cache[$stage]: Cache doing
write and pass-through.");
+ $cache->set_type( $r->content_type() );
+ $cache->add_dependencies( $self->get_depends()
);
+ $r->header_out('X-AxKit-Cache', 'miss+write')
if $debug;
+ if($cache->write( $bytes )) {
+ AxKit::Debug(4, "Cache[$stage]: Cache
doing write and fast-deliver.");
+ # We're last in chain, and there are no
output transformers.
+ # do a fast delivery.
+ $cache->deliver( $r );
+ return DECLINED;
+ }
+ } else {
+ $r->header_out('X-AxKit-Cache',
'miss+disabled') if $debug;
+ AxKit::Debug(4, "Cache[$stage]: Cache disabled
due to status code or no_cache.");
}
- } else {
- $r->header_out('X-AxKit-Cache', 'miss+disabled') if
$debug;
- AxKit::Debug(4, "Cache[$stage]: Cache disabled due to
status code or no_cache.");
}
- }
-
+ };
if (ref($r) eq 'AxKit::Apache') {
bless $r, 'Apache';
- tie *STDOUT, 'Apache', $r;
}
if( $AxKit::Cfg->DoGzip() ) {
@@ -258,9 +255,6 @@
# do the deliver thing.
}
-
-sub stylesheet_exists{ 0; }
-
sub cached{
my $self = shift;
$self->{'cached'} = $_[0] if @_;
@@ -281,20 +275,19 @@
return keys %{shift()->{'depends'}};
}
-sub init{
+sub pipeline_init{
my $self = shift;
my $r = shift;
my $axkit_add_depends = \&AxKit::add_depends;
local *AxKit::add_depends = sub {
$self->add_depends(@_); &$axkit_add_depends(@_)
};
- return $self->upstream()->init($r);
+ return $self->upstream()->pipeline_init($r);
}
sub key{
my ($self, $r) = @_;
- return $self->stage() != 1 ? $self->SUPER::key( $r
).$r->notes('axkit_cache_extra') :
-
$self->SUPER::key( $r );
+ return $self->SUPER::key( $r ).$r->notes('axkit_cache_extra');
}
1.1.2.4 +40 -22 xml-axkit/lib/Apache/AxKit/Pipeline/Attic/Head.pm
Index: Head.pm
===================================================================
RCS file: /home/cvs/xml-axkit/lib/Apache/AxKit/Pipeline/Attic/Head.pm,v
retrieving revision 1.1.2.3
retrieving revision 1.1.2.4
diff -u -r1.1.2.3 -r1.1.2.4
--- Head.pm 27 Oct 2003 00:59:55 -0000 1.1.2.3
+++ Head.pm 10 Dec 2003 22:50:45 -0000 1.1.2.4
@@ -10,8 +10,8 @@
$VERSION = 1.0; # this fixes a CPAN.pm bug. Bah!
-sub init{
- return
+sub pipeline_init{
+ return ;
};
sub new{
@@ -25,7 +25,14 @@
}
sub get_strref{
- return shift->upstream()->get_strref();
+ my $self = shift;
+ my $r = shift;
+ my $str;
+ if( $str = $r->pnotes('xml_string') ) {
+ return \$str;
+ } else {
+ return $self->upstream()->get_strref();
+ }
}
sub cache_required{
@@ -33,27 +40,21 @@
}
sub key{
- return shift->upstream()->key( shift );
+ return shift->upstream()->key( @_ );
}
sub send_sax{
my ($self, $r, $parser, $pipeline ) = @_;
$parser->set_handler( Handler => $pipeline );
-
- my $provider = $self->upstream();
-
+
my $result;
- eval {
- my $fh = $provider->get_fh();
- $result = $parser->parse_fh($fh, $r->uri());
- };
- if ($@) {
- my $xmlstring = ${$provider->get_strref()};
- undef $@;
+ my $provider = $self->upstream();
+ if( my $str = $r->pnotes('xml_string') ) {
+ use bytes;
eval {
- $result = $parser->parse_string( $xmlstring );
+ $result = $parser->parse_string( $str );
};
if($@) {
my $error = $@;
@@ -61,15 +62,32 @@
-text => "SAX Error: $error"
);
}
+ } else {
+ eval {
+ my $fh = $provider->get_fh();
+ $result = $parser->parse_fh($fh, $r->uri());
+ };
+ if ($@) {
+ use bytes;
+ my $xmlstring = ${$provider->get_strref()};
+ undef $@;
+ eval {
+ $result = $parser->parse_string( $xmlstring );
+ };
+ if($@) {
+ my $error = $@;
+ throw Apache::AxKit::Exception::Error(
+ -text => "SAX Error: $error"
+ );
+ }
+ }
}
-
+
return $result;
}
-
-sub stylesheet_exists{ 0; }
-
-sub set_stage{
- return 0;
-}
+
+sub stage{
+ return 'provider';
+}
1;
1.1.2.3 +102 -52 xml-axkit/lib/Apache/AxKit/Pipeline/Attic/Language.pm
Index: Language.pm
===================================================================
RCS file: /home/cvs/xml-axkit/lib/Apache/AxKit/Pipeline/Attic/Language.pm,v
retrieving revision 1.1.2.2
retrieving revision 1.1.2.3
diff -u -r1.1.2.2 -r1.1.2.3
--- Language.pm 27 Oct 2003 00:59:55 -0000 1.1.2.2
+++ Language.pm 10 Dec 2003 22:50:45 -0000 1.1.2.3
@@ -3,6 +3,8 @@
use strict;
use vars qw/@ISA $VERSION %DEPENDS/;
use Apache;
+use AxKit;
+use Data::Dumper;
use Apache::Constants qw/:common/;
use Apache::Request;
use Apache::AxKit::Pipeline;
@@ -29,15 +31,15 @@
return shift->upstream()->has_changed( shift );
}
-sub stylesheet_exists{
- return shift->{'module'}->stylesheet_exists();
-}
sub get_dom {
my $self = shift;
my ( $r ) = @_;
my $stage = $self->stage();
+ delete $r->pnotes()->{'dom_tree'};
+ delete $r->pnotes()->{'xml_string'};
+ my $xml_doc;
$r->pnotes->{'dom_tree'} = $self->upstream()->get_dom( $r );
my $module = $self->{'module'};
@@ -45,79 +47,127 @@
AxKit::Debug(3, "Pipeline[$stage]: About to execute:
$module\::handler");
AxKit::load_module($module);
- my $rc= $module->handler(
- $r, $self->SUPER::upstream(), $self->{'style'}, 0
- );
-
- if( ! ($rc == 200 || $rc == OK) ) {
- $r->status($rc);
- }
-
- my $xml_doc;
-
- if (my $dom = $r->pnotes('dom_tree')) {
- $xml_doc = $dom;
- }
- else {
- # Load here since we should have dom support available
- # but doesn't stop us if we don't and are using strref
- require 'XML/LibXML.pm';
- require 'Apache/AxKit/LibXMLSupport.pm';
+ do {
+ local( *STDOUT );
+ my $buffer = tie *STDOUT, 'AxKit::Buffer';
+
+ my $style = $module->stylesheet_exists() ?
$self->style_provider( $r ) : undef;
+
+ my $rc= $module->handler(
+ $r, $self->SUPER::upstream(), $style, 0
+ );
+
+ if( ! ($rc == 200 || $rc == OK) ) {
+ $r->status($rc);
+ }
+
+ if (my $dom = $r->pnotes('dom_tree')) {
+ $xml_doc = $dom;
+ }
+ else {
+ # Load here since we should have dom support available
+ # but doesn't stop us if we don't and are using strref
+ require 'XML/LibXML.pm';
+ require 'Apache/AxKit/LibXMLSupport.pm';
- my $xmlstring = $r->pnotes('xml_string');
- my $parser = XML::LibXML->new();
- $parser->expand_entities(1);
+ my $xmlstring = $buffer->content();
+ my $parser = XML::LibXML->new();
+ $parser->expand_entities(1);
- Apache::AxKit::LibXMLSupport->reset;
-
- $xml_doc = $parser->parse_string($xmlstring, $r->uri());
- }
- delete $r->pnotes()->{'dom_tree'};
- delete $r->pnotes()->{'xml_string'};
-
+ Apache::AxKit::LibXMLSupport->reset;
+
+ $xml_doc = $parser->parse_string($xmlstring, $r->uri());
+ }
+ delete $r->pnotes()->{'dom_tree'};
+ delete $r->pnotes()->{'xml_string'};
+ };
return $xml_doc;
}
sub get_strref{
my $self = shift;
my ( $r ) = @_;
-
+
my $stage = $self->stage();
-
+ my $str;
# call strref, cause we have to assume we don't have libxml available.
# so no dom.
- $r->pnotes->{'xml_string'} = ${$self->upstream()->get_strref( $r )};
+ $r->pnotes('xml_string', ${$self->upstream()->get_strref( $r )});
my $module = $self->{'module'};
-
- AxKit::Debug(3, "Pipeline[$stage]: About to load: $module ");
+
+ AxKit::Debug(3, "Pipeline[$stage]: About to execute:
$module\::handler");
AxKit::load_module($module);
- $r->notes('resetstring',1);
-
- #last in chain flag here!
+ do {
- my $rc = $module->handler(
- $r, $self->SUPER::upstream(), $self->{'style'}, 0
- );
+ local( *STDOUT );
+ my $buffer = tie *STDOUT, 'AxKit::Buffer';
- if( ! ($rc == 200 || $rc == OK) ) {
- $r->status($rc);
- }
+ my $style = $module->stylesheet_exists() ?
$self->style_provider( $r ) : undef;
- my $str;
-
- unless ($str = $r->pnotes('xml_string')) {
- $str = $r->pnotes('dom_tree')->toString();
- }
+ my $rc = $module->handler(
+ $r, $self->SUPER::upstream(), $style, 0
+ );
- delete $r->pnotes()->{'dom_tree'};
- delete $r->pnotes()->{'xml_string'};
+ if( ! ($rc == 200 || $rc == OK) ) {
+ $r->status($rc);
+ }
+
+ unless ($str = $buffer->content()) {
+ $str = $r->pnotes('dom_tree')->toString();
+ }
+ delete $r->pnotes()->{'dom_tree'};
+ delete $r->pnotes()->{'xml_string'};
+ };
+
return \$str;
}
+sub get_bytes_ref{
+ # Needed for last in chain support, sigh.
+ my $self = shift;
+ my ( $r ) = @_;
+
+ my $stage = $self->stage();
+ my $str;
+ # call strref, cause we have to assume we don't have libxml available.
+ # so no dom.
+
+ $r->pnotes('xml_string', ${$self->upstream()->get_strref( $r )});
+
+ my $module = $self->{'module'};
+
+ AxKit::Debug(3, "Pipeline[$stage]: About to execute:
$module\::handler");
+ AxKit::load_module($module);
+
+ do {
+
+ local( *STDOUT );
+ my $buffer = tie *STDOUT, 'AxKit::Buffer';
+
+ my $style = $module->stylesheet_exists() ?
$self->style_provider( $r ) : undef;
+
+ my $rc = $module->handler(
+ $r, $self->SUPER::upstream(), $style, 1 # last in chain.
+ );
+
+ if( ! ($rc == 200 || $rc == OK) ) {
+ $r->status($rc);
+ }
+
+ unless ($str = $buffer->content()) {
+ $str = $r->pnotes('dom_tree')->toString();
+ }
+
+ delete $r->pnotes()->{'dom_tree'};
+ delete $r->pnotes()->{'xml_string'};
+ };
+
+ return \$str;
+}
1.1.2.2 +20 -8 xml-axkit/lib/Apache/AxKit/Pipeline/Attic/LibXSLT.pm
Index: LibXSLT.pm
===================================================================
RCS file: /home/cvs/xml-axkit/lib/Apache/AxKit/Pipeline/Attic/LibXSLT.pm,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -u -r1.1.2.1 -r1.1.2.2
--- LibXSLT.pm 20 Oct 2003 20:58:01 -0000 1.1.2.1
+++ LibXSLT.pm 10 Dec 2003 22:50:45 -0000 1.1.2.2
@@ -76,7 +76,8 @@
return $self->{_stylesheet} if $self->{_stylesheet};
- my $style = $self->style();
+ my $style = $self->style_provider( $r );
+
my $stylesheet;
my $cache = $style_cache{$style->key()};
if (ref($cache) eq 'HASH' && !$style->has_changed($cache->{mtime}) &&
ref($cache->{depends}) eq 'ARRAY') {
@@ -131,22 +132,33 @@
return \$str;
}
+
sub get_bytes_ref{
# This takes into account any xsl:output methods.
# Since the output might not be xml...
my ($self, $r ) = @_;
my $results = $self->get_dom( $r );
+
my $str;
- my $stylesheet = $self->get_stylesheet($r);
- if ($XML::LibXSLT::VERSION >= 1.03) {
- my $encoding = $stylesheet->output_encoding;
- my $type = $stylesheet->media_type;
- $r->content_type("$type; charset=$encoding");
+ if( $AxKit::Pipeline->post_styles_pending()) {
+ # We're no longer last in chain....
+ my $provider = Apache::AxKit::Provider::DOM->new( $r, $results
);
+ $str = $AxKit::Pipeline->create_post_pipeline( $r, $provider
)->get_bytes_ref( $r );
+
+ } else {
+
+ my $stylesheet = $self->get_stylesheet($r);
+ if ($XML::LibXSLT::VERSION >= 1.03) {
+ my $encoding = $stylesheet->output_encoding;
+ my $type = $stylesheet->media_type;
+
+ $r->content_type("$type; charset=$encoding");
+ }
+
+ $str = $stylesheet->output_string($results);
}
- $str = $stylesheet->output_string($results);
return \$str;
-
}
1.1.2.2 +7 -6 xml-axkit/lib/Apache/AxKit/Pipeline/Attic/SAX.pm
Index: SAX.pm
===================================================================
RCS file: /home/cvs/xml-axkit/lib/Apache/AxKit/Pipeline/Attic/SAX.pm,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -u -r1.1.2.1 -r1.1.2.2
--- SAX.pm 22 Oct 2003 21:48:29 -0000 1.1.2.1
+++ SAX.pm 10 Dec 2003 22:50:45 -0000 1.1.2.2
@@ -28,13 +28,11 @@
return shift->{'saxprocessor'};
};
-sub init{
+sub pipeline_init{
my ($self, $r) = @_;
- $self->upstream()->init( $r );
- my $processor = $self->saxprocessor();
- AxKit::Debug(3, "SAX: about to load $processor");
- AxKit::load_module($processor);
+ $self->upstream()->pipeline_init( $r );
+
return $self;
}
@@ -61,11 +59,14 @@
sub send_sax{
my ($self, $r, $parser, $pipeline) = @_;
+
+ my $instance = $self->saxprocessor();
- my $instance = $self->saxprocessor();
if(ref($instance)) {
$instance->set_handler(Handler => $pipeline);
} else {
+ AxKit::Debug(3, "SAX: about to load $instance");
+ AxKit::load_module($instance);
$instance = $instance->new( Handler => $pipeline );
}
my $stage = $self->stage();
1.1.2.2 +1 -9 xml-axkit/lib/Apache/AxKit/Pipeline/Attic/Trace.pm
Index: Trace.pm
===================================================================
RCS file: /home/cvs/xml-axkit/lib/Apache/AxKit/Pipeline/Attic/Trace.pm,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -u -r1.1.2.1 -r1.1.2.2
--- Trace.pm 20 Oct 2003 20:58:01 -0000 1.1.2.1
+++ Trace.pm 10 Dec 2003 22:50:45 -0000 1.1.2.2
@@ -28,6 +28,7 @@
my $xmldoc = $self->upstream()->get_dom( $r );
local $XML::LibXML::setTagCompression = 1;
my $xmlstr = $xmldoc->toString(1) || "<?xml version='1.0'?>\n<empty
reason='no data found'/>\n";
+
$self->write_trace( $r, $xmlstr);
return $xmldoc;
}
@@ -76,14 +77,6 @@
close($fh);
}
}
-
-sub set_stage{
- my $self = shift;
- # Don't increment stage count.
- my $stage = $self->upstream()->set_stage();
- $self->{'stage'} = $stage;
- return $stage;
-}
sub interm_prefix{
@@ -118,6 +111,5 @@
return $self->{'interm_prefix'};
}
-sub stylesheet_exists{ 0; }
1;
1.1.2.3 +0 -1 xml-axkit/lib/Apache/AxKit/Pipeline/Attic/Transformer.pm
Index: Transformer.pm
===================================================================
RCS file: /home/cvs/xml-axkit/lib/Apache/AxKit/Pipeline/Attic/Transformer.pm,v
retrieving revision 1.1.2.2
retrieving revision 1.1.2.3
diff -u -r1.1.2.2 -r1.1.2.3
--- Transformer.pm 29 Oct 2003 21:42:53 -0000 1.1.2.2
+++ Transformer.pm 10 Dec 2003 22:50:45 -0000 1.1.2.3
@@ -43,7 +43,6 @@
return \$str;
}
-sub stylesheet_exists{ 0; }
sub output_binary{ 1 };
1.1.2.3 +3 -4 xml-axkit/lib/Apache/AxKit/Pipeline/Attic/XSP.pm
Index: XSP.pm
===================================================================
RCS file: /home/cvs/xml-axkit/lib/Apache/AxKit/Pipeline/Attic/XSP.pm,v
retrieving revision 1.1.2.2
retrieving revision 1.1.2.3
diff -u -r1.1.2.2 -r1.1.2.3
--- XSP.pm 27 Oct 2003 00:59:55 -0000 1.1.2.2
+++ XSP.pm 10 Dec 2003 22:50:45 -0000 1.1.2.3
@@ -31,7 +31,7 @@
# XML via an external downstream pipeline cache.
-sub init{
+sub pipeline_init{
# Inorder to ensure that the version of the compiled XSP code an upstream
cache
# talks to, we have to ensure the XSP is consistent a soon as the upstream
# pipeline is available, before any cache calls are made.
@@ -45,7 +45,7 @@
$self->add_depends(@_); &$axkit_add_depends(@_)
};
- $self->upstream()->init( $r );
+ $self->upstream()->pipeline_init( $r );
my $key = $self->SUPER::key( $r ); # Pipeline key.
@@ -252,10 +252,9 @@
return $dom;
}
-sub stylesheet_exists{ 0; }
sub enable_dynamic_styles{ 1 };
1;
-
\ No newline at end of file
+