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]

Reply via email to