Author: antelder
Date: Wed Nov 22 10:03:36 2006
New Revision: 478261

URL: http://svn.apache.org/viewvc?view=rev&rev=478261
Log:
Fix bug in JavaScript XML convertor where the outer XML element may get lost

Modified:
    
incubator/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/convertors/JSOMElementConvertor.java
    
incubator/synapse/trunk/java/modules/extensions/src/test/java/org/apache/synapse/mediators/bsf/convertors/JSOMElementConvertorTest.java

Modified: 
incubator/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/convertors/JSOMElementConvertor.java
URL: 
http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/convertors/JSOMElementConvertor.java?view=diff&rev=478261&r1=478260&r2=478261
==============================================================================
--- 
incubator/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/convertors/JSOMElementConvertor.java
 (original)
+++ 
incubator/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/convertors/JSOMElementConvertor.java
 Wed Nov 22 10:03:36 2006
@@ -73,7 +73,9 @@
             return super.fromScript(o);
         }
 
-        Wrapper wrapper = (Wrapper) ScriptableObject.callMethod((XMLObject)o, 
"getXmlObject", new Object[0]);
+        // TODO: E4X Bug? Shouldn't need this copy, but without it the outer 
element gets lost???
+        Scriptable jsXML = (Scriptable) 
ScriptableObject.callMethod((Scriptable) o, "copy", new Object[0]);
+        Wrapper wrapper = (Wrapper) 
ScriptableObject.callMethod((XMLObject)jsXML, "getXmlObject", new Object[0]);
         XmlObject xmlObject = (XmlObject)wrapper.unwrap();
         try {
 

Modified: 
incubator/synapse/trunk/java/modules/extensions/src/test/java/org/apache/synapse/mediators/bsf/convertors/JSOMElementConvertorTest.java
URL: 
http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/extensions/src/test/java/org/apache/synapse/mediators/bsf/convertors/JSOMElementConvertorTest.java?view=diff&rev=478261&r1=478260&r2=478261
==============================================================================
--- 
incubator/synapse/trunk/java/modules/extensions/src/test/java/org/apache/synapse/mediators/bsf/convertors/JSOMElementConvertorTest.java
 (original)
+++ 
incubator/synapse/trunk/java/modules/extensions/src/test/java/org/apache/synapse/mediators/bsf/convertors/JSOMElementConvertorTest.java
 Wed Nov 22 10:03:36 2006
@@ -19,10 +19,14 @@
 
 package org.apache.synapse.mediators.bsf.convertors;
 
+import java.util.Iterator;
+
 import junit.framework.TestCase;
 
 import org.apache.axiom.om.OMElement;
+import org.apache.synapse.TestMessageContext;
 import org.apache.synapse.mediators.TestUtils;
+import org.apache.synapse.mediators.bsf.InlineScriptMediator;
 
 public class JSOMElementConvertorTest extends TestCase {
     
@@ -35,4 +39,13 @@
         assertEquals(XML, om.toString());
     }
 
+    public void testFromScript() throws Exception {
+        InlineScriptMediator mediator = new InlineScriptMediator("xml.js", 
"mc.setPayloadXML(<a><b>petra</b></a>);");
+        mediator.init();
+        TestMessageContext mc = TestUtils.getTestContext("<foo/>");
+        mediator.mediate(mc);
+        Iterator iterator = mc.getEnvelope().getChildElements();
+        iterator.next();
+        assertEquals(XML, ((OMElement) 
iterator.next()).getFirstElement().toString());
+    }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to