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/05/02 14:24:54 UTC

svn commit: r1741973 - in /webservices/axiom/trunk: aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/mixin/AxiomSourcedElementSupport.aj testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/sourcedelement/TestSetDataSource.java

Author: veithen
Date: Mon May  2 12:24:54 2016
New Revision: 1741973

URL: http://svn.apache.org/viewvc?rev=1741973&view=rev
Log:
Fix broken test case as well as the code being tested.

Modified:
    webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/mixin/AxiomSourcedElementSupport.aj
    webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/sourcedelement/TestSetDataSource.java

Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/mixin/AxiomSourcedElementSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/mixin/AxiomSourcedElementSupport.aj?rev=1741973&r1=1741972&r2=1741973&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/mixin/AxiomSourcedElementSupport.aj (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/mixin/AxiomSourcedElementSupport.aj Mon May  2 12:24:54 2016
@@ -21,6 +21,7 @@ package org.apache.axiom.om.impl.mixin;
 import org.apache.axiom.core.Builder;
 import org.apache.axiom.core.ClonePolicy;
 import org.apache.axiom.core.CoreElement;
+import org.apache.axiom.core.CoreModelException;
 import org.apache.axiom.core.CoreNode;
 import org.apache.axiom.core.DeferredParsingException;
 import org.apache.axiom.core.impl.builder.BuilderImpl;
@@ -34,10 +35,10 @@ import org.apache.axiom.om.OMDataSource;
 import org.apache.axiom.om.OMDataSourceExt;
 import org.apache.axiom.om.OMException;
 import org.apache.axiom.om.OMNamespace;
-import org.apache.axiom.om.OMNode;
 import org.apache.axiom.om.OMXMLStreamReaderConfiguration;
 import org.apache.axiom.om.QNameAwareOMDataSource;
 import org.apache.axiom.om.impl.common.AxiomExceptionTranslator;
+import org.apache.axiom.om.impl.common.AxiomSemantics;
 import org.apache.axiom.om.impl.common.DeferredNamespace;
 import org.apache.axiom.om.impl.common.OMNamespaceImpl;
 import org.apache.axiom.om.impl.common.util.OMDataSourceUtil;
@@ -51,8 +52,6 @@ import javax.xml.namespace.QName;
 import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamReader;
 
-import java.util.Iterator;
-
 /**
  * <p>Element backed by an arbitrary data source. When necessary, this element will be expanded by
  * creating a parser from the data source.</p>
@@ -429,24 +428,23 @@ public aspect AxiomSourcedElementSupport
      * setOMDataSource
      */
     public OMDataSource AxiomSourcedElement.setDataSource(OMDataSource dataSource) {
-        if (!isExpanded()) {
-            OMDataSource oldDS = this.dataSource;
-            this.dataSource = dataSource;
-            return oldDS;  // Caller is responsible for closing the data source
-        } else {
-            // TODO
-            // Remove the entire subtree and replace with 
-            // new datasource.  There maybe a more performant way to do this.
-            OMDataSource oldDS = this.dataSource;
-            for (Iterator<OMNode> it = getChildren(); it.hasNext(); ) {
-                it.next();
-                it.remove();
-            }
-            this.dataSource = dataSource;
-            coreSetState(INCOMPLETE);
-            isExpanded = false;
-            coreSetInputContext(null);
-            return oldDS;
+        // TODO: the semantics of this method are not clear; is the assumption that the name of the element remains unchanged?
+        try {
+            if (!isExpanded()) {
+                OMDataSource oldDS = this.dataSource;
+                this.dataSource = dataSource;
+                return oldDS;  // Caller is responsible for closing the data source
+            } else {
+                OMDataSource oldDS = this.dataSource;
+                coreSetInputContext(null);
+                // TODO: remove attributes?
+                coreRemoveChildren(AxiomSemantics.INSTANCE);
+                isExpanded = false;
+                this.dataSource = dataSource;
+                return oldDS;
+            }
+        } catch (CoreModelException ex) {
+            throw AxiomExceptionTranslator.translate(ex);
         }
     }
 

Modified: webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/sourcedelement/TestSetDataSource.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/sourcedelement/TestSetDataSource.java?rev=1741973&r1=1741972&r2=1741973&view=diff
==============================================================================
--- webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/sourcedelement/TestSetDataSource.java (original)
+++ webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/sourcedelement/TestSetDataSource.java Mon May  2 12:24:54 2016
@@ -39,11 +39,6 @@ public class TestSetDataSource extends A
     }
 
     protected void runTest() throws Throwable {
-        // TODO Auto-generated method stub
-        
-    }
-
-    public void testOMSEReplacement() throws Exception {
         String ENCODING = "utf-8";
         String payload1 = "<tns:myPayload xmlns:tns=\"urn://test\">Payload One</tns:myPayload>";
         String payload2 = "<tns:myPayload xmlns:tns=\"urn://test\">Payload Two</tns:myPayload>";