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/03/17 12:52:37 UTC

cvs commit: avalon-excalibur/xmlutil/src/java/org/apache/excalibur/xml/xslt XSLTProcessorImpl.java

cziegeler    2003/03/17 03:52:36

  Modified:    xmlutil/src/java/org/apache/excalibur/xml/xslt
                        XSLTProcessorImpl.java
  Log:
  Making XSLTProcessorImpl recyclable and fixing
  component releasing (which was removed by someone..sigh)
  
  Revision  Changes    Path
  1.27      +31 -5     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.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- XSLTProcessorImpl.java	27 Feb 2003 09:24:47 -0000	1.26
  +++ XSLTProcessorImpl.java	17 Mar 2003 11:52:36 -0000	1.27
  @@ -73,6 +73,7 @@
   import javax.xml.transform.sax.TransformerHandler;
   import javax.xml.transform.stream.StreamSource;
   
  +import org.apache.avalon.excalibur.pool.Recyclable;
   import org.apache.avalon.framework.activity.Disposable;
   import org.apache.avalon.framework.activity.Initializable;
   import org.apache.avalon.framework.component.ComponentException;
  @@ -124,6 +125,7 @@
       Initializable,
       Disposable,
       Parameterizable,
  +    Recyclable,
       URIResolver
   {
       /** The store service instance */
  @@ -150,6 +152,9 @@
   
       private XMLizer m_xmlizer;
   
  +    /** The ServiceManager */
  +    private ServiceManager m_manager;
  +    
       /**
        * Compose. Try to get the store
        *
  @@ -160,12 +165,13 @@
       public void service( final ServiceManager manager )
           throws ServiceException
       {
  -        m_xmlizer = (XMLizer)manager.lookup( XMLizer.ROLE );
  -        m_resolver = (SourceResolver)manager.lookup( SourceResolver.ROLE );
  +        m_manager = manager;
  +        m_xmlizer = (XMLizer)m_manager.lookup( XMLizer.ROLE );
  +        m_resolver = (SourceResolver)m_manager.lookup( SourceResolver.ROLE );
   
  -        if( manager.hasService( Store.TRANSIENT_STORE ) )
  +        if( m_manager.hasService( Store.TRANSIENT_STORE ) )
           {
  -            m_store = (Store)manager.lookup( Store.TRANSIENT_STORE );
  +            m_store = (Store)m_manager.lookup( Store.TRANSIENT_STORE );
           }
       }
   
  @@ -178,6 +184,14 @@
   
       public void dispose()
       {
  +        if ( null != m_manager) 
  +        {
  +            m_manager.release( m_store );
  +            m_manager.release( m_resolver );
  +            m_manager.release( m_xmlizer );
  +            m_manager = null;
  +        }
  +        m_xmlizer = null;
           m_store = null;
           m_resolver = null;
           m_errorHandler = null;
  @@ -194,6 +208,8 @@
           m_transformerFactory = params.getParameter( "transformer-factory", null );
           if( !m_useStore )
           {
  +            // release the store, if we don't need it anymore
  +            m_manager.release( m_store );
               m_store = null;
           }
           else if( null == m_store )
  @@ -746,4 +762,14 @@
           newObject.setSystemId( source.getURI() );
           return newObject;
       }
  +    
  +    /**
  +     * Recycle the component
  +     */
  +    public void recycle() 
  +    {
  +        m_includesMap.clear();
  +        m_factory = getTransformerFactory( m_transformerFactory );
  +    }
  +
   }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: cvs-unsubscribe@avalon.apache.org
For additional commands, e-mail: cvs-help@avalon.apache.org