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.