Author: kono
Date: 2012-03-08 17:50:58 -0800 (Thu, 08 Mar 2012)
New Revision: 28462

Added:
   core3/impl/trunk/scripting-impl/
   core3/impl/trunk/scripting-impl/pom.xml
   core3/impl/trunk/scripting-impl/src/
   core3/impl/trunk/scripting-impl/src/main/
   core3/impl/trunk/scripting-impl/src/main/java/
   core3/impl/trunk/scripting-impl/src/main/java/org/
   core3/impl/trunk/scripting-impl/src/main/java/org/cytoscape/
   core3/impl/trunk/scripting-impl/src/main/java/org/cytoscape/scripting/
   
core3/impl/trunk/scripting-impl/src/main/java/org/cytoscape/scripting/internal/
   
core3/impl/trunk/scripting-impl/src/main/java/org/cytoscape/scripting/internal/CyActivator.java
   
core3/impl/trunk/scripting-impl/src/main/java/org/cytoscape/scripting/internal/ExecuteScriptTask.java
   
core3/impl/trunk/scripting-impl/src/main/java/org/cytoscape/scripting/internal/ExecuteScriptTaskFactory.java
   core3/impl/trunk/scripting-impl/src/test/
   core3/impl/trunk/scripting-impl/src/test/java/
   core3/impl/trunk/scripting-impl/src/test/java/org/
   core3/impl/trunk/scripting-impl/src/test/java/org/cytoscape/
   core3/impl/trunk/scripting-impl/src/test/java/org/cytoscape/scripting/
   
core3/impl/trunk/scripting-impl/src/test/java/org/cytoscape/scripting/internal/
   
core3/impl/trunk/scripting-impl/src/test/java/org/cytoscape/scripting/internal/ExecuteScriptTaskTest.java
   core3/impl/trunk/scripting-impl/src/test/resources/
   core3/impl/trunk/scripting-impl/src/test/resources/javascript_test.js
   core3/impl/trunk/scripting-impl/src/test/resources/network_creation.js
Modified:
   core3/api/trunk/io-api/src/main/java/org/cytoscape/io/DataCategory.java
   core3/gui-distribution/trunk/features/src/main/resources/features.xml
   
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/CyActivator.java
   core3/impl/trunk/pom.xml
Log:
fixes #524 Scripting bundle had been added.  No API change, just using Java 
standard Scripting Engine mechanism.  By default, JavaScript will be supported.

Modified: 
core3/api/trunk/io-api/src/main/java/org/cytoscape/io/DataCategory.java
===================================================================
--- core3/api/trunk/io-api/src/main/java/org/cytoscape/io/DataCategory.java     
2012-03-09 01:32:49 UTC (rev 28461)
+++ core3/api/trunk/io-api/src/main/java/org/cytoscape/io/DataCategory.java     
2012-03-09 01:50:58 UTC (rev 28462)
@@ -35,6 +35,11 @@
         */ 
        VIZMAP, 
        
+       /**
+        * Data to be imported is Script file
+        */
+       SCRIPT,
+       
        /** 
        * Data to be import/export is not specified (unknown)
        */ 

Modified: core3/gui-distribution/trunk/features/src/main/resources/features.xml
===================================================================
--- core3/gui-distribution/trunk/features/src/main/resources/features.xml       
2012-03-09 01:32:49 UTC (rev 28461)
+++ core3/gui-distribution/trunk/features/src/main/resources/features.xml       
2012-03-09 01:50:58 UTC (rev 28462)
@@ -142,10 +142,12 @@
     <bundle 
start-level="170">mvn:org.cytoscape/cpath2-impl/${cytoscape.impl.version}</bundle>
     <bundle 
start-level="170">mvn:org.cytoscape/network-merge-impl/${cytoscape.impl.version}</bundle>
     <bundle 
start-level="170">mvn:org.cytoscape/graphml-impl/${cytoscape.impl.version}</bundle>
-
     
     <bundle 
start-level="175">mvn:org.cytoscape/app-impl/${cytoscape.impl.version}</bundle>
-    <bundle 
start-level="175">mvn:org.cytoscape/welcome-impl/${cytoscape.impl.version}</bundle>
+    
+    <bundle 
start-level="180">mvn:org.cytoscape/scripting-impl/${cytoscape.impl.version}</bundle>
 
+    <bundle 
start-level="185">mvn:org.cytoscape/welcome-impl/${cytoscape.impl.version}</bundle>
+
   </feature>
 </features>

Modified: 
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/CyActivator.java
===================================================================
--- 
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/CyActivator.java
 2012-03-09 01:32:49 UTC (rev 28461)
+++ 
core3/impl/trunk/app-impl/src/main/java/org/cytoscape/app/internal/CyActivator.java
 2012-03-09 01:50:58 UTC (rev 28462)
@@ -1,5 +1,6 @@
 package org.cytoscape.app.internal;
 
+import org.cytoscape.app.CyAppAdapter;
 import org.cytoscape.app.internal.CyAppAdapterImpl;
 import org.cytoscape.app.internal.AppLoaderTaskFactory;
 import org.cytoscape.app.internal.StartupMostlyFinished;
@@ -116,6 +117,8 @@
                                cyApplicationConfigurationServiceRef);
                StartupMostlyFinished startupMostlyFinished = new 
StartupMostlyFinished(cyEventHelperRef);
                
+               registerService(bc,cyAppAdapter,CyAppAdapter.class, new 
Properties());
+               
                registerService(bc,appLoaderTaskFactory,TaskFactory.class, new 
Properties());
                registerAllServices(bc,appManagerAction, new Properties());
        }

Modified: core3/impl/trunk/pom.xml
===================================================================
--- core3/impl/trunk/pom.xml    2012-03-09 01:32:49 UTC (rev 28461)
+++ core3/impl/trunk/pom.xml    2012-03-09 01:50:58 UTC (rev 28462)
@@ -63,7 +63,8 @@
                <module>datasource-impl</module>
                <module>datasource-biogrid-impl</module>
                <module>welcome-impl</module>
-       </modules>
+    <module>scripting-impl</module>
+  </modules>
 
        <properties>
                
<cytoscape.api.version>3.0.0-alpha8-SNAPSHOT</cytoscape.api.version>

Added: core3/impl/trunk/scripting-impl/pom.xml
===================================================================
--- core3/impl/trunk/scripting-impl/pom.xml                             (rev 0)
+++ core3/impl/trunk/scripting-impl/pom.xml     2012-03-09 01:50:58 UTC (rev 
28462)
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd";>
+
+       <parent>
+               <artifactId>impl-parent</artifactId>
+               <groupId>org.cytoscape</groupId>
+               <version>3.0.0-alpha8-SNAPSHOT</version>
+       </parent>
+
+       <properties>
+               
<bundle.symbolicName>org.cytoscape.scripting-impl</bundle.symbolicName>
+               
<bundle.namespace>org.cytoscape.scripting.internal</bundle.namespace>
+       </properties>
+
+       <modelVersion>4.0.0</modelVersion>
+       <artifactId>scripting-impl</artifactId>
+
+       <name>${bundle.symbolicName} [${bundle.namespace}]</name>
+
+       <packaging>bundle</packaging>
+
+
+       <build>
+               <plugins>
+                       <plugin>
+                               <groupId>org.apache.maven.plugins</groupId>
+                               <artifactId>maven-jar-plugin</artifactId>
+                               <version>${maven-jar-plugin.version}</version>
+                               <executions>
+                                       <execution>
+                                               <goals>
+                                                       <goal>test-jar</goal>
+                                               </goals>
+                                       </execution>
+                               </executions>
+                       </plugin>
+                       <plugin>
+                               <groupId>org.apache.maven.plugins</groupId>
+                               <artifactId>maven-surefire-plugin</artifactId>
+                               
<version>${maven-surefire-plugin.version}</version>
+                               <configuration>
+                                       
<redirectTestOutputToFile>true</redirectTestOutputToFile>
+                               </configuration>
+                       </plugin>
+                       <plugin>
+                               <groupId>org.apache.felix</groupId>
+                               <artifactId>maven-bundle-plugin</artifactId>
+                               
<version>${maven-bundle-plugin.version}</version>
+                               <extensions>true</extensions>
+                               <configuration>
+                                       <instructions>
+                                               
<Bundle-SymbolicName>${bundle.symbolicName}</Bundle-SymbolicName>
+                                               
<DynamicImport-Package>*</DynamicImport-Package>
+                                               
<Bundle-Version>${project.version}</Bundle-Version>
+                                               
<Export-Package>!${bundle.namespace}.*</Export-Package>
+                                               
<Private-Package>${bundle.namespace}.*</Private-Package>
+                                               
<Bundle-Activator>${bundle.namespace}.CyActivator</Bundle-Activator>
+                                       </instructions>
+                               </configuration>
+                       </plugin>
+               </plugins>
+       </build>
+
+       <repositories>
+               <repository>
+                       <id>cytoscape_snapshots</id>
+                       <snapshots>
+                               <enabled>true</enabled>
+                       </snapshots>
+                       <releases>
+                               <enabled>false</enabled>
+                       </releases>
+                       <name>Cytoscape Snapshots</name>
+                       
<url>http://code.cytoscape.org/nexus/content/repositories/snapshots/</url>
+               </repository>
+               <repository>
+                       <id>cytoscape_releases</id>
+                       <snapshots>
+                               <enabled>false</enabled>
+                       </snapshots>
+                       <releases>
+                               <enabled>true</enabled>
+                       </releases>
+                       <name>Cytoscape Releases</name>
+                       
<url>http://code.cytoscape.org/nexus/content/repositories/releases/</url>
+               </repository>
+       </repositories>
+       <dependencies>
+               <dependency>
+                       <groupId>org.cytoscape</groupId>
+                       <artifactId>work-api</artifactId>
+               </dependency>
+               <dependency>
+                       <groupId>org.cytoscape</groupId>
+                       <artifactId>app-api</artifactId>
+               </dependency>
+               
+               
+               <!-- Testing -->
+               <dependency>
+                       <groupId>junit</groupId>
+                       <artifactId>junit</artifactId>
+                       <scope>test</scope>
+               </dependency>
+               <dependency>
+                       <groupId>org.mockito</groupId>
+                       <artifactId>mockito-all</artifactId>
+                       <scope>test</scope>
+               </dependency>
+
+       </dependencies>
+
+</project>

Added: 
core3/impl/trunk/scripting-impl/src/main/java/org/cytoscape/scripting/internal/CyActivator.java
===================================================================
--- 
core3/impl/trunk/scripting-impl/src/main/java/org/cytoscape/scripting/internal/CyActivator.java
                             (rev 0)
+++ 
core3/impl/trunk/scripting-impl/src/main/java/org/cytoscape/scripting/internal/CyActivator.java
     2012-03-09 01:50:58 UTC (rev 28462)
@@ -0,0 +1,30 @@
+package org.cytoscape.scripting.internal;
+
+import java.util.Properties;
+
+import org.cytoscape.app.CyAppAdapter;
+import org.cytoscape.service.util.AbstractCyActivator;
+import org.osgi.framework.BundleContext;
+
+public class CyActivator extends AbstractCyActivator {
+       public CyActivator() {
+               super();
+       }
+
+       public void start(BundleContext bc) {
+               CyAppAdapter appAdapter = getService(bc,CyAppAdapter.class);
+               
+               ExecuteScriptTaskFactory executeScriptTaskFactory = new 
ExecuteScriptTaskFactory(appAdapter);
+               
+               Properties executeScriptTaskFactoryProps = new Properties();
+               
executeScriptTaskFactoryProps.setProperty("id","executeScriptTaskFactory");
+               
executeScriptTaskFactoryProps.setProperty("preferredMenu","Tools");
+               executeScriptTaskFactoryProps.setProperty("title", "Run 
script...");
+               executeScriptTaskFactoryProps.setProperty("menuGravity","2.0");
+               
executeScriptTaskFactoryProps.setProperty("toolBarGravity","3.0");
+               executeScriptTaskFactoryProps.setProperty("inToolBar","false");
+               
+               registerAllServices(bc, executeScriptTaskFactory, 
executeScriptTaskFactoryProps);               
+               
+       }
+}

Added: 
core3/impl/trunk/scripting-impl/src/main/java/org/cytoscape/scripting/internal/ExecuteScriptTask.java
===================================================================
--- 
core3/impl/trunk/scripting-impl/src/main/java/org/cytoscape/scripting/internal/ExecuteScriptTask.java
                               (rev 0)
+++ 
core3/impl/trunk/scripting-impl/src/main/java/org/cytoscape/scripting/internal/ExecuteScriptTask.java
       2012-03-09 01:50:58 UTC (rev 28462)
@@ -0,0 +1,77 @@
+package org.cytoscape.scripting.internal;
+
+import java.io.File;
+import java.io.FileReader;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.script.ScriptEngine;
+import javax.script.ScriptEngineFactory;
+import javax.script.ScriptEngineManager;
+
+import org.cytoscape.app.CyAppAdapter;
+import org.cytoscape.work.Task;
+import org.cytoscape.work.TaskMonitor;
+import org.cytoscape.work.Tunable;
+import org.cytoscape.work.util.ListSingleSelection;
+
+
+/**
+ * Use standard Java scripting mechanism to run script.
+ *
+ */
+public class ExecuteScriptTask implements Task {
+
+       @Tunable(description = "Select a script file:", params = 
"fileCategory=SCRIPT;input=true")
+       public File file;
+       
+       @Tunable(description = "Select Scripting Language:")
+       public ListSingleSelection<String> engineNames;
+
+       private final Map<String, ScriptEngineFactory> name2engineMap;
+       private final CyAppAdapter cyAppAdapter;
+       
+       ExecuteScriptTask(final ScriptEngineManager manager, final CyAppAdapter 
cyAppAdapter) {
+               this.cyAppAdapter = cyAppAdapter;
+               
+               this.name2engineMap = new HashMap<String, 
ScriptEngineFactory>();
+               
+               final List<ScriptEngineFactory> engines = 
manager.getEngineFactories();
+               final List<String> engineNameList = new ArrayList<String>();
+               
+               for(final ScriptEngineFactory engine: engines) {
+                       final String langName = engine.getEngineName();
+                       final String langVersion = engine.getLanguageVersion();
+                       final String engineName = engine.getEngineName();
+                       final String engineDescription = langName + " (" + 
engineName + ", Version " + langVersion + ")";
+                       engineNameList.add(engineDescription);
+                       name2engineMap.put(engineDescription, engine);
+               }
+               
+               if(engineNameList.size() == 0)
+                       throw new IllegalStateException("No Scripting Engine is 
available.");
+               
+               engineNames = new ListSingleSelection<String>(engineNameList);
+               engineNames.setSelectedValue(engineNameList.get(0));
+       }
+
+       @Override
+       public void run(TaskMonitor taskMonitor) throws Exception {             
+               final ScriptEngineFactory engineFactory = 
name2engineMap.get(engineNames.getSelectedValue());
+               final ScriptEngine engine = engineFactory.getScriptEngine();
+
+               // Provide access to CyAppAdapter.
+               engine.put("cyAppAdapter", cyAppAdapter);
+               
+               // Execute
+               engine.eval(new FileReader(file));
+       }
+
+       @Override
+       public void cancel() {
+               Thread.currentThread().interrupt();
+       }
+
+}

Added: 
core3/impl/trunk/scripting-impl/src/main/java/org/cytoscape/scripting/internal/ExecuteScriptTaskFactory.java
===================================================================
--- 
core3/impl/trunk/scripting-impl/src/main/java/org/cytoscape/scripting/internal/ExecuteScriptTaskFactory.java
                                (rev 0)
+++ 
core3/impl/trunk/scripting-impl/src/main/java/org/cytoscape/scripting/internal/ExecuteScriptTaskFactory.java
        2012-03-09 01:50:58 UTC (rev 28462)
@@ -0,0 +1,24 @@
+package org.cytoscape.scripting.internal;
+
+import javax.script.ScriptEngineManager;
+
+import org.cytoscape.app.CyAppAdapter;
+import org.cytoscape.work.TaskFactory;
+import org.cytoscape.work.TaskIterator;
+
+public class ExecuteScriptTaskFactory implements TaskFactory {
+       
+       private final ScriptEngineManager manager;
+       private final CyAppAdapter cyAppAdapter;
+       
+       public ExecuteScriptTaskFactory(final CyAppAdapter cyAppAdapter) {
+               this.manager = new ScriptEngineManager();
+               this.cyAppAdapter = cyAppAdapter;
+       }
+
+       @Override
+       public TaskIterator createTaskIterator() {
+               return new TaskIterator(new ExecuteScriptTask(manager, 
cyAppAdapter));
+       }
+
+}

Added: 
core3/impl/trunk/scripting-impl/src/test/java/org/cytoscape/scripting/internal/ExecuteScriptTaskTest.java
===================================================================
--- 
core3/impl/trunk/scripting-impl/src/test/java/org/cytoscape/scripting/internal/ExecuteScriptTaskTest.java
                           (rev 0)
+++ 
core3/impl/trunk/scripting-impl/src/test/java/org/cytoscape/scripting/internal/ExecuteScriptTaskTest.java
   2012-03-09 01:50:58 UTC (rev 28462)
@@ -0,0 +1,23 @@
+package org.cytoscape.scripting.internal;
+
+import static org.junit.Assert.*;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+public class ExecuteScriptTaskTest {
+
+       @Before
+       public void setUp() throws Exception {
+       }
+
+       @After
+       public void tearDown() throws Exception {
+       }
+
+       @Test
+       public void test() {
+       }
+
+}

Added: core3/impl/trunk/scripting-impl/src/test/resources/javascript_test.js
===================================================================
--- core3/impl/trunk/scripting-impl/src/test/resources/javascript_test.js       
                        (rev 0)
+++ core3/impl/trunk/scripting-impl/src/test/resources/javascript_test.js       
2012-03-09 01:50:58 UTC (rev 28462)
@@ -0,0 +1 @@
+println("This is test from JavaScript engine.");
\ No newline at end of file

Added: core3/impl/trunk/scripting-impl/src/test/resources/network_creation.js
===================================================================
--- core3/impl/trunk/scripting-impl/src/test/resources/network_creation.js      
                        (rev 0)
+++ core3/impl/trunk/scripting-impl/src/test/resources/network_creation.js      
2012-03-09 01:50:58 UTC (rev 28462)
@@ -0,0 +1,12 @@
+// Generate a complete graph
+
+importPackage( Packages.javax.swing );
+importPackage( Packages.org.cytoscape.app.CyAppAdapter );
+importPackage( Packages.org.cytoscape.model.CyNetwork );
+
+var newNetwork = cyAppAdapter.getCyNetworkFactory().createNetwork();
+cyAppAdapter.getCyNetworkManager().addNetwork(newNetwork);
+
+var nodes = new Array();
+
+println("Network registered!: ");

-- 
You received this message because you are subscribed to the Google Groups 
"cytoscape-cvs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/cytoscape-cvs?hl=en.

Reply via email to