You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by dl...@apache.org on 2002/03/22 15:50:49 UTC

cvs commit: xml-xalan/java/src/org/apache/xalan/extensions ExtensionsTable.java MethodResolver.java

dleslie     02/03/22 06:50:49

  Modified:    java/src/org/apache/xalan/extensions ExtensionsTable.java
                        MethodResolver.java
  Log:
  1. Registered the EXSLT 'common', 'sets', and 'math'
  namespaces ExtensionsTable.
  
  2. To handle extension functions (e.g., some EXSLT
  functions) that include a dash in their name, added
  a routine in MethodResolver that maps abc_xyz to
  abcXyz.
  
  Revision  Changes    Path
  1.18      +14 -0     xml-xalan/java/src/org/apache/xalan/extensions/ExtensionsTable.java
  
  Index: ExtensionsTable.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/extensions/ExtensionsTable.java,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- ExtensionsTable.java	28 Jul 2001 00:25:57 -0000	1.17
  +++ ExtensionsTable.java	22 Mar 2002 14:50:49 -0000	1.18
  @@ -107,6 +107,20 @@
                                          "org.apache.xalan.lib.Extensions");
   
       addExtensionNamespace(uri, fh);
  +    
  +    //Add EXSLT namespaces and map to org.apache.xalan.lib.ExsltXxx.
  +    uri = "http://exslt.org/common";
  +    fh = new ExtensionHandlerJavaClass(uri, "javaclass",
  +                                       "org.apache.xalan.lib.ExsltCommon");
  +    addExtensionNamespace(uri, fh);
  +    uri = "http://exslt.org/math";
  +    fh = new ExtensionHandlerJavaClass(uri, "javaclass",
  +                                       "org.apache.xalan.lib.ExsltMath");
  +    addExtensionNamespace(uri, fh);
  +    uri = "http://exslt.org/sets";
  +    fh = new ExtensionHandlerJavaClass(uri, "javaclass",
  +                                       "org.apache.xalan.lib.ExsltSets");
  +    addExtensionNamespace(uri, fh);    
     }
   
     /**
  
  
  
  1.27      +23 -1     xml-xalan/java/src/org/apache/xalan/extensions/MethodResolver.java
  
  Index: MethodResolver.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/extensions/MethodResolver.java,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- MethodResolver.java	28 Jul 2001 00:25:57 -0000	1.26
  +++ MethodResolver.java	22 Mar 2002 14:50:49 -0000	1.27
  @@ -224,6 +224,8 @@
     {
       // System.out.println("---> Looking for method: "+name);
       // System.out.println("---> classObj: "+classObj);
  +    if (name.indexOf("-")>0)
  +      name = replaceDash(name);
       Method bestMethod = null;
       Class[] bestParamTypes = null;
       Method[] methods = classObj.getMethods();
  @@ -323,7 +325,27 @@
       
       return bestMethod;
     }
  -
  +  
  +  /**
  +   * To support EXSLT extensions, convert names with dash to allowable Java names: 
  +   * e.g., convert abc-xyz to abcXyz.
  +   * Note: dashes only appear in middle of an EXSLT function or element name.
  +   */
  +  private static String replaceDash(String name)
  +  {
  +    char dash = '-';
  +    StringBuffer buff = new StringBuffer("");
  +    for (int i=0; i<name.length(); i++)
  +    {
  +      if (name.charAt(i) == dash)
  +      {}
  +      else if (i > 0 && name.charAt(i-1) == dash)
  +        buff.append(Character.toUpperCase(name.charAt(i)));
  +      else
  +        buff.append(name.charAt(i));
  +    }
  +    return buff.toString();
  +  }
     
     /**
      * Given the name of a method, figure out the resolution of 
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: xalan-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xalan-cvs-help@xml.apache.org