Elements and parts seem to default to "return" - which upsets WSDL2X as "return" is generally a reserved word
Hi, I'm new to CXF, so forgive this newb question. For almost all simple web services that I create using Java, such as those described here: http://cwiki.apache.org/CXF20DOC/a-simple-jax-ws-service.html I get parts or elements automatically named "return" in the resulting auto-generated WSDL (see example below). As you'll see below, the argument is given a nice name like "arg0", but the return is called "return". Unfortunately, return is a reserved keyword in many languages, so this forces many WSDL2LanguageX converters to rename. Can you change the default return name for elements/parts to something like "return0" ? Right now, I can't use CXF web services from salesforce.com without hacking all my WSDL files (or, when I have access to source, adding an annotation). LMK if I've got this wrong! Thanks! Jon
Re: Elements and parts seem to default to "return" - which upsets WSDL2X as "return" is generally a reserved word
Hi Jon, Do you mind send us the complete wsdl, we do have the "return" element in our test, so this case should be covered already. Or you can log an issue in jira and attach your wsdl BTW, which CXF version are you using? Thanks, James Hi, I'm new to CXF, so forgive this newb question. For almost all simple web services that I create using Java, such as those described here: http://cwiki.apache.org/CXF20DOC/a-simple-jax-ws-service.html I get parts or elements automatically named "return" in the resulting auto-generated WSDL (see example below). As you'll see below, the argument is given a nice name like "arg0", but the return is called "return". Unfortunately, return is a reserved keyword in many languages, so this forces many WSDL2LanguageX converters to rename. Can you change the default return name for elements/parts to something like "return0" ? Right now, I can't use CXF web services from salesforce.com without hacking all my WSDL files (or, when I have access to source, adding an annotation). LMK if I've got this wrong! Thanks! Jon
RE: Elements and parts seem to default to "return" - which upsets WSDL2X as "return" is generally a reserved word
Jon, the mapping name of "return" is per JAX-WS 2.0 spec. Section 3.6.1: "Conformance (Result naming): The javax.jws.WebResult annotation (see 7.10.4) MAY be used to specify the name of the wsdl:part or XML Schema element declaration corresponding to the Java method return type. If both the name and partName elements are used in the javax.jws.WebResult annota- tions then the partName MUST be used for the wsdl:part name attribute and the name elment from the annotation will be ignored. In the absence of customizations, the default name is return." As far as the WSDL2JAVA tool is concerned, the return name is not significant as it is not needed by the language, only the return type is significant. Or you have specific WSDL2Language in your mind? Cheers, Jervis > -Original Message- > From: Jon Mountjoy [mailto:[EMAIL PROTECTED] > Sent: 2007?9?11? 4:46 > To: cxf-user@incubator.apache.org > Subject: Elements and parts seem to default to "return" - > which upsets WSDL2X as "return" is generally a reserved word > > > Hi, > > I'm new to CXF, so forgive this newb question. For almost > all simple > web services that I create using Java, such as those described here: > http://cwiki.apache.org/CXF20DOC/a-simple-jax-ws-service.html > I get parts or elements automatically named "return" in the > resulting > auto-generated WSDL (see example below). > > As you'll see below, the argument is given a nice name like "arg0", > but the return is called "return". Unfortunately, return is a > reserved keyword in many languages, so this forces many > WSDL2LanguageX converters to rename. > > Can you change the default return name for elements/parts to > something like "return0" ? Right now, I can't use CXF web services > from salesforce.com without hacking all my WSDL files (or, when I > have access to source, adding an annotation). > > LMK if I've got this wrong! > > Thanks! > Jon > > > > > > > > > > > > > > > IONA Technologies PLC (registered in Ireland) Registered Number: 171387 Registered Address: The IONA Building, Shelbourne Road, Dublin 4, Ireland
RE: Elements and parts seem to default to "return" - which upsets WSDL2X as "return" is generally a reserved word
One thing to add. If your WSDL is doc-lit wrapped (this type of WSDL is generated by java2wsdl by default unless your java class has annotations to customize this), a Response Bean is required to be generated by WSDL2JAVA tool. In this case, the WSDL2JAVA tool is also required to resolve any name collisions in response bean. In CXF, when JAXB is the databinding used by WSDL2JAVA, the name mapping is handled by JAXB, detailed can be found in JAXB 2.0 spec Appendix D "BINDING XML NAMES TO JAVA IDENTIFIERS". Cheers, Jervis > -Original Message- > From: Liu, Jervis [mailto:[EMAIL PROTECTED] > Sent: 2007?9?11? 10:47 > To: cxf-user@incubator.apache.org > Subject: RE: Elements and parts seem to default to "return" - > which upsets WSDL2X as "return" is generally a reserved word > > > Jon, the mapping name of "return" is per JAX-WS 2.0 spec. > Section 3.6.1: > > "Conformance (Result naming): The javax.jws.WebResult > annotation (see 7.10.4) MAY be used to > specify the name of the wsdl:part or XML Schema element > declaration corresponding to the Java method > return type. If both the name and partName elements are used > in the javax.jws.WebResult annota- > tions then the partName MUST be used for the wsdl:part name > attribute and the name elment from the > annotation will be ignored. In the absence of customizations, > the default name is return." > > As far as the WSDL2JAVA tool is concerned, the return name is > not significant as it is not needed by the language, only the > return type is significant. Or you have specific > WSDL2Language in your mind? > > Cheers, > Jervis > > > -Original Message- > > From: Jon Mountjoy [mailto:[EMAIL PROTECTED] > > Sent: 2007?9?11? 4:46 > > To: cxf-user@incubator.apache.org > > Subject: Elements and parts seem to default to "return" - > > which upsets WSDL2X as "return" is generally a reserved word > > > > > > Hi, > > > > I'm new to CXF, so forgive this newb question. For almost > > all simple > > web services that I create using Java, such as those described here: > > http://cwiki.apache.org/CXF20DOC/a-simple-jax-ws-service.html > > I get parts or elements automatically named "return" in the > > resulting > > auto-generated WSDL (see example below). > > > > As you'll see below, the argument is given a nice name like > "arg0", > > but the return is called "return". Unfortunately, return is a > > reserved keyword in many languages, so this forces many > > WSDL2LanguageX converters to rename. > > > > Can you change the default return name for elements/parts to > > something like "return0" ? Right now, I can't use CXF web > services > > from salesforce.com without hacking all my WSDL files (or, when I > > have access to source, adding an annotation). > > > > LMK if I've got this wrong! > > > > Thanks! > > Jon > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > IONA Technologies PLC (registered in Ireland) > Registered Number: 171387 > Registered Address: The IONA Building, Shelbourne Road, > Dublin 4, Ireland > IONA Technologies PLC (registered in Ireland) Registered Number: 171387 Registered Address: The IONA Building, Shelbourne Road, Dublin 4, Ireland
Re: Elements and parts seem to default to "return" - which upsets WSDL2X as "return" is generally a reserved word
Hi Jervis/James, You hit the nail on the head with the Spec section. I still wish they didn't choose a reserved word when they wrote the spec... As you say Jervice, the name shouldn't be relevant, but unfortunately using "return" means that anyone writing a WSDL2X will need to take more care. The situation I have is that I have a number of local web services (created using CXF + annotated POJO) that I'm feeding to Salesforce.com. Salesforce.com can consume arbitrary SOAP services - it takes the WSDL and creates local "Apex" objects which then do all the dirty work. The problem is that is nobody has control over that process (it's hosted). I have to currently edit the WSDL before this happens, otherwise the Apex objects are invalid. (or use @WebResult) I'll be reporting this to them though, and pointing out the spec - hopefully they can change their mapper to take more care in assigning names :-) Thanks for the resolution. I'm having great fun with CXF - it's remarkably easy to get a SOAP service up and running now. Regards, Jon On 11 Sep 2007, at 04:51, Liu, Jervis wrote: One thing to add. If your WSDL is doc-lit wrapped (this type of WSDL is generated by java2wsdl by default unless your java class has annotations to customize this), a Response Bean is required to be generated by WSDL2JAVA tool. In this case, the WSDL2JAVA tool is also required to resolve any name collisions in response bean. In CXF, when JAXB is the databinding used by WSDL2JAVA, the name mapping is handled by JAXB, detailed can be found in JAXB 2.0 spec Appendix D "BINDING XML NAMES TO JAVA IDENTIFIERS". Cheers, Jervis -Original Message- From: Liu, Jervis [mailto:[EMAIL PROTECTED] Sent: 2007?9?11? 10:47 To: cxf-user@incubator.apache.org Subject: RE: Elements and parts seem to default to "return" - which upsets WSDL2X as "return" is generally a reserved word Jon, the mapping name of "return" is per JAX-WS 2.0 spec. Section 3.6.1: "Conformance (Result naming): The javax.jws.WebResult annotation (see 7.10.4) MAY be used to specify the name of the wsdl:part or XML Schema element declaration corresponding to the Java method return type. If both the name and partName elements are used in the javax.jws.WebResult annota- tions then the partName MUST be used for the wsdl:part name attribute and the name elment from the annotation will be ignored. In the absence of customizations, the default name is return." As far as the WSDL2JAVA tool is concerned, the return name is not significant as it is not needed by the language, only the return type is significant. Or you have specific WSDL2Language in your mind? Cheers, Jervis -Original Message- From: Jon Mountjoy [mailto:[EMAIL PROTECTED] Sent: 2007?9?11? 4:46 To: cxf-user@incubator.apache.org Subject: Elements and parts seem to default to "return" - which upsets WSDL2X as "return" is generally a reserved word Hi, I'm new to CXF, so forgive this newb question. For almost all simple web services that I create using Java, such as those described here: http://cwiki.apache.org/CXF20DOC/a-simple-jax-ws-service.html I get parts or elements automatically named "return" in the resulting auto-generated WSDL (see example below). As you'll see below, the argument is given a nice name like "arg0", but the return is called "return". Unfortunately, return is a reserved keyword in many languages, so this forces many WSDL2LanguageX converters to rename. Can you change the default return name for elements/parts to something like "return0" ? Right now, I can't use CXF web services from salesforce.com without hacking all my WSDL files (or, when I have access to source, adding an annotation). LMK if I've got this wrong! Thanks! Jon IONA Technologies PLC (registered in Ireland) Registered Number: 171387 Registered Address: The IONA Building, Shelbourne Road, Dublin 4, Ireland IONA Technologies PLC (registered in Ireland) Registered Number: 171387 Registered Address: The IONA Building, Shelbourne Road, Dublin 4, Ireland