Fix the script engine in the jclouds CLI
Project: http://git-wip-us.apache.org/repos/asf/jclouds-cli/repo Commit: http://git-wip-us.apache.org/repos/asf/jclouds-cli/commit/6a6ffebf Tree: http://git-wip-us.apache.org/repos/asf/jclouds-cli/tree/6a6ffebf Diff: http://git-wip-us.apache.org/repos/asf/jclouds-cli/diff/6a6ffebf Branch: refs/heads/master Commit: 6a6ffebfdebb0b53217fe6219dd17ed30facf270 Parents: 47d3bef Author: Ignasi Barrera <[email protected]> Authored: Wed Nov 9 16:41:53 2016 +0100 Committer: Ignasi Barrera <[email protected]> Committed: Wed Nov 9 22:00:57 2016 +0100 ---------------------------------------------------------------------- runner/pom.xml | 6 ++++++ .../src/main/java/org/jclouds/cli/runner/Main.java | 17 ++++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jclouds-cli/blob/6a6ffebf/runner/pom.xml ---------------------------------------------------------------------- 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> http://git-wip-us.apache.org/repos/asf/jclouds-cli/blob/6a6ffebf/runner/src/main/java/org/jclouds/cli/runner/Main.java ---------------------------------------------------------------------- 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.LinkedList; 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.Ansi; 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 @@ public class Main { @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) {
