You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by va...@apache.org on 2007/10/16 19:29:39 UTC

svn commit: r585201 - in /ode/trunk/extensions/e4x/src: main/java/org/apache/ode/extension/e4x/JSExtensionOperation.java test/java/org/apache/ode/extension/e4x/JSOperationTest.java

Author: vanto
Date: Tue Oct 16 10:29:34 2007
New Revision: 585201

URL: http://svn.apache.org/viewvc?rev=585201&view=rev
Log:
minor fix wrt the CustomContextFactory
new testcase for manipulating node lists

Modified:
    ode/trunk/extensions/e4x/src/main/java/org/apache/ode/extension/e4x/JSExtensionOperation.java
    ode/trunk/extensions/e4x/src/test/java/org/apache/ode/extension/e4x/JSOperationTest.java

Modified: ode/trunk/extensions/e4x/src/main/java/org/apache/ode/extension/e4x/JSExtensionOperation.java
URL: http://svn.apache.org/viewvc/ode/trunk/extensions/e4x/src/main/java/org/apache/ode/extension/e4x/JSExtensionOperation.java?rev=585201&r1=585200&r2=585201&view=diff
==============================================================================
--- ode/trunk/extensions/e4x/src/main/java/org/apache/ode/extension/e4x/JSExtensionOperation.java (original)
+++ ode/trunk/extensions/e4x/src/main/java/org/apache/ode/extension/e4x/JSExtensionOperation.java Tue Oct 16 10:29:34 2007
@@ -40,14 +40,7 @@
 	
 	public void run(ExtensionContext context, Element element) throws FaultException {
 
-		ContextFactory contextFactory = new ContextFactory() {
-			//Enforce usage of plain DOM
-			protected Factory getE4xImplementationFactory() {
-				return XMLLib.Factory.create("org.mozilla.javascript.xmlimpl.XMLLibImpl");
-			}
-		};
-
-		ContextFactory.initGlobal(contextFactory);
+		CustomContextFactory.init();
 		Context ctx = Context.enter();
 		try {
 			Scriptable scope = ctx.initStandardObjects();
@@ -61,5 +54,19 @@
 		} finally {
 			Context.exit();
 		}
+	}
+	
+	private static class CustomContextFactory extends ContextFactory {
+		//Enforce usage of plain DOM
+		protected Factory getE4xImplementationFactory() {
+			return XMLLib.Factory.create("org.mozilla.javascript.xmlimpl.XMLLibImpl");
+		}
+		
+		static void init() {
+			if (!ContextFactory.hasExplicitGlobal()) {
+				ContextFactory.initGlobal(new CustomContextFactory());
+			}
+		}
+		
 	}
 }

Modified: ode/trunk/extensions/e4x/src/test/java/org/apache/ode/extension/e4x/JSOperationTest.java
URL: http://svn.apache.org/viewvc/ode/trunk/extensions/e4x/src/test/java/org/apache/ode/extension/e4x/JSOperationTest.java?rev=585201&r1=585200&r2=585201&view=diff
==============================================================================
--- ode/trunk/extensions/e4x/src/test/java/org/apache/ode/extension/e4x/JSOperationTest.java (original)
+++ ode/trunk/extensions/e4x/src/test/java/org/apache/ode/extension/e4x/JSOperationTest.java Tue Oct 16 10:29:34 2007
@@ -21,6 +21,8 @@
 
 import org.apache.ode.test.MockExtensionContext;
 import org.apache.ode.utils.DOMUtils;
+import org.junit.Assert;
+import org.junit.Ignore;
 import org.junit.Test;
 import org.w3c.dom.Element;
 
@@ -29,7 +31,7 @@
  */
 public class JSOperationTest {
 
-	@Test public void test() throws Exception {
+	@Test public void testHelloWorld() throws Exception {
 		StringBuffer s = new StringBuffer();
 		s.append("var request = context.readVariable('request');\n");
 		s.append("request.TestPart += ' World';\n");
@@ -40,5 +42,26 @@
 		JSExtensionOperation jso = new JSExtensionOperation();
 		Element e = DOMUtils.stringToDOM("<js:script xmlns:js=\"js\"><![CDATA[" + s + "]]></js:script>");
 		jso.run(c, e);
+		String res = DOMUtils.domToString(c.getVariables().get("request"));
+		Assert.assertEquals("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<message><TestPart>Hello World</TestPart></message>", res);
 	}
+	
+	@Test public void testArrayCopy() throws Exception {
+		StringBuffer s = new StringBuffer();
+		s.append("var item = context.readVariable('item');\n");
+		s.append("var items = context.readVariable('items');\n");
+		s.append("items.TestPart.items.item += item.TestPart.item;\n");
+		s.append("items.TestPart.items.item.(@hyped=='true').price *= 2;");
+		s.append("context.writeVariable('items', items);\n");
+
+		MockExtensionContext c = new MockExtensionContext();
+		c.getVariables().put("item", DOMUtils.stringToDOM("<message><TestPart><item hyped=\"true\"><name>BPEL consulting</name><price>3000</price></item></TestPart></message>"));
+		c.getVariables().put("items", DOMUtils.stringToDOM("<message><TestPart><items><item><name>WSDL consulting</name><price>2500</price></item></items></TestPart></message>"));
+		JSExtensionOperation jso = new JSExtensionOperation();
+		Element e = DOMUtils.stringToDOM("<js:script xmlns:js=\"js\"><![CDATA[" + s + "]]></js:script>");
+		jso.run(c, e);
+		String res = DOMUtils.domToString(c.getVariables().get("items"));
+		Assert.assertEquals("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<message><TestPart><items><item><name>WSDL consulting</name><price>2500</price></item><item hyped=\"true\"><name>BPEL consulting</name><price>6000</price></item></items></TestPart></message>", res);
+	}
+
 }