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 2009/05/09 03:01:44 UTC
svn commit: r773146 - in /cxf/trunk/rt/bindings/soap/src:
main/java/org/apache/cxf/binding/soap/
main/java/org/apache/cxf/binding/soap/interceptor/
test/java/org/apache/cxf/binding/soap/
test/resources/org/apache/cxf/binding/soap/
Author: dkulp
Date: Sat May 9 01:01:43 2009
New Revision: 773146
URL: http://svn.apache.org/viewvc?rev=773146&view=rev
Log:
[CXF-2213] Use 1/0 for mustUnderstand for soap11 and true/false for soap12
Patch from Marat Bedretdinov applied
Added:
cxf/trunk/rt/bindings/soap/src/test/resources/org/apache/cxf/binding/soap/test-soap-12-header.wsdl (with props)
cxf/trunk/rt/bindings/soap/src/test/resources/org/apache/cxf/binding/soap/test-soap-12-header.xml (with props)
Modified:
cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/Soap11.java
cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/Soap12.java
cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapVersion.java
cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/SoapOutInterceptor.java
cxf/trunk/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/MustUnderstandInterceptorTest.java
cxf/trunk/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/SoapOutInterceptorTest.java
cxf/trunk/rt/bindings/soap/src/test/resources/org/apache/cxf/binding/soap/test-soap-header.xml
Modified: cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/Soap11.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/Soap11.java?rev=773146&r1=773145&r2=773146&view=diff
==============================================================================
--- cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/Soap11.java (original)
+++ cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/Soap11.java Sat May 9 01:01:43 2009
@@ -134,6 +134,10 @@
return "mustUnderstand";
}
+ public String getAttrValueMustUnderstand(boolean value) {
+ return value ? "1" : "0";
+ }
+
public QName getReceiver() {
return new QName(SOAP_NAMESPACE, "Server");
}
Modified: cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/Soap12.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/Soap12.java?rev=773146&r1=773145&r2=773146&view=diff
==============================================================================
--- cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/Soap12.java (original)
+++ cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/Soap12.java Sat May 9 01:01:43 2009
@@ -117,6 +117,10 @@
return "mustUnderstand";
}
+ public String getAttrValueMustUnderstand(boolean value) {
+ return value ? "true" : "false";
+ }
+
public QName getReceiver() {
return new QName(SOAP_NAMESPACE, "Receiver");
}
Modified: cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapVersion.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapVersion.java?rev=773146&r1=773145&r2=773146&view=diff
==============================================================================
--- cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapVersion.java (original)
+++ cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapVersion.java Sat May 9 01:01:43 2009
@@ -52,6 +52,8 @@
String getAttrNameMustUnderstand();
+ String getAttrValueMustUnderstand(boolean value);
+
// Role related properties
//-------------------------------------------------------------------------
String getAttrNameRole();
Modified: cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/SoapOutInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/SoapOutInterceptor.java?rev=773146&r1=773145&r2=773146&view=diff
==============================================================================
--- cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/SoapOutInterceptor.java (original)
+++ cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/SoapOutInterceptor.java Sat May 9 01:01:43 2009
@@ -321,11 +321,13 @@
soapVersion.getAttrNameRole(),
soapHeader.getActor());
}
- if (soapHeader.isMustUnderstand()) {
+ boolean mu = soapHeader.isMustUnderstand();
+ if (mu) {
+ String mul = soapVersion.getAttrValueMustUnderstand(mu);
super.writeAttribute(soapPrefix,
soapVersion.getNamespace(),
soapVersion.getAttrNameMustUnderstand(),
- "true");
+ mul);
}
}
}
Modified: cxf/trunk/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/MustUnderstandInterceptorTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/MustUnderstandInterceptorTest.java?rev=773146&r1=773145&r2=773146&view=diff
==============================================================================
--- cxf/trunk/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/MustUnderstandInterceptorTest.java (original)
+++ cxf/trunk/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/MustUnderstandInterceptorTest.java Sat May 9 01:01:43 2009
@@ -72,7 +72,7 @@
@Test
public void testHandleMessageSucc() throws Exception {
- prepareSoapMessage();
+ prepareSoapMessage("test-soap-header.xml");
dsi.getUnderstoodHeaders().add(RESERVATION);
dsi.getUnderstoodHeaders().add(PASSENGER);
@@ -84,7 +84,7 @@
@Test
public void testHandleMessageFail() throws Exception {
- prepareSoapMessage();
+ prepareSoapMessage("test-soap-header.xml");
dsi.getUnderstoodHeaders().add(RESERVATION);
@@ -104,9 +104,10 @@
}
@Test
- public void testHandleMessageWithHeaderParam() throws Exception {
- prepareSoapMessage();
+ public void testHandleMessageWithSoapHeader11Param() throws Exception {
+ prepareSoapMessage("test-soap-header.xml");
dsi.getUnderstoodHeaders().add(RESERVATION);
+
ServiceInfo serviceInfo = getMockedServiceModel(getClass().getResource("test-soap-header.wsdl")
.toString());
@@ -122,11 +123,30 @@
.isCalledGetUnderstood());
}
- private void prepareSoapMessage() throws Exception {
+ @Test
+ public void testHandleMessageWithSoapHeader12Param() throws Exception {
+ prepareSoapMessage("test-soap-12-header.xml");
+ dsi.getUnderstoodHeaders().add(RESERVATION);
+ ServiceInfo serviceInfo = getMockedServiceModel(getClass().getResource("test-soap-12-header.wsdl")
+ .toString());
+
+ BindingInfo binding = serviceInfo.getBinding(new QName("http://org.apache.cxf/headers",
+ "headerTesterSOAPBinding"));
+ BindingOperationInfo bop = binding.getOperation(new QName("http://org.apache.cxf/headers",
+ "inHeader"));
+ soapMessage.getExchange().put(BindingOperationInfo.class, bop);
+
+ soapMessage.getInterceptorChain().doIntercept(soapMessage);
+ assertEquals("DummaySoapInterceptor getRoles has been called!", true, dsi.isCalledGetRoles());
+ assertEquals("DummaySoapInterceptor getUnderstood has been called!", true, dsi
+ .isCalledGetUnderstood());
+ }
+
+ private void prepareSoapMessage(String payloadFileName) throws Exception {
soapMessage = TestUtil.createEmptySoapMessage(Soap12.getInstance(), chain);
ByteArrayDataSource bads = new ByteArrayDataSource(this.getClass()
- .getResourceAsStream("test-soap-header.xml"), "Application/xop+xml");
+ .getResourceAsStream(payloadFileName), "Application/xop+xml");
String cid = AttachmentUtil.createContentID("http://cxf.apache.org");
soapMessage.setContent(Attachment.class, new AttachmentImpl(cid, new DataHandler(bads)));
soapMessage.setContent(XMLStreamReader.class, XMLInputFactory.newInstance()
Modified: cxf/trunk/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/SoapOutInterceptorTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/SoapOutInterceptorTest.java?rev=773146&r1=773145&r2=773146&view=diff
==============================================================================
--- cxf/trunk/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/SoapOutInterceptorTest.java (original)
+++ cxf/trunk/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/SoapOutInterceptorTest.java Sat May 9 01:01:43 2009
@@ -55,7 +55,7 @@
@Test
public void testHandleMessage() throws Exception {
- prepareSoapMessage();
+ prepareSoapMessage("test-soap-header.xml");
ByteArrayOutputStream out = new ByteArrayOutputStream();
soapMessage.setContent(OutputStream.class, out);
@@ -72,18 +72,43 @@
InputStream bis = new ByteArrayInputStream(out.toByteArray());
XMLStreamReader xmlReader = StaxUtils.createXMLStreamReader(bis);
- assertInputStream(xmlReader);
+ assertInputStream(xmlReader, Soap11.getInstance());
}
- private void assertInputStream(XMLStreamReader xmlReader) throws Exception {
+ @Test
+ public void testHandleMessage12() throws Exception {
+ prepareSoapMessage("test-soap-12-header.xml");
+
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ soapMessage.setContent(OutputStream.class, out);
+ soapMessage.setContent(XMLStreamWriter.class, StaxUtils.createXMLStreamWriter(out));
+
+ soapMessage.getInterceptorChain().doIntercept(soapMessage);
+
+ assertNotNull(soapMessage.getHeaders());
+
+ Exception oe = (Exception)soapMessage.getContent(Exception.class);
+ if (oe != null) {
+ throw oe;
+ }
+
+ InputStream bis = new ByteArrayInputStream(out.toByteArray());
+ XMLStreamReader xmlReader = StaxUtils.createXMLStreamReader(bis);
+ assertInputStream(xmlReader, Soap12.getInstance());
+ }
+
+ private void assertInputStream(XMLStreamReader xmlReader, SoapVersion version) throws Exception {
assertEquals(XMLStreamReader.START_ELEMENT, xmlReader.nextTag());
- assertEquals(Soap12.getInstance().getEnvelope(), xmlReader.getName());
+ assertEquals(version.getEnvelope(), xmlReader.getName());
assertEquals(XMLStreamReader.START_ELEMENT, xmlReader.nextTag());
- assertEquals(Soap12.getInstance().getHeader(), xmlReader.getName());
+ assertEquals(version.getHeader(), xmlReader.getName());
assertEquals(XMLStreamReader.START_ELEMENT, xmlReader.nextTag());
assertEquals("reservation", xmlReader.getLocalName());
+ assertEquals(version.getAttrValueMustUnderstand(true),
+ xmlReader.getAttributeValue(version.getNamespace(),
+ version.getAttrNameMustUnderstand()));
assertEquals(XMLStreamReader.START_ELEMENT, xmlReader.nextTag());
assertEquals("reference", xmlReader.getLocalName());
@@ -93,10 +118,11 @@
// assertEquals(Soap12.getInstance().getBody(), xmlReader.getName());
}
- private void prepareSoapMessage() throws IOException {
+
+ private void prepareSoapMessage(String payloadFileName) throws IOException {
soapMessage = TestUtil.createEmptySoapMessage(Soap12.getInstance(), chain);
- soapMessage.setContent(InputStream.class, getClass().getResourceAsStream("test-soap-header.xml"));
+ soapMessage.setContent(InputStream.class, getClass().getResourceAsStream(payloadFileName));
}
}
Added: cxf/trunk/rt/bindings/soap/src/test/resources/org/apache/cxf/binding/soap/test-soap-12-header.wsdl
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/bindings/soap/src/test/resources/org/apache/cxf/binding/soap/test-soap-12-header.wsdl?rev=773146&view=auto
==============================================================================
--- cxf/trunk/rt/bindings/soap/src/test/resources/org/apache/cxf/binding/soap/test-soap-12-header.wsdl (added)
+++ cxf/trunk/rt/bindings/soap/src/test/resources/org/apache/cxf/binding/soap/test-soap-12-header.wsdl Sat May 9 01:01:43 2009
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<definitions name="soap_header" targetNamespace="http://org.apache.cxf/headers"
+ xmlns:m="http://travelcompany.example.org/reservation"
+ xmlns:n="http://mycompany.example.com/employees"
+ xmlns="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
+ xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
+ xmlns:tns="http://org.apache.cxf/headers"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <types>
+ <schema targetNamespace="http://org.apache.cxf/headers"
+ xmlns="http://www.w3.org/2001/XMLSchema"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+ <element name="inHeader">
+ <complexType>
+ <sequence>
+ <element name="" type="xsd:string"/>
+ </sequence>
+ </complexType>
+ </element>
+ <element name="inHeaderResponse">
+ <complexType/>
+ </element>
+ </schema>
+
+ <schema targetNamespace="http://mycompany.example.com/employees"
+ xmlns="http://www.w3.org/2001/XMLSchema"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+ <element name="passenger">
+ <complexType>
+ <sequence>
+ <element name="name" type="xsd:string"/>
+ </sequence>
+ </complexType>
+ </element>
+ </schema>
+
+ </types>
+
+ <message name="inHeaderRequest">
+ <part element="tns:inHeader" name="me"/>
+ <part element="n:passenger" name="passenger"/>
+ </message>
+ <message name="inHeaderResponse">
+ <part element="tns:inHeaderResponse" name="the_response"/>
+ </message>
+
+ <portType name="headerTester">
+ <operation name="inHeader">
+ <input message="tns:inHeaderRequest" name="inHeaderRequest"/>
+ <output message="tns:inHeaderResponse" name="inHeaderResponse"/>
+ </operation>
+ </portType>
+
+ <binding name="headerTesterSOAPBinding" type="tns:headerTester">
+ <soap12:binding style="document" transport="http://www.w3.org/2003/05/soap/bindings/HTTP/"/>
+ <operation name="inHeader">
+ <soap12:operation soapAction="" style="document"/>
+ <input name="inHeaderRequest">
+ <soap12:body parts="me" use="literal"/>
+ <soap12:header message="tns:inHeaderRequest" part="passenger"
+ use="literal"/>
+ </input>
+ <output name="inHeaderResponse">
+ <soap12:body use="literal"/>
+ </output>
+ </operation>
+ </binding>
+
+ <service name="HeaderService">
+ <port binding="tns:headerTesterSOAPBinding" name="SoapPort">
+ <soap12:address location="http://org.apache.cxf/headers/"/>
+ </port>
+ </service>
+</definitions>
Propchange: cxf/trunk/rt/bindings/soap/src/test/resources/org/apache/cxf/binding/soap/test-soap-12-header.wsdl
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cxf/trunk/rt/bindings/soap/src/test/resources/org/apache/cxf/binding/soap/test-soap-12-header.wsdl
------------------------------------------------------------------------------
svn:keywords = Rev Date
Propchange: cxf/trunk/rt/bindings/soap/src/test/resources/org/apache/cxf/binding/soap/test-soap-12-header.wsdl
------------------------------------------------------------------------------
svn:mime-type = text/xml
Added: cxf/trunk/rt/bindings/soap/src/test/resources/org/apache/cxf/binding/soap/test-soap-12-header.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/bindings/soap/src/test/resources/org/apache/cxf/binding/soap/test-soap-12-header.xml?rev=773146&view=auto
==============================================================================
--- cxf/trunk/rt/bindings/soap/src/test/resources/org/apache/cxf/binding/soap/test-soap-12-header.xml (added)
+++ cxf/trunk/rt/bindings/soap/src/test/resources/org/apache/cxf/binding/soap/test-soap-12-header.xml Sat May 9 01:01:43 2009
@@ -0,0 +1,56 @@
+<!--
+ 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.
+-->
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+ <!-- before header test for processing comment here -->
+ <env:Header>
+ <!-- header test for processing comment here -->
+ <m:reservation xmlns:m="http://travelcompany.example.org/reservation"
+ env:role="http://www.w3.org/2003/05/soap-envelope/role/next" env:mustUnderstand="true">
+ <m:reference>uuid:093a2da1-q345-739r-ba5d-pqff98fe8j7d</m:reference>
+ <m:dateAndTime>2001-11-29T13:20:00.000-05:00</m:dateAndTime>
+ </m:reservation>
+ <n:passenger xmlns:n="http://mycompany.example.com/employees"
+ env:role="http://www.w3.org/2003/05/soap-envelope/role/next" env:mustUnderstand="true">
+ <n:name>Bob</n:name>
+ </n:passenger>
+ </env:Header>
+ <!-- before body test for processing comment here -->
+ <env:Body>
+ <!-- boyd test for processing comment here -->
+ <p:itinerary xmlns:p="http://travelcompany.example.org/reservation/travel">
+ <p:departure>
+ <p:departing>New York</p:departing>
+ <p:arriving>Los Angeles</p:arriving>
+ <p:departureDate>2001-12-14</p:departureDate>
+ <p:departureTime>late afternoon</p:departureTime>
+ <p:seatPreference>aisle</p:seatPreference>
+ </p:departure>
+ <p:return>
+ <p:departing>Los Angeles</p:departing>
+ <p:arriving>New York</p:arriving>
+ <p:departureDate>2001-12-20</p:departureDate>
+ <p:departureTime>mid-morning</p:departureTime>
+ <p:seatPreference />
+ </p:return>
+ </p:itinerary>
+ <q:lodging xmlns:q="http://travelcompany.example.org/reservation/hotels">
+ <q:preference>none</q:preference>
+ </q:lodging>
+ </env:Body>
+</env:Envelope>
\ No newline at end of file
Propchange: cxf/trunk/rt/bindings/soap/src/test/resources/org/apache/cxf/binding/soap/test-soap-12-header.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cxf/trunk/rt/bindings/soap/src/test/resources/org/apache/cxf/binding/soap/test-soap-12-header.xml
------------------------------------------------------------------------------
svn:keywords = Rev Date
Propchange: cxf/trunk/rt/bindings/soap/src/test/resources/org/apache/cxf/binding/soap/test-soap-12-header.xml
------------------------------------------------------------------------------
svn:mime-type = text/xml
Modified: cxf/trunk/rt/bindings/soap/src/test/resources/org/apache/cxf/binding/soap/test-soap-header.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/bindings/soap/src/test/resources/org/apache/cxf/binding/soap/test-soap-header.xml?rev=773146&r1=773145&r2=773146&view=diff
==============================================================================
--- cxf/trunk/rt/bindings/soap/src/test/resources/org/apache/cxf/binding/soap/test-soap-header.xml (original)
+++ cxf/trunk/rt/bindings/soap/src/test/resources/org/apache/cxf/binding/soap/test-soap-header.xml Sat May 9 01:01:43 2009
@@ -16,17 +16,17 @@
specific language governing permissions and limitations
under the License.
-->
-<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
<!-- before header test for processing comment here -->
<env:Header>
<!-- header test for processing comment here -->
<m:reservation xmlns:m="http://travelcompany.example.org/reservation"
- env:role="http://www.w3.org/2003/05/soap-envelope/role/next" env:mustUnderstand="true">
+ env:actor="http://schemas.xmlsoap.org/soap/actor/next" env:mustUnderstand="1">
<m:reference>uuid:093a2da1-q345-739r-ba5d-pqff98fe8j7d</m:reference>
<m:dateAndTime>2001-11-29T13:20:00.000-05:00</m:dateAndTime>
</m:reservation>
<n:passenger xmlns:n="http://mycompany.example.com/employees"
- env:role="http://www.w3.org/2003/05/soap-envelope/role/next" env:mustUnderstand="true">
+ env:actor="http://schemas.xmlsoap.org/soap/actor/next" env:mustUnderstand="1">
<n:name>Bob</n:name>
</n:passenger>
</env:Header>