dims        01/02/09 05:17:36

  Modified:    src/org/apache/cocoon/transformation Tag: xml-cocoon2
                        TraxTransformer.java
  Log:
  Fix suggested by Scott Boag for stopping the Xalan Transformation Thread
  if we have a problem in the pipeline.
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.2   +31 -7     
xml-cocoon/src/org/apache/cocoon/transformation/Attic/TraxTransformer.java
  
  Index: TraxTransformer.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon/src/org/apache/cocoon/transformation/Attic/TraxTransformer.java,v
  retrieving revision 1.1.2.1
  retrieving revision 1.1.2.2
  diff -u -r1.1.2.1 -r1.1.2.2
  --- TraxTransformer.java      2001/02/08 14:57:56     1.1.2.1
  +++ TraxTransformer.java      2001/02/09 13:17:35     1.1.2.2
  @@ -15,6 +15,8 @@
   import java.util.Hashtable;
   import java.text.StringCharacterIterator;
   
  +import java.lang.reflect.Method;
  +
   import javax.servlet.http.HttpServletRequest;
   
   import org.apache.avalon.Component;
  @@ -24,6 +26,7 @@
   import org.apache.avalon.Configurable;
   import org.apache.avalon.Configuration;
   import org.apache.avalon.Poolable;
  +import org.apache.avalon.Recyclable;
   import org.apache.avalon.Parameters;
   import org.apache.avalon.Loggable;
   
  @@ -55,10 +58,10 @@
    *         (Apache Software Foundation, Exoffice Technologies)
    * @author <a href="mailto:[EMAIL PROTECTED]">Davanum Srinivas</a>
    * @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a>
  - * @version CVS $Revision: 1.1.2.1 $ $Date: 2001/02/08 14:57:56 $
  + * @version CVS $Revision: 1.1.2.2 $ $Date: 2001/02/09 13:17:35 $
    */
   public class TraxTransformer extends ContentHandlerWrapper
  -implements Transformer, Composer, Poolable, Configurable {
  +implements Transformer, Composer, Poolable, Recyclable, Configurable {
       private static String FILE = "file:/";
   
       /** The store service instance */
  @@ -142,11 +145,11 @@
        */
       public void compose(ComponentManager manager) {
           try {
  -        log.debug("Looking up " + Roles.STORE);
  +            log.debug("Looking up " + Roles.STORE);
               this.store = (Store) manager.lookup(Roles.STORE);
  -    } catch (Exception e) {
  -        log.error("Could not find component", e);
  -    }
  +        } catch (Exception e) {
  +            log.error("Could not find component", e);
  +        }
       }
   
       /**
  @@ -170,7 +173,7 @@
           try {
               transformerHandler = getTransformerHandler(resolver,xsluri);
           } catch (TransformerConfigurationException e){
  -        log.error("Problem in getTransformer:", e);
  +            log.error("Problem in getTransformer:", e);
               throw new ProcessingException("Problem in getTransformer:");
           }
   
  @@ -263,5 +266,26 @@
           }
   
           return true;
  +    }
  +
  +    public void recycle()
  +    {
  +        //FIXME: Patch for Xalan2J, to stop transform threads if 
  +        //       there is a failure in the pipeline. 
  +        try {
  +            Class clazz = 
  +                Class.forName("org.apache.xalan.stree.SourceTreeHandler");
  +            Class  paramTypes[] = 
  +                    new Class[]{ Exception.class };
  +            Object params[] = 
  +                    new Object[] { new SAXException("Dummy Exception") };
  +            if(clazz.isInstance(transformerHandler)) {
  +                Method method = 
clazz.getMethod("setExceptionThrown",paramTypes);
  +                method.invoke(transformerHandler,params);
  +            }
  +        } catch (Exception e){
  +            log.debug("Exception in recycle:", e);
  +        }
  +        super.recycle();    
       }
   }
  
  
  

Reply via email to