Found a regression issue with the code review.

- Also fixed the layout of the variables in the constructor to match the 
declaration order.


Project: http://git-wip-us.apache.org/repos/asf/vxquery/repo
Commit: http://git-wip-us.apache.org/repos/asf/vxquery/commit/13ed39e8
Tree: http://git-wip-us.apache.org/repos/asf/vxquery/tree/13ed39e8
Diff: http://git-wip-us.apache.org/repos/asf/vxquery/diff/13ed39e8

Branch: refs/heads/site
Commit: 13ed39e8aaad20c0087c3795788babd25a7d542b
Parents: b8fc361
Author: Preston Carman <[email protected]>
Authored: Mon Jun 23 15:50:48 2014 -0700
Committer: Preston Carman <[email protected]>
Committed: Mon Jun 23 15:50:48 2014 -0700

----------------------------------------------------------------------
 .../vxquery/xmlparser/SAXContentHandler.java    | 50 +++++++++++++-------
 1 file changed, 32 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/vxquery/blob/13ed39e8/vxquery-core/src/main/java/org/apache/vxquery/xmlparser/SAXContentHandler.java
----------------------------------------------------------------------
diff --git 
a/vxquery-core/src/main/java/org/apache/vxquery/xmlparser/SAXContentHandler.java
 
b/vxquery-core/src/main/java/org/apache/vxquery/xmlparser/SAXContentHandler.java
index 5057aaf..37ce001 100644
--- 
a/vxquery-core/src/main/java/org/apache/vxquery/xmlparser/SAXContentHandler.java
+++ 
b/vxquery-core/src/main/java/org/apache/vxquery/xmlparser/SAXContentHandler.java
@@ -80,7 +80,7 @@ public class SAXContentHandler implements ContentHandler, 
LexicalHandler {
     private final boolean attachTypes;
     private final StringBuilder buffer;
     private final boolean createNodeIds;
-    private int depth = 0;
+    private int depth;
     private final ArrayBackedValueStorage docABVS;
     private final ArrayBackedValueStorage elementABVS;
     private boolean pendingText;
@@ -90,30 +90,39 @@ public class SAXContentHandler implements ContentHandler, 
LexicalHandler {
     private final ArrayBackedValueStorage tempABVS;
 
     public SAXContentHandler(boolean attachTypes, ITreeNodeIdProvider 
nodeIdProvider) {
-        docABVS = new ArrayBackedValueStorage();
-        elementABVS = new ArrayBackedValueStorage();
-        resultABVS = new ArrayBackedValueStorage();
-        tempABVS = new ArrayBackedValueStorage();
-        createNodeIds = nodeIdProvider != null;
-        this.attachTypes = attachTypes;
-        this.nodeIdProvider = nodeIdProvider;
-        docb = new DocumentNodeBuilder();
-        tnb = new TextNodeBuilder();
-        cnb = new CommentNodeBuilder();
-        pinb = new PINodeBuilder();
+        // XML node builders
         anb = new AttributeNodeBuilder();
+        cnb = new CommentNodeBuilder();
         db = new DictionaryBuilder();
-        buffer = new StringBuilder();
+        docb = new DocumentNodeBuilder();
+        pinb = new PINodeBuilder();
+        tnb = new TextNodeBuilder();
         enbStack = new ArrayList<ElementNodeBuilder>();
         freeENBList = new ArrayList<ElementNodeBuilder>();
-        pendingText = false;
-        tvp = (TaggedValuePointable) 
TaggedValuePointable.FACTORY.createPointable();
+        
+        // Element writing and path step variables
         skipping = true;
+        tvp = (TaggedValuePointable) 
TaggedValuePointable.FACTORY.createPointable();
+            
+        // Basic tracking and setting variables
+        this.attachTypes = attachTypes;
+        buffer = new StringBuilder();
+        createNodeIds = nodeIdProvider != null;
+        depth = 0;
+        docABVS = new ArrayBackedValueStorage();
+        elementABVS = new ArrayBackedValueStorage();
+        pendingText = false;
+        nodeIdCounter = 0;
+        this.nodeIdProvider = nodeIdProvider;
+        resultABVS = new ArrayBackedValueStorage();
+        tempABVS = new ArrayBackedValueStorage();
     }
 
     public SAXContentHandler(boolean attachTypes, ITreeNodeIdProvider 
nodeIdProvider, ByteBuffer frame,
             FrameTupleAppender appender, List<SequenceType> 
childSequenceTypes) {
         this(attachTypes, nodeIdProvider);
+
+        // Frame writing variables
         this.frame = frame;
         this.appender = appender;
         setChildPathSteps(childSequenceTypes);
@@ -170,9 +179,16 @@ public class SAXContentHandler implements ContentHandler, 
LexicalHandler {
         }
     }
 
+    private void endElementChildPathStep() throws IOException {
+        if (subElement != null && depth <= subElement.length) {
+            subElement[depth - 1] = false;
+        }
+    }
+
     @Override
     public void endElement(String uri, String localName, String name) throws 
SAXException {
         if (skipping) {
+            --depth;
             return;
         }
         try {
@@ -185,9 +201,7 @@ public class SAXContentHandler implements ContentHandler, 
LexicalHandler {
             if (nonSkipped) {
                 writeElement();
             }
-            if (subElement != null && depth <= subElement.length) {
-                subElement[depth - 1] = false;
-            }
+            endElementChildPathStep();
         } catch (IOException e) {
             e.printStackTrace();
             throw new SAXException(e);

Reply via email to