morten 01/10/26 03:11:12 Modified: java/src/org/apache/xalan/xsltc/compiler FunctionCall.java Log: Changed our extension for calling external static Java methods to allow both the "http://xml.apache.org/xalan/xsltc/java" namespace and the "http://xml.apache.org/xslt/java" namespace (Xalan's namespace for Java function calls). PR: bugzilla 3994 Obtained from: n/a Submitted by: after numerous requests/suggestions on xalan-dev Reviewed by: [EMAIL PROTECTED] Revision Changes Path 1.9 +19 -11 xml-xalan/java/src/org/apache/xalan/xsltc/compiler/FunctionCall.java Index: FunctionCall.java =================================================================== RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/FunctionCall.java,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- FunctionCall.java 2001/08/27 09:07:19 1.8 +++ FunctionCall.java 2001/10/26 10:11:11 1.9 @@ -1,5 +1,5 @@ /* - * @(#)$Id: FunctionCall.java,v 1.8 2001/08/27 09:07:19 morten Exp $ + * @(#)$Id: FunctionCall.java,v 1.9 2001/10/26 10:11:11 morten Exp $ * * The Apache Software License, Version 1.1 * @@ -75,12 +75,19 @@ class FunctionCall extends Expression { - private final static Vector _emptyArgs = new Vector(0); - private final static String _javaExtPrefix = TRANSLET_URI + "/java"; - + // Name of this function call private QName _fname; + // Arguments to this function call (might not be any) private final Vector _arguments; - + // Empty argument list, used for certain functions + private final static Vector EMPTY_ARG_LIST = new Vector(0); + + // Valid namespaces for Java function-call extension + private final static String JAVA_EXT_PREFIX = TRANSLET_URI + "/java"; + private final static String JAVA_EXT_XALAN = + "http://xml.apache.org/xslt/java"; + + // External Java function's class/method/signature private String _className; private Method _chosenMethod; private MethodType _chosenMethodType; @@ -154,7 +161,6 @@ } catch (ClassNotFoundException e) { System.err.println(e); - //System.exit(1); } } @@ -164,7 +170,7 @@ } public FunctionCall(QName fname) { - this(fname, _emptyArgs); + this(fname, EMPTY_ARG_LIST); } public String getName() { @@ -198,14 +204,15 @@ } // Handle extension functions (they all have a namespace) else { - final int len = _javaExtPrefix.length(); - if (namespace.equals(_javaExtPrefix)) { + final int len = JAVA_EXT_PREFIX.length(); + if (namespace.equals(JAVA_EXT_PREFIX) || + namespace.equals(JAVA_EXT_XALAN)) { final int pos = local.indexOf('.'); _className = local.substring(0, pos); _fname = new QName(namespace, null, local.substring(pos+1)); } else if (namespace.length() >= len && - namespace.substring(0, len).equals(_javaExtPrefix)) { + namespace.substring(0, len).equals(JAVA_EXT_PREFIX)) { _className = namespace.substring(len + 1); } else { @@ -479,7 +486,8 @@ Vector result = null; final String namespace = _fname.getNamespace(); - if (namespace.startsWith(_javaExtPrefix)) { + if (namespace.startsWith(JAVA_EXT_PREFIX) || + namespace.startsWith(JAVA_EXT_XALAN)) { final int nArgs = _arguments.size(); try { final Class clazz = Class.forName(_className);
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]