axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Agus Sigit Wisnubroto (Jira)" <j...@apache.org>
Subject [jira] [Updated] (AXIS2-5983) org.apache.axis2.saaj.SOAPElementImpl cannot be cast to org.apache.axiom.om.OMElement
Date Tue, 04 Aug 2020 05:20:00 GMT

     [ 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 an 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}}

  was:
Hi there,

I got an 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*

{{package id.asw.web.sandbox;}}{{import java.io.ByteArrayInputStream;}}
{{import java.io.ByteArrayOutputStream;}}
{{import java.io.IOException;}}
{{import java.io.InputStream;}}
{{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.namespace.QName;}}
{{import javax.xml.parsers.DocumentBuilder;}}
{{import javax.xml.parsers.DocumentBuilderFactory;}}
{{import javax.xml.parsers.ParserConfigurationException;}}
{{import javax.xml.soap.MessageFactory;}}
{{import javax.xml.soap.MimeHeader;}}
{{import javax.xml.soap.MimeHeaders;}}
{{import javax.xml.soap.SOAPBody;}}
{{import javax.xml.soap.SOAPEnvelope;}}
{{import javax.xml.soap.SOAPException;}}
{{import javax.xml.soap.SOAPHeader;}}
{{import javax.xml.soap.SOAPMessage;}}
{{import javax.xml.soap.SOAPPart;}}
{{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 an 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}}



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

---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@axis.apache.org
For additional commands, e-mail: java-dev-help@axis.apache.org


Mime
View raw message