RE: java.lang.ClassCastException: org.apache.axiom.om.impl.llom.OMElementImpl cannot be cast to org.apache.axiom.soap.SOAPFaultDetail

"Shah, Sumit (CGI Federal)" <[email protected]>
Newsgroups gmane.text.xml.axis.user
Message-ID <3357D2C72D9A0345A66DFB0B043C04166EE8CBFE@FFX-S-EX-C1.cgifederal.com>
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:[email protected]] 
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) <[email protected]> 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:[email protected]]
> Sent: Tuesday, March 12, 2013 1:35 PM
> To: [email protected]
> 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:[email protected]]
> Sent: Tuesday, March 12, 2013 8:16 AM
> To: [email protected]
> 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: [email protected]
For additional commands, e-mail: [email protected]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.