[ https://issues.apache.org/jira/browse/CXF-1793?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Willem Jiang closed CXF-1793. ----------------------------- > WSDL2Java reports Non unique body parts if first part in message are soap > headers. > ---------------------------------------------------------------------------------- > > Key: CXF-1793 > URL: https://issues.apache.org/jira/browse/CXF-1793 > Project: CXF > Issue Type: Bug > Components: Tooling > Affects Versions: 2.1.2 > Environment: Windows XP, Java 1.5 > Reporter: Dag Framstad > Assignee: Daniel Kulp > Fix For: 2.1.3 > > Attachments: cxf-1793.zip, cxf1793_works.wsdl > > > In my WSDL I have 2 services that have similar names. > If the first 14 characters in the message part name are identical WSDL2Java > reports (from ant): > generate: > [java] Loading FrontEnd jaxws ... > [java] Loading DataBinding jaxb ... > [java] wsdl2java -b > c:\ADN\adnfond/src/main/resources/com/edb/adnfond/transport/ws/calendar.xjb.w2j > -impl -verbose -validate -c > atalog c:\ADN\adnfond/src/main/resources/com/edb/adnfond/transport/ws/misc -d > c:\ADN\adnfond/src/main/generated c:\ADN\adnfond/src/m > ain/resources/com/edb/adnfond/transport/ws/misc/Misc_v10.wsdl > [java] wsdl2java - Apache CXF 2.1.2 > [java] > [java] > [java] WSDLToJava Error: Non unique body parts, operation [ > getSalesOfficeId ] and operation [ getSalesPersonId ] have the sam > e body block {http://edb.com/ws/WSCommon_v21}AutHeader > [java] > [java] > [java] > [java] org.apache.cxf.tools.common.ToolException: Non unique body parts, > operation [ getSalesOfficeId ] and operation [ getSal > esPersonId ] have the same body block > {http://edb.com/ws/WSCommon_v21}AutHeader > [java] > [java] > [java] at > org.apache.cxf.tools.validator.internal.WSDL11Validator.isValid(WSDL11Validator.java:128) > [java] at > org.apache.cxf.tools.wsdlto.frontend.jaxws.wsdl11.JAXWSDefinitionBuilder.validate(JAXWSDefinitionBuilder.java:200 > ) > [java] at > org.apache.cxf.tools.wsdlto.frontend.jaxws.wsdl11.JAXWSDefinitionBuilder.validate(JAXWSDefinitionBuilder.java:62) > [java] at > org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.execute(WSDLToJavaContainer.java:132) > [java] at > org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.execute(WSDLToJavaContainer.java:232) > [java] at > org.apache.cxf.tools.common.toolspec.ToolRunner.runTool(ToolRunner.java:83) > [java] at > org.apache.cxf.tools.wsdlto.WSDLToJava.run(WSDLToJava.java:103) > [java] at > org.apache.cxf.tools.wsdlto.WSDLToJava.main(WSDLToJava.java:173) > Example WSDL: > <?xml version="1.0" encoding="utf-8"?> > <wsdl:definitions > targetNamespace="http://www.edb.com/adnfond/transport/ws/misc/" > xmlns:misc="http://www.edb.com/adnfond/transport/ws/misc/misc_v10" > xmlns:m="http://www.edb.com/adnfond/transport/ws/misc/" > xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" > xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" > xmlns:xsd="http://www.w3.org/2001/XMLSchema" > xmlns:edb="http://edb.com/ws/WSCommon_v21"> > <wsdl:documentation/> > <wsdl:types> > <schema xmlns="http://www.w3.org/2001/XMLSchema"> > <xsd:import namespace="http://edb.com/ws/WSCommon_v21" > schemaLocation="../WSCommon_v21.xsd"/> > <xsd:import > namespace="http://www.edb.com/adnfond/transport/ws/misc/misc_v10" > schemaLocation="Misc_v10.xsd"/> > </schema> > </wsdl:types> > > <wsdl:message name="getSalesOfficeIdReq"> > <wsdl:part name="salesOfficeIdHeader" element="edb:AutHeader"/> > <wsdl:part name="xsalesOfficeIdBodyReq" > element="misc:getSalesOfficeIdRequest"/> > </wsdl:message> > > <wsdl:message name="getSalesOfficeIdResp"> > <wsdl:part name="salesOfficeIdBodyResp" > element="misc:getSalesOfficeIdResponse" /> > </wsdl:message> > <wsdl:message name="getSalesOfficeId2Req"> > <wsdl:part name="salesOfficeId2Header" element="edb:AutHeader"/> > <wsdl:part name="xsalesOfficeId2BodyReq" > element="misc:getSalesOfficeId2Request"/> > </wsdl:message> > > <wsdl:message name="getSalesOfficeId2Resp"> > <wsdl:part name="salesOfficeId2BodyResp" > element="misc:getSalesOfficeId2Response"/> > </wsdl:message> > <!-- > wsdl2java fails when part names are xsalesOfficeIdBodyReq and > xsalesOfficeId2BodyReq > but works fine when part names are salesOfficeIdBodyReq and > salesOfficeId2BodyReq > --> > <wsdl:portType name="MiscPort"> > <wsdl:operation name="getSalesOfficeId"> > <wsdl:input message="m:getSalesOfficeIdReq"/> > <wsdl:output message="m:getSalesOfficeIdResp"/> > </wsdl:operation> > <wsdl:operation name="getSalesOfficeId2"> > <wsdl:input message="m:getSalesOfficeId2Req"/> > <wsdl:output message="m:getSalesOfficeId2Resp"/> > </wsdl:operation> > </wsdl:portType> > > > > <wsdl:binding name="MiscSoapBinding" type="m:MiscPort"> > <soap:binding style="document" > transport="http://schemas.xmlsoap.org/soap/http"/> > <wsdl:operation name="getSalesOfficeId"> > <soap:operation soapAction="getSalesOfficeId" > style="document"/> > <wsdl:input> > <soap:header message="m:getSalesOfficeIdReq" > part="salesOfficeIdHeader" use="literal"/> > <soap:body parts="xsalesOfficeIdBodyReq" > use="literal"/> > </wsdl:input> > <wsdl:output> > <soap:body use="literal"/> > </wsdl:output> > </wsdl:operation> > <wsdl:operation name="getSalesOfficeId2"> > <soap:operation soapAction="getSalesOfficeId2" > style="document"/> > <wsdl:input> > <soap:header message="m:getSalesOfficeId2Req" > part="salesOfficeId2Header" use="literal"/> > <soap:body parts="xsalesOfficeId2BodyReq" > use="literal"/> > </wsdl:input> > <wsdl:output> > <soap:body use="literal"/> > </wsdl:output> > </wsdl:operation> > </wsdl:binding> > > > <wsdl:service name="MiscService"> > <wsdl:port name="MiscSoapPort" binding="m:MiscSoapBinding"> > <soap:address > location="http://localhost:8080/adnfond/services/MiscService"/> > </wsdl:port> > </wsdl:service> > </wsdl:definitions> > This is how I use wsdl2java: > <target name="generate" depends="prepare" description="generate Java > source files from schema and wsdl (only run this if you changed shcema or > wsdl)"> > <wsdl2java dir="${wsdl.dir}/misc" file="Misc_v10.wsdl" > srcdestdir="${generated.dir}" bindingfile="${wsdl.dir}/calendar.xjb.w2j" /> > <replaceregexp match="wsdlLocation = .* ," replace="" > byline="true"> > <fileset dir="${generated.dir}" includes="**/*.java" > /> > </replaceregexp> > <replaceregexp match=", wsdlLocation = .*\)" replace=")" > byline="true"> > <fileset dir="${generated.dir}" includes="**/*.java" > /> > </replaceregexp> > </target> > <macrodef name="wsdl2java"> > <attribute name="srcdestdir" default="" /> > <attribute name="destdir" default="" /> > <attribute name="file" /> > <attribute name="servicename.arg" default="" /> > <attribute name="bindingfile" default="" /> > <attribute name="dir" default="" /> > <attribute name="wsdlLocation" default="" /> > <attribute name="package" default="NOT_SPECIFIED" /> > <sequential> > <condition property="[EMAIL PROTECTED]" value="-p > @{package}"> > <not> > <equals arg1="@{package}" > arg2="NOT_SPECIFIED" /> > </not> > </condition> > <property name="[EMAIL PROTECTED]" value="" /> > <condition property="binding.arg" value='-b > "@{bindingfile}"'> > <not> > <equals arg1="@{bindingfile}" arg2="" > /> > </not> > </condition> > <property name="binding.arg" value="" /> > <condition property="wsdlLocation.arg" > value='-wsdlLocation "@{wsdlLocation}"'> > <not> > <equals arg1="@{wsdlLocation}" > arg2="" /> > </not> > </condition> > <property name="wsdlLocation.arg" value="" /> > <java failonerror="true" > classname="org.apache.cxf.tools.wsdlto.WSDLToJava" fork="yes"> > <classpath> > <path refid="test.classpath" /> > </classpath> > <sysproperty key="exitOnFinish" value="true" > /> > <arg line="@{servicename.arg}" /> > <arg line="[EMAIL PROTECTED]" /> > <arg line="${binding.arg}" /> > <arg line="${wsdlLocation.arg}" /> > <arg value="-impl" /> > <arg value="-verbose" /> > <arg value="-validate" /> > <arg value="-catalog" /> > <arg value="@{dir}" /> > <arg value="-d" /> > <arg value="@{srcdestdir}" /> > <arg value="@{dir}/@{file}" /> > </java> > </sequential> > </macrodef> > If the specs says that message part names can't be longer than 14 characters > then please ignore this issue. > Version 2.0.4 has this problem too, and other versions too I imagine, but I > have only tested on 2.0.4 and 2.1.2. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.