[ 
https://issues.apache.org/jira/browse/AXIS2-5983?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Agus Sigit Wisnubroto updated AXIS2-5983:
-----------------------------------------
    Description: 
Hi there,

I got a similar error with AXIS2-5770 even using version no 1.7.9,
 The error was 
{quote}{{*java.lang.ClassCastException: org.apache.axis2.saaj.SOAPElementImpl 
cannot be cast to org.apache.axiom.om.OMElement*}}
 {{2020-08-04 11:45:18 ERROR stderr - at 
org.apache.axis2.saaj.SOAPElementImpl.addChildElement(SOAPElementImpl.java:99)}}
 {{2020-08-04 11:45:18 ERROR stderr - at 
org.apache.axis2.saaj.SOAPBodyImpl.toSAAJNode(SOAPBodyImpl.java:462)}}
 {{2020-08-04 11:45:18 ERROR stderr - at 
org.apache.axis2.saaj.SOAPBodyImpl.toSAAJNode(SOAPBodyImpl.java:458)}}
 {{2020-08-04 11:45:18 ERROR stderr - at 
org.apache.axis2.saaj.SOAPBodyImpl.addDocument(SOAPBodyImpl.java:298)}}
{quote}
How to produce it :

*Maven*
{code:java}
 <dependencies> 
 <dependency> 
 <groupId>com.fasterxml.jackson.core</groupId> 
 <artifactId>jackson-databind</artifactId> 
 <version>2.5.0</version> 
 </dependency> 
 <dependency> 
 <groupId>org.apache.axis2</groupId> 
 <artifactId>axis2-jaxws</artifactId> 
 <version>1.7.9</version> 
 </dependency>        
 </dependencies>{code}
*Code*

 
{code:java}
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.StringReader;
import java.io.StringWriter;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.soap.MessageFactory;
import javax.xml.soap.SOAPBody;
import javax.xml.soap.SOAPEnvelope;
import javax.xml.soap.SOAPException;
import javax.xml.soap.SOAPMessage;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.xml.sax.InputSource;/**
 *
 *
 * @author aswzen
 */
public class MainClass {    public static void main(String[] args) throws 
IOException, SOAPException, JAXBException, ParserConfigurationException {
        String xml = "<soapenv:Envelope 
xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"; 
xmlns:rm=\"rm:soap\"> <soapenv:Header/> <soapenv:Body> <rm:notifyUserInfo> 
<inPara> 
<content>UserID=123456789012345,QuotaInitialValue=102400,QuotaConsumption=38400,QuotaBalance=64000,QuotaLevel=1,NextResetTime=20140322000000,QuotaName=FUP001,TimeStamp=20140303182534</content>
 </inPara> </rm:notifyUserInfo> </soapenv:Body> </soapenv:Envelope>";
        System.out.println("xml " + xml);
        SOAPMessage message = MessageFactory.newInstance().createMessage(null, 
new ByteArrayInputStream(xml.getBytes()));
        JAXBContext jaxbContext = 
JAXBContext.newInstance(PCRFNotifyUserInfoRequest.class);
        Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
        Node node = message.getSOAPBody().getFirstChild().getNextSibling();
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        factory.setNamespaceAware(true);
        DocumentBuilder builder = factory.newDocumentBuilder();
        Document newDocument = builder.newDocument();
        Node importedNode = newDocument.importNode(node, true);
        newDocument.appendChild(importedNode);
        Document dd = newDocument;
        PCRFNotifyUserInfoRequest response = (PCRFNotifyUserInfoRequest) 
jaxbUnmarshaller.unmarshal(dd);
        System.out.println("response " + response.getInParaContent());
        PCRFNotifyUserInfoResponse pcrfResp = new PCRFNotifyUserInfoResponse();
        pcrfResp.setResult("0", "Operation succeeded");
        String res = createMarshal(pcrfResp, PCRFNotifyUserInfoResponse.class);
        System.out.println("results " + res);
    }    public static String createMarshal(Object content, Class type) {
        String xmlContent = "?";
        try {
            JAXBContext jaxbContextResp = JAXBContext.newInstance(type);
            Marshaller jaxbMarshaller = jaxbContextResp.createMarshaller();
            jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, 
Boolean.TRUE);
            StringWriter sw = new StringWriter();
            jaxbMarshaller.marshal(content, sw);
            String bodyXml = sw.toString();
            System.out.println("bodyXml " + bodyXml);
            MessageFactory mfactory = MessageFactory.newInstance();
            SOAPMessage soapMessage = mfactory.createMessage();
            soapMessage.getSOAPHeader().recycleNode();
            SOAPBody soapBody = soapMessage.getSOAPBody();
            DocumentBuilderFactory factory = 
DocumentBuilderFactory.newInstance();
            factory.setNamespaceAware(true);
            soapBody.addDocument(convertStringToDocument(bodyXml));
            SOAPEnvelope envelope = soapMessage.getSOAPPart().getEnvelope();
            envelope.addNamespaceDeclaration("xsi", 
"http://www.w3.org/2001/XMLSchema-instance";);
            envelope.addNamespaceDeclaration("xsd", 
"http://www.w3.org/2001/XMLSchema";);
            soapMessage.saveChanges();
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            soapMessage.writeTo(out);
            xmlContent = new String(out.toByteArray());
        } catch (Exception ex) {
            ex.printStackTrace();
            xmlContent = "<result 
xmlns=\"\"><resultCode>1</resultCode><resultDesc>Operation error " + 
ex.getMessage() + "</resultDesc></result>";
        }        return xmlContent;
    }    private static Document convertStringToDocument(String xmlStr) {
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        factory.setNamespaceAware(true);
        DocumentBuilder builder;
        try {
            builder = factory.newDocumentBuilder();
            Document doc = builder.parse(new InputSource(new 
StringReader(xmlStr)));
            return doc;
        } catch (Exception e) {
            e.printStackTrace();
        }        return null;
    }
}{code}
*The error was on this part*
{code:java}
soapBody.addDocument(convertStringToDocument(bodyXml)); {code}
Any explanation? thanks

  was:
Hi there,

I got a similar error with AXIS2-5770 even using version no 1.7.9,
 The error was 
{quote}{{*java.lang.ClassCastException: org.apache.axis2.saaj.SOAPElementImpl 
cannot be cast to org.apache.axiom.om.OMElement*}}
 {{2020-08-04 11:45:18 ERROR stderr - at 
org.apache.axis2.saaj.SOAPElementImpl.addChildElement(SOAPElementImpl.java:99)}}
 {{2020-08-04 11:45:18 ERROR stderr - at 
org.apache.axis2.saaj.SOAPBodyImpl.toSAAJNode(SOAPBodyImpl.java:462)}}
 {{2020-08-04 11:45:18 ERROR stderr - at 
org.apache.axis2.saaj.SOAPBodyImpl.toSAAJNode(SOAPBodyImpl.java:458)}}
 {{2020-08-04 11:45:18 ERROR stderr - at 
org.apache.axis2.saaj.SOAPBodyImpl.addDocument(SOAPBodyImpl.java:298)}}
{quote}
How to produce it :

*Maven*

 <dependencies> 
 <dependency> 
 <groupId>com.fasterxml.jackson.core</groupId> 
 <artifactId>jackson-databind</artifactId> 
 <version>2.5.0</version> 
 </dependency> 
 <dependency> 
 <groupId>org.apache.axis2</groupId> 
 <artifactId>axis2-jaxws</artifactId> 
 <version>1.7.9</version> 
 </dependency>        
 </dependencies>

*Code*

import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.StringReader;
 import java.io.StringWriter;
 import javax.xml.bind.JAXBContext;
 import javax.xml.bind.JAXBException;
 import javax.xml.bind.Marshaller;
 import javax.xml.bind.Unmarshaller;
 import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.soap.MessageFactory;
 import javax.xml.soap.SOAPBody;
 import javax.xml.soap.SOAPEnvelope;
 import javax.xml.soap.SOAPException;
 import javax.xml.soap.SOAPMessage;
 import org.w3c.dom.Document;
 import org.w3c.dom.Node;
 import org.xml.sax.InputSource;

/**
 *
 * @author aswzen
 */
 public class MainClass {

public static void main(String[] args) throws IOException, SOAPException, 
JAXBException, ParserConfigurationException

{ String xml = "<soapenv:Envelope 
xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"; 
xmlns:rm=\"rm:soap\"> <soapenv:Header/> <soapenv:Body> <rm:notifyUserInfo> 
<inPara> 
<content>UserID=123456789012345,QuotaInitialValue=102400,QuotaConsumption=38400,QuotaBalance=64000,QuotaLevel=1,NextResetTime=20140322000000,QuotaName=FUP001,TimeStamp=20140303182534</content>
 </inPara> </rm:notifyUserInfo> </soapenv:Body> </soapenv:Envelope>"; 
System.out.println("xml "+xml); SOAPMessage message = 
MessageFactory.newInstance().createMessage(null, new 
ByteArrayInputStream(xml.getBytes())); JAXBContext jaxbContext = 
JAXBContext.newInstance(PCRFNotifyUserInfoRequest.class); Unmarshaller 
jaxbUnmarshaller = jaxbContext.createUnmarshaller(); Node node = 
message.getSOAPBody().getFirstChild().getNextSibling(); DocumentBuilderFactory 
factory = DocumentBuilderFactory.newInstance(); 
factory.setNamespaceAware(true); DocumentBuilder builder = 
factory.newDocumentBuilder(); Document newDocument = builder.newDocument(); 
Node importedNode = newDocument.importNode(node, true); 
newDocument.appendChild(importedNode); Document dd = newDocument; 
PCRFNotifyUserInfoRequest response = (PCRFNotifyUserInfoRequest) 
jaxbUnmarshaller.unmarshal(dd); System.out.println("response 
"+response.getInParaContent()); PCRFNotifyUserInfoResponse pcrfResp = new 
PCRFNotifyUserInfoResponse(); pcrfResp.setResult("0", "Operation succeeded"); 
String res = createMarshal(pcrfResp, PCRFNotifyUserInfoResponse.class); 
System.out.println("results "+res); }

public static String createMarshal(Object content, Class type){
 String xmlContent = "?";
 try

{ JAXBContext jaxbContextResp = JAXBContext.newInstance(type); Marshaller 
jaxbMarshaller = jaxbContextResp.createMarshaller(); 
jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); 
StringWriter sw = new StringWriter(); jaxbMarshaller.marshal(content, sw); 
String bodyXml = sw.toString(); System.out.println("bodyXml "+bodyXml); 
MessageFactory mfactory = MessageFactory.newInstance(); SOAPMessage soapMessage 
= mfactory.createMessage(); soapMessage.getSOAPHeader().recycleNode(); SOAPBody 
soapBody = soapMessage.getSOAPBody(); DocumentBuilderFactory factory = 
DocumentBuilderFactory.newInstance(); factory.setNamespaceAware(true); 
soapBody.addDocument(convertStringToDocument(bodyXml)); SOAPEnvelope envelope = 
soapMessage.getSOAPPart().getEnvelope(); 
envelope.addNamespaceDeclaration("xsi","http://www.w3.org/2001/XMLSchema-instance";);
 envelope.addNamespaceDeclaration("xsd","http://www.w3.org/2001/XMLSchema";); 
soapMessage.saveChanges(); ByteArrayOutputStream out = new 
ByteArrayOutputStream(); soapMessage.writeTo(out); xmlContent = new 
String(out.toByteArray()); }

catch (Exception ex)

{ ex.printStackTrace(); xmlContent = "<result 
xmlns=\"\"><resultCode>1</resultCode><resultDesc>Operation error 
"+ex.getMessage()+"</resultDesc></result>"; }

return xmlContent;
 }

private static Document convertStringToDocument(String xmlStr) {
 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
 factory.setNamespaceAware(true);
 DocumentBuilder builder;
 try

{ builder = factory.newDocumentBuilder(); Document doc = builder.parse(new 
InputSource(new StringReader(xmlStr))); return doc; }

catch (Exception e)

{ e.printStackTrace(); }

return null;
 }
 }

*The error was on this part*

 

{{soapBody.addDocument(convertStringToDocument(bodyXml));}}

 

{{Any explanation? thanks}}


> org.apache.axis2.saaj.SOAPElementImpl cannot be cast to 
> org.apache.axiom.om.OMElement
> -------------------------------------------------------------------------------------
>
>                 Key: AXIS2-5983
>                 URL: https://issues.apache.org/jira/browse/AXIS2-5983
>             Project: Axis2
>          Issue Type: Bug
>          Components: saaj
>    Affects Versions: 1.7.9
>         Environment: Windows 7, 64 Bit
> RHEL 7
>            Reporter: Agus Sigit Wisnubroto
>            Priority: Major
>         Attachments: yesyse.jpg
>
>
> Hi there,
> I got a similar error with AXIS2-5770 even using version no 1.7.9,
>  The error was 
> {quote}{{*java.lang.ClassCastException: org.apache.axis2.saaj.SOAPElementImpl 
> cannot be cast to org.apache.axiom.om.OMElement*}}
>  {{2020-08-04 11:45:18 ERROR stderr - at 
> org.apache.axis2.saaj.SOAPElementImpl.addChildElement(SOAPElementImpl.java:99)}}
>  {{2020-08-04 11:45:18 ERROR stderr - at 
> org.apache.axis2.saaj.SOAPBodyImpl.toSAAJNode(SOAPBodyImpl.java:462)}}
>  {{2020-08-04 11:45:18 ERROR stderr - at 
> org.apache.axis2.saaj.SOAPBodyImpl.toSAAJNode(SOAPBodyImpl.java:458)}}
>  {{2020-08-04 11:45:18 ERROR stderr - at 
> org.apache.axis2.saaj.SOAPBodyImpl.addDocument(SOAPBodyImpl.java:298)}}
> {quote}
> How to produce it :
> *Maven*
> {code:java}
>  <dependencies> 
>  <dependency> 
>  <groupId>com.fasterxml.jackson.core</groupId> 
>  <artifactId>jackson-databind</artifactId> 
>  <version>2.5.0</version> 
>  </dependency> 
>  <dependency> 
>  <groupId>org.apache.axis2</groupId> 
>  <artifactId>axis2-jaxws</artifactId> 
>  <version>1.7.9</version> 
>  </dependency>        
>  </dependencies>{code}
> *Code*
>  
> {code:java}
> import java.io.ByteArrayInputStream;
> import java.io.ByteArrayOutputStream;
> import java.io.IOException;
> import java.io.StringReader;
> import java.io.StringWriter;
> import javax.xml.bind.JAXBContext;
> import javax.xml.bind.JAXBException;
> import javax.xml.bind.Marshaller;
> import javax.xml.bind.Unmarshaller;
> import javax.xml.parsers.DocumentBuilder;
> import javax.xml.parsers.DocumentBuilderFactory;
> import javax.xml.parsers.ParserConfigurationException;
> import javax.xml.soap.MessageFactory;
> import javax.xml.soap.SOAPBody;
> import javax.xml.soap.SOAPEnvelope;
> import javax.xml.soap.SOAPException;
> import javax.xml.soap.SOAPMessage;
> import org.w3c.dom.Document;
> import org.w3c.dom.Node;
> import org.xml.sax.InputSource;/**
>  *
>  *
>  * @author aswzen
>  */
> public class MainClass {    public static void main(String[] args) throws 
> IOException, SOAPException, JAXBException, ParserConfigurationException {
>         String xml = "<soapenv:Envelope 
> xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"; 
> xmlns:rm=\"rm:soap\"> <soapenv:Header/> <soapenv:Body> <rm:notifyUserInfo> 
> <inPara> 
> <content>UserID=123456789012345,QuotaInitialValue=102400,QuotaConsumption=38400,QuotaBalance=64000,QuotaLevel=1,NextResetTime=20140322000000,QuotaName=FUP001,TimeStamp=20140303182534</content>
>  </inPara> </rm:notifyUserInfo> </soapenv:Body> </soapenv:Envelope>";
>         System.out.println("xml " + xml);
>         SOAPMessage message = 
> MessageFactory.newInstance().createMessage(null, new 
> ByteArrayInputStream(xml.getBytes()));
>         JAXBContext jaxbContext = 
> JAXBContext.newInstance(PCRFNotifyUserInfoRequest.class);
>         Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
>         Node node = message.getSOAPBody().getFirstChild().getNextSibling();
>         DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
>         factory.setNamespaceAware(true);
>         DocumentBuilder builder = factory.newDocumentBuilder();
>         Document newDocument = builder.newDocument();
>         Node importedNode = newDocument.importNode(node, true);
>         newDocument.appendChild(importedNode);
>         Document dd = newDocument;
>         PCRFNotifyUserInfoRequest response = (PCRFNotifyUserInfoRequest) 
> jaxbUnmarshaller.unmarshal(dd);
>         System.out.println("response " + response.getInParaContent());
>         PCRFNotifyUserInfoResponse pcrfResp = new 
> PCRFNotifyUserInfoResponse();
>         pcrfResp.setResult("0", "Operation succeeded");
>         String res = createMarshal(pcrfResp, 
> PCRFNotifyUserInfoResponse.class);
>         System.out.println("results " + res);
>     }    public static String createMarshal(Object content, Class type) {
>         String xmlContent = "?";
>         try {
>             JAXBContext jaxbContextResp = JAXBContext.newInstance(type);
>             Marshaller jaxbMarshaller = jaxbContextResp.createMarshaller();
>             jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, 
> Boolean.TRUE);
>             StringWriter sw = new StringWriter();
>             jaxbMarshaller.marshal(content, sw);
>             String bodyXml = sw.toString();
>             System.out.println("bodyXml " + bodyXml);
>             MessageFactory mfactory = MessageFactory.newInstance();
>             SOAPMessage soapMessage = mfactory.createMessage();
>             soapMessage.getSOAPHeader().recycleNode();
>             SOAPBody soapBody = soapMessage.getSOAPBody();
>             DocumentBuilderFactory factory = 
> DocumentBuilderFactory.newInstance();
>             factory.setNamespaceAware(true);
>             soapBody.addDocument(convertStringToDocument(bodyXml));
>             SOAPEnvelope envelope = soapMessage.getSOAPPart().getEnvelope();
>             envelope.addNamespaceDeclaration("xsi", 
> "http://www.w3.org/2001/XMLSchema-instance";);
>             envelope.addNamespaceDeclaration("xsd", 
> "http://www.w3.org/2001/XMLSchema";);
>             soapMessage.saveChanges();
>             ByteArrayOutputStream out = new ByteArrayOutputStream();
>             soapMessage.writeTo(out);
>             xmlContent = new String(out.toByteArray());
>         } catch (Exception ex) {
>             ex.printStackTrace();
>             xmlContent = "<result 
> xmlns=\"\"><resultCode>1</resultCode><resultDesc>Operation error " + 
> ex.getMessage() + "</resultDesc></result>";
>         }        return xmlContent;
>     }    private static Document convertStringToDocument(String xmlStr) {
>         DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
>         factory.setNamespaceAware(true);
>         DocumentBuilder builder;
>         try {
>             builder = factory.newDocumentBuilder();
>             Document doc = builder.parse(new InputSource(new 
> StringReader(xmlStr)));
>             return doc;
>         } catch (Exception e) {
>             e.printStackTrace();
>         }        return null;
>     }
> }{code}
> *The error was on this part*
> {code:java}
> soapBody.addDocument(convertStringToDocument(bodyXml)); {code}
> Any explanation? thanks



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to