You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cxf.apache.org by "Roland Mueller (JIRA)" <ji...@apache.org> on 2013/01/18 17:26:13 UTC

[jira] [Reopened] (CXF-4750) Wrong return type for enumeration in generated service interface using xmlbeans

     [ https://issues.apache.org/jira/browse/CXF-4750?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Roland Mueller reopened CXF-4750:
---------------------------------


Thanks for the quick fix! Sadly it also changed the behavior when Enums are used as input parameters, where I get exceptions now. These had a String type previously, which was fine, and also need an Enum now. Here's a stacktrace of 2.5.9-SNAPSHOT:

org.apache.cxf.interceptor.Fault: argument type mismatch while invoking public abstract org.apache.test.MyResponseType org.apache.test.TestServicePortType.testFunction2(org.apache.test.ETestResponseType$Enum) with params [<xml-fragment>ONE</xml-fragment>].
	at org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoker.java:159)
	at org.apache.cxf.jaxws.AbstractJAXWSMethodInvoker.createFault(AbstractJAXWSMethodInvoker.java:86)
	at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:133)
	at org.apache.cxf.jaxws.JAXWSMethodInvoker.invoke(JAXWSMethodInvoker.java:66)
	at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:75)
	at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37)
	at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:107)
	at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263)
	at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:122)
	at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:233)
	at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:209)
	at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:189)
	at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:129)
	at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:223)
	at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:143)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:751)
	at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:199)
...
Caused by: java.lang.IllegalArgumentException: argument type mismatch
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:173)
	at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:89)
	... 44 more

                
> Wrong return type for enumeration in generated service interface using xmlbeans
> -------------------------------------------------------------------------------
>
>                 Key: CXF-4750
>                 URL: https://issues.apache.org/jira/browse/CXF-4750
>             Project: CXF
>          Issue Type: Bug
>          Components: OtherDatabindings, Tooling
>    Affects Versions: 2.3.11, 2.7.2
>            Reporter: Roland Mueller
>            Assignee: Daniel Kulp
>             Fix For: 2.5.9, 2.6.6, 2.7.3
>
>         Attachments: enumtest.zip
>
>
> I have a WSDL which has an enumeration as the response type for a SOAP operation. From that, I am generating Java classes using the cxf-codegen-plugin with xmlbeans.
> The generated service interface has a String as response type. If my implementation returns a String containing one of the specified enum values, I get an Exception (using CXF 2.3.11):
> org.apache.cxf.interceptor.Fault
> 	at org.apache.cxf.databinding.AbstractWrapperHelper.createWrapperObject(AbstractWrapperHelper.java:107)
> 	at org.apache.cxf.jaxws.interceptors.WrapperClassOutInterceptor.handleMessage(WrapperClassOutInterceptor.java:105)
> 	at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255)
> 	at org.apache.cxf.interceptor.OutgoingChainInterceptor.handleMessage(OutgoingChainInterceptor.java:77)
> 	at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255)
> 	at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:113)
> 	at org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:102)
> 	at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:464)
> 	at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:188)
> 	at org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:148)
> 	at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:179)
> 	at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:103)
> 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:751)
> 	at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:159)
> If I manually change the return type of the generated interface and my implementation from String to "org.apache.test.ETestResponseType.Enum", everything works well.
> I could only test the wsdl2java generation with a newer CXF version, but 2.7.2 also generates a String as the response type.
> I will attach a sample project.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira