mkwan 2002/09/16 12:14:45
Modified: java/src/org/apache/xalan/xsltc/compiler/util
BooleanType.java IntType.java NodeSetType.java
NodeType.java RealType.java ResultTreeType.java
StringType.java
Log:
For XSLTC extension integration. Add more translation rules required by
extensions. Specifically, all types can be translated to a generic Java
Object.
Numeric types can be translated to their corresponding Java types (e.g. Real
to
java.lang.Double). Node, NodeSet and ResultTree can be translated to a Java
String.
Revision Changes Path
1.4 +4 -1
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util/BooleanType.java
Index: BooleanType.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util/BooleanType.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- BooleanType.java 1 Feb 2002 20:27:46 -0000 1.3
+++ BooleanType.java 16 Sep 2002 19:14:45 -0000 1.4
@@ -172,6 +172,9 @@
if (clazz == java.lang.Boolean.TYPE) {
methodGen.getInstructionList().append(NOP);
}
+ else if (clazz.isAssignableFrom(java.lang.Boolean.class)) {
+ translateTo(classGen, methodGen, Type.Reference);
+ }
else {
ErrorMsg err = new ErrorMsg(ErrorMsg.DATA_CONVERSION_ERR,
toString(), clazz.getName());
1.4 +4 -1
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util/IntType.java
Index: IntType.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util/IntType.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- IntType.java 1 Feb 2002 20:27:46 -0000 1.3
+++ IntType.java 16 Sep 2002 19:14:45 -0000 1.4
@@ -231,6 +231,9 @@
else if (clazz == Double.TYPE) {
il.append(I2D);
}
+ else if (clazz.isAssignableFrom(java.lang.Integer.class)) {
+ translateTo(classGen, methodGen, Type.Reference);
+ }
else {
ErrorMsg err = new ErrorMsg(ErrorMsg.DATA_CONVERSION_ERR,
toString(), clazz.getName());
1.11 +16 -2
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util/NodeSetType.java
Index: NodeSetType.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util/NodeSetType.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- NodeSetType.java 25 Jul 2002 11:44:19 -0000 1.10
+++ NodeSetType.java 16 Sep 2002 19:14:45 -0000 1.11
@@ -271,12 +271,26 @@
MAKE_NODE_SIG2);
il.append(new INVOKEINTERFACE(index, 2));
}
- else if (className.equals("org.w3c.dom.NodeList")) {
+ else if (className.equals("org.w3c.dom.NodeList") ||
+ className.equals("java.lang.Object")) {
int index = cpg.addInterfaceMethodref(DOM_INTF,
MAKE_NODE_LIST,
MAKE_NODE_LIST_SIG2);
il.append(new INVOKEINTERFACE(index, 2));
}
+ else if (className.equals("java.lang.String")) {
+ int next = cpg.addInterfaceMethodref(NODE_ITERATOR,
+ "next", "()I");
+ int index = cpg.addInterfaceMethodref(DOM_INTF,
+ GET_NODE_VALUE,
+ "(I)"+STRING_SIG);
+
+ // Get next node from the iterator
+ il.append(new INVOKEINTERFACE(next, 1));
+ // Get the node's string value (from the DOM)
+ il.append(new INVOKEINTERFACE(index, 2));
+
+ }
else if (className.equals("int")) {
int next = cpg.addInterfaceMethodref(NODE_ITERATOR,
"next", "()I");
1.9 +9 -3
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util/NodeType.java
Index: NodeType.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util/NodeType.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- NodeType.java 25 Jul 2002 11:45:28 -0000 1.8
+++ NodeType.java 16 Sep 2002 19:14:45 -0000 1.9
@@ -282,11 +282,17 @@
final ConstantPoolGen cpg = classGen.getConstantPool();
final InstructionList il = methodGen.getInstructionList();
+ String className = clazz.getName();
+ if (className.equals("java.lang.String")) {
+ translateTo(classGen, methodGen, Type.String);
+ return;
+ }
+
il.append(methodGen.loadDOM());
il.append(SWAP); // dom ref must be below node index
- String className = clazz.getName();
- if (className.equals("org.w3c.dom.Node")) {
+ if (className.equals("org.w3c.dom.Node") ||
+ className.equals("java.lang.Object")) {
int index = cpg.addInterfaceMethodref(DOM_INTF,
MAKE_NODE,
MAKE_NODE_SIG);
1.4 +4 -1
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util/RealType.java
Index: RealType.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util/RealType.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- RealType.java 1 Feb 2002 20:08:11 -0000 1.3
+++ RealType.java 16 Sep 2002 19:14:45 -0000 1.4
@@ -260,6 +260,9 @@
else if (clazz == Double.TYPE) {
il.append(NOP);
}
+ else if (clazz.isAssignableFrom(java.lang.Double.class)) {
+ translateTo(classGen, methodGen, Type.Reference);
+ }
else {
ErrorMsg err = new ErrorMsg(ErrorMsg.DATA_CONVERSION_ERR,
toString(), clazz.getName());
1.14 +4 -1
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util/ResultTreeType.java
Index: ResultTreeType.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util/ResultTreeType.java,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- ResultTreeType.java 14 Sep 2002 23:36:17 -0000 1.13
+++ ResultTreeType.java 16 Sep 2002 19:14:45 -0000 1.14
@@ -433,6 +433,9 @@
else if (className.equals("java.lang.Object")) {
il.append(NOP);
}
+ else if (className.equals("java.lang.String")) {
+ translateTo(classGen, methodGen, Type.String);
+ }
else {
ErrorMsg err = new ErrorMsg(ErrorMsg.DATA_CONVERSION_ERR,
toString(), className);
1.7 +2 -2
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util/StringType.java
Index: StringType.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/util/StringType.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- StringType.java 25 Jul 2002 11:45:28 -0000 1.6
+++ StringType.java 16 Sep 2002 19:14:45 -0000 1.7
@@ -184,7 +184,7 @@
public void translateTo(ClassGenerator classGen, MethodGenerator
methodGen,
Class clazz)
{
- if (clazz.getName().equals("java.lang.String")) {
+ if (clazz.isAssignableFrom(java.lang.String.class)) {
// same internal representation
methodGen.getInstructionList().append(NOP);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]