Dan,

I successfully used this technique to patch my stubs.  Thanks!  I do
have a remaining question:

Is there a "best practice" here?  Is calling XxxFault(...,
xxxFaultInstance) the way things are supposed to be done?  I'm just
trying to understand the etiology of my issue.

Greg

-----Original Message-----
From: Daniel Kulp [mailto:dk...@apache.org] 
Sent: Wednesday, March 31, 2010 11:28 PM
To: users@cxf.apache.org
Cc: Vanore, Gregory
Subject: Re: Losing fault type in CXF 2.2.3+



There really isn't anything like xjc plugins that can can control the
Fault 
generation stuff as it's not a JAXB generated thing, that's done by us
using 
velocity.  You MAY be able to create a new velocity template in a jar of
path:

org/apache/cxf/tools/wsdlto/frontend/jaxws/template/fault.vm

and stick that jar in front of the CXF jars to pick up your template
instead.   
Ours is at:

http://svn.apache.org/repos/asf/cxf/trunk/tools/wsdlto/frontend/jaxws/sr
c/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/template/fault.vm

Dan

On Wednesday 31 March 2010 10:12:39 am Vanore, Gregory wrote:
> I am migrating from CXF 2.2.2 to the latest, and my functional tests
> that cover fault conditions are failing.  So, when using CXF 2.2.2, my
> fault looks normal:
> 
> <soap:Envelope xmlns:soap="..."><soap:Body><soap:Fault>
>       <faultcode>soap:Server</faultcode>
>       <faultstring>...</faultstring>
>       <detail><ns6:CustomFault xmlns:ns6="..."/></detail>
> </soap:Fault></soap:Body></soap:Envelope>
> 
> Starting at CXF 2.2.3 (I tried every version between 2.2.2 and 2.2.7),
> the fault looks like this instead:
> 
> <soap:Envelope xmlns:soap="..."><soap:Body><soap:Fault>
>       <faultcode>soap:Server</faultcode>
>       <faultstring>...</faultstring>
> </soap:Fault></soap:Body></soap:Envelope>
> 
> A few points.
> 
> * When I override CXF 2.2.2 to use JAXB 2.1.12, I get an empty
<detail>
> element.
> * If I pass a non-null fault type to my @WebFault, I can solve the
> problem, like so:
> 
> throw new CustomFault("...", new CustomFaultType());
> 
> I would prefer to find a solution where I don't have to modify my code
> base to add the empty fault type bean.  All WebFault types are
generated
> with a getFaultInfo() method.  It would be nice to be able to set the
> private fault type member by default, rather than leaving it null.
> Perhaps there's some wsdltojava or xjc mojo I can leverage for this.
> 
> I don't know if the change is in CXF or its supporting toolset.  If
this
> is a change in CXF, I would recommend /at least/ inspecting the type
of
> the fault in the WebFault and passing that along, so that this
> information isn't lost.
> 
> Or perhaps new CustomFault(String) was never right and always
dangerous,
> and now the bug that allowed me to exercise that path has been fixed.
> 
> In any case, I would like to hear if anyone has experience with this
or
> recommendations on the best way to proceed.
> 
> Thanks!

-- 
Daniel Kulp
dk...@apache.org
http://dankulp.com/blog

Reply via email to