sboag 01/01/11 23:33:44
Modified: java/src/org/apache/xalan/templates ElemExtensionCall.java
Log:
Modified the error handling code when an exception is thrown from
the extension mechanism. Now, if the message contains the word
"fatal" or contains no message, the error listener's error method witll
be called, otherwise the error listener's warning method will be called.
Also, make sure the source locator is set in the TransformerException.
Revision Changes Path
1.22 +23 -11
xml-xalan/java/src/org/apache/xalan/templates/ElemExtensionCall.java
Index: ElemExtensionCall.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xalan/templates/ElemExtensionCall.java,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -r1.21 -r1.22
--- ElemExtensionCall.java 2001/01/11 10:28:11 1.21
+++ ElemExtensionCall.java 2001/01/12 07:33:43 1.22
@@ -311,25 +311,37 @@
// System.out.println(e);
// e.printzStackTrace();
String msg = e.getMessage();
+
+ TransformerException te;
+ if(e instanceof TransformerException)
+ {
+ te = (TransformerException)e;
+ }
+ else
+ {
+ if(null != msg)
+ te = new TransformerException(e);
+ else
+ te = new TransformerException("Unknown error when calling
extension!", e);
+ }
+ if(null == te.getLocator())
+ te.setLocator(this);
if (null != msg)
{
- if (msg.startsWith("Stopping after fatal error:"))
+ if (msg.indexOf("fatal") >= 0)
{
- msg = msg.substring("Stopping after fatal error:".length());
+ transformer.getErrorListener().fatalError(te);
}
+ else if(e instanceof RuntimeException)
+ transformer.getErrorListener().error(te); // ??
+ else
+ transformer.getErrorListener().warning(te);
- transformer.getMsgMgr().message(
- XSLMessages.createMessage(
-
XSLTErrorResources.ER_CALL_TO_EXT_FAILED, new Object[]{ msg }),
- false); //"Call to extension
element failed: "+msg);
-
- // e.printStackTrace();
- // System.exit(-1);
}
+ else
+ transformer.getErrorListener().error(te); // ??
- // transformer.message(msg);
-
executeFallbacks(
transformer, sourceNode, mode);
}