Author: antelder
Date: Tue Mar 28 04:36:49 2006
New Revision: 389490

URL: http://svn.apache.org/viewcvs?rev=389490&view=rev
Log:
Add E4X support to JavaScript component types by adding a style="e4x" parameter 
to the JavaScript SCDL
(probably not the best way to do it but it was the easiest for now) 

Modified:
    
incubator/tuscany/java/sca/container.js/src/main/java/org/apache/tuscany/container/js/assembly/JavaScriptImplementation.java
    
incubator/tuscany/java/sca/container.js/src/main/java/org/apache/tuscany/container/js/assembly/impl/JavaScriptImplementationImpl.java
    
incubator/tuscany/java/sca/container.js/src/main/java/org/apache/tuscany/container/js/builder/JavaScriptContextFactoryBuilder.java
    
incubator/tuscany/java/sca/container.js/src/main/java/org/apache/tuscany/container/js/loader/JavaScriptSCDLModelLoader.java
    
incubator/tuscany/java/sca/container.js/src/main/resources/model/sca-implementation-js.xsd

Modified: 
incubator/tuscany/java/sca/container.js/src/main/java/org/apache/tuscany/container/js/assembly/JavaScriptImplementation.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/container.js/src/main/java/org/apache/tuscany/container/js/assembly/JavaScriptImplementation.java?rev=389490&r1=389489&r2=389490&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/container.js/src/main/java/org/apache/tuscany/container/js/assembly/JavaScriptImplementation.java
 (original)
+++ 
incubator/tuscany/java/sca/container.js/src/main/java/org/apache/tuscany/container/js/assembly/JavaScriptImplementation.java
 Tue Mar 28 04:36:49 2006
@@ -28,4 +28,8 @@
     public String getScriptFile();
 
     public void setScriptFile(String fn);
+    
+    public String getStyle();
+    
+    public void setStyle(String style);
 }

Modified: 
incubator/tuscany/java/sca/container.js/src/main/java/org/apache/tuscany/container/js/assembly/impl/JavaScriptImplementationImpl.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/container.js/src/main/java/org/apache/tuscany/container/js/assembly/impl/JavaScriptImplementationImpl.java?rev=389490&r1=389489&r2=389490&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/container.js/src/main/java/org/apache/tuscany/container/js/assembly/impl/JavaScriptImplementationImpl.java
 (original)
+++ 
incubator/tuscany/java/sca/container.js/src/main/java/org/apache/tuscany/container/js/assembly/impl/JavaScriptImplementationImpl.java
 Tue Mar 28 04:36:49 2006
@@ -36,6 +36,8 @@
 
     private String scriptFile;
 
+    private String style;
+
     private String scriptCode;
 
     private ResourceLoader resourceLoader;
@@ -80,6 +82,14 @@
         scriptFile = fn;
     }
 
+    public String getStyle() {
+        return this.style;
+    }
+
+    public void setStyle(String style) {
+        this.style = style;
+    }
+
     public String getScript() throws ModelInitException {
         if (scriptCode != null) {
             return scriptCode;
@@ -126,6 +136,5 @@
             return modelContext.getAssemblyFactory().createComponentType();
         }
     }
-    
-    
+
 }

Modified: 
incubator/tuscany/java/sca/container.js/src/main/java/org/apache/tuscany/container/js/builder/JavaScriptContextFactoryBuilder.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/container.js/src/main/java/org/apache/tuscany/container/js/builder/JavaScriptContextFactoryBuilder.java?rev=389490&r1=389489&r2=389490&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/container.js/src/main/java/org/apache/tuscany/container/js/builder/JavaScriptContextFactoryBuilder.java
 (original)
+++ 
incubator/tuscany/java/sca/container.js/src/main/java/org/apache/tuscany/container/js/builder/JavaScriptContextFactoryBuilder.java
 Tue Mar 28 04:36:49 2006
@@ -25,6 +25,7 @@
 import org.apache.tuscany.container.js.assembly.JavaScriptImplementation;
 import 
org.apache.tuscany.container.js.assembly.impl.JavaScriptImplementationImpl;
 import org.apache.tuscany.container.js.config.JavaScriptContextFactory;
+import org.apache.tuscany.container.js.rhino.RhinoE4XScript;
 import org.apache.tuscany.container.js.rhino.RhinoScript;
 import org.apache.tuscany.core.builder.BuilderConfigException;
 import org.apache.tuscany.core.builder.BuilderException;
@@ -52,6 +53,8 @@
 import org.apache.tuscany.model.assembly.SimpleComponent;
 import org.osoa.sca.annotations.Init;
 
+import commonj.sdo.helper.TypeHelper;
+
 /**
  * Builds [EMAIL PROTECTED] 
org.apache.tuscany.container.js.config.JavaScriptContextFactory}s from a 
JavaScript
  * component type
@@ -145,7 +148,13 @@
            }
         ClassLoader cl = ((JavaScriptImplementationImpl) 
impl).getResourceLoader().getClassLoader();
         
-        RhinoScript invoker = new RhinoScript(component.getName(), script, 
defaultProperties, cl);
+        RhinoScript invoker;
+        if ("e4x".equalsIgnoreCase(impl.getStyle())) {  // TODO is constant 
"e4x" somewhere?
+            TypeHelper typeHelper = 
component.getAggregate().getAssemblyModelContext().getTypeHelper();
+            invoker = new RhinoE4XScript(component.getName(), script, 
defaultProperties, cl, typeHelper);
+        } else {
+            invoker = new RhinoScript(component.getName(), script, 
defaultProperties, cl);
+        }
 
         Map<String, Object> properties = new HashMap<String, Object>();
         List<ConfiguredProperty> configuredProperties = 
component.getConfiguredProperties();

Modified: 
incubator/tuscany/java/sca/container.js/src/main/java/org/apache/tuscany/container/js/loader/JavaScriptSCDLModelLoader.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/container.js/src/main/java/org/apache/tuscany/container/js/loader/JavaScriptSCDLModelLoader.java?rev=389490&r1=389489&r2=389490&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/container.js/src/main/java/org/apache/tuscany/container/js/loader/JavaScriptSCDLModelLoader.java
 (original)
+++ 
incubator/tuscany/java/sca/container.js/src/main/java/org/apache/tuscany/container/js/loader/JavaScriptSCDLModelLoader.java
 Tue Mar 28 04:36:49 2006
@@ -86,6 +86,7 @@
             org.apache.tuscany.container.js.scdl.JavaScriptImplementation 
scdlImplementation=(org.apache.tuscany.container.js.scdl.JavaScriptImplementation)object;
             JavaScriptImplementation 
implementation=jsFactory.createJavaScriptImplementation();
             implementation.setScriptFile(scdlImplementation.getScriptFile());
+            
implementation.setStyle(scdlImplementation.getStyle().getLiteral());
             return implementation;
         } else
             return null;

Modified: 
incubator/tuscany/java/sca/container.js/src/main/resources/model/sca-implementation-js.xsd
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/container.js/src/main/resources/model/sca-implementation-js.xsd?rev=389490&r1=389489&r2=389490&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/container.js/src/main/resources/model/sca-implementation-js.xsd
 (original)
+++ 
incubator/tuscany/java/sca/container.js/src/main/resources/model/sca-implementation-js.xsd
 Tue Mar 28 04:36:49 2006
@@ -33,10 +33,18 @@
                 <sequence>
                     <any maxOccurs="unbounded" minOccurs="0" 
namespace="##other" processContents="lax"/>
                 </sequence>
+                <attribute name="style" type="js:Style" default="rpc" 
use="optional"/>
                 <attribute name="scriptFile" type="NCName" use="required"/>
                 <anyAttribute namespace="##any" processContents="lax"/>
             </extension>
         </complexContent>
     </complexType>
+
+       <simpleType name="Style">
+               <restriction base="string">
+                       <enumeration value="rpc"/>
+                       <enumeration value="e4x"/>
+               </restriction>
+       </simpleType>
 
 </schema>


Reply via email to