You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@synapse.apache.org by in...@apache.org on 2009/02/16 11:44:48 UTC
svn commit: r744887 -
/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/xquery/XQueryMediator.java
Author: indika
Date: Mon Feb 16 10:44:46 2009
New Revision: 744887
URL: http://svn.apache.org/viewvc?rev=744887&view=rev
Log:
fix for SYNAPSE-503
Modified:
synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/xquery/XQueryMediator.java
Modified: synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/xquery/XQueryMediator.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/xquery/XQueryMediator.java?rev=744887&r1=744886&r2=744887&view=diff
==============================================================================
--- synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/xquery/XQueryMediator.java (original)
+++ synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/xquery/XQueryMediator.java Mon Feb 16 10:44:46 2009
@@ -41,6 +41,7 @@
import javax.xml.namespace.QName;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
import javax.xml.transform.dom.DOMSource;
import javax.activation.DataHandler;
import java.io.StringReader;
@@ -539,54 +540,15 @@
break;
}
case (XQItemType.XQITEMKIND_DOCUMENT): {
- if (value instanceof OMNode) {
- if (useDOMSource) {
- xqDynamicContext.
- bindObject(name,
- new DOMSource(((Element) ElementHelper.
- importOMElement((OMElement) value,
- DOOMAbstractFactory.getOMFactory())).
- getOwnerDocument()), null);
- } else {
- xqDynamicContext.bindDocument(name,
- new InputSource(SynapseConfigUtils.getInputStream(
- value)));
- }
- }
+ bindOMNode(name, value, xqDynamicContext);
break;
}
case (XQItemType.XQITEMKIND_ELEMENT): {
- if (value instanceof OMNode) {
- if (useDOMSource) {
- xqDynamicContext.
- bindObject(name,
- new DOMSource(((Element) ElementHelper.
- importOMElement((OMElement) value,
- DOOMAbstractFactory.getOMFactory())).
- getOwnerDocument()), null);
- } else {
- xqDynamicContext.bindDocument(name,
- new InputSource(
- SynapseConfigUtils.getInputStream(value)));
- }
- }
+ bindOMNode(name, value, xqDynamicContext);
break;
}
case (XQItemType.XQITEMKIND_DOCUMENT_ELEMENT): {
- if (value instanceof OMNode) {
- if (useDOMSource) {
- xqDynamicContext.
- bindObject(name,
- new DOMSource(((Element) ElementHelper.
- importOMElement((OMElement) value,
- DOOMAbstractFactory.getOMFactory())).
- getOwnerDocument()), null);
- } else {
- xqDynamicContext.bindDocument(name,
- new InputSource(SynapseConfigUtils.getInputStream(
- value)));
- }
- }
+ bindOMNode(name, value, xqDynamicContext);
break;
}
default: {
@@ -600,6 +562,43 @@
}
+ private void bindOMNode(QName name, Object value, XQDynamicContext xqDynamicContext) throws XQException {
+
+ OMElement varibleValue = null;
+ if (value instanceof String) {
+ varibleValue = createOMElement((String) value);
+ } else if (value instanceof OMElement) {
+ varibleValue = (OMElement) value;
+ }
+
+ if (varibleValue != null) {
+ if (useDOMSource) {
+ xqDynamicContext.
+ bindObject(name,
+ new DOMSource(((Element) ElementHelper.
+ importOMElement(varibleValue,
+ DOOMAbstractFactory.getOMFactory())).
+ getOwnerDocument()), null);
+ } else {
+ xqDynamicContext.bindDocument(name,
+ new InputSource(SynapseConfigUtils.getInputStream(
+ varibleValue)));
+ }
+ }
+ }
+
+ private OMElement createOMElement(String xml) {
+ try {
+ XMLStreamReader reader = XMLInputFactory.newInstance().createXMLStreamReader(
+ new StringReader(xml));
+ StAXOMBuilder builder = new StAXOMBuilder(reader);
+ return builder.getDocumentElement();
+ } catch (XMLStreamException e) {
+ handleException("Malform XML : " + xml);
+ }
+ return null;
+ }
+
private void handleException(String msg, Exception e) {
log.error(msg, e);
throw new SynapseException(msg, e);