Could you insert some code that calls
soapFault.getFirstChildWithName(SOAP11Constants.QNAME_FAULT_DETAIL)
and try to determine where the returned OMElement is coming from? It
obviously can't be the one returned by
axisFault.getFaultDetailElement() because that one must be a
SOAPFaultDetail.

Andreas

On Fri, Mar 15, 2013 at 10:03 PM, Shah, Sumit (CGI Federal)
<sumit.s...@cgifederal.com> wrote:
> Hi Andreas,
>
> This is how I create the SOAP Fault. This is using Axiom 1.2.13. I am not 
> sure if this has changed in 1.2.14.
>
>                 catch (AxisFault axisFault) {
>                         if (axisFault.getFaultMessageContext() != null && 
> axisFault.getFaultMessageContext().getEnvelope() != null) {
>                             SOAPFault soapFault = null;
>
>                             if 
> (axisFault.getFaultMessageContext().isSOAP11()) {
>                                 soapFault = new 
> SOAP11Factory().createSOAPFault(axisFault.getFaultMessageContext().getEnvelope().getBody());
>                             }
>                             else {
>                                 soapFault = new 
> SOAP12Factory().createSOAPFault(axisFault.getFaultMessageContext().getEnvelope().getBody());
>
>                                 if (axisFault.getFaultNodeElement() != null) {
>                                     
> soapFault.setNode(axisFault.getFaultNodeElement());
>                                 }
>                             }
>
>                             if (axisFault.getFaultCodeElement() != null) {
>                                 
> soapFault.setCode(axisFault.getFaultCodeElement());
>                             }
>
>                             if (axisFault.getFaultDetailElement() != null) {
>                                 
> soapFault.setDetail(axisFault.getFaultDetailElement());
>                             }
>
>                             if (axisFault.getFaultReasonElement() != null) {
>                                 
> soapFault.setReason(axisFault.getFaultReasonElement());
>                             }
>
>                             if (axisFault.getFaultRoleElement() != null) {
>                                 
> soapFault.setRole(axisFault.getFaultRoleElement());
>                             }
>
>                                         //This get called
>                             this.handleSOAPFault(method, soapFault);
>                         }
>                         else {
>                             throw axisFault;
>                         }
>                 }
>
>
> The CCE happens in the method here:
> protected void handleSOAPFault(Method method, SOAPFault soapFault) throws 
> Exception {
>         Exception faultException = null;
>
>           //The ClassCastException is a result of this call
>         if (soapFault.getDetail() != null) {
>             Map<String, Object> jaxbContextProperties = null;
>
> //other logic removed for brevity.
> }
>
> Thanks
> Sumit
>
> -----Original Message-----
> From: Andreas Veithen [mailto:andreas.veit...@gmail.com]
> Sent: Wednesday, March 13, 2013 12:25 PM
> To: java-user
> Subject: Re: java.lang.ClassCastException: 
> org.apache.axiom.om.impl.llom.OMElementImpl cannot be cast to 
> org.apache.axiom.soap.SOAPFaultDetail
>
> How is the SOAPFault created?
>
> Andreas
>
> On Wed, Mar 13, 2013 at 3:19 PM, Shah, Sumit (CGI Federal) 
> <sumit.s...@cgifederal.com> wrote:
>> Thanks Yashwanth. It seems like this is an issue in Axiom 1.2.14,
>> because both the SOAPFault11Impl and OMElementImpl are classes in
>> Axiom 1.2.14. Does this mean this a bug?
>>
>>
>>
>> Sumit
>>
>>
>>
>> From: Yashwanth Rajaram -X (yrajaram - ZENSAR TECHNOLOGIES INC at
>> Cisco) [mailto:yraja...@cisco.com]
>> Sent: Tuesday, March 12, 2013 1:35 PM
>> To: java-user@axis.apache.org
>> Subject: RE: java.lang.ClassCastException:
>> org.apache.axiom.om.impl.llom.OMElementImpl cannot be cast to
>> org.apache.axiom.soap.SOAPFaultDetail
>>
>>
>>
>> Sumit, I think you might have to do something like this:
>>
>>
>>
>> SOAPFaultDetail detail =
>> OMAbstractFactory.getSOAP11Factory().createSOAPFaultDetail();
>>
>> detail.addChild(getFirstChildWithName(SOAP11Constants.QNAME_FAULT_DETA
>> IL));
>>
>>
>>
>> Sincerely, Yashwanth
>>
>> Technical Architect, EBIS
>>
>>
>>
>> From: Shah, Sumit (CGI Federal) [mailto:sumit.s...@cgifederal.com]
>> Sent: Tuesday, March 12, 2013 8:16 AM
>> To: java-user@axis.apache.org
>> Subject: java.lang.ClassCastException:
>> org.apache.axiom.om.impl.llom.OMElementImpl cannot be cast to
>> org.apache.axiom.soap.SOAPFaultDetail
>>
>>
>>
>> Hi,
>>
>>
>>
>> I am running into the following ClassCastException running Axis2 1.6.2
>> and Axiom 1.2.14 (I have also included the axiom-compat jar for
>> backwards compatibility). I noticed a similar issue reported for
>> Synapse/Carbon https://wso2.org/jira/browse/CARBON-13759. I am not
>> sure if these are related.
>>
>>
>>
>>
>>
>> java.lang.ClassCastException:
>> org.apache.axiom.om.impl.llom.OMElementImpl
>> cannot be cast to org.apache.axiom.soap.SOAPFaultDetail
>>
>>
>>
>> Its occurring here in the SOAP11FaultImpl:
>>
>>
>>
>> public SOAPFaultDetail getDetail() {
>>
>>         return (SOAPFaultDetail)
>> getFirstChildWithName(SOAP11Constants.QNAME_FAULT_DETAIL);
>>
>> }
>>
>>
>>
>> I see that getFirstChildWithName() currently returns an OMELement,
>> however the cast above fails. I would appreciate any suggestions.
>>
>>
>>
>> Thanks
>>
>> Sumit
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: java-user-unsubscr...@axis.apache.org
> For additional commands, e-mail: java-user-h...@axis.apache.org
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: java-user-unsubscr...@axis.apache.org
> For additional commands, e-mail: java-user-h...@axis.apache.org
>

---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscr...@axis.apache.org
For additional commands, e-mail: java-user-h...@axis.apache.org

  • java.la... Shah, Sumit (CGI Federal)
    • RE... Yashwanth Rajaram -X (yrajaram - ZENSAR TECHNOLOGIES INC at Cisco)
      • ... Shah, Sumit (CGI Federal)
        • ... Andreas Veithen
          • ... Shah, Sumit (CGI Federal)
            • ... Andreas Veithen
              • ... Shah, Sumit (CGI Federal)

Reply via email to