Author: dkulp
Date: Tue Feb 6 12:56:15 2007
New Revision: 504289
URL: http://svn.apache.org/viewvc?view=rev&rev=504289
Log:
Testcase for CXF-261
* CXF-261 is no longer applicable, but nothing tests it. Added a
rcp/literal soap header test * That said, the code generator was broken
for rpc/literal with headers (headers are always doc/literal). Fixed
that and added a test in testutils to check to makre sure the generated
code is correct.
Added:
incubator/cxf/trunk/testutils/src/main/java/org/apache/header_test/rpc/
incubator/cxf/trunk/testutils/src/main/java/org/apache/header_test/rpc/Te
stRPCHeaderImpl.java (with props)
incubator/cxf/trunk/testutils/src/main/resources/wsdl/soapheader_rpc.wsdl
(with props) Modified:
incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/
header/HeaderClientServerTest.java incubator/cxf/trunk/testutils/pom.xml
incubator/cxf/trunk/tools/wsdl2java/src/main/java/org/apache/cxf/tools/ws
dl2java/processor/internal/ParameterProcessor.java
incubator/cxf/trunk/tools/wsdl2java/src/main/java/org/apache/cxf/tools/ws
dl2java/processor/internal/ServiceProcessor.java
Modified:
incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/
header/HeaderClientServerTest.java URL:
http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/te
st/java/org/apache/cxf/jaxws/header/HeaderClientServerTest.java?view=diff&
rev=504289&r1=504288&r2=504289
=========================================================================
===== ---
incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/
header/HeaderClientServerTest.java (original) +++
incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/
header/HeaderClientServerTest.java Tue Feb 6 12:56:15 2007 @@ -36,6
+36,10 @@
import org.apache.header_test.SOAPHeaderService;
import org.apache.header_test.TestHeader;
import org.apache.header_test.TestHeaderImpl;
+import org.apache.header_test.rpc.SOAPRPCHeaderService;
+import org.apache.header_test.rpc.TestRPCHeader;
+import org.apache.header_test.rpc.TestRPCHeaderImpl;
+import org.apache.header_test.rpc.types.HeaderMessage;
import org.apache.header_test.types.TestHeader1;
import org.apache.header_test.types.TestHeader1Response;
import org.apache.header_test.types.TestHeader2;
@@ -54,27 +58,31 @@
private final QName portName = new
QName("http://apache.org/header_test", "SoapHeaderPort");
- private TestHeader proxy;
-
public void setUp() throws Exception {
super.setUp();
BusFactory.setDefaultBus(getBus());
Object implementor = new TestHeaderImpl();
String address =
"http://localhost:9104/SoapHeaderContext/SoapHeaderPort"; -
EndpointImpl e = (EndpointImpl) Endpoint.publish(address, implementor); +
EndpointImpl e = (EndpointImpl) Endpoint.publish(address,
implementor); +
e.getServer().getEndpoint().getInInterceptors().add(new
LoggingInInterceptor()); +
e.getServer().getEndpoint().getOutInterceptors().add(new
LoggingOutInterceptor());
+ implementor = new TestRPCHeaderImpl();
+ address =
"http://localhost:9104/SoapHeaderRPCContext/SoapHeaderRPCPort"; +
e = (EndpointImpl)Endpoint.publish(address, implementor);
e.getServer().getEndpoint().getInInterceptors().add(new
LoggingInInterceptor());
e.getServer().getEndpoint().getOutInterceptors().add(new
LoggingOutInterceptor()); +
}
-
+
public void testInHeader() throws Exception {
URL wsdl = getClass().getResource("/wsdl/soapheader.wsdl");
assertNotNull(wsdl);
SOAPHeaderService service = new SOAPHeaderService(wsdl,
serviceName); assertNotNull(service);
- proxy = service.getPort(portName, TestHeader.class);
+ TestHeader proxy = service.getPort(portName, TestHeader.class);
try {
TestHeader1 val = new TestHeader1();
for (int idx = 0; idx < 2; idx++) {
@@ -93,7 +101,7 @@
SOAPHeaderService service = new SOAPHeaderService(wsdl,
serviceName); assertNotNull(service);
- proxy = service.getPort(portName, TestHeader.class);
+ TestHeader proxy = service.getPort(portName, TestHeader.class);
try {
TestHeader2 in = new TestHeader2();
String val = new
String(TestHeader2Response.class.getSimpleName()); @@ -119,7 +127,7 @@
SOAPHeaderService service = new SOAPHeaderService(wsdl,
serviceName); assertNotNull(service);
- proxy = service.getPort(portName, TestHeader.class);
+ TestHeader proxy = service.getPort(portName, TestHeader.class);
try {
TestHeader3 in = new TestHeader3();
@@ -154,7 +162,7 @@
SOAPHeaderService service = new SOAPHeaderService(wsdl,
serviceName); assertNotNull(service);
- proxy = service.getPort(portName, TestHeader.class);
+ TestHeader proxy = service.getPort(portName, TestHeader.class);
try {
TestHeader5 in = new TestHeader5();
String val = new String(TestHeader5.class.getSimpleName());
@@ -178,7 +186,7 @@
SOAPHeaderService service = new SOAPHeaderService(wsdl,
serviceName); assertNotNull(service);
- proxy = service.getPort(portName, TestHeader.class);
+ TestHeader proxy = service.getPort(portName, TestHeader.class);
TestHeader6 in = new TestHeader6();
String val = new String(TestHeader6.class.getSimpleName());
@@ -209,7 +217,7 @@
SOAPHeaderService service = new SOAPHeaderService(wsdl,
serviceName); assertNotNull(service);
- proxy = service.getPort(portName, TestHeader.class);
+ TestHeader proxy = service.getPort(portName, TestHeader.class);
try {
proxy.testHeader4("cxf");
} catch (Exception e) {
@@ -218,6 +226,56 @@
}
}
+ public void testRPCInHeader() throws Exception {
+ URL wsdl = getClass().getResource("/wsdl/soapheader_rpc.wsdl");
+ assertNotNull(wsdl);
+
+ SOAPRPCHeaderService service
+ = new SOAPRPCHeaderService(wsdl,
+ new QName("http://apache.org/header_test/rpc",
"SOAPRPCHeaderService")); + assertNotNull(service);
+ TestRPCHeader proxy = service.getSoapRPCHeaderPort();
+ try {
+ HeaderMessage header = new HeaderMessage();
+ header.setHeaderVal("header");
+
+ for (int idx = 0; idx < 2; idx++) {
+ String returnVal = proxy.testHeader1("part", header);
+ assertNotNull(returnVal);
+ assertEquals("part/header", returnVal);
+ }
+ } catch (UndeclaredThrowableException ex) {
+ throw (Exception)ex.getCause();
+ }
+ }
+
+ public void testRPCInOutHeader() throws Exception {
+ URL wsdl = getClass().getResource("/wsdl/soapheader_rpc.wsdl");
+ assertNotNull(wsdl);
+
+ SOAPRPCHeaderService service
+ = new SOAPRPCHeaderService(wsdl,
+ new QName("http://apache.org/header_test/rpc",
"SOAPRPCHeaderService")); + assertNotNull(service);
+ TestRPCHeader proxy = service.getSoapRPCHeaderPort();
+ try {
+ HeaderMessage header = new HeaderMessage();
+ Holder<HeaderMessage> holder = new
Holder<HeaderMessage>(header); +
+ for (int idx = 0; idx < 2; idx++) {
+ holder.value.setHeaderVal("header" + idx);
+ String returnVal = proxy.testInOutHeader("part" + idx,
holder); +
+ assertNotNull(returnVal);
+ assertEquals("header" + idx, returnVal);
+ assertEquals("part" + idx, holder.value.getHeaderVal());
+ }
+ } catch (UndeclaredThrowableException ex) {
+ throw (Exception)ex.getCause();
+ }
+ }
+
+
public static void main(String[] args) {
junit.textui.TestRunner.run(HeaderClientServerTest.class);
}
Modified: incubator/cxf/trunk/testutils/pom.xml
URL:
http://svn.apache.org/viewvc/incubator/cxf/trunk/testutils/pom.xml?view=d
iff&rev=504289&r1=504288&r2=504289
=========================================================================
===== --- incubator/cxf/trunk/testutils/pom.xml (original)
+++ incubator/cxf/trunk/testutils/pom.xml Tue Feb 6 12:56:15 2007
@@ -244,6 +244,9 @@
<wsdl>${basedir}/src/main/resources/wsdl/soapheader2.wsdl</wsdl>
</wsdlOption>
<wsdlOption>
+
<wsdl>${basedir}/src/main/resources/wsdl/soapheader_rpc.wsdl</wsdl> +
</wsdlOption>
+ <wsdlOption>
<wsdl>${basedir}/src/main/resources/wsdl/locator.wsdl</wsdl> <extraargs>
<extraarg>-p</extraarg>
Added:
incubator/cxf/trunk/testutils/src/main/java/org/apache/header_test/rpc/Te
stRPCHeaderImpl.java URL:
http://svn.apache.org/viewvc/incubator/cxf/trunk/testutils/src/main/java/
org/apache/header_test/rpc/TestRPCHeaderImpl.java?view=auto&rev=504289
=========================================================================
===== ---
incubator/cxf/trunk/testutils/src/main/java/org/apache/header_test/rpc/Te
stRPCHeaderImpl.java (added) +++
incubator/cxf/trunk/testutils/src/main/java/org/apache/header_test/rpc/Te
stRPCHeaderImpl.java Tue Feb 6 12:56:15 2007 @@ -0,0 +1,48 @@
+/**
+ * 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.header_test.rpc;
+
+import javax.jws.WebService;
+import javax.xml.ws.Holder;
+
+import org.apache.header_test.rpc.types.HeaderMessage;
+
+
[EMAIL PROTECTED](serviceName = "SOAPRPCHeaderService",
+ portName = "SoapRPCHeaderPort",
+ endpointInterface =
"org.apache.header_test.rpc.TestRPCHeader", + targetNamespace
= "http://apache.org/header_test/rpc") +
+public class TestRPCHeaderImpl implements TestRPCHeader {
+
+ public String testHeader1(String in, HeaderMessage inHeader) {
+ if (in == null || inHeader == null) {
+ throw new IllegalArgumentException("TestHeader1 part not
found."); + }
+
+ return in + "/" + inHeader.getHeaderVal();
+ }
+
+ public String testInOutHeader(String in, Holder<HeaderMessage>
inOutHeader) { + String tmp = inOutHeader.value.getHeaderVal();
+ inOutHeader.value.setHeaderVal(in);
+ return tmp;
+ }
+
+}
Propchange:
incubator/cxf/trunk/testutils/src/main/java/org/apache/header_test/rpc/Te
stRPCHeaderImpl.java
-------------------------------------------------------------------------
----- svn:eol-style = native
Propchange:
incubator/cxf/trunk/testutils/src/main/java/org/apache/header_test/rpc/Te
stRPCHeaderImpl.java
-------------------------------------------------------------------------
----- svn:keywords = Rev Date
Added:
incubator/cxf/trunk/testutils/src/main/resources/wsdl/soapheader_rpc.wsdl
URL:
http://svn.apache.org/viewvc/incubator/cxf/trunk/testutils/src/main/resou
rces/wsdl/soapheader_rpc.wsdl?view=auto&rev=504289
=========================================================================
===== ---
incubator/cxf/trunk/testutils/src/main/resources/wsdl/soapheader_rpc.wsdl
(added) +++
incubator/cxf/trunk/testutils/src/main/resources/wsdl/soapheader_rpc.wsdl
Tue Feb 6 12:56:15 2007 @@ -0,0 +1,88 @@
+<?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.
+-->
+<wsdl:definitions xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://apache.org/header_test/rpc"
xmlns:x1="http://apache.org/header_test/rpc/types"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://apache.org/header_test/rpc"
name="TestHeaderWSDL"> + <wsdl:types>
+ <schema
targetNamespace="http://apache.org/header_test/rpc/types"
xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:x1="http://apache.org/header_test/rpc/types"
elementFormDefault="qualified"> + <element
name="headerMessage">
+ <complexType>
+ <sequence>
+ <element name="headerVal" type="string"/>
+ </sequence>
+ </complexType>
+ </element>
+ </schema>
+ </wsdl:types>
+ <wsdl:message name="testHeader1Request">
+ <wsdl:part name="in" type="xsd:string"/>
+ <wsdl:part name="inHeader" element="x1:headerMessage"/>
+ </wsdl:message>
+ <wsdl:message name="testHeader1Response">
+ <wsdl:part name="out" type="xsd:string"/>
+ </wsdl:message>
+
+ <wsdl:message name="testInOutHeaderRequest">
+ <wsdl:part name="in" type="xsd:string"/>
+ <wsdl:part name="inOutHeader" element="x1:headerMessage"/>
+ </wsdl:message>
+ <wsdl:message name="testInOutHeaderResponse">
+ <wsdl:part name="out" type="xsd:string"/>
+ <wsdl:part name="inOutHeader" element="x1:headerMessage"/>
+ </wsdl:message>
+
+ <wsdl:portType name="TestRPCHeader">
+ <wsdl:operation name="testHeader1">
+ <wsdl:input name="testHeader1Request"
message="tns:testHeader1Request"/> + <wsdl:output
name="testHeader1Response" message="tns:testHeader1Response"/> +
</wsdl:operation>
+ <wsdl:operation name="testInOutHeader">
+ <wsdl:input name="testInOutHeaderRequest"
message="tns:testInOutHeaderRequest"/> + <wsdl:output
name="testInOutHeaderResponse" message="tns:testInOutHeaderResponse"/> +
</wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="TestHeader_SOAPRPCBinding"
type="tns:TestRPCHeader"> + <soap:binding style="rpc"
transport="http://schemas.xmlsoap.org/soap/http"/> +
<wsdl:operation name="testHeader1">
+ <soap:operation/>
+ <wsdl:input name="testHeader1Request">
+ <soap:body message="tns:testHeader1Request" parts="in"
use="literal" namespace="http://apache.org/header_test"/> +
<soap:header message="tns:testHeader1Request" part="inHeader"
use="literal"/> + </wsdl:input>
+ <wsdl:output name="testHeader1Response">
+ <soap:body message="tns:testHeader1Response"
use="literal" namespace="http://apache.org/header_test"/> +
</wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="testInOutHeader">
+ <soap:operation/>
+ <wsdl:input>
+ <soap:body message="tns:testInOutHeaderRequest"
parts="in" use="literal" namespace="http://apache.org/header_test"/> +
<soap:header message="tns:testInOutHeaderRequest"
part="inOutHeader" use="literal"/> + </wsdl:input>
+ <wsdl:output>
+ <soap:body message="tns:testInOutHeaderResponse"
parts="out" use="literal" namespace="http://apache.org/header_test"/> +
<soap:header message="tns:testInOutHeaderRequest"
part="inOutHeader" use="literal"/> + </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="SOAPRPCHeaderService">
+ <wsdl:port name="SoapRPCHeaderPort"
binding="tns:TestHeader_SOAPRPCBinding"> + <soap:address
location="http://localhost:9104/SoapHeaderRPCContext/SoapHeaderRPCPort"/>
+ </wsdl:port>
+ </wsdl:service>
+</wsdl:definitions>
Propchange:
incubator/cxf/trunk/testutils/src/main/resources/wsdl/soapheader_rpc.wsdl
-------------------------------------------------------------------------
----- svn:eol-style = native
Propchange:
incubator/cxf/trunk/testutils/src/main/resources/wsdl/soapheader_rpc.wsdl
-------------------------------------------------------------------------
----- svn:keywords = Rev Date
Propchange:
incubator/cxf/trunk/testutils/src/main/resources/wsdl/soapheader_rpc.wsdl
-------------------------------------------------------------------------
----- svn:mime-type = text/xml
Modified:
incubator/cxf/trunk/tools/wsdl2java/src/main/java/org/apache/cxf/tools/ws
dl2java/processor/internal/ParameterProcessor.java URL:
http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/wsdl2java/src/main
/java/org/apache/cxf/tools/wsdl2java/processor/internal/ParameterProcessor
.java?view=diff&rev=504289&r1=504288&r2=504289
=========================================================================
===== ---
incubator/cxf/trunk/tools/wsdl2java/src/main/java/org/apache/cxf/tools/ws
dl2java/processor/internal/ParameterProcessor.java (original) +++
incubator/cxf/trunk/tools/wsdl2java/src/main/java/org/apache/cxf/tools/ws
dl2java/processor/internal/ParameterProcessor.java Tue Feb 6 12:56:15
2007 @@ -129,7 +129,9 @@
String targetNamespace = method.getInterface().getNamespace();
String partName = null;
- if (method.getSoapStyle() == SOAPBinding.Style.DOCUMENT) {
+ if (method.getSoapStyle() == SOAPBinding.Style.DOCUMENT
+ || parameter.isHeader()) {
+ //headers are always DOCUMENT style
targetNamespace = parameter.getTargetNamespace();
if (parameter.getQName() != null) {
name = parameter.getQName().getLocalPart();
@@ -151,7 +153,8 @@
webParamAnnotation.addArgument("mode", "Mode." +
parameter.getStyle().toString(), ""); }
webParamAnnotation.addArgument("name", name);
- if (method.getSoapStyle() == SOAPBinding.Style.DOCUMENT) {
+ if (method.getSoapStyle() == SOAPBinding.Style.DOCUMENT
+ || parameter.isHeader()) {
webParamAnnotation.addArgument("targetNamespace",
targetNamespace); }
Modified:
incubator/cxf/trunk/tools/wsdl2java/src/main/java/org/apache/cxf/tools/ws
dl2java/processor/internal/ServiceProcessor.java URL:
http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/wsdl2java/src/main
/java/org/apache/cxf/tools/wsdl2java/processor/internal/ServiceProcessor.j
ava?view=diff&rev=504289&r1=504288&r2=504289
=========================================================================
===== ---
incubator/cxf/trunk/tools/wsdl2java/src/main/java/org/apache/cxf/tools/ws
dl2java/processor/internal/ServiceProcessor.java (original) +++
incubator/cxf/trunk/tools/wsdl2java/src/main/java/org/apache/cxf/tools/ws
dl2java/processor/internal/ServiceProcessor.java Tue Feb 6 12:56:15 2007
@@ -300,6 +300,8 @@
private void setParameterAsHeader(JavaParameter parameter) {
parameter.setHeader(true);
parameter.getAnnotation().addArgument("header", "true", "");
+ parameter.getAnnotation().addArgument("name",
parameter.getQName().getLocalPart()); +
parameter.getAnnotation().addArgument("targetNamespace",
parameter.getTargetNamespace()); }
private void processParameter(JavaMethod jm, BindingOperation
operation) throws ToolException {