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]

Reply via email to