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);