You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by gn...@apache.org on 2011/03/31 09:58:33 UTC
svn commit: r1087208 - in
/karaf/branches/karaf-2.2.x/shell/commands/src/main:
java/org/apache/karaf/shell/commands/SourceAction.java
resources/OSGI-INF/blueprint/shell-commands.xml
Author: gnodet
Date: Thu Mar 31 07:58:33 2011
New Revision: 1087208
URL: http://svn.apache.org/viewvc?rev=1087208&view=rev
Log:
[KARAF-551] Implement the shell:source command
Modified:
karaf/branches/karaf-2.2.x/shell/commands/src/main/java/org/apache/karaf/shell/commands/SourceAction.java
karaf/branches/karaf-2.2.x/shell/commands/src/main/resources/OSGI-INF/blueprint/shell-commands.xml
Modified: karaf/branches/karaf-2.2.x/shell/commands/src/main/java/org/apache/karaf/shell/commands/SourceAction.java
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.2.x/shell/commands/src/main/java/org/apache/karaf/shell/commands/SourceAction.java?rev=1087208&r1=1087207&r2=1087208&view=diff
==============================================================================
--- karaf/branches/karaf-2.2.x/shell/commands/src/main/java/org/apache/karaf/shell/commands/SourceAction.java (original)
+++ karaf/branches/karaf-2.2.x/shell/commands/src/main/java/org/apache/karaf/shell/commands/SourceAction.java Thu Mar 31 07:58:33 2011
@@ -18,8 +18,74 @@
*/
package org.apache.karaf.shell.commands;
+import java.io.BufferedReader;
+import java.io.CharArrayWriter;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.List;
+
+import org.apache.felix.gogo.commands.Argument;
+import org.apache.felix.gogo.commands.Command;
+import org.apache.karaf.shell.console.AbstractAction;
+
/**
* TODO
*/
-public class SourceAction {
+@Command(scope = "shell", name = "source", description = "Run a script")
+public class SourceAction extends AbstractAction {
+
+ @Argument(index = 0, name = "script", description = "A URI pointing to the script", required = true, multiValued = false)
+ private String script;
+
+ @Argument(index = 1, name = "args", description = "Arguments for the script", required = false, multiValued = true)
+ private List<Object> args;
+
+ @Override
+ protected Object doExecute() throws Exception {
+ BufferedReader reader = null;
+ Object arg0 = session.get("0");
+ try {
+ // First try a URL
+ try {
+ URL url = new URL(script);
+ log.info("Printing URL: " + url);
+ reader = new BufferedReader(new InputStreamReader(url.openStream()));
+ }
+ catch (MalformedURLException ignore) {
+ // They try a file
+ File file = new File(script);
+ log.info("Printing file: " + file);
+ reader = new BufferedReader(new FileReader(file));
+ }
+
+ CharArrayWriter w = new CharArrayWriter();
+ int n;
+ char[] buf = new char[8192];
+ while ((n = reader.read(buf)) > 0) {
+ w.write(buf, 0, n);
+ }
+
+ for (int i = 0; args != null && i < args.size(); i++) {
+ session.put( Integer.toString(i+1), args.get(i) );
+ }
+
+ return session.execute(w.toString());
+ } finally {
+ for (int i = 0; args != null && i < args.size(); i++) {
+ session.put( Integer.toString(i+1), null );
+ }
+ session.put("0", arg0);
+ if (reader != null) {
+ try {
+ reader.close();
+ } catch (IOException e) {
+ // Ignore
+ }
+ }
+ }
+ }
}
Modified: karaf/branches/karaf-2.2.x/shell/commands/src/main/resources/OSGI-INF/blueprint/shell-commands.xml
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.2.x/shell/commands/src/main/resources/OSGI-INF/blueprint/shell-commands.xml?rev=1087208&r1=1087207&r2=1087208&view=diff
==============================================================================
--- karaf/branches/karaf-2.2.x/shell/commands/src/main/resources/OSGI-INF/blueprint/shell-commands.xml (original)
+++ karaf/branches/karaf-2.2.x/shell/commands/src/main/resources/OSGI-INF/blueprint/shell-commands.xml Thu Mar 31 07:58:33 2011
@@ -73,11 +73,9 @@
<command name="shell/sort">
<action class="org.apache.karaf.shell.commands.SortAction"/>
</command>
- <!--
<command name="shell/source">
<action class="org.apache.karaf.shell.commands.SourceAction"/>
</command>
- -->
<command name="shell/tac">
<action class="org.apache.karaf.shell.commands.TacAction"/>
</command>