[prev in list] [next in list] [prev in thread] [next in thread]
List: xmlbeans-dev
Subject: [jira] Updated: (XMLBEANS-266) javax.xml.stream.XMLStreamException:
From: "Wesley King (JIRA)" <xmlbeans-dev () xml ! apache ! org>
Date: 2006-04-13 20:51:07
Message-ID: 38616552.1144961467695.JavaMail.jira () brutus
[Download RAW message or body]
[ http://issues.apache.org/jira/browse/XMLBEANS-266?page=all ]
Wesley King updated XMLBEANS-266:
---------------------------------
Description:
I have an soap message receiver class that extends AbstractInOutSyncMessageReceiver. \
I use this class to handle my web service requests. Inside the \
invokeBusinessLogic(MessageContext, MessageContext) method, I am attempting to parse \
the envelope header first and then the body. The header contains an element called \
MultiSpeakMsgHeader and the body contains an element called PingURL. All the XML \
objects were created using XMLBeans. The web service works fine if I only attempt to \
parse the body's first element creating the PingURLDocument. If I try to parse the \
header's first element creating the MultiSpeakMsgHeaderDocument, that works fine, but \
right afterwards if I try to parse the body's first element I get an exception: \
XMLStreamException: problem accessing parser.
Am I doing something wrong? If so, any help would be appreciated. If not, is this a \
known bug/issue? And is there a work around? Also I wasn't sure if this is the \
right place to submit questions. What is the normal procedure for submitting \
questions or possible bugs?
Include below are three files that may or may not be helpfull. (1) The \
AbstractInOutSyncMessageReceiver java file. (2) The skeleton java file that handles \
the service. And (3) the xml I'm sending to the server. As I mentioned above, \
everything works fine if I don't attempt to read the header. As a side note, the \
reason I need to read the header is to check for a valid user id and password. If \
there is another way to check/validate header information, I'm open to suggestions.
=====================================
=====================================
(3) XML Request being sent
---------------------------------------
<?xml version='1.0' encoding='utf-8'?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope" />
<soapenv:Header>
<MultiSpeakMsgHeader UserID="test" Pwd="test" \
xmlns="http://www.multispeak.org/Version_3.0" /> </soapenv:Header>
<soapenv:Body>
<PingURL xmlns="http://www.multispeak.org/Version_3.0" />
</soapenv:Body>
</soapenv:Envelope>
=====================================
=====================================
=====================================
=====================================
(2) Java class to handle request
--------------------------------------------
package com.daffron.multispeak;
import java.lang.reflect.Method;
import java.util.Calendar;
import java.util.GregorianCalendar;
import org.apache.xmlbeans.XmlObject;
import org.multispeak.version30.*;
public class MultispeakSoapSkeleton {
public PingURLResponseDocument PingURL(PingURLDocument requestDoc) {
PingURLResponseDocument pingURLRespDoc = null;
try {
pingURLRespDoc = (PingURLResponseDocument) \
getReturnObject(PingURLResponseDocument.class); }
catch (Exception e) {
System.out.println("Failed to create return object for PingURL request.");
}
if (pingURLRespDoc != null) {
pingURLRespDoc.addNewPingURLResponse();
}
return pingURLRespDoc;
}
protected XmlObject getReturnObject(Class type) throws Exception {
Method creatorMethod = null;
if (XmlObject.class.isAssignableFrom(type)) {
Class[] declaredClasses = type.getDeclaredClasses();
for (int i = 0; i < declaredClasses.length; i++) {
Class declaredClass = declaredClasses[i];
if (declaredClass.getName().endsWith("$Factory")) {
creatorMethod = declaredClass.getMethod("newInstance", null);
break;
}
}
}
if (creatorMethod != null) {
return (XmlObject) creatorMethod.invoke(null, null);
}
else {
throw new Exception("Creator not found!");
}
}
}
=====================================
=====================================
=====================================
=====================================
(1) AbstractInOutSyncMessageReceiver java file
-----------------------------------------------------------------
package com.daffron.multispeak;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import javax.xml.namespace.QName;
import org.apache.axis2.*;
import org.apache.axis2.context.*;
import org.apache.axis2.description.*;
import org.apache.axis2.engine.*;
import org.apache.axis2.om.*;
import org.apache.axis2.om.impl.OMNodeEx;
import org.apache.axis2.om.impl.llom.builder.StAXOMBuilder;
import org.apache.axis2.receivers.*;
import org.apache.axis2.soap.*;
import org.apache.axis2.util.StreamWrapper;
import org.apache.xmlbeans.XmlObject;
import org.multispeak.version30.*;
/**
*
*/
public class MultispeakSoapMessageReceiver extends AbstractInOutSyncMessageReceiver {
//
private static QName[] qNameArray = {};
public void invokeBusinessLogic(MessageContext msgContext, MessageContext \
newMsgContext) throws AxisFault { try {
// get the implementation class for the Web Service
Object obj = getTheImplementationObject(msgContext);
//Inject the Message Context if it is asked for
DependencyManager.configureBusinessLogicProvider(obj, msgContext, newMsgContext);
MultispeakSoapSkeleton skel = (MultispeakSoapSkeleton) obj;
//Out Envelop
SOAPEnvelope envelope = null;
//Find the axisOperation that has been set by the Dispatch phase.
AxisOperation op = msgContext.getOperationContext().getAxisOperation();
if (op == null) {
throw new AxisFault(
"Operation is not located, if this is doclit style the SOAP-ACTION should \
specified via the SOAP Action to use the RawXMLProvider"); }
String methodName;
if ((op.getName() != null) & ((methodName = op.getName().getLocalPart()) != null)) \
{ SOAPEnvelope tempEnv = msgContext.getEnvelope();
// NOTE: validate header
SOAPHeader header = tempEnv.getHeader();
if (header != null) {
OMElement headerE = header.getFirstElement();
validateHeader((MultiSpeakMsgHeaderDocument) fromOM(headerE, \
MultiSpeakMsgHeaderDocument.class)); }
if ("PingURL".equals(methodName)) {
PingURLResponseDocument respDoc = null;
//doc style
respDoc = skel.PingURL((PingURLDocument) \
fromOM(msgContext.getEnvelope().getBody().getFirstElement(), \
PingURLDocument.class));
envelope = toEnvelope(getSOAPFactory(msgContext), respDoc);
}
newMsgContext.setEnvelope(envelope);
}
}
catch (Exception e) {
throw AxisFault.makeFault(e);
}
}
private OMElement toOM(MultiSpeakMsgHeaderDocument param) {
StAXOMBuilder builder = new StAXOMBuilder(OMAbstractFactory.getOMFactory(), new \
StreamWrapper(param.newXMLStreamReader()));
OMElement documentElement = builder.getDocumentElement();
optimizeContent(documentElement, qNameArray);
((OMNodeEx) documentElement).setParent(null);
return documentElement;
}
private SOAPEnvelope toEnvelope(SOAPFactory factory, MultiSpeakMsgHeaderDocument \
param) { SOAPEnvelope envelope = factory.getDefaultEnvelope();
envelope.getBody().addChild(toOM(param));
return envelope;
}
private boolean validateHeader(MultiSpeakMsgHeaderDocument headerDoc) {
return true;
}
private OMElement toOM(PingURLResponseDocument param) {
StAXOMBuilder builder = new StAXOMBuilder(OMAbstractFactory.getOMFactory(), new \
StreamWrapper(param.newXMLStreamReader()));
OMElement documentElement = builder.getDocumentElement();
optimizeContent(documentElement, qNameArray);
((OMNodeEx) documentElement).setParent(null);
return documentElement;
}
private SOAPEnvelope toEnvelope(SOAPFactory factory, PingURLResponseDocument param) \
{ SOAPEnvelope envelope = factory.getDefaultEnvelope();
envelope.getBody().addChild(toOM(param));
return envelope;
}
private OMElement toOM(PingURLDocument param) {
StAXOMBuilder builder = new StAXOMBuilder(OMAbstractFactory.getOMFactory(), new \
StreamWrapper(param.newXMLStreamReader()));
OMElement documentElement = builder.getDocumentElement();
optimizeContent(documentElement, qNameArray);
((OMNodeEx) documentElement).setParent(null);
return documentElement;
}
private SOAPEnvelope toEnvelope(SOAPFactory factory, PingURLDocument param) {
SOAPEnvelope envelope = factory.getDefaultEnvelope();
envelope.getBody().addChild(toOM(param));
return envelope;
}
public XmlObject fromOM(OMElement param, Class type) {
try {
if (MultiSpeakMsgHeaderDocument.class.equals(type)) {
return MultiSpeakMsgHeaderDocument.Factory.parse(param.getXMLStreamReaderWithoutCaching());
}
if (PingURLResponseDocument.class.equals(type)) {
return PingURLResponseDocument.Factory.parse(param.getXMLStreamReaderWithoutCaching());
}
if (PingURLDocument.class.equals(type)) {
return PingURLDocument.Factory.parse(param.getXMLStreamReaderWithoutCaching());
}
}
catch (Exception e) {
throw new RuntimeException("Data binding error", e);
}
return null;
}
private void optimizeContent(org.apache.axis2.om.OMElement element, \
javax.xml.namespace.QName[] qNames) { for (int i = 0; i < qNames.length; i++) {
markElementsAsOptimized(qNames[i], element);
}
}
private void markElementsAsOptimized(javax.xml.namespace.QName qName, \
org.apache.axis2.om.OMElement rootElt) { if (rootElt.getQName().equals(qName)) {
//get the text node and mark it
org.apache.axis2.om.OMNode node = rootElt.getFirstOMChild();
if (node.getType() == org.apache.axis2.om.OMNode.TEXT_NODE) {
((org.apache.axis2.om.OMText) node).setOptimize(true);
}
}
java.util.Iterator childElements = rootElt.getChildElements();
while (childElements.hasNext()) {
markElementsAsOptimized(qName, (org.apache.axis2.om.OMElement) \
childElements.next()); }
}
}
=====================================
=====================================
was:
I have an soap message receiver class that extends AbstractInOutSyncMessageReceiver. \
I use this class to handle my web service requests. Inside the \
invokeBusinessLogic(MessageContext, MessageContext) method, I am attempting to parse \
the envelope header first and then the body. The header contains an element called \
MultiSpeakMsgHeader and the body contains an element called PingURL. All the XML \
objects were created using XMLBeans. The web service works fine if I only attempt to \
parse the body's first element creating the PingURLDocument. If I try to parse the \
header's first element creating the MultiSpeakMsgHeaderDocument, that works fine, but \
right afterwards if I try to parse the body's first element I get an exception: \
XMLStreamException: problem accessing parser.
Am I doing something wrong? If so, any help would be appreciated. If not, is this a \
known bug/issue? And is there a work around?
Include below are three files that may or may not be helpfull. (1) The \
AbstractInOutSyncMessageReceiver java file. (2) The skeleton java file that handles \
the service. And (3) the xml I'm sending to the server. As I mentioned above, \
everything works fine if I don't attempt to read the header. As a side note, the \
reason I need to read the header is to check for a valid user id and password. If \
there is another way to check/validate header information, I'm open to suggestions.
=====================================
=====================================
(3) XML Request being sent
---------------------------------------
<?xml version='1.0' encoding='utf-8'?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope" />
<soapenv:Header>
<MultiSpeakMsgHeader UserID="test" Pwd="test" \
xmlns="http://www.multispeak.org/Version_3.0" /> </soapenv:Header>
<soapenv:Body>
<PingURL xmlns="http://www.multispeak.org/Version_3.0" />
</soapenv:Body>
</soapenv:Envelope>
=====================================
=====================================
=====================================
=====================================
(2) Java class to handle request
--------------------------------------------
package com.daffron.multispeak;
import java.lang.reflect.Method;
import java.util.Calendar;
import java.util.GregorianCalendar;
import org.apache.xmlbeans.XmlObject;
import org.multispeak.version30.*;
public class MultispeakSoapSkeleton {
public PingURLResponseDocument PingURL(PingURLDocument requestDoc) {
PingURLResponseDocument pingURLRespDoc = null;
try {
pingURLRespDoc = (PingURLResponseDocument) \
getReturnObject(PingURLResponseDocument.class); }
catch (Exception e) {
System.out.println("Failed to create return object for PingURL request.");
}
if (pingURLRespDoc != null) {
pingURLRespDoc.addNewPingURLResponse();
}
return pingURLRespDoc;
}
protected XmlObject getReturnObject(Class type) throws Exception {
Method creatorMethod = null;
if (XmlObject.class.isAssignableFrom(type)) {
Class[] declaredClasses = type.getDeclaredClasses();
for (int i = 0; i < declaredClasses.length; i++) {
Class declaredClass = declaredClasses[i];
if (declaredClass.getName().endsWith("$Factory")) {
creatorMethod = declaredClass.getMethod("newInstance", null);
break;
}
}
}
if (creatorMethod != null) {
return (XmlObject) creatorMethod.invoke(null, null);
}
else {
throw new Exception("Creator not found!");
}
}
}
=====================================
=====================================
=====================================
=====================================
(1) AbstractInOutSyncMessageReceiver java file
-----------------------------------------------------------------
package com.daffron.multispeak;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import javax.xml.namespace.QName;
import org.apache.axis2.*;
import org.apache.axis2.context.*;
import org.apache.axis2.description.*;
import org.apache.axis2.engine.*;
import org.apache.axis2.om.*;
import org.apache.axis2.om.impl.OMNodeEx;
import org.apache.axis2.om.impl.llom.builder.StAXOMBuilder;
import org.apache.axis2.receivers.*;
import org.apache.axis2.soap.*;
import org.apache.axis2.util.StreamWrapper;
import org.apache.xmlbeans.XmlObject;
import org.multispeak.version30.*;
/**
*
*/
public class MultispeakSoapMessageReceiver extends AbstractInOutSyncMessageReceiver {
//
private static QName[] qNameArray = {};
public void invokeBusinessLogic(MessageContext msgContext, MessageContext \
newMsgContext) throws AxisFault { try {
// get the implementation class for the Web Service
Object obj = getTheImplementationObject(msgContext);
//Inject the Message Context if it is asked for
DependencyManager.configureBusinessLogicProvider(obj, msgContext, newMsgContext);
MultispeakSoapSkeleton skel = (MultispeakSoapSkeleton) obj;
//Out Envelop
SOAPEnvelope envelope = null;
//Find the axisOperation that has been set by the Dispatch phase.
AxisOperation op = msgContext.getOperationContext().getAxisOperation();
if (op == null) {
throw new AxisFault(
"Operation is not located, if this is doclit style the SOAP-ACTION should \
specified via the SOAP Action to use the RawXMLProvider"); }
String methodName;
if ((op.getName() != null) & ((methodName = op.getName().getLocalPart()) != null)) \
{ SOAPEnvelope tempEnv = msgContext.getEnvelope();
// NOTE: validate header
SOAPHeader header = tempEnv.getHeader();
if (header != null) {
OMElement headerE = header.getFirstElement();
validateHeader((MultiSpeakMsgHeaderDocument) fromOM(headerE, \
MultiSpeakMsgHeaderDocument.class)); }
if ("PingURL".equals(methodName)) {
PingURLResponseDocument respDoc = null;
//doc style
respDoc = skel.PingURL((PingURLDocument) \
fromOM(msgContext.getEnvelope().getBody().getFirstElement(), \
PingURLDocument.class));
envelope = toEnvelope(getSOAPFactory(msgContext), respDoc);
}
newMsgContext.setEnvelope(envelope);
}
}
catch (Exception e) {
throw AxisFault.makeFault(e);
}
}
private OMElement toOM(MultiSpeakMsgHeaderDocument param) {
StAXOMBuilder builder = new StAXOMBuilder(OMAbstractFactory.getOMFactory(), new \
StreamWrapper(param.newXMLStreamReader()));
OMElement documentElement = builder.getDocumentElement();
optimizeContent(documentElement, qNameArray);
((OMNodeEx) documentElement).setParent(null);
return documentElement;
}
private SOAPEnvelope toEnvelope(SOAPFactory factory, MultiSpeakMsgHeaderDocument \
param) { SOAPEnvelope envelope = factory.getDefaultEnvelope();
envelope.getBody().addChild(toOM(param));
return envelope;
}
private boolean validateHeader(MultiSpeakMsgHeaderDocument headerDoc) {
return true;
}
private OMElement toOM(PingURLResponseDocument param) {
StAXOMBuilder builder = new StAXOMBuilder(OMAbstractFactory.getOMFactory(), new \
StreamWrapper(param.newXMLStreamReader()));
OMElement documentElement = builder.getDocumentElement();
optimizeContent(documentElement, qNameArray);
((OMNodeEx) documentElement).setParent(null);
return documentElement;
}
private SOAPEnvelope toEnvelope(SOAPFactory factory, PingURLResponseDocument param) \
{ SOAPEnvelope envelope = factory.getDefaultEnvelope();
envelope.getBody().addChild(toOM(param));
return envelope;
}
private OMElement toOM(PingURLDocument param) {
StAXOMBuilder builder = new StAXOMBuilder(OMAbstractFactory.getOMFactory(), new \
StreamWrapper(param.newXMLStreamReader()));
OMElement documentElement = builder.getDocumentElement();
optimizeContent(documentElement, qNameArray);
((OMNodeEx) documentElement).setParent(null);
return documentElement;
}
private SOAPEnvelope toEnvelope(SOAPFactory factory, PingURLDocument param) {
SOAPEnvelope envelope = factory.getDefaultEnvelope();
envelope.getBody().addChild(toOM(param));
return envelope;
}
public XmlObject fromOM(OMElement param, Class type) {
try {
if (MultiSpeakMsgHeaderDocument.class.equals(type)) {
return MultiSpeakMsgHeaderDocument.Factory.parse(param.getXMLStreamReaderWithoutCaching());
}
if (PingURLResponseDocument.class.equals(type)) {
return PingURLResponseDocument.Factory.parse(param.getXMLStreamReaderWithoutCaching());
}
if (PingURLDocument.class.equals(type)) {
return PingURLDocument.Factory.parse(param.getXMLStreamReaderWithoutCaching());
}
}
catch (Exception e) {
throw new RuntimeException("Data binding error", e);
}
return null;
}
private void optimizeContent(org.apache.axis2.om.OMElement element, \
javax.xml.namespace.QName[] qNames) { for (int i = 0; i < qNames.length; i++) {
markElementsAsOptimized(qNames[i], element);
}
}
private void markElementsAsOptimized(javax.xml.namespace.QName qName, \
org.apache.axis2.om.OMElement rootElt) { if (rootElt.getQName().equals(qName)) {
//get the text node and mark it
org.apache.axis2.om.OMNode node = rootElt.getFirstOMChild();
if (node.getType() == org.apache.axis2.om.OMNode.TEXT_NODE) {
((org.apache.axis2.om.OMText) node).setOptimize(true);
}
}
java.util.Iterator childElements = rootElt.getChildElements();
while (childElements.hasNext()) {
markElementsAsOptimized(qName, (org.apache.axis2.om.OMElement) \
childElements.next()); }
}
}
=====================================
=====================================
> javax.xml.stream.XMLStreamException: problem accessing the parser
> -----------------------------------------------------------------
>
> Key: XMLBEANS-266
> URL: http://issues.apache.org/jira/browse/XMLBEANS-266
> Project: XMLBeans
> Type: Bug
> Components: Binding
> Versions: Version 2.1
> Environment: Windows XP, Eclipse w/ MyEclipse plugin, Tomcat
> Reporter: Wesley King
>
> I have an soap message receiver class that extends \
> AbstractInOutSyncMessageReceiver. I use this class to handle my web service \
> requests. Inside the invokeBusinessLogic(MessageContext, MessageContext) method, I \
> am attempting to parse the envelope header first and then the body. The header \
> contains an element called MultiSpeakMsgHeader and the body contains an element \
> called PingURL. All the XML objects were created using XMLBeans. The web service \
> works fine if I only attempt to parse the body's first element creating the \
> PingURLDocument. If I try to parse the header's first element creating the \
> MultiSpeakMsgHeaderDocument, that works fine, but right afterwards if I try to \
> parse the body's first element I get an exception: XMLStreamException: problem \
> accessing parser. Am I doing something wrong? If so, any help would be \
> appreciated. If not, is this a known bug/issue? And is there a work around? Also \
> I wasn't sure if this is the right place to submit questions. What is the normal \
> procedure for submitting questions or possible bugs? Include below are three files \
> that may or may not be helpfull. (1) The AbstractInOutSyncMessageReceiver java \
> file. (2) The skeleton java file that handles the service. And (3) the xml I'm \
> sending to the server. As I mentioned above, everything works fine if I don't \
> attempt to read the header. As a side note, the reason I need to read the header \
> is to check for a valid user id and password. If there is another way to \
> check/validate header information, I'm open to suggestions. \
> ===================================== =====================================
> (3) XML Request being sent
> ---------------------------------------
> <?xml version='1.0' encoding='utf-8'?>
> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope" />
> <soapenv:Header>
> <MultiSpeakMsgHeader UserID="test" Pwd="test" \
> xmlns="http://www.multispeak.org/Version_3.0" /> </soapenv:Header>
> <soapenv:Body>
> <PingURL xmlns="http://www.multispeak.org/Version_3.0" />
> </soapenv:Body>
> </soapenv:Envelope>
> =====================================
> =====================================
> =====================================
> =====================================
> (2) Java class to handle request
> --------------------------------------------
> package com.daffron.multispeak;
> import java.lang.reflect.Method;
> import java.util.Calendar;
> import java.util.GregorianCalendar;
> import org.apache.xmlbeans.XmlObject;
> import org.multispeak.version30.*;
> public class MultispeakSoapSkeleton {
> public PingURLResponseDocument PingURL(PingURLDocument requestDoc) {
> PingURLResponseDocument pingURLRespDoc = null;
> try {
> pingURLRespDoc = (PingURLResponseDocument) \
> getReturnObject(PingURLResponseDocument.class); }
> catch (Exception e) {
> System.out.println("Failed to create return object for PingURL request.");
> }
> if (pingURLRespDoc != null) {
> pingURLRespDoc.addNewPingURLResponse();
> }
> return pingURLRespDoc;
> }
> protected XmlObject getReturnObject(Class type) throws Exception {
> Method creatorMethod = null;
> if (XmlObject.class.isAssignableFrom(type)) {
> Class[] declaredClasses = type.getDeclaredClasses();
> for (int i = 0; i < declaredClasses.length; i++) {
> Class declaredClass = declaredClasses[i];
> if (declaredClass.getName().endsWith("$Factory")) {
> creatorMethod = declaredClass.getMethod("newInstance", null);
> break;
> }
> }
> }
> if (creatorMethod != null) {
> return (XmlObject) creatorMethod.invoke(null, null);
> }
> else {
> throw new Exception("Creator not found!");
> }
> }
> }
> =====================================
> =====================================
> =====================================
> =====================================
> (1) AbstractInOutSyncMessageReceiver java file
> -----------------------------------------------------------------
> package com.daffron.multispeak;
> import java.util.ArrayList;
> import java.util.Collections;
> import java.util.List;
> import javax.xml.namespace.QName;
> import org.apache.axis2.*;
> import org.apache.axis2.context.*;
> import org.apache.axis2.description.*;
> import org.apache.axis2.engine.*;
> import org.apache.axis2.om.*;
> import org.apache.axis2.om.impl.OMNodeEx;
> import org.apache.axis2.om.impl.llom.builder.StAXOMBuilder;
> import org.apache.axis2.receivers.*;
> import org.apache.axis2.soap.*;
> import org.apache.axis2.util.StreamWrapper;
> import org.apache.xmlbeans.XmlObject;
> import org.multispeak.version30.*;
> /**
> *
> */
> public class MultispeakSoapMessageReceiver extends AbstractInOutSyncMessageReceiver \
> { //
> private static QName[] qNameArray = {};
> public void invokeBusinessLogic(MessageContext msgContext, MessageContext \
> newMsgContext) throws AxisFault { try {
> // get the implementation class for the Web Service
> Object obj = getTheImplementationObject(msgContext);
> //Inject the Message Context if it is asked for
> DependencyManager.configureBusinessLogicProvider(obj, msgContext, \
> newMsgContext); MultispeakSoapSkeleton skel = (MultispeakSoapSkeleton) obj;
> //Out Envelop
> SOAPEnvelope envelope = null;
> //Find the axisOperation that has been set by the Dispatch phase.
> AxisOperation op = msgContext.getOperationContext().getAxisOperation();
> if (op == null) {
> throw new AxisFault(
> "Operation is not located, if this is doclit style the SOAP-ACTION should \
> specified via the SOAP Action to use the RawXMLProvider"); }
> String methodName;
> if ((op.getName() != null) & ((methodName = op.getName().getLocalPart()) != \
> null)) { SOAPEnvelope tempEnv = msgContext.getEnvelope();
> // NOTE: validate header
> SOAPHeader header = tempEnv.getHeader();
> if (header != null) {
> OMElement headerE = header.getFirstElement();
> validateHeader((MultiSpeakMsgHeaderDocument) fromOM(headerE, \
> MultiSpeakMsgHeaderDocument.class)); }
> if ("PingURL".equals(methodName)) {
> PingURLResponseDocument respDoc = null;
> //doc style
> respDoc = skel.PingURL((PingURLDocument) \
> fromOM(msgContext.getEnvelope().getBody().getFirstElement(), \
> PingURLDocument.class)); envelope = toEnvelope(getSOAPFactory(msgContext), \
> respDoc); }
> newMsgContext.setEnvelope(envelope);
> }
> }
> catch (Exception e) {
> throw AxisFault.makeFault(e);
> }
> }
>
> private OMElement toOM(MultiSpeakMsgHeaderDocument param) {
> StAXOMBuilder builder = new StAXOMBuilder(OMAbstractFactory.getOMFactory(), new \
> StreamWrapper(param.newXMLStreamReader())); OMElement documentElement = \
> builder.getDocumentElement(); optimizeContent(documentElement, qNameArray);
> ((OMNodeEx) documentElement).setParent(null);
> return documentElement;
> }
> private SOAPEnvelope toEnvelope(SOAPFactory factory, MultiSpeakMsgHeaderDocument \
> param) { SOAPEnvelope envelope = factory.getDefaultEnvelope();
> envelope.getBody().addChild(toOM(param));
> return envelope;
> }
> private boolean validateHeader(MultiSpeakMsgHeaderDocument headerDoc) {
> return true;
> }
> private OMElement toOM(PingURLResponseDocument param) {
> StAXOMBuilder builder = new StAXOMBuilder(OMAbstractFactory.getOMFactory(), new \
> StreamWrapper(param.newXMLStreamReader())); OMElement documentElement = \
> builder.getDocumentElement(); optimizeContent(documentElement, qNameArray);
> ((OMNodeEx) documentElement).setParent(null);
> return documentElement;
> }
> private SOAPEnvelope toEnvelope(SOAPFactory factory, PingURLResponseDocument \
> param) { SOAPEnvelope envelope = factory.getDefaultEnvelope();
> envelope.getBody().addChild(toOM(param));
> return envelope;
> }
> private OMElement toOM(PingURLDocument param) {
> StAXOMBuilder builder = new StAXOMBuilder(OMAbstractFactory.getOMFactory(), new \
> StreamWrapper(param.newXMLStreamReader())); OMElement documentElement = \
> builder.getDocumentElement(); optimizeContent(documentElement, qNameArray);
> ((OMNodeEx) documentElement).setParent(null);
> return documentElement;
> }
> private SOAPEnvelope toEnvelope(SOAPFactory factory, PingURLDocument param) {
> SOAPEnvelope envelope = factory.getDefaultEnvelope();
> envelope.getBody().addChild(toOM(param));
> return envelope;
> }
> public XmlObject fromOM(OMElement param, Class type) {
> try {
> if (MultiSpeakMsgHeaderDocument.class.equals(type)) {
> return MultiSpeakMsgHeaderDocument.Factory.parse(param.getXMLStreamReaderWithoutCaching());
> }
> if (PingURLResponseDocument.class.equals(type)) {
> return PingURLResponseDocument.Factory.parse(param.getXMLStreamReaderWithoutCaching());
> }
> if (PingURLDocument.class.equals(type)) {
> return PingURLDocument.Factory.parse(param.getXMLStreamReaderWithoutCaching());
> }
> }
> catch (Exception e) {
> throw new RuntimeException("Data binding error", e);
> }
> return null;
> }
> private void optimizeContent(org.apache.axis2.om.OMElement element, \
> javax.xml.namespace.QName[] qNames) { for (int i = 0; i < qNames.length; i++) {
> markElementsAsOptimized(qNames[i], element);
> }
> }
> private void markElementsAsOptimized(javax.xml.namespace.QName qName, \
> org.apache.axis2.om.OMElement rootElt) { if (rootElt.getQName().equals(qName)) {
> //get the text node and mark it
> org.apache.axis2.om.OMNode node = rootElt.getFirstOMChild();
> if (node.getType() == org.apache.axis2.om.OMNode.TEXT_NODE) {
> ((org.apache.axis2.om.OMText) node).setOptimize(true);
> }
> }
> java.util.Iterator childElements = rootElt.getChildElements();
> while (childElements.hasNext()) {
> markElementsAsOptimized(qName, (org.apache.axis2.om.OMElement) \
> childElements.next()); }
> }
> }
> =====================================
> =====================================
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@xmlbeans.apache.org
For additional commands, e-mail: dev-help@xmlbeans.apache.org
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic