You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ws.apache.org by ve...@apache.org on 2016/03/05 16:31:56 UTC

svn commit: r1733725 - in /webservices/axiom/branches/stax-stream/aspects: core-aspects/src/main/java/org/apache/axiom/core/impl/ om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/ om-aspects/src/main/java/org/apache/axiom/om/impl/mixin/

Author: veithen
Date: Sat Mar  5 15:31:56 2016
New Revision: 1733725

URL: http://svn.apache.org/viewvc?rev=1733725&view=rev
Log:
Make more test cases pass.

Modified:
    webservices/axiom/branches/stax-stream/aspects/core-aspects/src/main/java/org/apache/axiom/core/impl/TreeWalkerImpl.java
    webservices/axiom/branches/stax-stream/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/BuilderHandler.java
    webservices/axiom/branches/stax-stream/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/Context.java
    webservices/axiom/branches/stax-stream/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/StAXHelper.java
    webservices/axiom/branches/stax-stream/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/mixin/AxiomSourcedElementSupport.aj

Modified: webservices/axiom/branches/stax-stream/aspects/core-aspects/src/main/java/org/apache/axiom/core/impl/TreeWalkerImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/branches/stax-stream/aspects/core-aspects/src/main/java/org/apache/axiom/core/impl/TreeWalkerImpl.java?rev=1733725&r1=1733724&r2=1733725&view=diff
==============================================================================
--- webservices/axiom/branches/stax-stream/aspects/core-aspects/src/main/java/org/apache/axiom/core/impl/TreeWalkerImpl.java (original)
+++ webservices/axiom/branches/stax-stream/aspects/core-aspects/src/main/java/org/apache/axiom/core/impl/TreeWalkerImpl.java Sat Mar  5 15:31:56 2016
@@ -283,5 +283,8 @@ public final class TreeWalkerImpl implem
                 parent = ((CoreChildNode)parent).coreGetParent();
             }
         }
+        if (reader != null) {
+            reader.dispose();
+        }
     }
 }

Modified: webservices/axiom/branches/stax-stream/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/BuilderHandler.java
URL: http://svn.apache.org/viewvc/webservices/axiom/branches/stax-stream/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/BuilderHandler.java?rev=1733725&r1=1733724&r2=1733725&view=diff
==============================================================================
--- webservices/axiom/branches/stax-stream/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/BuilderHandler.java (original)
+++ webservices/axiom/branches/stax-stream/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/BuilderHandler.java Sat Mar  5 15:31:56 2016
@@ -39,6 +39,7 @@ public final class BuilderHandler implem
     final Builder builder;
     final OMNamespaceCache nsCache = new OMNamespaceCache();
     public Context context;
+    private int activeContextCount;
     // returns the state of completion
     public boolean done;
     // keeps the state of the cache
@@ -61,6 +62,7 @@ public final class BuilderHandler implem
         this.root = root;
         this.builder = builder;
         context = new Context(this, null, 0);
+        activeContextCount = 1;
     }
 
     public void addListener(BuilderListener listener) {
@@ -93,6 +95,16 @@ public final class BuilderHandler implem
         }
     }
     
+    void incrementActiveContextCount() {
+        activeContextCount++;
+    }
+    
+    void decrementActiveContextCount() {
+        if (--activeContextCount == 0) {
+            builder.close();
+        }
+    }
+    
     public boolean isCompleted() {
         return done;
     }

Modified: webservices/axiom/branches/stax-stream/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/Context.java
URL: http://svn.apache.org/viewvc/webservices/axiom/branches/stax-stream/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/Context.java?rev=1733725&r1=1733724&r2=1733725&view=diff
==============================================================================
--- webservices/axiom/branches/stax-stream/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/Context.java (original)
+++ webservices/axiom/branches/stax-stream/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/Context.java Sat Mar  5 15:31:56 2016
@@ -80,12 +80,16 @@ public final class Context implements In
         }
         target.coreSetState(CoreParentNode.DISCARDED);
         this.passThroughHandler = passThroughHandler;
+        if (passThroughHandler == NullXmlHandler.INSTANCE) {
+            builderHandler.decrementActiveContextCount();
+        }
     }
     
     @Override
     public void discard() {
         target.coreSetState(CoreParentNode.DISCARDED);
         passThroughHandler = NullXmlHandler.INSTANCE;
+        builderHandler.decrementActiveContextCount();
     }
 
     private Context newContext(CoreParentNode target) {
@@ -94,6 +98,7 @@ public final class Context implements In
         }
         nestedContext.target = target;
         target.coreSetInputContext(nestedContext);
+        builderHandler.incrementActiveContextCount();
         return nestedContext;
     }
     
@@ -105,11 +110,15 @@ public final class Context implements In
             pendingCharacterData = null;
         }
         target = null;
+        builderHandler.decrementActiveContextCount();
         return parentContext;
     }
     
     private Context decrementPassThroughDepth() {
         if (passThroughDepth == 0) {
+            if (passThroughHandler != NullXmlHandler.INSTANCE) {
+                builderHandler.decrementActiveContextCount();
+            }
             target.coreSetInputContext(null);
             target.coreSetState(CoreParentNode.DISCARDED);
             passThroughHandler = null;

Modified: webservices/axiom/branches/stax-stream/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/StAXHelper.java
URL: http://svn.apache.org/viewvc/webservices/axiom/branches/stax-stream/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/StAXHelper.java?rev=1733725&r1=1733724&r2=1733725&view=diff
==============================================================================
--- webservices/axiom/branches/stax-stream/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/StAXHelper.java (original)
+++ webservices/axiom/branches/stax-stream/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/StAXHelper.java Sat Mar  5 15:31:56 2016
@@ -395,7 +395,6 @@ public class StAXHelper implements XmlRe
 
     @Override
     public void dispose() {
-        // TODO
-        throw new UnsupportedOperationException();
+        close();
     }
 }

Modified: webservices/axiom/branches/stax-stream/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/mixin/AxiomSourcedElementSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/branches/stax-stream/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/mixin/AxiomSourcedElementSupport.aj?rev=1733725&r1=1733724&r2=1733725&view=diff
==============================================================================
--- webservices/axiom/branches/stax-stream/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/mixin/AxiomSourcedElementSupport.aj (original)
+++ webservices/axiom/branches/stax-stream/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/mixin/AxiomSourcedElementSupport.aj Sat Mar  5 15:31:56 2016
@@ -407,9 +407,7 @@ public aspect AxiomSourcedElementSupport
         if (isExpanded() || (cache && OMDataSourceUtil.isDestructiveWrite(dataSource))) {
             return null;
         }
-        // Note: if we can't determine the type (push/pull) of the OMDataSource, we
-        // default to push
-        if (OMDataSourceUtil.isPullDataSource(dataSource)) {
+        if (OMDataSourceUtil.isPullDataSource(dataSource) || (incremental && !OMDataSourceUtil.isPushDataSource(dataSource))) {
             try {
                 return new StAXPullInput(dataSource.getReader());
             } catch (XMLStreamException ex) {