You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by mk...@apache.org on 2002/10/22 17:46:30 UTC
cvs commit: xml-xalan/java/src/org/apache/xalan/templates ElemExtensionCall.java
mkwan 2002/10/22 08:46:30
Modified: java/src/org/apache/xalan/templates ElemExtensionCall.java
Log:
For bugzilla 7357
Fix problems in exception handling for extension elements.
Revision Changes Path
1.30 +46 -35 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.29
retrieving revision 1.30
diff -u -r1.29 -r1.30
--- ElemExtensionCall.java 6 Sep 2002 17:58:38 -0000 1.29
+++ ElemExtensionCall.java 22 Oct 2002 15:46:29 -0000 1.30
@@ -223,6 +223,23 @@
}
}
+
+ /**
+ * Return true if this extension element has a <xsl:fallback> child element.
+ *
+ * @return true if this extension element has a <xsl:fallback> child element.
+ */
+ public boolean hasFallbackChildren()
+ {
+ for (ElemTemplateElement child = m_firstChild; child != null;
+ child = child.m_nextSibling)
+ {
+ if (child.getXSLToken() == Constants.ELEMNAME_FALLBACK)
+ return true;
+ }
+
+ return false;
+ }
/**
@@ -234,8 +251,7 @@
*
* @throws TransformerException
*/
- public void execute(
- TransformerImpl transformer)
+ public void execute(TransformerImpl transformer)
throws TransformerException
{
@@ -248,7 +264,17 @@
if (null == nsh)
{
- executeFallbacks(transformer);
+ if (hasFallbackChildren())
+ {
+ executeFallbacks(transformer);
+ }
+ else
+ {
+ TransformerException te = new TransformerException(XSLMessages.createMessage(
+ XSLTErrorResources.ER_CALL_TO_EXT_FAILED, new Object[]{getNodeName()}));
+ transformer.getErrorListener().fatalError(te);
+ }
+
return;
}
@@ -260,42 +286,27 @@
catch (Exception e)
{
- // 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(XSLMessages.createMessage(XSLTErrorResources.ER_UNKNOWN_ERROR_CALLING_EXTENSION, null), e); //"Unknown error when calling extension!", e);
- }
- if(null == te.getLocator())
- te.setLocator(this);
-
- if (null != msg)
- {
- if (msg.indexOf("fatal") >= 0)
+ if (hasFallbackChildren())
+ executeFallbacks(transformer);
+ else
+ {
+ if(e instanceof TransformerException)
{
- transformer.getErrorListener().fatalError(te);
+ TransformerException te = (TransformerException)e;
+ if(null == te.getLocator())
+ te.setLocator(this);
+
+ transformer.getErrorListener().fatalError(te);
+ }
+ else if (e instanceof RuntimeException)
+ {
+ transformer.getErrorListener().fatalError(new TransformerException(e));
}
- else if(e instanceof RuntimeException)
- transformer.getErrorListener().error(te); // ??
else
- transformer.getErrorListener().warning(te);
-
+ {
+ transformer.getErrorListener().warning(new TransformerException(e));
+ }
}
- else
- transformer.getErrorListener().error(te); // ??
-
- executeFallbacks(
- transformer);
}
}
catch(org.xml.sax.SAXException se)
---------------------------------------------------------------------
To unsubscribe, e-mail: xalan-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xalan-cvs-help@xml.apache.org