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