[ https://issues.apache.org/jira/browse/CXF-2076?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12679806#action_12679806
]
Daniel Kulp commented on CXF-2076:
----------------------------------
[20:51] <dkulp> There are two ways to approach it.
[20:52] <dkulp> 1) Make sure the code generators ONLY generate BARE mode with XMLBeans.
[20:52] <dkulp> Which I'd be OK with.
[20:52] <willem> dkulp: Do I need to change the template file to get the xmlbeans artifacts
work out of box?
[20:53] <dkulp> 2) Add some methods to AbstractDataBinding for creating and filling
in the wrappers.
[20:53] <dkulp> (2) would be a bit complex.
[20:53] <dkulp> You shouldn't.
[20:54] <willem> dkulp: I didn't do any tools or binding relates work before. Can you
show me some examples?
[20:55] <dkulp> Hmm......
[20:57] <dkulp> Long time since I looked into some of the databinding code.
[20:58] <dkulp> Looking at the code, to force bare mode, you MAY just need to change
the getWrappedElementType method of the XMLBeansToolingDataBinding to return null.
[20:58] <willem> OK, I just want to a find a generatic way to fix this xmlbean issue.
1) will let xmlbean's not support wrapper any more, am I right?
[20:59] <dkulp> Right.
[20:59] <willem> 1) just be a short time solution.
[21:01] <dkulp> Well, supporting the wrapper types in a generic fasion would require
major re-architectingg of the databinding.
[21:01] <dkulp> Which would be a 3.0 level thing.
[21:01] <dkulp> Actually, the other thing you can try:
[21:02] <willem> Please shot.
[21:02] <dkulp> In WrapperClassOutInterceptor, check if the databinding class name contains
JAXB
[21:02] <dkulp> If not, skip.
[21:02] <willem> Yes, this is other way to do it.
[21:02] <dkulp> Actually, in the JAXWSServiceFactory, if the databinding isn't jaxb,
don't even add the wrapepr class in/out interceptors
[21:04] <willem> So the wrapper class will only work for JAXB. The user will not be
affected.
[21:04] <dkulp> Maybe.
[21:04] <dkulp> I DON'T know if XMLBeans will tollerate parsing from the child elements
or not.
> InstantiationException trying to create wrapper object when using xmlbeans databinding
> --------------------------------------------------------------------------------------
>
> Key: CXF-2076
> URL: https://issues.apache.org/jira/browse/CXF-2076
> Project: CXF
> Issue Type: Bug
> Components: Tooling
> Affects Versions: 2.1.4
> Environment: 2.1.4, trunk
> Reporter: Dave Stanley
> Attachments: cxf_xmlbeans.tar.gz, cxf_xmlbeans_sample.patch
>
>
> I have modified the wsdl_first sample to use the xmlbeans databinding. Xmlbeans is generating
both an interface and a concrete type for each of the types defined in my wsdl. This is causing
a problem with CXF as its using the interface rather than the impl to instantiate request
and response wrapper classes.
> This results in the stack below which shows the InstantiationException. Note the type
is org.apache.helloWorldSoapHttp.types.SayHiDocument - I think it should be .. org.apache.helloWorldSoapHttp.types.impl.SayHiDocumentImpl
?
> INFO: Interceptor has thrown exception, unwinding now
> org.apache.cxf.interceptor.Fault: org.apache.helloWorldSoapHttp.types.SayHiDocument
> at org.apache.cxf.jaxws.interceptors.WrapperClassOutInterceptor.handleMessage(WrapperClassOutInterceptor.java:116)
> at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:236)
> at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:469)
> at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:299)
> at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:251)
> at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
> at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:123)
> at $Proxy69.sayHi(Unknown Source)
> at demo.hw.client.Client.main(Client.java:71)
> 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:585)
> at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:290)
> at java.lang.Thread.run(Thread.java:595)
> Caused by: org.apache.cxf.interceptor.Fault: org.apache.helloWorldSoapHttp.types.SayHiDocument
> at org.apache.cxf.jaxws.interceptors.WrapperHelper$ReflectWrapperHelper.createWrapperObject(WrapperHelper.java:312)
> at org.apache.cxf.jaxws.interceptors.WrapperClassOutInterceptor.handleMessage(WrapperClassOutInterceptor.java:102)
> ... 14 more
> Caused by: java.lang.InstantiationException: org.apache.helloWorldSoapHttp.types.SayHiDocument
> at java.lang.Class.newInstance0(Class.java:335)
> at java.lang.Class.newInstance(Class.java:303)
> at org.apache.cxf.jaxws.interceptors.WrapperHelper$ReflectWrapperHelper.createWrapperObject(WrapperHelper.java:277)
> ... 15 more
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
|