You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2013/02/12 22:15:47 UTC

svn commit: r1445373 - in /cxf/branches/2.7.x-fixes: ./ api/src/main/java/org/apache/cxf/phase/ rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/ rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/ rt/bindings/soap/src/tes...

Author: dkulp
Date: Tue Feb 12 21:15:47 2013
New Revision: 1445373

URL: http://svn.apache.org/r1445373
Log:
Merged revisions 1443973 via  git cherry-pick from
https://svn.apache.org/repos/asf/cxf/trunk

........
  r1443973 | bimargulies | 2013-02-08 07:10:36 -0500 (Fri, 08 Feb 2013) | 2 lines

  CXF-4805: insist on GET or POST in soap messages.

........

Modified:
    cxf/branches/2.7.x-fixes/.gitignore
    cxf/branches/2.7.x-fixes/api/src/main/java/org/apache/cxf/phase/AbstractPhaseInterceptor.java
    cxf/branches/2.7.x-fixes/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/ReadHeadersInterceptor.java
    cxf/branches/2.7.x-fixes/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/ReadHeaderInterceptorTest.java
    cxf/branches/2.7.x-fixes/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/TestUtil.java
    cxf/branches/2.7.x-fixes/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/interceptor/SoapFaultSerializerTest.java

Modified: cxf/branches/2.7.x-fixes/.gitignore
URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/.gitignore?rev=1445373&r1=1445372&r2=1445373&view=diff
==============================================================================
--- cxf/branches/2.7.x-fixes/.gitignore (original)
+++ cxf/branches/2.7.x-fixes/.gitignore Tue Feb 12 21:15:47 2013
@@ -1,3 +1,4 @@
+.idea/
 *.iml
 *.ipr
 *.iws

Modified: cxf/branches/2.7.x-fixes/api/src/main/java/org/apache/cxf/phase/AbstractPhaseInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/api/src/main/java/org/apache/cxf/phase/AbstractPhaseInterceptor.java?rev=1445373&r1=1445372&r2=1445373&view=diff
==============================================================================
--- cxf/branches/2.7.x-fixes/api/src/main/java/org/apache/cxf/phase/AbstractPhaseInterceptor.java (original)
+++ cxf/branches/2.7.x-fixes/api/src/main/java/org/apache/cxf/phase/AbstractPhaseInterceptor.java Tue Feb 12 21:15:47 2013
@@ -33,7 +33,7 @@ import org.apache.cxf.message.MessageUti
  * participate in phased message processing. Developers should extend from 
  * this class when implementing custom interceptors.
  * Developers need to provide an implementation for handleMessage() and 
- * can overide the handleFault() implementation. They should not overide 
+ * can override the handleFault() implementation. They should not override
  * the other methods.
  */
 public abstract class AbstractPhaseInterceptor<T extends Message> implements PhaseInterceptor<T> {

Modified: cxf/branches/2.7.x-fixes/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/ReadHeadersInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/ReadHeadersInterceptor.java?rev=1445373&r1=1445372&r2=1445373&view=diff
==============================================================================
--- cxf/branches/2.7.x-fixes/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/ReadHeadersInterceptor.java (original)
+++ cxf/branches/2.7.x-fixes/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/ReadHeadersInterceptor.java Tue Feb 12 21:15:47 2013
@@ -126,6 +126,16 @@ public class ReadHeadersInterceptor exte
             LOG.fine("ReadHeadersInterceptor skipped in HTTP GET method");
             return;
         }
+
+        /*
+         * Reject OPTIONS, and any other noise that is not allowed in SOAP.
+         */
+        if (!"POST".equals((String)message.get(org.apache.cxf.message.Message.HTTP_REQUEST_METHOD))) {
+            Fault formula405 = new Fault("HTTP verb was not GET or POST", LOG);
+            formula405.setStatusCode(405);
+            throw formula405;
+        }
+
         XMLStreamReader xmlReader = message.getContent(XMLStreamReader.class);
         boolean closeNeeded = false;
         if (xmlReader == null) {

Modified: cxf/branches/2.7.x-fixes/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/ReadHeaderInterceptorTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/ReadHeaderInterceptorTest.java?rev=1445373&r1=1445372&r2=1445373&view=diff
==============================================================================
--- cxf/branches/2.7.x-fixes/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/ReadHeaderInterceptorTest.java (original)
+++ cxf/branches/2.7.x-fixes/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/ReadHeaderInterceptorTest.java Tue Feb 12 21:15:47 2013
@@ -29,6 +29,7 @@ import javax.activation.DataHandler;
 import javax.mail.util.ByteArrayDataSource;
 import javax.xml.stream.XMLStreamReader;
 
+import org.apache.cxf.interceptor.Fault;
 import org.w3c.dom.Element;
 
 import org.apache.cxf.BusFactory;
@@ -66,6 +67,19 @@ public class ReadHeaderInterceptorTest e
     }
 
     @Test
+    public void testBadHttpVerb() throws Exception {
+        prepareSoapMessage("test-soap-header.xml");
+        soapMessage.put(Message.HTTP_REQUEST_METHOD, "OPTIONS");
+        ReadHeadersInterceptor r = new ReadHeadersInterceptor(BusFactory.getDefaultBus());
+        try {
+            r.handleMessage(soapMessage);
+            fail("Did not throw exception");
+        } catch (Fault f) {
+            assertEquals(405, f.getStatusCode());
+        }
+    }
+
+    @Test
     public void testBadSOAPEnvelopeNamespace() throws Exception {
         soapMessage = TestUtil.createEmptySoapMessage(Soap12.getInstance(), chain);
         InputStream in = getClass().getResourceAsStream("test-bad-env.xml");

Modified: cxf/branches/2.7.x-fixes/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/TestUtil.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/TestUtil.java?rev=1445373&r1=1445372&r2=1445373&view=diff
==============================================================================
--- cxf/branches/2.7.x-fixes/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/TestUtil.java (original)
+++ cxf/branches/2.7.x-fixes/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/TestUtil.java Tue Feb 12 21:15:47 2013
@@ -31,10 +31,7 @@ import javax.mail.util.ByteArrayDataSour
 import org.apache.cxf.attachment.AttachmentImpl;
 import org.apache.cxf.attachment.AttachmentUtil;
 import org.apache.cxf.interceptor.InterceptorChain;
-import org.apache.cxf.message.Attachment;
-import org.apache.cxf.message.Exchange;
-import org.apache.cxf.message.ExchangeImpl;
-import org.apache.cxf.message.MessageImpl;
+import org.apache.cxf.message.*;
 
 public final class TestUtil {
 
@@ -90,6 +87,7 @@ public final class TestUtil {
         messageImpl.setExchange(exchange);
         SoapMessage soapMessage = new SoapMessage(messageImpl);
         soapMessage.setVersion(soapVersion);
-        return soapMessage;        
+        soapMessage.put(Message.HTTP_REQUEST_METHOD, "POST");
+        return soapMessage;
     }
 }

Modified: cxf/branches/2.7.x-fixes/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/interceptor/SoapFaultSerializerTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/interceptor/SoapFaultSerializerTest.java?rev=1445373&r1=1445372&r2=1445373&view=diff
==============================================================================
--- cxf/branches/2.7.x-fixes/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/interceptor/SoapFaultSerializerTest.java (original)
+++ cxf/branches/2.7.x-fixes/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/interceptor/SoapFaultSerializerTest.java Tue Feb 12 21:15:47 2013
@@ -28,6 +28,7 @@ import javax.xml.soap.SOAPPart;
 import javax.xml.stream.XMLStreamReader;
 import javax.xml.stream.XMLStreamWriter;
 
+import org.apache.cxf.message.Message;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
@@ -193,6 +194,7 @@ public class SoapFaultSerializerTest ext
     public void testCXF4181() throws Exception {
         //Try WITH SAAJ
         SoapMessage m = new SoapMessage(new MessageImpl());
+        m.put(Message.HTTP_REQUEST_METHOD, "POST");
         m.setVersion(Soap12.getInstance());        
         XMLStreamReader reader = StaxUtils.createXMLStreamReader(this.getClass()
                                                                  .getResourceAsStream("cxf4181.xml"));
@@ -242,6 +244,7 @@ public class SoapFaultSerializerTest ext
                                                  .getResourceAsStream("cxf4181.xml"));
 
         m.setContent(XMLStreamReader.class, reader);
+        m.put(Message.HTTP_REQUEST_METHOD, "POST");
 
         new ReadHeadersInterceptor(null).handleMessage(m);
         new StartBodyInterceptor().handleMessage(m);