zongaro 2003/09/03 05:51:55
Modified: java/src/org/apache/xalan/extensions
ExtensionHandlerExsltFunction.java
java/src/org/apache/xalan/res XSLTErrorResources.java
Log:
Applied patch for bug 15090 from Joanne Tong ([EMAIL PROTECTED]). Added code
to handle the case in which a referenced function is not found by reporting an
error. Previously, a NullPointerException was the result.
Revision Changes Path
1.6 +24 -15
xml-xalan/java/src/org/apache/xalan/extensions/ExtensionHandlerExsltFunction.java
Index: ExtensionHandlerExsltFunction.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xalan/extensions/ExtensionHandlerExsltFunction.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- ExtensionHandlerExsltFunction.java 30 Jan 2003 18:45:41 -0000
1.5
+++ ExtensionHandlerExsltFunction.java 3 Sep 2003 12:51:54 -0000
1.6
@@ -61,6 +61,8 @@
import javax.xml.transform.TransformerException;
+import org.apache.xalan.res.XSLMessages;
+import org.apache.xalan.res.XSLTErrorResources;
import org.apache.xalan.templates.Constants;
import org.apache.xalan.templates.ElemExsltFuncResult;
import org.apache.xalan.templates.ElemExsltFunction;
@@ -234,25 +236,32 @@
}
ElemExsltFunction elemFunc =
getFunction(extFunction.getFunctionName());
- XPathContext context = exprContext.getXPathContext();
- TransformerImpl transformer =
(TransformerImpl)context.getOwnerObject();
- // Reset the frame bottom before calling the EXSLT function.
- if (callerTemplate != null)
- elemFunc.setCallerFrameSize(callerTemplate.m_frameSize);
- else
- elemFunc.setCallerFrameSize(0);
+ if (null != elemFunc) {
+ XPathContext context = exprContext.getXPathContext();
+ TransformerImpl transformer =
(TransformerImpl)context.getOwnerObject();
- elemFunc.execute(transformer, methodArgs);
+ // Reset the frame bottom before calling the EXSLT function.
+ if (callerTemplate != null)
+ elemFunc.setCallerFrameSize(callerTemplate.m_frameSize);
+ else
+ elemFunc.setCallerFrameSize(0);
+
+ elemFunc.execute(transformer, methodArgs);
- XObject val = new XString(""); // value returned if no result element.
- if (elemFunc.isResultSet())
- {
- val = elemFunc.getResult();
- elemFunc.clearResult();
- }
+ XObject val = new XString(""); // value returned if no result
element.
+ if (elemFunc.isResultSet())
+ {
+ val = elemFunc.getResult();
+ elemFunc.clearResult();
+ }
- return val;
+ return val;
+
+ }
+ else {
+ throw new
TransformerException(XSLMessages.createMessage(XSLTErrorResources.ER_FUNCTION_NOT_FOUND,
new Object[] {extFunction.getFunctionName()}));
+ }
}
catch (TransformerException e)
{
1.40 +14 -4
xml-xalan/java/src/org/apache/xalan/res/XSLTErrorResources.java
Index: XSLTErrorResources.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xalan/res/XSLTErrorResources.java,v
retrieving revision 1.39
retrieving revision 1.40
diff -u -r1.39 -r1.40
--- XSLTErrorResources.java 17 Jun 2003 20:06:29 -0000 1.39
+++ XSLTErrorResources.java 3 Sep 2003 12:51:54 -0000 1.40
@@ -430,6 +430,8 @@
public static final String ER_TEMPLATE_NAME_MATCH =
"ER_TEMPLATE_NAME_MATCH";
public static final String ER_INVALID_PREFIX = "ER_INVALID_PREFIX";
public static final String ER_NO_ATTRIB_SET = "ER_NO_ATTRIB_SET";
+ public static final String ER_FUNCTION_NOT_FOUND =
+ "ER_FUNCTION_NOT_FOUND";
public static final String WG_FOUND_CURLYBRACE = "WG_FOUND_CURLYBRACE";
public static final String WG_COUNT_ATTRIB_MATCHES_NO_ANCESTOR =
@@ -2123,16 +2125,24 @@
{ ER_INVALID_PREFIX,
"Prefix in exclude-result-prefixes is not valid: {0}"},
- // Note to translators: An "attribute set" is a set of attributes that
can be
- // added to an element in the output document as a group. The message
indicates
- // that there was a reference to an attribute set named {0} that was
never
- // defined.
+ // Note to translators: An "attribute set" is a set of attributes that
can
+ // be added to an element in the output document as a group. The message
+ // indicates that there was a reference to an attribute set named {0}
that
+ // was never defined.
// ER_NO_ATTRIB_SET - new error message for bugzilla #782
// attribute-set named {0} does not exist
// public static final int ER_NO_ATTRIB_SET = 253;
{ ER_NO_ATTRIB_SET,
"attribute-set named {0} does not exist"},
+
+ // Note to translators: This message indicates that there was a
reference
+ // to a function named {0} for which no function definition could be
found.
+//ER_FUNCTION_NOT_FOUND
+// public static final int ER_FUNCTION_NOT_FOUND = 254;
+
+ { ER_FUNCTION_NOT_FOUND,
+ "The function named {0} does not exist"},
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]