mach 2003/12/10 14:48:53
Modified: lib/Apache/AxKit Tag: axkit-pipeline-2 PipeCtrl.pm Log: getting rid of Pipeline::Tail, fixing trace Revision Changes Path No revision No revision 1.1.2.5 +53 -46 xml-axkit/lib/Apache/AxKit/Attic/PipeCtrl.pm Index: PipeCtrl.pm =================================================================== RCS file: /home/cvs/xml-axkit/lib/Apache/AxKit/Attic/PipeCtrl.pm,v retrieving revision 1.1.2.4 retrieving revision 1.1.2.5 diff -u -r1.1.2.4 -r1.1.2.5 --- PipeCtrl.pm 28 Oct 2003 00:10:09 -0000 1.1.2.4 +++ PipeCtrl.pm 10 Dec 2003 22:48:53 -0000 1.1.2.5 @@ -4,7 +4,6 @@ use Apache::AxKit::Pipeline::Trace; use Apache::AxKit::Pipeline::Language; use Apache::AxKit::Pipeline::Head; -use Apache::AxKit::Pipeline::Tail; use Apache::AxKit::Pipeline::Cache; use Apache::AxKit::Pipeline::DoStyles; use Apache::AxKit::Pipeline::Transformer; @@ -77,50 +76,53 @@ my @passthru = splice( @styles, 0, $p - 1 ); @styles = @passthru; } - - # Add a pipeline head at the top of the pipeline. - # Allows for cleaner interface into provider. - + + my $i = 1; + + # Set pipeline stage id. + # Do this before trace, so trace picks up upstream stage id. + + foreach (@styles) { + $_->{'stage'} = $i++; + } + + # Cleaner interface between provider and pipeline. + # Ideal would be to extend providers, or have a ProviderPlus + # which inherits from Pipeline. + unshift(@styles, { - module => 'Apache::AxKit::Pipeline::Head', - href => undef, + module => 'Apache::AxKit::Pipeline::Head', + href => undef, }); - + if( $AxKit::Cfg->TraceIntermediate ) { # Add a trace module between each style. + # No stage id, will use upstream() id. @styles = map { - ( { module => 'Apache::AxKit::Pipeline::Trace', - href => undef }, - $_ - ) } @styles; + ( $_, + { module => 'Apache::AxKit::Pipeline::Trace', + href => undef }, + ) } @styles; } - # Tail adds and late added styles into the pipeline. - # Note: This currently breaks any sax passthru nature - # and so needs to be worked on a bit in that way. - # or an alternative pipeline creator class could be built. - - push(@styles, { - module => 'Apache::AxKit::Pipeline::Tail', - href => undef, - }); my $pipeline = $provider; - - foreach my $style ( @styles ) { - $pipeline = $self->create_processor($r, $style )->upstream($pipeline); + + foreach ( @styles ) { + $pipeline = $self->create_processor($r, $_ )->upstream( $pipeline ); if($pipeline->enable_dynamic_styles()) { $pipeline = Apache::AxKit::Pipeline::DoStyles->new()->upstream( $pipeline ); } } + # always ensure pipeline is cache enabled. # so add one on the end, unless either there already is a cache somewhere in the pipeline # or the cache is disabled. - if($pipeline->cache_required() && !$AxKit::Cfg->NoCache()) { + if( !$AxKit::Cfg->NoCache() && $pipeline->cache_required()) { AxKit::Debug(4, "PipeCtrl: adding final cache"); $pipeline = Apache::AxKit::Pipeline::Cache->new()->upstream($pipeline); } @@ -137,13 +139,11 @@ } } - # initialise the pipeline. (very important). - - $pipeline->set_stage(); AxKit::Debug(4, "PipeCtrl: Running Initialisation phase"); - $pipeline->init($r); - + + $pipeline->pipeline_init($r); # allow things like XSP to build code before cache runs. + return $pipeline; } @@ -163,11 +163,16 @@ my @styles = @{$self->{'pre_styles'}}; $self->{'pre_styles'} = []; + my $i = 1; + foreach (@styles) { + $_->{'stage'} = $i++; + } + unshift(@styles, { - module => 'Apache::AxKit::Pipeline::Head', - href => undef, + module => 'Apache::AxKit::Pipeline::Head', + href => undef, }); - + my $pipeline = $provider; foreach my $style ( @styles ) { @@ -178,9 +183,8 @@ } - $pipeline->set_stage(); AxKit::Debug(4, "PipeCtrl: Running Initialisation phase"); - $pipeline->init($r); + $pipeline->pipeline_init($r); return $pipeline; } @@ -192,16 +196,18 @@ my @styles = @{$self->{'post_styles'}}; $self->{'post_styles'} = []; - unshift(@styles, { - module => 'Apache::AxKit::Pipeline::Head', - href => undef, - }); - push(@styles, { - module => 'Apache::AxKit::Pipeline::Tail', + my $i = 1; + foreach (@styles) { + $_->{'stage'} = $i++; + } + + unshift(@styles, { + module => 'Apache::AxKit::Pipeline::Head', href => undef, }); - + + my $pipeline = $provider; foreach my $style ( @styles ) { @@ -213,9 +219,8 @@ } - $pipeline->set_stage(); AxKit::Debug(4, "PipeCtrl: Running Initialisation phase"); - $pipeline->init($r); + $pipeline->pipeline_init($r); return $pipeline; @@ -232,12 +237,14 @@ return UNIVERSAL::isa( $processor, 'Apache::AxKit::Language') ? Apache::AxKit::Pipeline::Language->new( - href => $style->{href}, + href => $style->{'href'}, module => $processor, + stage => $style->{'stage'}, ) : $processor->new( - href => $style->{href}, + stage => $style->{'stage'}, + href => $style->{'href'}, ); }