morten      01/09/12 07:30:47

  Modified:    java/src/org/apache/xalan/xsltc/cmdline Transform.java
               java/src/org/apache/xalan/xsltc/compiler BooleanCall.java
                        StepPattern.java Variable.java
               java/src/org/apache/xalan/xsltc/compiler/util
                        ResultTreeType.java
               java/src/org/apache/xalan/xsltc/dom DOMImpl.java
  Log:
  Fix to always return 'true' when result tree fragments are converted to
  boolean values (because a result tree always has at least one node - root).
  PR:           bugzilla 2595
  Obtained from:        n/a
  Submitted by: [EMAIL PROTECTED]
  Reviewed by:  [EMAIL PROTECTED]
  
  Revision  Changes    Path
  1.6       +13 -2     
xml-xalan/java/src/org/apache/xalan/xsltc/cmdline/Transform.java
  
  Index: Transform.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/cmdline/Transform.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- Transform.java    2001/09/12 09:18:52     1.5
  +++ Transform.java    2001/09/12 14:30:46     1.6
  @@ -1,5 +1,5 @@
   /*
  - * @(#)$Id: Transform.java,v 1.5 2001/09/12 09:18:52 morten Exp $
  + * @(#)$Id: Transform.java,v 1.6 2001/09/12 14:30:46 morten Exp $
    *
    * The Apache Software License, Version 1.1
    *
  @@ -87,6 +87,7 @@
   
   import org.apache.xalan.xsltc.runtime.*;
   import org.apache.xalan.xsltc.dom.DOMImpl;
  +import org.apache.xalan.xsltc.dom.DOMBuilder;
   import org.apache.xalan.xsltc.dom.Axis;
   import org.apache.xalan.xsltc.dom.DTDMonitor;
   
  @@ -142,7 +143,17 @@
   
            // Set the DOM's DOM builder as the XMLReader's SAX2 content handler
            final DOMImpl dom = new DOMImpl();
  -         reader.setContentHandler(dom.getBuilder());
  +         final DOMBuilder builder = dom.getBuilder();
  +         reader.setContentHandler(builder);
  +
  +         try {
  +             String prop = "http://xml.org/sax/properties/lexical-handler";;
  +             reader.setProperty(prop, builder);
  +         }
  +         catch (SAXException e) {
  +             // quitely ignored
  +         }
  +         
            // Create a DTD monitor and pass it to the XMLReader object
            final DTDMonitor dtdMonitor = new DTDMonitor();
            dtdMonitor.handleDTD(reader);
  
  
  
  1.2       +9 -6      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/BooleanCall.java
  
  Index: BooleanCall.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/BooleanCall.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- BooleanCall.java  2001/04/17 18:51:21     1.1
  +++ BooleanCall.java  2001/09/12 14:30:46     1.2
  @@ -1,5 +1,5 @@
   /*
  - * @(#)$Id: BooleanCall.java,v 1.1 2001/04/17 18:51:21 sboag Exp $
  + * @(#)$Id: BooleanCall.java,v 1.2 2001/09/12 14:30:46 morten Exp $
    *
    * The Apache Software License, Version 1.1
    *
  @@ -69,21 +69,24 @@
   import org.apache.xalan.xsltc.compiler.util.*;
   
   final class BooleanCall extends FunctionCall {
  +
  +    private Expression _arg = null;
  +
       public BooleanCall(QName fname, Vector arguments) {
        super(fname, arguments);
  +     _arg = argument(0);
       }
   
       public Type typeCheck(SymbolTable stable) throws TypeCheckError {
  -     argument(0).typeCheck(stable);
  +     _arg.typeCheck(stable);
        return _type = Type.Boolean;
       }
   
       public void translate(ClassGenerator classGen, MethodGenerator 
methodGen) {
  -     final Expression arg = argument(0);
  -     arg.translate(classGen, methodGen);
  -     final Type targ = arg.getType();
  +     _arg.translate(classGen, methodGen);
  +     final Type targ = _arg.getType();
        if (!targ.identicalTo(Type.Boolean)) {
  -         arg.startResetIterator(classGen, methodGen);
  +         _arg.startResetIterator(classGen, methodGen);
            targ.translateTo(classGen, methodGen, Type.Boolean);
        }
       }
  
  
  
  1.5       +1 -2      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/StepPattern.java
  
  Index: StepPattern.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/StepPattern.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- StepPattern.java  2001/08/27 09:07:19     1.4
  +++ StepPattern.java  2001/09/12 14:30:46     1.5
  @@ -1,5 +1,5 @@
   /*
  - * @(#)$Id: StepPattern.java,v 1.4 2001/08/27 09:07:19 morten Exp $
  + * @(#)$Id: StepPattern.java,v 1.5 2001/09/12 14:30:46 morten Exp $
    *
    * The Apache Software License, Version 1.1
    *
  @@ -243,7 +243,6 @@
        for (int i = 0; i < n; i++) {
            final Predicate pred = (Predicate)_predicates.elementAt(i);
            final Expression exp = pred.getExpr();
  -
            exp.translateDesynthesized(classGen, methodGen);
            _trueList.append(exp._trueList);
            _falseList.append(exp._falseList);
  
  
  
  1.15      +1 -2      
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Variable.java
  
  Index: Variable.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Variable.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- Variable.java     2001/08/28 12:43:08     1.14
  +++ Variable.java     2001/09/12 14:30:46     1.15
  @@ -1,5 +1,5 @@
   /*
  - * @(#)$Id: Variable.java,v 1.14 2001/08/28 12:43:08 morten Exp $
  + * @(#)$Id: Variable.java,v 1.15 2001/09/12 14:30:46 morten Exp $
    *
    * The Apache Software License, Version 1.1
    *
  @@ -176,7 +176,6 @@
        else {
            _type = Type.Reference;
        }
  -
        // The return type is void as the variable element does not leave
        // anything on the JVM's stack. The '_type' global will be returned
        // by the references to this variable, and not by the variable itself.
  
  
  
  1.7       +7 -3      
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.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- ResultTreeType.java       2001/08/28 12:43:08     1.6
  +++ ResultTreeType.java       2001/09/12 14:30:47     1.7
  @@ -1,5 +1,5 @@
   /*
  - * @(#)$Id: ResultTreeType.java,v 1.6 2001/08/28 12:43:08 morten Exp $
  + * @(#)$Id: ResultTreeType.java,v 1.7 2001/09/12 14:30:47 morten Exp $
    *
    * The Apache Software License, Version 1.1
    *
  @@ -149,8 +149,12 @@
        */
       public void translateTo(ClassGenerator classGen, MethodGenerator 
methodGen, 
                            BooleanType type) {
  -     translateTo(classGen, methodGen, Type.String);
  -     Type.String.translateTo(classGen, methodGen, Type.Boolean);
  +     // A result tree is always 'true' when converted to a boolean value,
  +     // since the tree always has at least one node (the root).
  +     final ConstantPoolGen cpg = classGen.getConstantPool();
  +     final InstructionList il = methodGen.getInstructionList();
  +     il.append(POP);      // don't need the DOM reference
  +     il.append(ICONST_1); // push 'true' on the stack
       }
   
       /**
  
  
  
  1.23      +7 -13     
xml-xalan/java/src/org/apache/xalan/xsltc/dom/DOMImpl.java
  
  Index: DOMImpl.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/dom/DOMImpl.java,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- DOMImpl.java      2001/09/12 10:02:25     1.22
  +++ DOMImpl.java      2001/09/12 14:30:47     1.23
  @@ -1,5 +1,5 @@
   /*
  - * @(#)$Id: DOMImpl.java,v 1.22 2001/09/12 10:02:25 morten Exp $
  + * @(#)$Id: DOMImpl.java,v 1.23 2001/09/12 14:30:47 morten Exp $
    *
    * The Apache Software License, Version 1.1
    *
  @@ -455,7 +455,7 @@
            case TEXT:
                return "#text";
            case PROCESSING_INSTRUCTION:
  -             return "***PI Name NYI";
  +             return "#pi";
            case COMMENT:
                return "#comment";
            default:
  @@ -1748,6 +1748,8 @@
        case ROOT:
            return getNodeValue(_offsetOrChild[node]);
        case TEXT:
  +     case COMMENT:
  +     case PROCESSING_INSTRUCTION:
            return makeStringValue(node);
        default:
            if (node < _firstAttributeNode)
  @@ -1966,16 +1968,11 @@
        case ROOT:
            print(_offsetOrChild[node], level);
            break;
  -
        case TEXT:
  -         System.out.print(makeStringValue(node));
  -         break;
  -
  -     case PROCESSING_INSTRUCTION:
        case COMMENT:
  -         System.out.println("***PI/CMT***");
  +     case PROCESSING_INSTRUCTION:
  +         System.out.print(makeStringValue(node));
            break;
  -
        default:                  // element
            final String name = getNodeName(node);
            System.out.print("<" + name);
  @@ -2324,7 +2321,6 @@
            copyPI(node, handler);
            break;
        case COMMENT:
  -         break;
        case TEXT:
            handler.characters(_text,
                               _offsetOrChild[node],
  @@ -2465,15 +2461,13 @@
             child = _nextSibling[child]) {
            switch (_type[child]) {
            case TEXT:
  +         case COMMENT:
                buffer.append(_text,
                              _offsetOrChild[child],
                              _lengthOrAttr[child]);
                break;
  -                  
            case PROCESSING_INSTRUCTION:
  -         case COMMENT:
                break;
  -                                    
                // !!! at the moment default can only be an element???
            default:
                stringValueAux(buffer, child);
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to