Fix the script engine in the jclouds CLI
diff --git a/runner/pom.xml b/runner/pom.xml
index 2e030ce..ad9f005 100644
--- a/runner/pom.xml
+++ b/runner/pom.xml
@@ -41,6 +41,12 @@
<artifactId>jclouds-blobstore</artifactId>
<version>${project.parent.version}</version>
</dependency>
+
+ <dependency>
+ <groupId>org.apache.jclouds.karaf</groupId>
+ <artifactId>commands</artifactId>
+ <version>${project.parent.version}</version>
+ </dependency>
<dependency>
<groupId>org.apache.jclouds</groupId>
diff --git a/runner/src/main/java/org/jclouds/cli/runner/Main.java b/runner/src/main/java/org/jclouds/cli/runner/Main.java
index efc5cbf..c2dde3e 100644
--- a/runner/src/main/java/org/jclouds/cli/runner/Main.java
+++ b/runner/src/main/java/org/jclouds/cli/runner/Main.java
@@ -36,6 +36,8 @@
import java.util.List;
import java.util.concurrent.TimeoutException;
+import javax.script.ScriptEngineManager;
+
import jline.Terminal;
import org.apache.felix.gogo.commands.Action;
@@ -54,6 +56,9 @@
import org.fusesource.jansi.AnsiConsole;
import org.jclouds.blobstore.ContainerNotFoundException;
import org.jclouds.blobstore.KeyNotFoundException;
+import org.jclouds.karaf.commands.compute.ComputeCommandBase;
+import org.jclouds.karaf.commands.table.BasicShellTableFactory;
+import org.jclouds.karaf.commands.table.ShellTableFactory;
import org.jclouds.rest.AuthorizationException;
import org.jclouds.rest.InsufficientResourcesException;
import org.jclouds.rest.ResourceAlreadyExistsException;
@@ -344,7 +349,17 @@
@Override
public Action createNewAction() {
try {
- return ((Class<? extends Action>) actionClass).newInstance();
+ Action action = ((Class< ? extends Action>) actionClass).newInstance();
+ if (action instanceof ComputeCommandBase) {
+ ShellTableFactory shellTableFactory = ((ComputeCommandBase) action).getShellTableFactory();
+ if (shellTableFactory instanceof BasicShellTableFactory) {
+ BasicShellTableFactory factory = (BasicShellTableFactory) shellTableFactory;
+ if (factory.getScriptEngineManager() == null) {
+ factory.setScriptEngineManager(new ScriptEngineManager());
+ }
+ }
+ }
+ return action;
} catch (InstantiationException e) {
throw new RuntimeException(e);
} catch (IllegalAccessException e) {