[ 
https://issues.apache.org/jira/browse/AXIS2-5983?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17171754#comment-17171754
 ] 

Robert Lazarski commented on AXIS2-5983:
----------------------------------------

This issue seems similar to AXIS2-5770, that was fixed a few years ago.

However this line is probably not the right one in source control, which is an 
else statement. 

{{org.apache.axis2.saaj.SOAPElementImpl.addChildElement(SOAPElementImpl.java:99)}}

By looking at AXIS2-5770 and checking out the source from git and rebuilding, 
you'll have to help us find the problem.

git clone https://github.com/apache/axis-axis2-java-core.git

 

 

 

> 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*
>  <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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to