ws-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From veit...@apache.org
Subject svn commit: r1334113 - in /webservices/commons/trunk/modules/axiom/modules: axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/ axiom-testsuite/src/main/java/org/apache/axiom/ts/soap/ axiom-testsuite/src/main/java/org/apache/axiom/ts/soap/body/
Date Fri, 04 May 2012 18:38:10 GMT
Author: veithen
Date: Fri May  4 18:38:09 2012
New Revision: 1334113

URL: http://svn.apache.org/viewvc?rev=1334113&view=rev
Log:
Slightly changed the code for the optimization introduced by AXIOM-282 so that it interacts
in a better way with the feature introduced by AXIOM-399. More precisely, a call to SOAPBody#hasFault()
will now no longer expand an OMSourcedElement with unknown name present in the body.

Added:
    webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap/body/TestHasFaultWithOMSEUnknownName.java
  (with props)
Modified:
    webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPBodyImpl.java
    webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap/SOAPTestSuiteBuilder.java

Modified: webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPBodyImpl.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPBodyImpl.java?rev=1334113&r1=1334112&r2=1334113&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPBodyImpl.java
(original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPBodyImpl.java
Fri May  4 18:38:09 2012
@@ -96,15 +96,19 @@ public abstract class SOAPBodyImpl exten
             return true;
         } else {
             // Set hasSOAPFault if it matches the name matches a SOAP Fault
-            String name = this.getFirstElementLocalName();
-            if (SOAPConstants.SOAPFAULT_LOCAL_NAME.equals(name)) {
-                OMNamespace ns = this.getFirstElementNS();
-                if (ns != null &&
-                    (SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(ns.getNamespaceURI())
||
-                     SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(ns.getNamespaceURI())))
{
+            if (hasLookahead()) {
+                if (SOAPConstants.SOAPFAULT_LOCAL_NAME.equals(lookAheadLocalName)) {
+                    if (lookAheadNS != null &&
+                        (SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(lookAheadNS.getNamespaceURI())
||
+                         SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(lookAheadNS.getNamespaceURI())))
{
+                        hasSOAPFault = true;
+                    }                                                             
+                }
+            } else {
+                if (getFirstElement() instanceof SOAPFault) {
                     hasSOAPFault = true;
-                }                                                             
-            } 
+                }
+            }
             return hasSOAPFault;
         }
     }

Modified: webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap/SOAPTestSuiteBuilder.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap/SOAPTestSuiteBuilder.java?rev=1334113&r1=1334112&r2=1334113&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap/SOAPTestSuiteBuilder.java
(original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap/SOAPTestSuiteBuilder.java
Fri May  4 18:38:09 2012
@@ -73,6 +73,9 @@ public class SOAPTestSuiteBuilder extend
                     qname, supportsBodyElementNameOptimization));
         }
         addTest(new org.apache.axiom.ts.soap.body.TestHasFault(metaFactory, spec));
+        if (supportsOMSourcedElement) {
+            addTest(new org.apache.axiom.ts.soap.body.TestHasFaultWithOMSEUnknownName(metaFactory,
spec));
+        }
         addTest(new org.apache.axiom.ts.soap.body.TestHasFaultWithParser(metaFactory, spec));
         if (supportsBodyElementNameOptimization) {
             addTest(new org.apache.axiom.ts.soap.builder.TestRegisterCustomBuilderForPayloadAfterSOAPFaultCheck(metaFactory,
spec));

Added: webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap/body/TestHasFaultWithOMSEUnknownName.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap/body/TestHasFaultWithOMSEUnknownName.java?rev=1334113&view=auto
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap/body/TestHasFaultWithOMSEUnknownName.java
(added)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap/body/TestHasFaultWithOMSEUnknownName.java
Fri May  4 18:38:09 2012
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.axiom.ts.soap.body;
+
+import org.apache.axiom.om.OMMetaFactory;
+import org.apache.axiom.om.OMSourcedElement;
+import org.apache.axiom.om.ds.ByteArrayDataSource;
+import org.apache.axiom.soap.SOAPBody;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.ts.soap.SOAPSpec;
+import org.apache.axiom.ts.soap.SOAPTestCase;
+
+/**
+ * Tests that a call to {@link SOAPBody#hasFault()} doesn't cause expansion of an
+ * {@link OMSourcedElement} with an unknown name that is the first child of the SOAP body.
+ */
+public class TestHasFaultWithOMSEUnknownName extends SOAPTestCase {
+    public TestHasFaultWithOMSEUnknownName(OMMetaFactory metaFactory, SOAPSpec spec) {
+        super(metaFactory, spec);
+    }
+
+    protected void runTest() throws Throwable {
+        SOAPEnvelope envelope = soapFactory.getDefaultEnvelope();
+        SOAPBody body = envelope.getBody();
+        OMSourcedElement element = soapFactory.createOMElement(new ByteArrayDataSource(
+                "<ns:root xmlns:ns='urn:ns'/>".getBytes("utf-8"), "utf-8"));
+        body.addChild(element);
+        assertFalse(body.hasFault());
+        assertFalse(element.isExpanded());
+    }
+}

Propchange: webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap/body/TestHasFaultWithOMSEUnknownName.java
------------------------------------------------------------------------------
    svn:eol-style = native



Mime
View raw message