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 2013/01/15 20:06:14 UTC

svn commit: r1433583 - in /webservices/commons/trunk/modules/axiom/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common: OMStAXWrapper.java StreamSwitch.java SwitchingWrapper.java

Author: veithen
Date: Tue Jan 15 19:06:14 2013
New Revision: 1433583

URL: http://svn.apache.org/viewvc?rev=1433583&view=rev
Log:
Prepared StreamSwitch to support targets other than SwitchingWrapper.

Modified:
    webservices/commons/trunk/modules/axiom/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/OMStAXWrapper.java
    webservices/commons/trunk/modules/axiom/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/StreamSwitch.java
    webservices/commons/trunk/modules/axiom/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/SwitchingWrapper.java

Modified: webservices/commons/trunk/modules/axiom/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/OMStAXWrapper.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/OMStAXWrapper.java?rev=1433583&r1=1433582&r2=1433583&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/OMStAXWrapper.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/OMStAXWrapper.java Tue Jan 15 19:06:14 2013
@@ -57,7 +57,7 @@ class OMStAXWrapper extends StreamReader
      */
     public OMStAXWrapper(OMXMLParserWrapper builder, OMContainer startNode,
                          boolean cache, boolean preserveNamespaceContext) {
-        streamSwitch.setParent(new SwitchingWrapper(builder, startNode, cache, preserveNamespaceContext));
+        streamSwitch.setParent(new SwitchingWrapper(streamSwitch, builder, startNode, cache, preserveNamespaceContext));
         setParent(streamSwitch);
     }
 

Modified: webservices/commons/trunk/modules/axiom/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/StreamSwitch.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/StreamSwitch.java?rev=1433583&r1=1433582&r2=1433583&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/StreamSwitch.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/StreamSwitch.java Tue Jan 15 19:06:14 2013
@@ -18,16 +18,29 @@
  */
 package org.apache.axiom.om.impl.common;
 
+import javax.xml.stream.XMLStreamReader;
 import javax.xml.stream.util.StreamReaderDelegate;
 
 import org.apache.axiom.om.OMDataSource;
 
-public class StreamSwitch extends StreamReaderDelegate {
-    public OMDataSource getDataSource() {
-        return ((SwitchingWrapper)getParent()).getDataSource();
+final class StreamSwitch extends StreamReaderDelegate {
+    /**
+     * Indicates if an OMSourcedElement with an OMDataSource should
+     * be considered as an interior node or a leaf node.
+     */
+    private boolean isDataSourceALeaf;
+
+    OMDataSource getDataSource() {
+        XMLStreamReader parent = getParent();
+        // Only SwitchingWrapper can produce OMDataSource "events"
+        return parent instanceof SwitchingWrapper ? ((SwitchingWrapper)getParent()).getDataSource() : null;
     }
     
-    public void enableDataSourceEvents(boolean value) {
-        ((SwitchingWrapper)getParent()).enableDataSourceEvents(value);
+    void enableDataSourceEvents(boolean value) {
+        isDataSourceALeaf = true;
+    }
+
+    boolean isDataSourceALeaf() {
+        return isDataSourceALeaf;
     }
 }

Modified: webservices/commons/trunk/modules/axiom/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/SwitchingWrapper.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/SwitchingWrapper.java?rev=1433583&r1=1433582&r2=1433583&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/SwitchingWrapper.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/SwitchingWrapper.java Tue Jan 15 19:06:14 2013
@@ -69,6 +69,8 @@ class SwitchingWrapper extends AbstractX
     
     private static final Log log = LogFactory.getLog(SwitchingWrapper.class);
     
+    private final StreamSwitch streamSwitch;
+    
     /**
      * The current node, corresponding to the current event.
      */
@@ -84,12 +86,6 @@ class SwitchingWrapper extends AbstractX
      */
     private boolean visited;
 
-    /**
-     * Indicates if an OMSourcedElement with an OMDataSource should
-     * be considered as an interior node or a leaf node.
-     */
-    private boolean isDataSourceALeaf;
-
     /** Field builder */
     private OMXMLParserWrapper builder;
 
@@ -165,14 +161,15 @@ class SwitchingWrapper extends AbstractX
     /**
      * Constructor.
      *
+     * @param streamSwitch
      * @param builder
      * @param startNode
      * @param cache
      * @param preserveNamespaceContext
      */
-    public SwitchingWrapper(OMXMLParserWrapper builder, OMContainer startNode,
+    public SwitchingWrapper(StreamSwitch streamSwitch, OMXMLParserWrapper builder, OMContainer startNode,
                             boolean cache, boolean preserveNamespaceContext) {
-
+        this.streamSwitch = streamSwitch;
         this.builder = builder;
         this.rootNode = startNode;
         this.cache = cache;
@@ -907,7 +904,7 @@ class SwitchingWrapper extends AbstractX
      */
     private boolean isLeaf(OMSerializable n) {
         if (n instanceof OMContainer) {
-            return this.isDataSourceALeaf && isOMSourcedElement(n) && n != rootNode;
+            return streamSwitch.isDataSourceALeaf() && isOMSourcedElement(n) && n != rootNode;
         } else {
             return true;
         }
@@ -1404,14 +1401,4 @@ class SwitchingWrapper extends AbstractX
         }
         return ds;
     }
-    
-    /**
-     * Enable if an OMSourcedElement with an OMDataSource should be treated as a
-     * leaf node.  Disable (the default) if the OMDataSource should be parsed and
-     * converted into events.
-     * @param value boolean
-     */
-    public void enableDataSourceEvents(boolean value) {
-        isDataSourceALeaf = value;
-    }
 }