You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@avalon.apache.org by cz...@apache.org on 2003/06/06 11:10:43 UTC
cvs commit: avalon-excalibur/xmlutil/src/java/org/apache/excalibur/xml/xslt XSLTProcessorImpl.java
cziegeler 2003/06/06 02:10:43
Modified: xmlutil/src/java/org/apache/excalibur/xml/xslt
XSLTProcessorImpl.java
Log:
Making dependency checking of stylesheets optional
Revision Changes Path
1.33 +74 -60 avalon-excalibur/xmlutil/src/java/org/apache/excalibur/xml/xslt/XSLTProcessorImpl.java
Index: XSLTProcessorImpl.java
===================================================================
RCS file: /home/cvs/avalon-excalibur/xmlutil/src/java/org/apache/excalibur/xml/xslt/XSLTProcessorImpl.java,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -r1.32 -r1.33
--- XSLTProcessorImpl.java 23 May 2003 09:57:48 -0000 1.32
+++ XSLTProcessorImpl.java 6 Jun 2003 09:10:43 -0000 1.33
@@ -129,34 +129,37 @@
URIResolver
{
/** The store service instance */
- private Store m_store;
+ protected Store m_store;
/** The configured transformer factory to use */
- private String m_transformerFactory;
+ protected String m_transformerFactory;
/** The trax TransformerFactory this component uses */
- private SAXTransformerFactory m_factory;
+ protected SAXTransformerFactory m_factory;
/** The default TransformerFactory used by this component */
- private SAXTransformerFactory m_defaultFactory;
+ protected SAXTransformerFactory m_defaultFactory;
/** Is the store turned on? (default is off) */
- private boolean m_useStore;
+ protected boolean m_useStore;
/** Is incremental processing turned on? (default for Xalan: no) */
- private boolean m_incrementalProcessing;
+ protected boolean m_incrementalProcessing;
/** Resolver used to resolve XSLT document() calls, imports and includes */
- private SourceResolver m_resolver;
+ protected SourceResolver m_resolver;
/** The error handler for the transformer */
- private TraxErrorHandler m_errorHandler;
+ protected TraxErrorHandler m_errorHandler;
+ /** Check included stylesheets */
+ protected boolean m_checkIncludes;
+
/** Map of pairs of System ID's / validities of the included stylesheets */
- private Map m_includesMap = new HashMap();
+ protected Map m_includesMap = new HashMap();
- private XMLizer m_xmlizer;
+ protected XMLizer m_xmlizer;
/** The ServiceManager */
- private ServiceManager m_manager;
+ protected ServiceManager m_manager;
/**
* Compose. Try to get the store
@@ -216,6 +219,7 @@
m_useStore = params.getParameterAsBoolean( "use-store", this.m_useStore );
m_incrementalProcessing = params.getParameterAsBoolean( "incremental-processing", this.m_incrementalProcessing );
m_transformerFactory = params.getParameter( "transformer-factory", null );
+ m_checkIncludes = params.getParameterAsBoolean("check-includes", true);
if( !m_useStore )
{
// release the store, if we don't need it anymore
@@ -299,8 +303,8 @@
}
// Initialize List for included validities
- final SourceValidity validity = stylesheet.getValidity();
- if( validity != null )
+ SourceValidity validity = stylesheet.getValidity();
+ if( validity != null && m_checkIncludes)
{
m_includesMap.put( id, new ArrayList() );
}
@@ -327,11 +331,11 @@
// Create transformer handler
final TransformerHandler handler = m_factory.newTransformerHandler( template );
handler.getTransformer().setErrorListener( m_errorHandler );
- handler.getTransformer().setURIResolver( this );
+ handler.getTransformer().setURIResolver( this );
// Create aggregated validity
AggregatedValidity aggregated = null;
- if( validity != null )
+ if( validity != null && m_checkIncludes)
{
List includes = (List)m_includesMap.get( id );
if( includes != null )
@@ -342,15 +346,16 @@
{
aggregated.add( (SourceValidity)( (Object[])includes.get( i ) )[ 1 ] );
}
+ validity = aggregated;
}
}
// Create result
- handlerAndValidity = new TransformerHandlerAndValidity( handler, aggregated );
+ handlerAndValidity = new TransformerHandlerAndValidity( handler, validity );
}
finally
{
- m_includesMap.remove( id );
+ if ( m_checkIncludes ) m_includesMap.remove( id );
}
}
else
@@ -572,40 +577,44 @@
}
// Check includes
- AggregatedValidity aggregated = null;
- List includes = (List)templateAndValidityAndIncludes[ 2 ];
- if( includes != null )
- {
- aggregated = new AggregatedValidity();
- aggregated.add( storedValidity );
-
- for( int i = includes.size() - 1; i >= 0; i-- )
- {
- // Every include stored as pair of source ID and validity
- Object[] pair = (Object[])includes.get( i );
- storedValidity = (SourceValidity)pair[ 1 ];
+ if ( m_checkIncludes )
+ {
+ AggregatedValidity aggregated = null;
+ List includes = (List)templateAndValidityAndIncludes[ 2 ];
+ if( includes != null )
+ {
+ aggregated = new AggregatedValidity();
aggregated.add( storedValidity );
-
- valid = storedValidity.isValid();
- isValid = false;
- if( valid == 0 )
+
+ for( int i = includes.size() - 1; i >= 0; i-- )
{
- SourceValidity included = m_resolver.resolveURI( (String)pair[ 0 ] ).getValidity();
- if( included != null )
+ // Every include stored as pair of source ID and validity
+ Object[] pair = (Object[])includes.get( i );
+ storedValidity = (SourceValidity)pair[ 1 ];
+ aggregated.add( storedValidity );
+
+ valid = storedValidity.isValid();
+ isValid = false;
+ if( valid == 0 )
+ {
+ SourceValidity included = m_resolver.resolveURI( (String)pair[ 0 ] ).getValidity();
+ if( included != null )
+ {
+ valid = storedValidity.isValid( included );
+ isValid = ( valid == 1 );
+ }
+ }
+ else
{
- valid = storedValidity.isValid( included );
isValid = ( valid == 1 );
}
+ if( !isValid )
+ {
+ m_store.remove( key );
+ return null;
+ }
}
- else
- {
- isValid = ( valid == 1 );
- }
- if( !isValid )
- {
- m_store.remove( key );
- return null;
- }
+ storedValidity = aggregated;
}
}
@@ -613,7 +622,7 @@
(Templates)templateAndValidityAndIncludes[ 0 ] );
handler.getTransformer().setErrorListener( m_errorHandler );
handler.getTransformer().setURIResolver( this );
- return new TransformerHandlerAndValidity( handler, aggregated );
+ return new TransformerHandlerAndValidity( handler, storedValidity );
}
private void putTemplates( Templates templates, Source stylesheet, String id )
@@ -635,7 +644,10 @@
Object[] templateAndValidityAndIncludes = new Object[ 3 ];
templateAndValidityAndIncludes[ 0 ] = templates;
templateAndValidityAndIncludes[ 1 ] = validity;
- templateAndValidityAndIncludes[ 2 ] = m_includesMap.get( id );
+ if ( m_checkIncludes )
+ {
+ templateAndValidityAndIncludes[ 2 ] = m_includesMap.get( id );
+ }
m_store.store( key, templateAndValidityAndIncludes );
}
}
@@ -709,19 +721,21 @@
getLogger().debug( "xslSource = " + xslSource + ", system id = " + xslSource.getURI() );
}
- // Populate included validities
- List includes = (List)m_includesMap.get( base );
- if( includes != null )
- {
- SourceValidity included = xslSource.getValidity();
- if( included != null )
- {
- includes.add( new Object[]{xslSource.getURI(), xslSource.getValidity()} );
- }
- else
+ if ( m_checkIncludes ) {
+ // Populate included validities
+ List includes = (List)m_includesMap.get( base );
+ if( includes != null )
{
- // One of the included stylesheets is not cacheable
- m_includesMap.remove( base );
+ SourceValidity included = xslSource.getValidity();
+ if( included != null )
+ {
+ includes.add( new Object[]{xslSource.getURI(), xslSource.getValidity()} );
+ }
+ else
+ {
+ // One of the included stylesheets is not cacheable
+ m_includesMap.remove( base );
+ }
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: cvs-unsubscribe@avalon.apache.org
For additional commands, e-mail: cvs-help@avalon.apache.org