[ https://issues.apache.org/jira/browse/CXF-6127?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14243033#comment-14243033 ]
Kyle Lape commented on CXF-6127: -------------------------------- Sorry for bouncing between jira and github. >From your github comment: bq. Furthermore, when the soap-fault is extracted from one-depth below, the code that follows the try-catch block also needs to be adjusted to use that fault (in contrast to the first-level fault as it is now) to be consistent in picking the right fault information. Let's say I want to provide all of these in my soap fault: - A SOAP 1.2 subcode - A {{getFaultInfo}} method to provide a "serialized service specific exception" in the fault detail. - Something to populate the {{faultstring}} My first thought was to try and have my checked exception extend {{SOAPFaultException}} and implement {{getFaultInfo}}. This would work according to spec if I supplied a {{faultstring}} via {{SOAPFaultException.getFault().getFaultString()}}, but that's not implemented in CXF. I also can't provide one via {{Exception.getMessage()}} since I can't pass that into the constructor for {{SOAPFaultException}}. So I decided to set {{SOAPFaultException}} as the cause so that my checked {{@WebFault Exception}} could provide the fault detail and fault string, while the {{SOAPFaultException}} could provide the subcodes. This requires the change in this jira (the recursive {{getCause()}} loop is not necessary), and it also requires CXF to check the top-level exception for some things, and the {{SOAPFaultException}} for others. Looking back on section 10.2.2.3 of the jaxws spec, there seem to be more issues than I first noticed: - I don't see where CXF checks {{SOAPFaultException.getFault().getFaultString()}} for the {{faultstring}} - Neither do I see it try {{Exception.toString()}} for {{faultstring}} if option 1 and 2 fail - I don't see CXF check for {{SOAPFaultException.getFault().getFaultActor()}} to get {{faultactor}}, though I've never tested this - {{SOAPFaultException.getFault().getDetail()}} is not checked when creating a fault info bean fails for whatever reason Obviously these things aren't dealbreakers since no one's cared enough to fix them yet (i.e. I'm not saying the should be fixed as part of this jira), but I think my point is that consistency in the source of fault information is irrelevant -- it's the order defined in the spec that matters. If CXF was implemented precisely to spec, I would have several options available to get all my soap fault fields populated as I'd like. > Check entire cause chain for SOAPFaultException > ----------------------------------------------- > > Key: CXF-6127 > URL: https://issues.apache.org/jira/browse/CXF-6127 > Project: CXF > Issue Type: Bug > Components: JAX-WS Runtime > Reporter: Kyle Lape > Assignee: Akitoshi Yoshida > > Section 10.2.2.3 of JAX-WS 2.2 spec has a footnote that says: > bq. If the exception is a SOAPFaultException or has a cause that is a > SOAPFaultException. > Currently CXF only checks if the thrown exception is of the exact type (i.e. > not a subtype of) {{SOAPFaultException}}. We need to check all causes and > may as well use {{instanceof}} rather than > {{ex.getClass().equals(SOAPFaultException.class)}} in > {{WebFaultOutInterceptor}}. -- This message was sent by Atlassian JIRA (v6.3.4#6332)