You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by mo...@apache.org on 2001/10/26 12:11:12 UTC

cvs commit: xml-xalan/java/src/org/apache/xalan/xsltc/compiler FunctionCall.java

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:	morten@xml.apache.org
  
  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: xalan-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xalan-cvs-help@xml.apache.org