You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@chemistry.apache.org by fm...@apache.org on 2011/05/15 22:23:56 UTC

svn commit: r1103535 - in /chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench: ClientHelper.java details/ObjectPanel.java

Author: fmui
Date: Sun May 15 20:23:55 2011
New Revision: 1103535

URL: http://svn.apache.org/viewvc?rev=1103535&view=rev
Log:
CMIS Workbench: added support for all JSR 223 scripting languages

Modified:
    chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/ClientHelper.java
    chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/details/ObjectPanel.java

Modified: chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/ClientHelper.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/ClientHelper.java?rev=1103535&r1=1103534&r2=1103535&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/ClientHelper.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/ClientHelper.java Sun May 15 20:23:55 2011
@@ -482,13 +482,13 @@ public class ClientHelper {
         }
     }
 
-    public static void runJavaScriptScript(final Component parent, final ClientModel model, final File file,
-            final Writer out) {
+    public static void runJSR223Script(final Component parent, final ClientModel model, final File file,
+            final String ext, final Writer out) {
         try {
             parent.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
 
             ScriptEngineManager mgr = new ScriptEngineManager();
-            ScriptEngine engine = mgr.getEngineByExtension("js");
+            ScriptEngine engine = mgr.getEngineByExtension(ext);
             engine.getContext().setWriter(out);
             engine.getContext().setErrorWriter(out);
             engine.put("session", model.getClientSession().getSession());

Modified: chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/details/ObjectPanel.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/details/ObjectPanel.java?rev=1103535&r1=1103534&r2=1103535&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/details/ObjectPanel.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/details/ObjectPanel.java Sun May 15 20:23:55 2011
@@ -29,8 +29,12 @@ import java.io.File;
 import java.io.IOException;
 import java.io.Writer;
 import java.util.Collections;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
+import javax.script.ScriptEngineFactory;
+import javax.script.ScriptEngineManager;
 import javax.swing.BorderFactory;
 import javax.swing.BoxLayout;
 import javax.swing.JButton;
@@ -55,6 +59,8 @@ public class ObjectPanel extends InfoPan
 
     private static final long serialVersionUID = 1L;
 
+    private final Set<String> scriptExtensions;
+
     private JTextField nameField;
     private JTextField idField;
     private JTextField typeField;
@@ -76,6 +82,13 @@ public class ObjectPanel extends InfoPan
 
         model.addObjectListener(this);
 
+        // get all installed script engines
+        scriptExtensions = new HashSet<String>();
+        ScriptEngineManager mgr = new ScriptEngineManager();
+        for (ScriptEngineFactory sef : mgr.getEngineFactories()) {
+            scriptExtensions.addAll(sef.getExtensions());
+        }
+
         createGUI();
     }
 
@@ -166,7 +179,8 @@ public class ObjectPanel extends InfoPan
 
                 if (object instanceof Document) {
                     String name = object.getName().toLowerCase();
-                    if (name.endsWith(".groovy") || name.endsWith(".js")) {
+                    int x = name.lastIndexOf('.');
+                    if ((x > -1) && (scriptExtensions.contains(name.substring(x + 1)))) {
                         scriptPanel.setVisible(true);
                         scriptOutput.setVisible(false);
                     } else {
@@ -242,7 +256,7 @@ public class ObjectPanel extends InfoPan
                         if (console != null) {
                             console.loadScriptFile(file);
                         }
-                    } else if (name.endsWith(".js")) {
+                    } else {
                         ClientHelper.open(ObjectPanel.this, doc, null);
                     }
                 } catch (Exception ex) {
@@ -259,16 +273,14 @@ public class ObjectPanel extends InfoPan
                     setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
                     Document doc = (Document) getClientModel().getCurrentObject();
                     File file = ClientHelper.createTempFileFromDocument(doc, null);
+                    String name = doc.getName().toLowerCase();
+                    String ext = name.substring(name.lastIndexOf('.') + 1);
+
                     scriptOutput.setText("");
                     scriptOutput.setVisible(true);
                     scriptOutput.invalidate();
 
-                    String name = doc.getName().toLowerCase();
-                    if (name.endsWith(".groovy")) {
-                        ClientHelper.runGroovyScript(ObjectPanel.this, getClientModel(), file, scriptOutputWriter);
-                    } else if (name.endsWith(".js")) {
-                        ClientHelper.runJavaScriptScript(ObjectPanel.this, getClientModel(), file, scriptOutputWriter);
-                    }
+                    ClientHelper.runJSR223Script(ObjectPanel.this, getClientModel(), file, ext, scriptOutputWriter);
                 } catch (Exception ex) {
                     ClientHelper.showError(null, ex);
                 } finally {