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]