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();
}
}