Author: svkrish
Date: Thu Oct 26 02:06:57 2006
New Revision: 467924
URL: http://svn.apache.org/viewvc?view=rev&rev=467924
Log:
Included response class as part of invocation to JS to enable proper
transformation of return values from JS to Java
Modified:
incubator/tuscany/java/sca/services/containers/container.javascript/src/main/java/org/apache/tuscany/container/javascript/JavaScriptComponent.java
incubator/tuscany/java/sca/services/containers/container.javascript/src/main/java/org/apache/tuscany/container/javascript/JavaScriptInvoker.java
incubator/tuscany/java/sca/services/containers/container.javascript/src/main/java/org/apache/tuscany/container/javascript/rhino/RhinoScriptInstance.java
incubator/tuscany/java/sca/services/containers/container.javascript/src/main/java/org/apache/tuscany/container/javascript/utils/xmlfromxsd/TuscanySampleXmlUtil.java
incubator/tuscany/java/sca/services/containers/container.javascript/src/test/java/org/apache/tuscany/container/javascript/rhino/RhinoFunctionInvokerTestCase.java
incubator/tuscany/java/sca/services/containers/container.javascript/src/test/java/org/apache/tuscany/container/javascript/rhino/RhinoScriptTestCase.java
Modified:
incubator/tuscany/java/sca/services/containers/container.javascript/src/main/java/org/apache/tuscany/container/javascript/JavaScriptComponent.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/containers/container.javascript/src/main/java/org/apache/tuscany/container/javascript/JavaScriptComponent.java?view=diff&rev=467924&r1=467923&r2=467924
==============================================================================
---
incubator/tuscany/java/sca/services/containers/container.javascript/src/main/java/org/apache/tuscany/container/javascript/JavaScriptComponent.java
(original)
+++
incubator/tuscany/java/sca/services/containers/container.javascript/src/main/java/org/apache/tuscany/container/javascript/JavaScriptComponent.java
Thu Oct 26 02:06:57 2006
@@ -86,7 +86,7 @@
}
public TargetInvoker createTargetInvoker(String targetName, Operation
operation) {
- return new JavaScriptInvoker(operation.getName(), this);
+ return new JavaScriptInvoker(operation.getName(),
(Class)operation.getOutputType().getLogical(), this);
}
// TODO: move all the following up to AtomicComponentExtension?
Modified:
incubator/tuscany/java/sca/services/containers/container.javascript/src/main/java/org/apache/tuscany/container/javascript/JavaScriptInvoker.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/containers/container.javascript/src/main/java/org/apache/tuscany/container/javascript/JavaScriptInvoker.java?view=diff&rev=467924&r1=467923&r2=467924
==============================================================================
---
incubator/tuscany/java/sca/services/containers/container.javascript/src/main/java/org/apache/tuscany/container/javascript/JavaScriptInvoker.java
(original)
+++
incubator/tuscany/java/sca/services/containers/container.javascript/src/main/java/org/apache/tuscany/container/javascript/JavaScriptInvoker.java
Thu Oct 26 02:06:57 2006
@@ -33,10 +33,13 @@
private JavaScriptComponent context;
private String functionName;
+
+ private Class responseClass;
- public JavaScriptInvoker(String functionName, JavaScriptComponent context)
{
+ public JavaScriptInvoker(String functionName, Class respClass,
JavaScriptComponent context) {
this.functionName = functionName;
this.context = context;
+ this.responseClass = respClass;
}
/**
@@ -44,7 +47,7 @@
*/
public Object invokeTarget(final Object payload) throws
InvocationTargetException {
RhinoScriptInstance target = context.getTargetInstance();
- return target.invokeFunction(functionName, (Object[]) payload);
+ return target.invokeFunction(functionName, (Object[]) payload,
responseClass);
}
}
Modified:
incubator/tuscany/java/sca/services/containers/container.javascript/src/main/java/org/apache/tuscany/container/javascript/rhino/RhinoScriptInstance.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/containers/container.javascript/src/main/java/org/apache/tuscany/container/javascript/rhino/RhinoScriptInstance.java?view=diff&rev=467924&r1=467923&r2=467924
==============================================================================
---
incubator/tuscany/java/sca/services/containers/container.javascript/src/main/java/org/apache/tuscany/container/javascript/rhino/RhinoScriptInstance.java
(original)
+++
incubator/tuscany/java/sca/services/containers/container.javascript/src/main/java/org/apache/tuscany/container/javascript/rhino/RhinoScriptInstance.java
Thu Oct 26 02:06:57 2006
@@ -47,15 +47,24 @@
}
addContexts(instanceScope, context);
}
-
+
public Object invokeFunction(String functionName, Object[] args) {
- RhinoFunctionInvoker invoker =
createRhinoFunctionInvoker(functionName);
+ return invokeFunction(functionName, args, null);
+ }
+
+ public Object invokeFunction(String functionName, Object[] args, Class
respClass) {
+ RhinoFunctionInvoker invoker =
createRhinoFunctionInvoker(functionName, respClass);
return invoker.invoke(args);
}
public RhinoFunctionInvoker createRhinoFunctionInvoker(String
functionName) {
+ return createRhinoFunctionInvoker(functionName, null);
+ }
+
+
+ public RhinoFunctionInvoker createRhinoFunctionInvoker(String
functionName, Class responseClass) {
Function function = getFunction(functionName);
- Class responseClass = responseClasses.get(functionName);
+ //Class responseClass = responseClasses.get(functionName);
RhinoFunctionInvoker invoker = new RhinoFunctionInvoker(instanceScope,
function, responseClass);
return invoker;
}
@@ -98,3 +107,4 @@
}
}
+
Modified:
incubator/tuscany/java/sca/services/containers/container.javascript/src/main/java/org/apache/tuscany/container/javascript/utils/xmlfromxsd/TuscanySampleXmlUtil.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/containers/container.javascript/src/main/java/org/apache/tuscany/container/javascript/utils/xmlfromxsd/TuscanySampleXmlUtil.java?view=diff&rev=467924&r1=467923&r2=467924
==============================================================================
---
incubator/tuscany/java/sca/services/containers/container.javascript/src/main/java/org/apache/tuscany/container/javascript/utils/xmlfromxsd/TuscanySampleXmlUtil.java
(original)
+++
incubator/tuscany/java/sca/services/containers/container.javascript/src/main/java/org/apache/tuscany/container/javascript/utils/xmlfromxsd/TuscanySampleXmlUtil.java
Thu Oct 26 02:06:57 2006
@@ -121,7 +121,7 @@
//if ( !flag )
return;
//else
- // flag = false;
+ // flag = false;
_typeStack.add(stype);
Modified:
incubator/tuscany/java/sca/services/containers/container.javascript/src/test/java/org/apache/tuscany/container/javascript/rhino/RhinoFunctionInvokerTestCase.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/containers/container.javascript/src/test/java/org/apache/tuscany/container/javascript/rhino/RhinoFunctionInvokerTestCase.java?view=diff&rev=467924&r1=467923&r2=467924
==============================================================================
---
incubator/tuscany/java/sca/services/containers/container.javascript/src/test/java/org/apache/tuscany/container/javascript/rhino/RhinoFunctionInvokerTestCase.java
(original)
+++
incubator/tuscany/java/sca/services/containers/container.javascript/src/test/java/org/apache/tuscany/container/javascript/rhino/RhinoFunctionInvokerTestCase.java
Thu Oct 26 02:06:57 2006
@@ -90,18 +90,18 @@
public void testResponseTypeBoolean() {
RhinoScript rhinoScript = new RhinoScript("foo", "function getTrue()
{return true;}");
- rhinoScript.setResponseClass("getTrue", Boolean.class);
+ //rhinoScript.setResponseClass("getTrue", Boolean.class);
RhinoScriptInstance instance = rhinoScript.createRhinoScriptInstance();
- RhinoFunctionInvoker invoker =
instance.createRhinoFunctionInvoker("getTrue");
+ RhinoFunctionInvoker invoker =
instance.createRhinoFunctionInvoker("getTrue", Boolean.class);
assertNotNull(invoker);
assertTrue((Boolean) invoker.invoke(new Object[0]));
}
public void testResponseTypeStringArray() {
RhinoScript rhinoScript = new RhinoScript("foo", "function getAs()
{var as = new Array(1);as[0]='petra';return as;}");
- rhinoScript.setResponseClass("getAs", new String[0].getClass());
+ //rhinoScript.setResponseClass("getAs", new String[0].getClass());
RhinoScriptInstance instance = rhinoScript.createRhinoScriptInstance();
- RhinoFunctionInvoker invoker =
instance.createRhinoFunctionInvoker("getAs");
+ RhinoFunctionInvoker invoker =
instance.createRhinoFunctionInvoker("getAs", new String[0].getClass());
assertNotNull(invoker);
Object o = invoker.invoke(new Object[0]);
assertNotNull(o);
@@ -113,7 +113,7 @@
RhinoScript rhinoScript = new RhinoScript("foo", "function getBs()
{var bs = new Array(1);bs[0]=true;return bs;}");
rhinoScript.setResponseClass("getBs", new Boolean[0].getClass());
RhinoScriptInstance instance = rhinoScript.createRhinoScriptInstance();
- RhinoFunctionInvoker invoker =
instance.createRhinoFunctionInvoker("getBs");
+ RhinoFunctionInvoker invoker =
instance.createRhinoFunctionInvoker("getBs", new Boolean[0].getClass());
assertNotNull(invoker);
Object o = invoker.invoke(new Object[0]);
assertNotNull(o);
@@ -147,9 +147,9 @@
public void testXMLRequest() throws XmlException, IOException {
RhinoScript rhinoScript = new RhinoScript("foo", "function isXML(x)
{return 'xml' == (typeof x);}");
- rhinoScript.setResponseClass("isXML", Boolean.class);
+ //rhinoScript.setResponseClass("isXML", Boolean.class);
RhinoScriptInstance instance = rhinoScript.createRhinoScriptInstance();
- RhinoFunctionInvoker invoker =
instance.createRhinoFunctionInvoker("isXML");
+ RhinoFunctionInvoker invoker =
instance.createRhinoFunctionInvoker("isXML", Boolean.class);
assertNotNull(invoker);
Object xml = XmlObject.Factory.parse("<a><b/></a>");
Modified:
incubator/tuscany/java/sca/services/containers/container.javascript/src/test/java/org/apache/tuscany/container/javascript/rhino/RhinoScriptTestCase.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/containers/container.javascript/src/test/java/org/apache/tuscany/container/javascript/rhino/RhinoScriptTestCase.java?view=diff&rev=467924&r1=467923&r2=467924
==============================================================================
---
incubator/tuscany/java/sca/services/containers/container.javascript/src/test/java/org/apache/tuscany/container/javascript/rhino/RhinoScriptTestCase.java
(original)
+++
incubator/tuscany/java/sca/services/containers/container.javascript/src/test/java/org/apache/tuscany/container/javascript/rhino/RhinoScriptTestCase.java
Thu Oct 26 02:06:57 2006
@@ -75,7 +75,7 @@
RhinoScript rhinoScript = new RhinoScript("foo", "function getX()
{return 42;}");
rhinoScript.setResponseClass("getX", Integer.class);
RhinoScriptInstance instance = rhinoScript.createRhinoScriptInstance();
- Object x = instance.invokeFunction("getX", new Object[0]);
+ Object x = instance.invokeFunction("getX", new Object[0],
Integer.class);
assertTrue(x instanceof Integer);
assertEquals(new Integer(42), x);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]