You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by an...@apache.org on 2006/05/22 12:26:22 UTC
svn commit: r408632 [2/2] - in /incubator/tuscany/sandbox/ant/ajax: ./
ajaxchat/ ajaxchat/src/ ajaxchat/src/main/ ajaxchat/src/main/java/
ajaxchat/src/main/java/sample/ ajaxchat/src/main/resources/
ajaxchat/src/main/webapp/ ajaxchat/src/main/webapp/WEB...
Added: incubator/tuscany/sandbox/ant/ajax/binding.ajax/src/test/java/org/apache/tuscany/binding/ajax/servlet/DWRAJAXServletTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/ant/ajax/binding.ajax/src/test/java/org/apache/tuscany/binding/ajax/servlet/DWRAJAXServletTestCase.java?rev=408632&view=auto
==============================================================================
--- incubator/tuscany/sandbox/ant/ajax/binding.ajax/src/test/java/org/apache/tuscany/binding/ajax/servlet/DWRAJAXServletTestCase.java (added)
+++ incubator/tuscany/sandbox/ant/ajax/binding.ajax/src/test/java/org/apache/tuscany/binding/ajax/servlet/DWRAJAXServletTestCase.java Mon May 22 03:26:10 2006
@@ -0,0 +1,163 @@
+package org.apache.tuscany.binding.ajax.servlet;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+
+import junit.framework.TestCase;
+
+import org.apache.tuscany.binding.ajax.testutils.MockUtils;
+import org.apache.tuscany.binding.ajax.testutils.SimpleMock;
+import org.apache.tuscany.binding.ajax.testutils.SimpleMockFactory;
+import org.mozilla.javascript.Context;
+import org.mozilla.javascript.Function;
+import org.mozilla.javascript.Scriptable;
+import org.mozilla.javascript.UniqueTag;
+
+public class DWRAJAXServletTestCase extends TestCase {
+
+ private DWRAJAXServlet servlet;
+
+ @Override
+ public void setUp() {
+ servlet = new AJAXServletManager(MockUtils.getServletHost(), "test").getServlet();
+ }
+
+ public void testGetSCAJSScript() throws IOException {
+
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+
+ HttpServletRequest request = createRequest();
+ HttpServletResponse response = createResponse(baos);
+
+ servlet.doSCAScript(request, response);
+ String scaScript = new String(baos.toByteArray());
+ assertTrue(scaScript.length() > 0);
+
+ Scriptable scope = compileScript(scaScript);
+
+ Object sca = scope.get("SCA", scope);
+ assertNotNull(sca);
+ assertNotSame(UniqueTag.NOT_FOUND, sca);
+
+ Object scaOpen = runScript(scope, "SCA.open");
+ assertNotNull(scaOpen);
+ assertNotSame(UniqueTag.NOT_FOUND, scaOpen);
+ assertTrue(scaOpen instanceof Function);
+
+ Object scaClose = runScript(scope, "SCA.close");
+ assertNotNull(scaClose);
+ assertNotSame(UniqueTag.NOT_FOUND, scaClose);
+ assertTrue(scaClose instanceof Function);
+
+ }
+
+ public void testEntryPoints() throws IOException {
+
+ servlet.addEntryPoint("TestEntryPoint1", SimpleEntryPointInterface.class, null);
+
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+
+ HttpServletRequest request = createRequest();
+ HttpServletResponse response = createResponse(baos);
+
+ servlet.doSCAScript(request, response);
+ String scaScript = new String(baos.toByteArray());
+ assertTrue(scaScript.length() > 0);
+
+ Scriptable scope = compileScript(scaScript);
+
+ Object testEP1 = scope.get("TestEntryPoint1", scope);
+ assertNotNull(testEP1);
+ assertNotSame(UniqueTag.NOT_FOUND, testEP1);
+ assertTrue(testEP1 instanceof Function);
+
+ Object path = runScript(scope, "TestEntryPoint1._path");
+ assertNotNull(path);
+ assertEquals("mockContextPath/mockServletPath", path);
+
+ Object testMethod = runScript(scope, "TestEntryPoint1.testMethod");
+ assertNotNull(testMethod);
+ assertNotSame(UniqueTag.NOT_FOUND, testMethod);
+ assertTrue(testMethod instanceof Function);
+ }
+
+ public void testExternalServices() throws IOException {
+
+ servlet.addExternalService("TestExternalService1");
+ servlet.addExternalService("TestExternalService2");
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+
+ HttpServletRequest request = createRequest();
+ HttpServletResponse response = createResponse(baos);
+
+ servlet.doSCAScript(request, response);
+ String scaScript = new String(baos.toByteArray());
+ assertTrue(scaScript.length() > 0);
+
+ Scriptable scope = compileScript(scaScript);
+
+ Object testES1 = scope.get("TestExternalService1", scope);
+ assertNotNull(testES1);
+ assertNotSame(UniqueTag.NOT_FOUND, testES1);
+ assertTrue(testES1 instanceof Function);
+
+ Object testES2 = scope.get("TestExternalService1", scope);
+ assertNotNull(testES2);
+ assertNotSame(UniqueTag.NOT_FOUND, testES2);
+ assertTrue(testES2 instanceof Function);
+ }
+
+ private Scriptable compileScript(String script) {
+ Scriptable scope;
+ Context cx = Context.enter();
+ try {
+
+ scope = cx.initStandardObjects();
+ cx.evaluateString(scope, "function window(){};", "mockBrowser", 1, null);
+ cx.evaluateString(scope, script, "sca.js", 1, null);
+
+ } finally {
+ Context.exit();
+ }
+ return scope;
+ }
+
+ private Object runScript(Scriptable scope, String script) {
+ Context cx = Context.enter();
+ try {
+
+ return cx.evaluateString(scope, script, "cmd", 1, null);
+
+ } finally {
+ Context.exit();
+ }
+ }
+ private HttpServletResponse createResponse(final OutputStream os) {
+ HttpServletResponse response = (HttpServletResponse) SimpleMockFactory.createSimpleMock(HttpServletResponse.class);
+ SimpleMock mocker = (SimpleMock) response;
+ PrintWriter pw = new PrintWriter(new OutputStreamWriter(os), true);
+ mocker.addGetMethod("getWriter", pw);
+ return response;
+ }
+
+ private HttpServletRequest createRequest() {
+ HttpSession session = (HttpSession) SimpleMockFactory.createSimpleMock(HttpSession.class);
+ ((SimpleMock) session).addGetMethod("getId", "mockID");
+
+ HttpServletRequest request = (HttpServletRequest) SimpleMockFactory.createSimpleMock(HttpServletRequest.class);
+ SimpleMock mocker = (SimpleMock) request;
+ mocker.addGetMethod("getSession", session);
+
+ mocker.addGetMethod("getContextPath", "mockContextPath");
+ mocker.addGetMethod("getServletPath", "/mockServletPath");
+ return request;
+ }
+
+}
Added: incubator/tuscany/sandbox/ant/ajax/binding.ajax/src/test/java/org/apache/tuscany/binding/ajax/servlet/SimpleEntryPointInterface.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/ant/ajax/binding.ajax/src/test/java/org/apache/tuscany/binding/ajax/servlet/SimpleEntryPointInterface.java?rev=408632&view=auto
==============================================================================
--- incubator/tuscany/sandbox/ant/ajax/binding.ajax/src/test/java/org/apache/tuscany/binding/ajax/servlet/SimpleEntryPointInterface.java (added)
+++ incubator/tuscany/sandbox/ant/ajax/binding.ajax/src/test/java/org/apache/tuscany/binding/ajax/servlet/SimpleEntryPointInterface.java Mon May 22 03:26:10 2006
@@ -0,0 +1,7 @@
+package org.apache.tuscany.binding.ajax.servlet;
+
+public interface SimpleEntryPointInterface {
+
+ public String testMethod(String s);
+
+}
Added: incubator/tuscany/sandbox/ant/ajax/binding.ajax/src/test/java/org/apache/tuscany/binding/ajax/testutils/Holder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/ant/ajax/binding.ajax/src/test/java/org/apache/tuscany/binding/ajax/testutils/Holder.java?rev=408632&view=auto
==============================================================================
--- incubator/tuscany/sandbox/ant/ajax/binding.ajax/src/test/java/org/apache/tuscany/binding/ajax/testutils/Holder.java (added)
+++ incubator/tuscany/sandbox/ant/ajax/binding.ajax/src/test/java/org/apache/tuscany/binding/ajax/testutils/Holder.java Mon May 22 03:26:10 2006
@@ -0,0 +1,7 @@
+package org.apache.tuscany.binding.ajax.testutils;
+
+public class Holder {
+
+ public Object o;
+
+}
Added: incubator/tuscany/sandbox/ant/ajax/binding.ajax/src/test/java/org/apache/tuscany/binding/ajax/testutils/Invoker.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/ant/ajax/binding.ajax/src/test/java/org/apache/tuscany/binding/ajax/testutils/Invoker.java?rev=408632&view=auto
==============================================================================
--- incubator/tuscany/sandbox/ant/ajax/binding.ajax/src/test/java/org/apache/tuscany/binding/ajax/testutils/Invoker.java (added)
+++ incubator/tuscany/sandbox/ant/ajax/binding.ajax/src/test/java/org/apache/tuscany/binding/ajax/testutils/Invoker.java Mon May 22 03:26:10 2006
@@ -0,0 +1,7 @@
+package org.apache.tuscany.binding.ajax.testutils;
+
+public interface Invoker {
+
+ public Object invoke(Object[] args);
+
+}
Added: incubator/tuscany/sandbox/ant/ajax/binding.ajax/src/test/java/org/apache/tuscany/binding/ajax/testutils/MockUtils.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/ant/ajax/binding.ajax/src/test/java/org/apache/tuscany/binding/ajax/testutils/MockUtils.java?rev=408632&view=auto
==============================================================================
--- incubator/tuscany/sandbox/ant/ajax/binding.ajax/src/test/java/org/apache/tuscany/binding/ajax/testutils/MockUtils.java (added)
+++ incubator/tuscany/sandbox/ant/ajax/binding.ajax/src/test/java/org/apache/tuscany/binding/ajax/testutils/MockUtils.java Mon May 22 03:26:10 2006
@@ -0,0 +1,19 @@
+package org.apache.tuscany.binding.ajax.testutils;
+
+import org.apache.tuscany.core.webapp.ServletHost;
+
+public class MockUtils {
+
+ public static ServletHost getServletHost() {
+ ServletHost th = (ServletHost) SimpleMockFactory.createSimpleMock(ServletHost.class);
+ final Holder holder = new Holder();
+ ((SimpleMock) th).addSetMethod("registerMapping", new Invoker() {
+ public Object invoke(Object[] args) {
+ holder.o = args[1];
+ return null;
+ }});
+ ((SimpleMock) th).addGetMethod("getMapping", holder);
+ return th;
+ }
+
+}
Added: incubator/tuscany/sandbox/ant/ajax/binding.ajax/src/test/java/org/apache/tuscany/binding/ajax/testutils/SimpleMock.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/ant/ajax/binding.ajax/src/test/java/org/apache/tuscany/binding/ajax/testutils/SimpleMock.java?rev=408632&view=auto
==============================================================================
--- incubator/tuscany/sandbox/ant/ajax/binding.ajax/src/test/java/org/apache/tuscany/binding/ajax/testutils/SimpleMock.java (added)
+++ incubator/tuscany/sandbox/ant/ajax/binding.ajax/src/test/java/org/apache/tuscany/binding/ajax/testutils/SimpleMock.java Mon May 22 03:26:10 2006
@@ -0,0 +1,11 @@
+package org.apache.tuscany.binding.ajax.testutils;
+
+public interface SimpleMock {
+
+ public void addGetMethod(String methodName, Object o);
+
+ public Object addSetMethod(String methodName);
+
+ public void addSetMethod(String methodName, Invoker invoker);
+
+}
Added: incubator/tuscany/sandbox/ant/ajax/binding.ajax/src/test/java/org/apache/tuscany/binding/ajax/testutils/SimpleMockFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/ant/ajax/binding.ajax/src/test/java/org/apache/tuscany/binding/ajax/testutils/SimpleMockFactory.java?rev=408632&view=auto
==============================================================================
--- incubator/tuscany/sandbox/ant/ajax/binding.ajax/src/test/java/org/apache/tuscany/binding/ajax/testutils/SimpleMockFactory.java (added)
+++ incubator/tuscany/sandbox/ant/ajax/binding.ajax/src/test/java/org/apache/tuscany/binding/ajax/testutils/SimpleMockFactory.java Mon May 22 03:26:10 2006
@@ -0,0 +1,54 @@
+package org.apache.tuscany.binding.ajax.testutils;
+
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
+import java.util.HashMap;
+import java.util.Map;
+
+public class SimpleMockFactory {
+
+ public static SimpleMock createSimpleMock(Class iface) {
+ ClassLoader cl = Thread.currentThread().getContextClassLoader();
+ if (cl == null) {
+ cl = SimpleMockFactory.class.getClassLoader();
+ }
+ InvocationHandler ih = createInvocationHandler();
+ return (SimpleMock) Proxy.newProxyInstance(cl, new Class[] { iface, SimpleMock.class }, ih);
+ }
+
+ private static InvocationHandler createInvocationHandler() {
+ InvocationHandler ih = new InvocationHandler() {
+ Map<String, Object> getters = new HashMap<String, Object>();
+
+ Map<String, Object> setters = new HashMap<String, Object>();
+
+ public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
+ if ("addGetMethod".equals(method.getName())) {
+ getters.put((String) args[0], args[1]);
+ } else if ("addSetMethod".equals(method.getName())) {
+ setters.put((String) args[0], (Invoker) args[1]);
+ } else if (getters.containsKey(method.getName())) {
+ Object o = getters.get(method.getName());
+ if (o instanceof Invoker) {
+ return ((Invoker) o).invoke(args);
+ } else if (o instanceof Holder) {
+ return ((Holder)o).o;
+ } else {
+ return getters.get(method.getName());
+ }
+ } else if (setters.containsKey(method.getName())) {
+ Object o = setters.get(method.getName());
+ if (o instanceof Invoker) {
+ ((Invoker) o).invoke(args);
+ } else {
+ ((Holder) o).o = args;
+ }
+ }
+ return null;
+ }
+ };
+ return ih;
+ }
+
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org