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