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/03/13 19:19:51 UTC
svn commit: r753335 - in /cxf/trunk:
rt/core/src/main/java/org/apache/cxf/wsdl11/
tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/internal/
tools/wsdlto/test/src/test/java/org/apache/cxf/tools/wsdlto/jaxws...
Author: dkulp
Date: Fri Mar 13 18:19:44 2009
New Revision: 753335
URL: http://svn.apache.org/viewvc?rev=753335&view=rev
Log:
[CXF-1950] If there is a binding, but no service, go ahead and try to use it to determine headers
Added:
cxf/trunk/tools/wsdlto/test/src/test/resources/wsdl2java_wsdl/helloworld-noservice-header.wsdl (with props)
Modified:
cxf/trunk/rt/core/src/main/java/org/apache/cxf/wsdl11/WSDLServiceBuilder.java
cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/internal/ServiceProcessor.java
cxf/trunk/tools/wsdlto/test/src/test/java/org/apache/cxf/tools/wsdlto/jaxws/CodeGenTest.java
Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/wsdl11/WSDLServiceBuilder.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/wsdl11/WSDLServiceBuilder.java?rev=753335&r1=753334&r2=753335&view=diff
==============================================================================
--- cxf/trunk/rt/core/src/main/java/org/apache/cxf/wsdl11/WSDLServiceBuilder.java (original)
+++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/wsdl11/WSDLServiceBuilder.java Fri Mar 13 18:19:44 2009
@@ -196,6 +196,14 @@
PortType portType = def.getPortType((QName)entry.getKey());
ServiceInfo serviceInfo = this.buildMockService(def, portType);
serviceList.add(serviceInfo);
+
+ for (Iterator it2 = d.getAllBindings().values().iterator(); it2.hasNext();) {
+ Binding b = (Binding)it2.next();
+ if (b.getPortType() == portType) {
+ this.buildBinding(serviceInfo, b);
+ break;
+ }
+ }
}
if (def.getPortTypes().size() == 0) {
Modified: cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/internal/ServiceProcessor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/internal/ServiceProcessor.java?rev=753335&r1=753334&r2=753335&view=diff
==============================================================================
--- cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/internal/ServiceProcessor.java (original)
+++ cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/internal/ServiceProcessor.java Fri Mar 13 18:19:44 2009
@@ -93,11 +93,12 @@
}
public void process(ServiceInfo si) throws ToolException {
+ this.service = si;
if (si.getName() == null) {
- return;
+ processBindings(context.get(JavaModel.class));
+ } else {
+ processService(context.get(JavaModel.class));
}
- this.service = si;
- processService(context.get(JavaModel.class));
}
@@ -281,6 +282,25 @@
}
return jport;
}
+ private void processBindings(JavaModel model) {
+ for (BindingInfo binding : service.getBindings()) {
+ bindingType = getBindingType(binding);
+
+ if (bindingType == null) {
+ org.apache.cxf.common.i18n.Message msg =
+ new org.apache.cxf.common.i18n.Message("BINDING_SPECIFY_ONE_PROTOCOL",
+ LOG,
+ binding.getName());
+ throw new ToolException(msg);
+ }
+
+ Collection<BindingOperationInfo> operations = binding.getOperations();
+ for (BindingOperationInfo bop : operations) {
+ processOperation(model, bop, binding);
+ }
+ }
+ }
+
private void processOperation(JavaModel model, BindingOperationInfo bop, BindingInfo binding)
throws ToolException {
Modified: cxf/trunk/tools/wsdlto/test/src/test/java/org/apache/cxf/tools/wsdlto/jaxws/CodeGenTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/tools/wsdlto/test/src/test/java/org/apache/cxf/tools/wsdlto/jaxws/CodeGenTest.java?rev=753335&r1=753334&r2=753335&view=diff
==============================================================================
--- cxf/trunk/tools/wsdlto/test/src/test/java/org/apache/cxf/tools/wsdlto/jaxws/CodeGenTest.java (original)
+++ cxf/trunk/tools/wsdlto/test/src/test/java/org/apache/cxf/tools/wsdlto/jaxws/CodeGenTest.java Fri Mar 13 18:19:44 2009
@@ -1309,5 +1309,21 @@
assertEquals(1, sei.getMethods().length);
assertFalse(Void.TYPE.equals(sei.getMethods()[0].getReturnType()));
}
+ @Test
+ public void testCXF1950() throws Exception {
+ env.put(ToolConstants.CFG_WSDLURL, getLocation("/wsdl2java_wsdl/helloworld-noservice-header.wsdl"));
+
+ processor.setContext(env);
+ processor.execute();
+
+ File seif = new File(output, "org/apache/cxf/helloworld/HelloWorldServiceImpl.java");
+ assertTrue(seif.exists());
+ Class sei = classLoader.loadClass("org.apache.cxf.helloworld.HelloWorldServiceImpl");
+ Method m[] = sei.getDeclaredMethods();
+ assertEquals(1, m.length);
+ assertTrue(m[0].getParameterAnnotations()[1][0] instanceof WebParam);
+ WebParam wp = (WebParam)m[0].getParameterAnnotations()[1][0];
+ assertTrue(wp.header());
+ }
}
Added: cxf/trunk/tools/wsdlto/test/src/test/resources/wsdl2java_wsdl/helloworld-noservice-header.wsdl
URL: http://svn.apache.org/viewvc/cxf/trunk/tools/wsdlto/test/src/test/resources/wsdl2java_wsdl/helloworld-noservice-header.wsdl?rev=753335&view=auto
==============================================================================
--- cxf/trunk/tools/wsdlto/test/src/test/resources/wsdl2java_wsdl/helloworld-noservice-header.wsdl (added)
+++ cxf/trunk/tools/wsdlto/test/src/test/resources/wsdl2java_wsdl/helloworld-noservice-header.wsdl Fri Mar 13 18:19:44 2009
@@ -0,0 +1,67 @@
+<?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 targetNamespace="http://helloworld.cxf.apache.org" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://helloworld.cxf.apache.org" xmlns:intf="http://helloworld.cxf.apache.org" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="helloworld">
+ <wsdl:types>
+ <schema elementFormDefault="qualified" targetNamespace="http://helloworld.cxf.apache.org" xmlns="http://www.w3.org/2001/XMLSchema">
+ <element name="getGreetings" type="xsd:string"/>
+ <element name="getGreetingsResponse" type="xsd:string"/>
+ <element name="header" type="xsd:string"/>
+ </schema>
+ </wsdl:types>
+
+ <wsdl:message name="getGreetingsRequest">
+ <wsdl:part element="impl:getGreetings" name="request"/>
+ <wsdl:part element="impl:header" name="header"/>
+ </wsdl:message>
+
+ <wsdl:message name="getGreetingsResponse">
+ <wsdl:part element="impl:getGreetingsResponse" name="response"/>
+ </wsdl:message>
+
+ <wsdl:portType name="HelloWorldServiceImpl">
+ <wsdl:operation name="getGreetings">
+ <wsdl:input message="impl:getGreetingsRequest" name="getGreetingsRequest"/>
+ <wsdl:output message="impl:getGreetingsResponse" name="getGreetingsResponse"/>
+ </wsdl:operation>
+ </wsdl:portType>
+
+
+ <wsdl:binding name="helloworldSoapBinding" type="impl:HelloWorldServiceImpl">
+ <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+ <wsdl:operation name="getGreetings">
+ <wsdlsoap:operation soapAction=""/>
+ <wsdl:input name="getGreetingsRequest">
+ <wsdlsoap:header part="header" use="literal" message="impl:getGreetingsRequest"/>
+ <wsdlsoap:body use="literal" parts="request"/>
+ </wsdl:input>
+ <wsdl:output name="getGreetingsResponse">
+ <wsdlsoap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+<!--
+
+ <wsdl:service name="HelloWorldServiceImplService">
+ <wsdl:port binding="impl:helloworldSoapBinding" name="helloworld">
+ <wsdlsoap:address location="http://localhost:8080/axis/services/helloworld"/>
+ </wsdl:port>
+ </wsdl:service>
+-->
+</wsdl:definitions>
Propchange: cxf/trunk/tools/wsdlto/test/src/test/resources/wsdl2java_wsdl/helloworld-noservice-header.wsdl
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cxf/trunk/tools/wsdlto/test/src/test/resources/wsdl2java_wsdl/helloworld-noservice-header.wsdl
------------------------------------------------------------------------------
svn:keywords = Rev Date
Propchange: cxf/trunk/tools/wsdlto/test/src/test/resources/wsdl2java_wsdl/helloworld-noservice-header.wsdl
------------------------------------------------------------------------------
svn:mime-type = text/xml