You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by gn...@apache.org on 2009/06/23 00:27:14 UTC
svn commit: r787428 [1/3] - in /felix/trunk/gogo: ./
src/main/java/org/apache/felix/gogo/cpeg/
src/main/java/org/apache/felix/gogo/launcher/
src/main/java/org/apache/felix/gogo/shell/console/
src/main/java/org/apache/felix/gogo/shell/equinox/ src/main/...
Author: gnodet
Date: Mon Jun 22 22:27:13 2009
New Revision: 787428
URL: http://svn.apache.org/viewvc?rev=787428&view=rev
Log:
FELIX-1268: Reformat code according to felix conventions
Modified:
felix/trunk/gogo/pom.xml
felix/trunk/gogo/src/main/java/org/apache/felix/gogo/cpeg/Procedural.java
felix/trunk/gogo/src/main/java/org/apache/felix/gogo/launcher/Launcher.java
felix/trunk/gogo/src/main/java/org/apache/felix/gogo/shell/console/Console.java
felix/trunk/gogo/src/main/java/org/apache/felix/gogo/shell/equinox/Equinox.java
felix/trunk/gogo/src/main/java/org/apache/felix/gogo/shell/lang/Support.java
felix/trunk/gogo/src/main/java/org/apache/felix/gogo/shell/osgi/OSGiCommands.java
felix/trunk/gogo/src/main/java/org/apache/felix/gogo/shell/osgi/OSGiShell.java
felix/trunk/gogo/src/main/java/org/apache/felix/gogo/shell/osgi/ServiceCommand.java
felix/trunk/gogo/src/main/java/org/apache/felix/gogo/shell/runtime/Closure.java
felix/trunk/gogo/src/main/java/org/apache/felix/gogo/shell/runtime/Command.java
felix/trunk/gogo/src/main/java/org/apache/felix/gogo/shell/runtime/CommandSessionImpl.java
felix/trunk/gogo/src/main/java/org/apache/felix/gogo/shell/runtime/CommandShellImpl.java
felix/trunk/gogo/src/main/java/org/apache/felix/gogo/shell/runtime/Parser.java
felix/trunk/gogo/src/main/java/org/apache/felix/gogo/shell/runtime/Pipe.java
felix/trunk/gogo/src/main/java/org/apache/felix/gogo/shell/runtime/Reflective.java
felix/trunk/gogo/src/main/java/org/apache/felix/gogo/shell/stdio/StdioConsole.java
felix/trunk/gogo/src/main/java/org/apache/felix/gogo/shell/telnet/Handler.java
felix/trunk/gogo/src/main/java/org/apache/felix/gogo/shell/telnet/TelnetShell.java
felix/trunk/gogo/src/main/java/org/apache/felix/gogo/threadio/Marker.java
felix/trunk/gogo/src/main/java/org/apache/felix/gogo/threadio/ThreadIOImpl.java
felix/trunk/gogo/src/main/java/org/apache/felix/gogo/threadio/ThreadInputStream.java
felix/trunk/gogo/src/main/java/org/apache/felix/gogo/threadio/ThreadPrintStream.java
felix/trunk/gogo/src/main/java/org/osgi/framework/boot/SystemBundle.java
felix/trunk/gogo/src/main/java/org/osgi/service/command/CommandProcessor.java
felix/trunk/gogo/src/main/java/org/osgi/service/command/CommandSession.java
felix/trunk/gogo/src/main/java/org/osgi/service/command/Converter.java
felix/trunk/gogo/src/main/java/org/osgi/service/command/Function.java
felix/trunk/gogo/src/main/java/org/osgi/service/threadio/ThreadIO.java
felix/trunk/gogo/src/test/java/org/apache/felix/gogo/shell/runtime/Context.java
felix/trunk/gogo/src/test/java/org/apache/felix/gogo/shell/runtime/TestParser.java
felix/trunk/gogo/src/test/java/org/apache/felix/gogo/threadio/TestThreadIO.java
Modified: felix/trunk/gogo/pom.xml
URL: http://svn.apache.org/viewvc/felix/trunk/gogo/pom.xml?rev=787428&r1=787427&r2=787428&view=diff
==============================================================================
--- felix/trunk/gogo/pom.xml (original)
+++ felix/trunk/gogo/pom.xml Mon Jun 22 22:27:13 2009
@@ -16,76 +16,77 @@
specific language governing permissions and limitations
under the License.
-->
-<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>
- <groupId>org.apache.felix</groupId>
- <artifactId>felix-parent</artifactId>
- <version>1.2.0</version>
- <relativePath>../pom/pom.xml</relativePath>
- </parent>
- <modelVersion>4.0.0</modelVersion>
- <packaging>bundle</packaging>
- <name>Apache Felix Gogo Shell</name>
- <artifactId>org.apache.felix.gogo</artifactId>
- <version>1.0.0-SNAPSHOT</version>
- <dependencies>
- <dependency>
- <groupId>${pom.groupId}</groupId>
- <artifactId>org.osgi.core</artifactId>
- <version>1.2.0</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>${pom.groupId}</groupId>
- <artifactId>org.osgi.compendium</artifactId>
- <version>1.2.0</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.5</version>
- <scope>test</scope>
- </dependency>
- </dependencies>
- <build>
- <plugins>
- <plugin>
+<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>
<groupId>org.apache.felix</groupId>
- <artifactId>maven-bundle-plugin</artifactId>
- <version>2.0.0</version>
- <extensions>true</extensions>
- <configuration>
- <instructions>
- <Export-Package>org.osgi.service.command; version=1.0.0</Export-Package>
- <Private-Package>org.apache.felix.gogo.*</Private-Package>
- <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
- <Bundle-Vendor>The Apache Software Foundation</Bundle-Vendor>
- </instructions>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>rat-maven-plugin</artifactId>
- <configuration>
- <excludeSubProjects>false</excludeSubProjects>
- <useEclipseDefaultExcludes>true</useEclipseDefaultExcludes>
- <useMavenDefaultExcludes>true</useMavenDefaultExcludes>
- <excludes>
- <param>doc/*</param>
- <param>maven-eclipse.xml</param>
- <param>.checkstyle</param>
- <param>.externalToolBuilders/*</param>
- </excludes>
- </configuration>
- </plugin>
- <plugin>
- <artifactId>maven-compiler-plugin</artifactId>
- <configuration>
- <source>1.5</source>
- <target>1.5</target>
- </configuration>
- </plugin>
- </plugins>
- </build>
+ <artifactId>felix-parent</artifactId>
+ <version>1.2.0</version>
+ <relativePath>../pom/pom.xml</relativePath>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <packaging>bundle</packaging>
+ <name>Apache Felix Gogo Shell</name>
+ <artifactId>org.apache.felix.gogo</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <dependencies>
+ <dependency>
+ <groupId>${pom.groupId}</groupId>
+ <artifactId>org.osgi.core</artifactId>
+ <version>1.2.0</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>${pom.groupId}</groupId>
+ <artifactId>org.osgi.compendium</artifactId>
+ <version>1.2.0</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.5</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-bundle-plugin</artifactId>
+ <version>2.0.0</version>
+ <extensions>true</extensions>
+ <configuration>
+ <instructions>
+ <Export-Package>org.osgi.service.command; version=1.0.0</Export-Package>
+ <Private-Package>org.apache.felix.gogo.*</Private-Package>
+ <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
+ <Bundle-Vendor>The Apache Software Foundation</Bundle-Vendor>
+ </instructions>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>rat-maven-plugin</artifactId>
+ <configuration>
+ <excludeSubProjects>false</excludeSubProjects>
+ <useEclipseDefaultExcludes>true</useEclipseDefaultExcludes>
+ <useMavenDefaultExcludes>true</useMavenDefaultExcludes>
+ <excludes>
+ <param>doc/*</param>
+ <param>maven-eclipse.xml</param>
+ <param>.checkstyle</param>
+ <param>.externalToolBuilders/*</param>
+ </excludes>
+ </configuration>
+ </plugin>
+ <plugin>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <configuration>
+ <source>1.5</source>
+ <target>1.5</target>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
</project>
Modified: felix/trunk/gogo/src/main/java/org/apache/felix/gogo/cpeg/Procedural.java
URL: http://svn.apache.org/viewvc/felix/trunk/gogo/src/main/java/org/apache/felix/gogo/cpeg/Procedural.java?rev=787428&r1=787427&r2=787428&view=diff
==============================================================================
--- felix/trunk/gogo/src/main/java/org/apache/felix/gogo/cpeg/Procedural.java (original)
+++ felix/trunk/gogo/src/main/java/org/apache/felix/gogo/cpeg/Procedural.java Mon Jun 22 22:27:13 2009
@@ -19,41 +19,60 @@
package org.apache.felix.gogo.cpeg;
-import org.osgi.framework.*;
-import org.osgi.service.command.*;
+import org.osgi.framework.Bundle;
+import org.osgi.service.command.CommandSession;
+import org.osgi.service.command.Function;
-public class Procedural {
-
- public Object _if( CommandSession session, Function condition, Function ifTrue, Function ifFalse ) throws Exception {
+public class Procedural
+{
+
+ public Object _if(CommandSession session, Function condition, Function ifTrue, Function ifFalse) throws Exception
+ {
Object result = condition.execute(session, null);
- if ( isTrue(result)) {
+ if (isTrue(result))
+ {
return ifTrue.execute(session, null);
- } else {
- if ( ifFalse != null )
- return ifFalse.execute(session,null);
+ }
+ else
+ {
+ if (ifFalse != null)
+ {
+ return ifFalse.execute(session, null);
+ }
}
return null;
}
-
- public Object _new(String name, Bundle bundle) throws Exception {
- if ( bundle == null)
+
+ public Object _new(String name, Bundle bundle) throws Exception
+ {
+ if (bundle == null)
+ {
return Class.forName(name).newInstance();
- else {
+ }
+ else
+ {
return bundle.loadClass(name).newInstance();
}
}
- private boolean isTrue(Object result) {
- if ( result == null)
+ private boolean isTrue(Object result)
+ {
+ if (result == null)
+ {
return false;
-
- if ( result instanceof String && ((String)result).equals(""))
+ }
+
+ if (result instanceof String && ((String) result).equals(""))
+ {
return false;
-
- if ( result instanceof Boolean )
- return ((Boolean)result).booleanValue();
-
+ }
+
+ if (result instanceof Boolean)
+ {
+ return ((Boolean) result).booleanValue();
+ }
+
return true;
}
}
Modified: felix/trunk/gogo/src/main/java/org/apache/felix/gogo/launcher/Launcher.java
URL: http://svn.apache.org/viewvc/felix/trunk/gogo/src/main/java/org/apache/felix/gogo/launcher/Launcher.java?rev=787428&r1=787427&r2=787428&view=diff
==============================================================================
--- felix/trunk/gogo/src/main/java/org/apache/felix/gogo/launcher/Launcher.java (original)
+++ felix/trunk/gogo/src/main/java/org/apache/felix/gogo/launcher/Launcher.java Mon Jun 22 22:27:13 2009
@@ -18,104 +18,143 @@
*/
package org.apache.felix.gogo.launcher;
+import org.apache.felix.gogo.shell.console.Console;
+import org.apache.felix.gogo.shell.osgi.OSGiShell;
+import org.apache.felix.gogo.threadio.ThreadIOImpl;
+import org.osgi.framework.Bundle;
+import org.osgi.service.command.CommandProcessor;
+import org.osgi.service.command.CommandSession;
+
import java.io.*;
-import java.lang.reflect.*;
-import java.net.*;
+import java.lang.reflect.Constructor;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLClassLoader;
import java.util.*;
-import org.osgi.framework.*;
-import org.osgi.service.command.*;
-
-import org.apache.felix.gogo.shell.console.*;
-import org.apache.felix.gogo.shell.osgi.*;
-import org.apache.felix.gogo.threadio.*;
-
-public class Launcher {
- static List<URL> classpath = new ArrayList<URL>();
- static File cwd = new File("").getAbsoluteFile();
-
- public static void main(String args[]) throws Exception {
- StringBuffer sb = new StringBuffer();
- String framework = null;
- PrintStream out = System.out;
- InputStream in = System.in;
- boolean console = false;
-
- for (int i = 0; i < args.length; i++) {
- String arg = args[i];
- if (arg.equals("-f")) {
- framework = args[++i];
- } else if (arg.equals("-cp") || arg.equals("-classpath")) {
- classpath(args[++i]);
- } else if (arg.equals("-console")) {
- console = true;
- } else if (arg.equals("-i")) {
- in = new FileInputStream(args[++i]);
- } else if (arg.equals("-o")) {
- out = new PrintStream(new FileOutputStream(args[++i]));
- } else {
- sb.append(' ');
- sb.append(arg);
- }
- }
-
- if (framework == null) {
- System.err.println("No framework set");
- System.exit(1);
- }
-
- ThreadIOImpl threadio = new ThreadIOImpl();
- threadio.start();
- URL[] urls = classpath.toArray(new URL[classpath.size()]);
- URLClassLoader urlcl = new URLClassLoader(urls, Launcher.class.getClassLoader());
- Class<?> fw = urlcl.loadClass(framework);
-
- Constructor<?> c = fw.getConstructor(Map.class, List.class );
- Properties p = new Properties( System.getProperties());
- p.setProperty("felix.cache.profile", "default");
- p.setProperty("felix.embedded.execution", "true");
- Bundle bundle = (Bundle) c.newInstance(p,null);
-
- OSGiShell shell = new OSGiShell();
- shell.setThreadio(threadio);
- shell.setBundle(bundle);
- shell.start();
-
-
- CommandSession session = shell.createSession(in, out,
- System.err);
- session.put("shell", shell);
- session.put("threadio", threadio);
-
- session.execute(sb);
- out.flush();
-
- if ( bundle.getState() == Bundle.ACTIVE ) {
- bundle.getBundleContext().registerService(CommandProcessor.class.getName(), shell, null );
- }
- if ( console ) {
- Console cons = new Console();
- cons.setSession(session);
- cons.run();
- }
- }
-
-
- private static void classpath(String string) throws MalformedURLException {
- StringTokenizer st = new StringTokenizer(string, File.pathSeparator);
- while (st.hasMoreTokens()) {
- String part = st.nextToken();
- if ( part.equals("."))
- classpath.add( cwd.toURL() );
-
- File f = new File(part);
- if ( ! f.isAbsolute() ) {
- f = new File( cwd, part );
- }
- if ( f.exists() )
- classpath.add( f.toURL());
- else
- System.err.println("Can not find " + part );
- }
- }
+public class Launcher
+{
+ static List<URL> classpath = new ArrayList<URL>();
+ static File cwd = new File("").getAbsoluteFile();
+
+ public static void main(String args[]) throws Exception
+ {
+ StringBuffer sb = new StringBuffer();
+ String framework = null;
+ PrintStream out = System.out;
+ InputStream in = System.in;
+ boolean console = false;
+
+ for (int i = 0; i < args.length; i++)
+ {
+ String arg = args[i];
+ if (arg.equals("-f"))
+ {
+ framework = args[++i];
+ }
+ else
+ {
+ if (arg.equals("-cp") || arg.equals("-classpath"))
+ {
+ classpath(args[++i]);
+ }
+ else
+ {
+ if (arg.equals("-console"))
+ {
+ console = true;
+ }
+ else
+ {
+ if (arg.equals("-i"))
+ {
+ in = new FileInputStream(args[++i]);
+ }
+ else
+ {
+ if (arg.equals("-o"))
+ {
+ out = new PrintStream(new FileOutputStream(args[++i]));
+ }
+ else
+ {
+ sb.append(' ');
+ sb.append(arg);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ if (framework == null)
+ {
+ System.err.println("No framework set");
+ System.exit(1);
+ }
+
+ ThreadIOImpl threadio = new ThreadIOImpl();
+ threadio.start();
+ URL[] urls = classpath.toArray(new URL[classpath.size()]);
+ URLClassLoader urlcl = new URLClassLoader(urls, Launcher.class.getClassLoader());
+ Class<?> fw = urlcl.loadClass(framework);
+
+ Constructor<?> c = fw.getConstructor(Map.class, List.class);
+ Properties p = new Properties(System.getProperties());
+ p.setProperty("felix.cache.profile", "default");
+ p.setProperty("felix.embedded.execution", "true");
+ Bundle bundle = (Bundle) c.newInstance(p, null);
+
+ OSGiShell shell = new OSGiShell();
+ shell.setThreadio(threadio);
+ shell.setBundle(bundle);
+ shell.start();
+
+
+ CommandSession session = shell.createSession(in, out, System.err);
+ session.put("shell", shell);
+ session.put("threadio", threadio);
+
+ session.execute(sb);
+ out.flush();
+
+ if (bundle.getState() == Bundle.ACTIVE)
+ {
+ bundle.getBundleContext().registerService(CommandProcessor.class.getName(), shell, null);
+ }
+ if (console)
+ {
+ Console cons = new Console();
+ cons.setSession(session);
+ cons.run();
+ }
+ }
+
+
+ private static void classpath(String string) throws MalformedURLException
+ {
+ StringTokenizer st = new StringTokenizer(string, File.pathSeparator);
+ while (st.hasMoreTokens())
+ {
+ String part = st.nextToken();
+ if (part.equals("."))
+ {
+ classpath.add(cwd.toURL());
+ }
+
+ File f = new File(part);
+ if (!f.isAbsolute())
+ {
+ f = new File(cwd, part);
+ }
+ if (f.exists())
+ {
+ classpath.add(f.toURL());
+ }
+ else
+ {
+ System.err.println("Can not find " + part);
+ }
+ }
+ }
}
Modified: felix/trunk/gogo/src/main/java/org/apache/felix/gogo/shell/console/Console.java
URL: http://svn.apache.org/viewvc/felix/trunk/gogo/src/main/java/org/apache/felix/gogo/shell/console/Console.java?rev=787428&r1=787427&r2=787428&view=diff
==============================================================================
--- felix/trunk/gogo/src/main/java/org/apache/felix/gogo/shell/console/Console.java (original)
+++ felix/trunk/gogo/src/main/java/org/apache/felix/gogo/shell/console/Console.java Mon Jun 22 22:27:13 2009
@@ -19,125 +19,169 @@
package org.apache.felix.gogo.shell.console;
-import java.io.*;
-import java.lang.reflect.*;
-import java.util.*;
-
-import org.osgi.service.command.*;
-
-public class Console implements Runnable {
- StringBuilder sb;
- CommandSession session;
- List<CharSequence> history = new ArrayList<CharSequence>();
- int current = 0;
- boolean quit;
-
- public void setSession(CommandSession session) {
- this.session= session;
- }
-
- public void run() {
- try {
- while (!quit) {
- try {
- CharSequence line = getLine(session.getKeyboard());
- if (line != null) {
- history.add(line);
- if (history.size() > 40)
- history.remove(0);
- Object result = session.execute(line);
- if (result != null)
- session.getConsole().println(
- session.format(result, Converter.INSPECT));
- } else
- quit = true;
-
- } catch (InvocationTargetException ite) {
- session.getConsole().println(
- "E: " + ite.getTargetException());
- session.put("exception", ite.getTargetException());
- } catch (Throwable e) {
- if (!quit) {
- session.getConsole().println("E: " + e.getMessage());
- session.put("exception", e);
- }
- }
- }
- } catch (Exception e) {
- if (!quit)
- e.printStackTrace();
- }
- }
-
- CharSequence getLine(InputStream in) throws IOException {
- sb = new StringBuilder();
- session.getConsole().print("$ ");
- int outer = 0;
- while (!quit) {
- session.getConsole().flush();
- int c = in.read();
- if (c < 0)
- quit = true;
- else {
- switch (c) {
- case '\r':
- break;
- case '\n':
- if (outer == 0 && sb.length() > 0) {
- return sb;
- } else {
- session.getConsole().print("$ ");
- }
- break;
-
- case '\u001b':
- c = in.read();
- if (c == '[') {
- c = in.read();
- session.getConsole().print("\b\b\b");
- switch (c) {
- case 'A':
- history(current - 1);
- break;
- case 'B':
- history(current + 1);
- break;
- case 'C': // right(); break;
- case 'D': // left(); break;
- }
- }
- break;
-
- case '\b':
- if (sb.length() > 0) {
- session.getConsole().print("\b \b");
- sb.deleteCharAt(sb.length() - 1);
- }
- break;
-
- default:
- sb.append((char) c);
- break;
- }
- }
- }
- return null;
- }
-
- void history(int n) {
- if (n < 0 || n > history.size())
- return;
- current = n;
- for (int i = 0; i < sb.length(); i++)
- session.getConsole().print("\b \b");
-
- sb = new StringBuilder(history.get(current));
- session.getConsole().print(sb);
- }
+import org.osgi.service.command.CommandSession;
+import org.osgi.service.command.Converter;
- public void close() {
+import java.io.IOException;
+import java.io.InputStream;
+import java.lang.reflect.InvocationTargetException;
+import java.util.ArrayList;
+import java.util.List;
+
+public class Console implements Runnable
+{
+ StringBuilder sb;
+ CommandSession session;
+ List<CharSequence> history = new ArrayList<CharSequence>();
+ int current = 0;
+ boolean quit;
+
+ public void setSession(CommandSession session)
+ {
+ this.session = session;
+ }
+
+ public void run()
+ {
+ try
+ {
+ while (!quit)
+ {
+ try
+ {
+ CharSequence line = getLine(session.getKeyboard());
+ if (line != null)
+ {
+ history.add(line);
+ if (history.size() > 40)
+ {
+ history.remove(0);
+ }
+ Object result = session.execute(line);
+ if (result != null)
+ {
+ session.getConsole().println(session.format(result, Converter.INSPECT));
+ }
+ }
+ else
+ {
+ quit = true;
+ }
+
+ }
+ catch (InvocationTargetException ite)
+ {
+ session.getConsole().println("E: " + ite.getTargetException());
+ session.put("exception", ite.getTargetException());
+ }
+ catch (Throwable e)
+ {
+ if (!quit)
+ {
+ session.getConsole().println("E: " + e.getMessage());
+ session.put("exception", e);
+ }
+ }
+ }
+ }
+ catch (Exception e)
+ {
+ if (!quit)
+ {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ CharSequence getLine(InputStream in) throws IOException
+ {
+ sb = new StringBuilder();
+ session.getConsole().print("$ ");
+ int outer = 0;
+ while (!quit)
+ {
+ session.getConsole().flush();
+ int c = in.read();
+ if (c < 0)
+ {
+ quit = true;
+ }
+ else
+ {
+ switch (c)
+ {
+ case '\r':
+ break;
+ case '\n':
+ if (outer == 0 && sb.length() > 0)
+ {
+ return sb;
+ }
+ else
+ {
+ session.getConsole().print("$ ");
+ }
+ break;
+
+ case '\u001b':
+ c = in.read();
+ if (c == '[')
+ {
+ c = in.read();
+ session.getConsole().print("\b\b\b");
+ switch (c)
+ {
+ case 'A':
+ history(current - 1);
+ break;
+ case 'B':
+ history(current + 1);
+ break;
+ case 'C': // right(); break;
+ case 'D': // left(); break;
+ }
+ }
+ break;
+
+ case '\b':
+ if (sb.length() > 0)
+ {
+ session.getConsole().print("\b \b");
+ sb.deleteCharAt(sb.length() - 1);
+ }
+ break;
+
+ default:
+ sb.append((char) c);
+ break;
+ }
+ }
+ }
+ return null;
+ }
+
+ void history(int n)
+ {
+ if (n < 0 || n > history.size())
+ {
+ return;
+ }
+ current = n;
+ for (int i = 0; i < sb.length(); i++)
+ {
+ session.getConsole().print("\b \b");
+ }
+
+ sb = new StringBuilder(history.get(current));
+ session.getConsole().print(sb);
+ }
+
+ public void close()
+ {
quit = true;
}
-
- public void open() {}
+
+ public void open()
+ {
+ }
}
Modified: felix/trunk/gogo/src/main/java/org/apache/felix/gogo/shell/equinox/Equinox.java
URL: http://svn.apache.org/viewvc/felix/trunk/gogo/src/main/java/org/apache/felix/gogo/shell/equinox/Equinox.java?rev=787428&r1=787427&r2=787428&view=diff
==============================================================================
--- felix/trunk/gogo/src/main/java/org/apache/felix/gogo/shell/equinox/Equinox.java (original)
+++ felix/trunk/gogo/src/main/java/org/apache/felix/gogo/shell/equinox/Equinox.java Mon Jun 22 22:27:13 2009
@@ -1,66 +1,81 @@
package org.apache.felix.gogo.shell.equinox;
-import java.io.*;
-import java.net.*;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.BundleException;
+import org.osgi.framework.ServiceReference;
+import org.osgi.service.command.CommandProcessor;
+import org.osgi.service.command.CommandSession;
+import org.osgi.service.command.Converter;
+import org.osgi.service.component.ComponentContext;
+import org.osgi.service.log.LogEntry;
+import org.osgi.service.log.LogReaderService;
+import org.osgi.service.log.LogService;
+import org.osgi.service.packageadmin.ExportedPackage;
+import org.osgi.service.packageadmin.PackageAdmin;
+import org.osgi.service.startlevel.StartLevel;
+
+import java.io.IOException;
+import java.net.URL;
import java.util.*;
-import org.osgi.framework.*;
-import org.osgi.service.command.*;
-import org.osgi.service.component.*;
-import org.osgi.service.log.*;
-import org.osgi.service.packageadmin.*;
-import org.osgi.service.startlevel.*;
-
-public class Equinox implements Converter {
- BundleContext context;
- PackageAdmin pka;
- LogReaderService lrs;
- StartLevel sls;
- final static String[] functions = { "active", "bundles", "close", "diag",
- "exec", "exit", "fork", "gc", "getprop", "headers", "init",
- "install", "launch", "log", "packages", "packages", "refresh",
- "services", "setbsl", "setfwsl", "setibsl", "setprop", "shutdown",
- "sl", "ss", "start", "status", "stop", "uninstall", "update" };
+public class Equinox implements Converter
+{
+ BundleContext context;
+ PackageAdmin pka;
+ LogReaderService lrs;
+ StartLevel sls;
+ final static String[] functions = {"active", "bundles", "close", "diag", "exec", "exit", "fork", "gc", "getprop", "headers", "init", "install", "launch", "log", "packages", "packages", "refresh", "services", "setbsl", "setfwsl", "setibsl", "setprop", "shutdown", "sl", "ss", "start", "status", "stop", "uninstall", "update"};
- protected void activate(ComponentContext context) {
+ protected void activate(ComponentContext context)
+ {
this.context = context.getBundleContext();
Dictionary<String, Object> dict = new Hashtable<String, Object>();
dict.put(CommandProcessor.COMMAND_SCOPE, "eqx");
dict.put(CommandProcessor.COMMAND_FUNCTION, functions);
- this.context.registerService( Converter.class.getName(), this, dict);
+ this.context.registerService(Converter.class.getName(), this, dict);
}
- BundleContext getContext() {
+ BundleContext getContext()
+ {
return context;
}
- public void setPka(PackageAdmin pka) {
+ public void setPka(PackageAdmin pka)
+ {
this.pka = pka;
}
- public void setLrs(LogReaderService lrs) {
+ public void setLrs(LogReaderService lrs)
+ {
this.lrs = lrs;
}
- public void setSls(StartLevel sls) {
+ public void setSls(StartLevel sls)
+ {
this.sls = sls;
}
/**
* - Displays unsatisfied constraints for the specified bundle(s).
*/
- public void diag() {
+ public void diag()
+ {
}
/*
* active - Displays a list of all bundles currently in the ACTIVE state.
*/
- public List<Bundle> active() {
+ public List<Bundle> active()
+ {
List<Bundle> result = new ArrayList<Bundle>();
Bundle[] bundles = getContext().getBundles();
- for (Bundle b : bundles) {
+ for (Bundle b : bundles)
+ {
if (b.getState() == Bundle.ACTIVE)
+ {
result.add(b);
+ }
}
return result;
}
@@ -70,32 +85,40 @@
* all of them.
*/
- public Object getprop(CharSequence name) {
+ public Object getprop(CharSequence name)
+ {
if (name == null)
+ {
return System.getProperties();
+ }
else
+ {
return System.getProperty(name.toString());
+ }
}
/**
* launch - start the OSGi Framework
*/
- public void launch() {
+ public void launch()
+ {
throw new IllegalStateException("Already running");
}
/**
* shutdown - shutdown the OSGi Framework
*/
- public void shutdown() throws BundleException {
+ public void shutdown() throws BundleException
+ {
getContext().getBundle().stop();
}
/**
* close - shutdown and exit
*/
- public void close(CommandSession session) {
+ public void close(CommandSession session)
+ {
session.close();
}
@@ -103,14 +126,16 @@
* exit - exit immediately (System.exit)
*/
- public void exit(int exitValue) {
+ public void exit(int exitValue)
+ {
exit(exitValue);
}
/**
* gc - perform a garbage collection
*/
- public long gc() {
+ public long gc()
+ {
Runtime.getRuntime().gc();
return Runtime.getRuntime().freeMemory();
}
@@ -119,37 +144,46 @@
* init - uninstall all bundles
*/
- public void init() throws Exception {
+ public void init() throws Exception
+ {
Bundle bundles[] = getContext().getBundles();
for (Bundle b : bundles)
+ {
if (b.getBundleId() != 0)
+ {
b.uninstall();
+ }
+ }
}
/**
* setprop <key>=<value> - set the OSGi property
*/
- public void setprop(CommandSession session, String key, String value) {
+ public void setprop(CommandSession session, String key, String value)
+ {
session.put(key, value);
}
/**
* install - install and optionally start bundle from the given URL
- *
+ *
* @throws BundleException
*/
- public Bundle install(URL url) throws BundleException {
+ public Bundle install(URL url) throws BundleException
+ {
return getContext().installBundle(url.toExternalForm());
}
/**
* uninstall - uninstall the specified bundle(s)
- *
+ *
* @throws BundleException
*/
- public void uninstall(Bundle[] bundles) throws BundleException {
- for (Bundle b : bundles) {
+ public void uninstall(Bundle[] bundles) throws BundleException
+ {
+ for (Bundle b : bundles)
+ {
b.uninstall();
}
}
@@ -157,8 +191,10 @@
/**
* start - start the specified bundle(s)
*/
- public void start(Bundle[] bundles) throws BundleException {
- for (Bundle b : bundles) {
+ public void start(Bundle[] bundles) throws BundleException
+ {
+ for (Bundle b : bundles)
+ {
b.start();
}
}
@@ -166,8 +202,10 @@
/**
* stop - stop the specified bundle(s)
*/
- public void stop(Bundle[] bundles) throws BundleException {
- for (Bundle b : bundles) {
+ public void stop(Bundle[] bundles) throws BundleException
+ {
+ for (Bundle b : bundles)
+ {
b.stop();
}
}
@@ -175,18 +213,25 @@
/**
* refresh - refresh the packages of the specified bundles
*/
- public void refresh(Bundle[] bundles) throws Exception {
+ public void refresh(Bundle[] bundles) throws Exception
+ {
if (pka != null)
+ {
pka.refreshPackages(bundles);
+ }
else
+ {
throw new RuntimeException("No PackageAdmin service registered");
+ }
}
/**
* update - update the specified bundle(s)
*/
- public void update(Bundle[] bundles) throws BundleException {
- for (Bundle b : bundles) {
+ public void update(Bundle[] bundles) throws BundleException
+ {
+ for (Bundle b : bundles)
+ {
b.update();
}
}
@@ -194,25 +239,27 @@
/**
* status - display installed bundles and registered services
*/
- public List<Object> status() throws Exception {
+ public List<Object> status() throws Exception
+ {
List<Object> status = new ArrayList<Object>();
status.addAll(Arrays.asList(getContext().getBundles()));
- status.addAll(Arrays.asList(getContext().getServiceReferences(null,
- null)));
+ status.addAll(Arrays.asList(getContext().getServiceReferences(null, null)));
return status;
}
/**
* ss - display installed bundles (short status)
*/
- public Bundle[] ss() {
+ public Bundle[] ss()
+ {
return getContext().getBundles();
}
/**
* services {filter} - display registered service details
*/
- public ServiceReference[] services(String filter) throws Exception {
+ public ServiceReference[] services(String filter) throws Exception
+ {
return getContext().getServiceReferences(null, filter);
}
@@ -220,23 +267,32 @@
* packages {<pkgname>|<id>|<location>} - display imported/exported
* package details
*/
- public ExportedPackage[] packages(Bundle bundle) throws Exception {
+ public ExportedPackage[] packages(Bundle bundle) throws Exception
+ {
if (pka != null)
+ {
return pka.getExportedPackages(bundle);
+ }
else
+ {
throw new RuntimeException("No PackageAdmin service registered");
+ }
}
- public ExportedPackage[] packages(String packageName) throws Exception {
+ public ExportedPackage[] packages(String packageName) throws Exception
+ {
if (pka != null)
+ {
return pka.getExportedPackages(packageName);
+ }
return null;
}
/**
* bundles - display details for all installed bundles
*/
- public Bundle[] bundles() {
+ public Bundle[] bundles()
+ {
return ss();
}
@@ -249,7 +305,8 @@
*/
@SuppressWarnings("unchecked")
- public Dictionary headers(Bundle b, String locale) {
+ public Dictionary headers(Bundle b, String locale)
+ {
return b.getHeaders(locale);
}
@@ -258,32 +315,42 @@
*/
@SuppressWarnings("unchecked")
- public Collection<LogEntry> log(Bundle bundle) throws Exception {
+ public Collection<LogEntry> log(Bundle bundle) throws Exception
+ {
if (lrs != null)
+ {
return Collections.list((Enumeration<LogEntry>) lrs.getLog());
+ }
else
+ {
throw new RuntimeException("LogReader not available");
+ }
}
/**
* exec <command> - execute a command in a separate process and wait
- *
+ *
* @throws IOException
*/
- public int exec(Object[] args, boolean fork) throws IOException {
+ public int exec(Object[] args, boolean fork) throws IOException
+ {
StringBuffer sb = new StringBuffer();
String del = "";
- for (Object arg : args) {
+ for (Object arg : args)
+ {
sb.append(del);
sb.append(arg);
del = " ";
}
Process p = Runtime.getRuntime().exec(sb.toString());
- if (fork) {
+ if (fork)
+ {
int c;
while ((c = p.getInputStream().read()) > 0)
+ {
System.out.print(c);
+ }
}
return p.exitValue();
}
@@ -292,7 +359,8 @@
* fork <command> - execute a command in a separate process
*/
- public void fork(Object args[]) throws Exception {
+ public void fork(Object args[]) throws Exception
+ {
exec(args, true);
}
@@ -300,21 +368,31 @@
* sl {(<id>|<location>)} - display the start level for the specified
* bundle, or for the framework if no bundle specified
*/
- public int sl(Bundle b) throws Exception {
+ public int sl(Bundle b) throws Exception
+ {
if (sls == null)
+ {
throw new RuntimeException("No StartLevel service registered");
+ }
if (b == null)
+ {
return sls.getStartLevel();
+ }
else
+ {
return sls.getBundleStartLevel(b);
+ }
}
/**
* setfwsl <start level> - set the framework start level
*/
- public int setfwsl(int n) throws Exception {
+ public int setfwsl(int n) throws Exception
+ {
if (sls == null)
+ {
throw new RuntimeException("No StartLevel service registered");
+ }
int old = sls.getStartLevel();
sls.setStartLevel(n);
return old;
@@ -324,9 +402,12 @@
* setbsl <start level> (<id>|<location>) - set the start level for the
* bundle(s)
*/
- public int setbsl(Bundle b, int n) throws Exception {
+ public int setbsl(Bundle b, int n) throws Exception
+ {
if (sls == null)
+ {
throw new RuntimeException("No StartLevel service registered");
+ }
int old = sls.getBundleStartLevel(b);
sls.setBundleStartLevel(b, n);
return old;
@@ -335,49 +416,55 @@
/**
* setibsl <start level> - set the initial bundle start level
*/
- public int setibsl(int n) throws Exception {
+ public int setibsl(int n) throws Exception
+ {
if (sls == null)
+ {
throw new RuntimeException("No StartLevel service registered");
+ }
int old = sls.getInitialBundleStartLevel();
sls.setInitialBundleStartLevel(n);
return old;
}
- public Object convert(Class<?> desiredType, Object in) throws Exception {
+ public Object convert(Class<?> desiredType, Object in) throws Exception
+ {
return null;
}
- String getLevel(int index) {
- switch (index) {
- case LogService.LOG_DEBUG:
- return "DEBUG";
- case LogService.LOG_INFO:
- return "INFO ";
- case LogService.LOG_WARNING:
- return "WARNI";
- case LogService.LOG_ERROR:
- return "ERROR";
- default:
- return "<" + index + ">";
+ String getLevel(int index)
+ {
+ switch (index)
+ {
+ case LogService.LOG_DEBUG:
+ return "DEBUG";
+ case LogService.LOG_INFO:
+ return "INFO ";
+ case LogService.LOG_WARNING:
+ return "WARNI";
+ case LogService.LOG_ERROR:
+ return "ERROR";
+ default:
+ return "<" + index + ">";
}
}
- public CharSequence format(Object target, int level, Converter escape) {
- if (target instanceof LogEntry) {
+ public CharSequence format(Object target, int level, Converter escape)
+ {
+ if (target instanceof LogEntry)
+ {
LogEntry entry = (LogEntry) target;
- switch (level) {
- case LINE:
- Formatter f = new Formatter();
- f.format("%tT %04d %s %s", entry.getTime(), entry.getBundle()
- .getBundleId(), getLevel(entry.getLevel())+"", entry
- .getMessage()+"");
- return f.toString();
-
- case PART:
- Formatter f2 = new Formatter();
- f2.format("%tT %s", entry.getTime(), entry
- .getMessage());
- return f2.toString();
+ switch (level)
+ {
+ case LINE:
+ Formatter f = new Formatter();
+ f.format("%tT %04d %s %s", entry.getTime(), entry.getBundle().getBundleId(), getLevel(entry.getLevel()) + "", entry.getMessage() + "");
+ return f.toString();
+
+ case PART:
+ Formatter f2 = new Formatter();
+ f2.format("%tT %s", entry.getTime(), entry.getMessage());
+ return f2.toString();
}
}
return null;
Modified: felix/trunk/gogo/src/main/java/org/apache/felix/gogo/shell/lang/Support.java
URL: http://svn.apache.org/viewvc/felix/trunk/gogo/src/main/java/org/apache/felix/gogo/shell/lang/Support.java?rev=787428&r1=787427&r2=787428&view=diff
==============================================================================
--- felix/trunk/gogo/src/main/java/org/apache/felix/gogo/shell/lang/Support.java (original)
+++ felix/trunk/gogo/src/main/java/org/apache/felix/gogo/shell/lang/Support.java Mon Jun 22 22:27:13 2009
@@ -18,32 +18,38 @@
*/
package org.apache.felix.gogo.shell.lang;
-import java.lang.reflect.*;
-import java.util.*;
+import org.osgi.service.command.Converter;
+import org.osgi.service.command.Function;
-import org.osgi.service.command.*;
-
-
-
-public class Support implements Converter {
-
- public Object convert(Class<?> desiredType, final Object in) throws Exception {
- if ( in instanceof Function && desiredType.isInterface() && desiredType.getDeclaredMethods().length == 1) {
- return Proxy.newProxyInstance(desiredType.getClassLoader(), new Class[] {desiredType}, new InvocationHandler() {
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
+import java.util.Arrays;
+
+
+public class Support implements Converter
+{
+
+ public Object convert(Class<?> desiredType, final Object in) throws Exception
+ {
+ if (in instanceof Function && desiredType.isInterface() && desiredType.getDeclaredMethods().length == 1)
+ {
+ return Proxy.newProxyInstance(desiredType.getClassLoader(), new Class[]{desiredType}, new InvocationHandler()
+ {
Function command = ((Function) in);
- public Object invoke(Object proxy, Method method, Object[] args)
- throws Throwable {
- return command.execute(null,Arrays.asList(args));
+ public Object invoke(Object proxy, Method method, Object[] args) throws Throwable
+ {
+ return command.execute(null, Arrays.asList(args));
}
-
+
});
}
return null;
}
- public CharSequence format(Object target, int level, Converter escape)
- throws Exception {
+ public CharSequence format(Object target, int level, Converter escape) throws Exception
+ {
return null;
}
}
Modified: felix/trunk/gogo/src/main/java/org/apache/felix/gogo/shell/osgi/OSGiCommands.java
URL: http://svn.apache.org/viewvc/felix/trunk/gogo/src/main/java/org/apache/felix/gogo/shell/osgi/OSGiCommands.java?rev=787428&r1=787427&r2=787428&view=diff
==============================================================================
--- felix/trunk/gogo/src/main/java/org/apache/felix/gogo/shell/osgi/OSGiCommands.java (original)
+++ felix/trunk/gogo/src/main/java/org/apache/felix/gogo/shell/osgi/OSGiCommands.java Mon Jun 22 22:27:13 2009
@@ -20,293 +20,396 @@
// DWB2: ClassNotFoundException should be caught in convert() method
package org.apache.felix.gogo.shell.osgi;
-import java.io.*;
-import java.util.*;
-import java.util.regex.*;
-
import org.osgi.framework.*;
-import org.osgi.service.command.*;
+import org.osgi.service.command.CommandSession;
+import org.osgi.service.command.Converter;
+import org.osgi.service.command.Function;
-public class OSGiCommands implements Converter {
- Bundle bundle;
- String COLUMN = "%40s %s\n";
-
- protected OSGiCommands(Bundle bundle) {
- this.bundle = bundle;
- }
+import java.io.*;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Formatter;
+import java.util.List;
+import java.util.regex.Pattern;
+
+public class OSGiCommands implements Converter
+{
+ Bundle bundle;
+ String COLUMN = "%40s %s\n";
+
+ protected OSGiCommands(Bundle bundle)
+ {
+ this.bundle = bundle;
+ }
// Bundle[] getBundles() {
// return getContext().getBundles();
// }
- public BundleContext getContext() {
- if ( bundle.getState() != Bundle.ACTIVE )
- throw new IllegalStateException("Framework is not started yet");
- return bundle.getBundleContext();
- }
-
- CharSequence print(Bundle bundle) {
- String version = (String) bundle.getHeaders().get("Bundle-Version");
- if ( version == null )
- version = "0.0.0";
- return String.format("%06d %s %s-%s", bundle.getBundleId(),
- getState(bundle), bundle.getSymbolicName(), version);
- }
-
- CharSequence print(ServiceReference ref) {
- StringBuilder sb = new StringBuilder();
- Formatter f = new Formatter(sb);
-
- String spid = "";
- Object pid = ref.getProperty("service.pid");
- if (pid != null) {
- spid = pid.toString();
- }
-
- f.format("%06d %3s %-40s %s", ref.getProperty("service.id"), ref
- .getBundle().getBundleId(), getShortNames((String[]) ref
- .getProperty("objectclass")), spid);
- return sb;
- }
-
- CharSequence getShortNames(String[] list) {
- StringBuilder sb = new StringBuilder();
- String del = "";
- for (String s : list) {
- sb.append(del + getShortName(s));
- del = " | ";
- }
- return sb;
- }
-
- CharSequence getShortName(String name) {
- int n = name.lastIndexOf('.');
- if (n < 0)
- n = 0;
- else
- n++;
- return name.subSequence(n, name.length());
- }
-
- private String getState(Bundle bundle) {
- switch (bundle.getState()) {
- case Bundle.ACTIVE:
- return "ACT";
-
- case Bundle.INSTALLED:
- return "INS";
-
- case Bundle.RESOLVED:
- return "RES";
-
- case Bundle.STARTING:
- return "STA";
-
- case Bundle.STOPPING:
- return "STO";
-
- case Bundle.UNINSTALLED:
- return "UNI ";
- }
- return null;
- }
-
- public void grep(String match) throws IOException {
- Pattern p = Pattern.compile(match);
- BufferedReader rdr = new BufferedReader(
- new InputStreamReader(System.in));
- String s = rdr.readLine();
- while (s != null) {
- if (p.matcher(s).find()) {
- System.out.println(s);
- }
- s = rdr.readLine();
- }
- }
-
- public String tac() throws IOException {
- StringWriter sw = new StringWriter();
- BufferedReader rdr = new BufferedReader(
- new InputStreamReader(System.in));
- String s = rdr.readLine();
- while (s != null) {
- sw.write(s);
- s = rdr.readLine();
- }
- return sw.toString();
- }
-
- public CharSequence echo(CommandSession session, Object args[]) {
- StringBuilder sb = new StringBuilder();
- String del = "";
- for (Object arg : args) {
- sb.append(del);
- if (arg != null) {
- sb.append(arg);
- del = " ";
- }
- }
- return sb;
- }
-
- public void each(CommandSession session, Collection<Object> list, Function closure) throws Exception {
- List<Object> args = new ArrayList<Object>();
- args.add(null);
- for (Object x : list) {
- args.set(0, x);
- //Object result = closure.execute(session, args);
- // System.out.println(session.format(result,Converter.INSPECT));
- // derek: this is way too noisy
- closure.execute(session, args);
- }
- }
-
- public Bundle bundle(Bundle i) {
- return i;
- }
-
- public String[] ls(CommandSession session, File f) throws Exception{
- File cwd = (File) session.get("_cwd");
- if (cwd == null)
- cwd = new File("").getAbsoluteFile();
-
- if ( f == null )
- f = cwd;
- else if (!f.isAbsolute())
- f = new File(cwd, f.getPath());
-
- if ( f.isDirectory() )
- return f.list();
-
- if ( f.isFile() ) {
- cat(session,f);
- }
-
- return null;
- }
-
- public Object cat(CommandSession session, File f ) throws Exception {
- File cwd = (File) session.get("_cwd");
- if (cwd == null)
- cwd = new File("").getAbsoluteFile();
-
- if ( !f.isAbsolute() )
- f = new File(cwd,f.getPath());
-
- ByteArrayOutputStream bout = new ByteArrayOutputStream();
- FileInputStream in = new FileInputStream(f);
- byte [] buffer = new byte[ (int) (f.length() % 100000) ];
- int size = in.read(buffer);
- while ( size > 0 ) {
- bout.write(buffer,0,size);
- size = in.read(buffer);
- }
- return new String(bout.toByteArray());
- }
- public Object convert(Class<?> desiredType, Object in) throws Exception {
- if (desiredType == Bundle.class)
- return convertBundle(in);
- else if (desiredType == ServiceReference.class)
- return convertServiceReference(in);
- else if (desiredType == Class.class) {
- // derek.baum@paremus.com - added try/catch
- try {
- return Class.forName(in.toString());
- } catch (ClassNotFoundException e) {
- return null;
+ public BundleContext getContext()
+ {
+ if (bundle.getState() != Bundle.ACTIVE)
+ {
+ throw new IllegalStateException("Framework is not started yet");
+ }
+ return bundle.getBundleContext();
+ }
+
+ CharSequence print(Bundle bundle)
+ {
+ String version = (String) bundle.getHeaders().get("Bundle-Version");
+ if (version == null)
+ {
+ version = "0.0.0";
+ }
+ return String.format("%06d %s %s-%s", bundle.getBundleId(), getState(bundle), bundle.getSymbolicName(), version);
+ }
+
+ CharSequence print(ServiceReference ref)
+ {
+ StringBuilder sb = new StringBuilder();
+ Formatter f = new Formatter(sb);
+
+ String spid = "";
+ Object pid = ref.getProperty("service.pid");
+ if (pid != null)
+ {
+ spid = pid.toString();
+ }
+
+ f.format("%06d %3s %-40s %s", ref.getProperty("service.id"), ref.getBundle().getBundleId(), getShortNames((String[]) ref.getProperty("objectclass")), spid);
+ return sb;
+ }
+
+ CharSequence getShortNames(String[] list)
+ {
+ StringBuilder sb = new StringBuilder();
+ String del = "";
+ for (String s : list)
+ {
+ sb.append(del + getShortName(s));
+ del = " | ";
+ }
+ return sb;
+ }
+
+ CharSequence getShortName(String name)
+ {
+ int n = name.lastIndexOf('.');
+ if (n < 0)
+ {
+ n = 0;
+ }
+ else
+ {
+ n++;
+ }
+ return name.subSequence(n, name.length());
+ }
+
+ private String getState(Bundle bundle)
+ {
+ switch (bundle.getState())
+ {
+ case Bundle.ACTIVE:
+ return "ACT";
+
+ case Bundle.INSTALLED:
+ return "INS";
+
+ case Bundle.RESOLVED:
+ return "RES";
+
+ case Bundle.STARTING:
+ return "STA";
+
+ case Bundle.STOPPING:
+ return "STO";
+
+ case Bundle.UNINSTALLED:
+ return "UNI ";
+ }
+ return null;
+ }
+
+ public void grep(String match) throws IOException
+ {
+ Pattern p = Pattern.compile(match);
+ BufferedReader rdr = new BufferedReader(new InputStreamReader(System.in));
+ String s = rdr.readLine();
+ while (s != null)
+ {
+ if (p.matcher(s).find())
+ {
+ System.out.println(s);
}
+ s = rdr.readLine();
}
- else if (desiredType.isAssignableFrom(String.class) && in instanceof InputStream)
- return read(((InputStream) in));
+ }
- return null;
- }
+ public String tac() throws IOException
+ {
+ StringWriter sw = new StringWriter();
+ BufferedReader rdr = new BufferedReader(new InputStreamReader(System.in));
+ String s = rdr.readLine();
+ while (s != null)
+ {
+ sw.write(s);
+ s = rdr.readLine();
+ }
+ return sw.toString();
+ }
+
+ public CharSequence echo(CommandSession session, Object args[])
+ {
+ StringBuilder sb = new StringBuilder();
+ String del = "";
+ for (Object arg : args)
+ {
+ sb.append(del);
+ if (arg != null)
+ {
+ sb.append(arg);
+ del = " ";
+ }
+ }
+ return sb;
+ }
+
+ public void each(CommandSession session, Collection<Object> list, Function closure) throws Exception
+ {
+ List<Object> args = new ArrayList<Object>();
+ args.add(null);
+ for (Object x : list)
+ {
+ args.set(0, x);
+ //Object result = closure.execute(session, args);
+ // System.out.println(session.format(result,Converter.INSPECT));
+ // derek: this is way too noisy
+ closure.execute(session, args);
+ }
+ }
+
+ public Bundle bundle(Bundle i)
+ {
+ return i;
+ }
+
+ public String[] ls(CommandSession session, File f) throws Exception
+ {
+ File cwd = (File) session.get("_cwd");
+ if (cwd == null)
+ {
+ cwd = new File("").getAbsoluteFile();
+ }
+
+ if (f == null)
+ {
+ f = cwd;
+ }
+ else
+ {
+ if (!f.isAbsolute())
+ {
+ f = new File(cwd, f.getPath());
+ }
+ }
+
+ if (f.isDirectory())
+ {
+ return f.list();
+ }
+
+ if (f.isFile())
+ {
+ cat(session, f);
+ }
+
+ return null;
+ }
+
+ public Object cat(CommandSession session, File f) throws Exception
+ {
+ File cwd = (File) session.get("_cwd");
+ if (cwd == null)
+ {
+ cwd = new File("").getAbsoluteFile();
+ }
+
+ if (!f.isAbsolute())
+ {
+ f = new File(cwd, f.getPath());
+ }
+
+ ByteArrayOutputStream bout = new ByteArrayOutputStream();
+ FileInputStream in = new FileInputStream(f);
+ byte[] buffer = new byte[(int) (f.length() % 100000)];
+ int size = in.read(buffer);
+ while (size > 0)
+ {
+ bout.write(buffer, 0, size);
+ size = in.read(buffer);
+ }
+ return new String(bout.toByteArray());
+ }
+
+ public Object convert(Class<?> desiredType, Object in) throws Exception
+ {
+ if (desiredType == Bundle.class)
+ {
+ return convertBundle(in);
+ }
+ else
+ {
+ if (desiredType == ServiceReference.class)
+ {
+ return convertServiceReference(in);
+ }
+ else
+ {
+ if (desiredType == Class.class)
+ {
+ // derek.baum@paremus.com - added try/catch
+ try
+ {
+ return Class.forName(in.toString());
+ }
+ catch (ClassNotFoundException e)
+ {
+ return null;
+ }
+ }
+ else
+ {
+ if (desiredType.isAssignableFrom(String.class) && in instanceof InputStream)
+ {
+ return read(((InputStream) in));
+ }
+ }
+ }
+ }
+
+ return null;
+ }
+
+ private Object convertServiceReference(Object in) throws InvalidSyntaxException
+ {
+ String s = in.toString();
+ if (s.startsWith("(") && s.endsWith(")"))
+ {
+ ServiceReference refs[] = getContext().getServiceReferences(null, String.format("(|(service.id=%s)(service.pid=%s))", in, in));
+ if (refs != null && refs.length > 0)
+ {
+ return refs[0];
+ }
+ }
+
+ ServiceReference refs[] = getContext().getServiceReferences(null, String.format("(|(service.id=%s)(service.pid=%s))", in, in));
+ if (refs != null && refs.length > 0)
+ {
+ return refs[0];
+ }
+ return null;
+ }
+
+ private Object convertBundle(Object in)
+ {
+ String s = in.toString();
+ try
+ {
+ long id = Long.parseLong(s);
+ return getContext().getBundle(id);
+ }
+ catch (NumberFormatException nfe)
+ {
+ // Ignore
+ }
+
+ Bundle bundles[] = getContext().getBundles();
+ for (Bundle b : bundles)
+ {
+ if (b.getLocation().equals(s))
+ {
+ return b;
+ }
+
+ if (b.getSymbolicName().equals(s))
+ {
+ return b;
+ }
+ }
+
+ return null;
+ }
+
+ public CharSequence format(Object target, int level, Converter converter) throws IOException
+ {
+ if (level == INSPECT && target instanceof InputStream)
+ {
+ return read(((InputStream) target));
+ }
+ if (level == LINE && target instanceof Bundle)
+ {
+ return print((Bundle) target);
+ }
+ if (level == LINE && target instanceof ServiceReference)
+ {
+ return print((ServiceReference) target);
+ }
+ if (level == PART && target instanceof Bundle)
+ {
+ return ((Bundle) target).getSymbolicName();
+ }
+ if (level == PART && target instanceof ServiceReference)
+ {
+ return getShortNames((String[]) ((ServiceReference) target).getProperty("objectclass"));
+ }
+ return null;
+ }
+
+ public CharSequence read(InputStream in) throws IOException
+ {
+ int c;
+ StringBuffer sb = new StringBuffer();
+ while ((c = in.read()) > 0)
+ {
+ if (c >= 32 && c <= 0x7F || c == '\n' || c == '\r')
+ {
+ sb.append((char) c);
+ }
+ else
+ {
+ String s = Integer.toHexString(c).toUpperCase();
+ sb.append("\\");
+ if (s.length() < 1)
+ {
+ sb.append(0);
+ }
+ sb.append(s);
+ }
+ }
+ return sb;
+ }
+
+ public void start(Bundle b) throws BundleException
+ {
+ b.start();
+ }
+
+ public void stop(Bundle b) throws BundleException
+ {
+ b.stop();
+ }
+
+ public Object service(String clazz, String filter) throws InvalidSyntaxException
+ {
+ ServiceReference ref[] = getContext().getServiceReferences(clazz, filter);
+ if (ref == null)
+ {
+ return null;
+ }
+
+ return getContext().getService(ref[0]);
+ }
- private Object convertServiceReference(Object in)
- throws InvalidSyntaxException {
- String s = in.toString();
- if (s.startsWith("(") && s.endsWith(")")) {
- ServiceReference refs[] = getContext().getServiceReferences(null, String
- .format("(|(service.id=%s)(service.pid=%s))", in, in));
- if (refs != null && refs.length > 0)
- return refs[0];
- }
-
- ServiceReference refs[] = getContext().getServiceReferences(null, String
- .format("(|(service.id=%s)(service.pid=%s))", in, in));
- if (refs != null && refs.length > 0)
- return refs[0];
- return null;
- }
-
- private Object convertBundle(Object in) {
- String s = in.toString();
- try {
- long id = Long.parseLong(s);
- return getContext().getBundle(id);
- } catch (NumberFormatException nfe) {
- // Ignore
- }
-
- Bundle bundles[] = getContext().getBundles();
- for (Bundle b : bundles) {
- if (b.getLocation().equals(s))
- return b;
-
- if (b.getSymbolicName().equals(s))
- return b;
- }
-
- return null;
- }
-
- public CharSequence format(Object target, int level, Converter converter ) throws IOException {
- if ( level == INSPECT && target instanceof InputStream ) {
- return read(((InputStream)target));
- }
- if (level == LINE && target instanceof Bundle)
- return print((Bundle) target);
- if (level == LINE && target instanceof ServiceReference)
- return print((ServiceReference) target);
- if (level == PART && target instanceof Bundle)
- return ((Bundle) target).getSymbolicName();
- if (level == PART && target instanceof ServiceReference)
- return getShortNames((String[]) ((ServiceReference) target)
- .getProperty("objectclass"));
- return null;
- }
-
- public CharSequence read(InputStream in) throws IOException {
- int c;
- StringBuffer sb = new StringBuffer();
- while ( (c=in.read())> 0 ) {
- if ( c >=32 && c <= 0x7F || c=='\n' || c=='\r') {
- sb.append( (char) c);
- } else {
- String s = Integer.toHexString(c).toUpperCase();
- sb.append("\\");
- if ( s.length() < 1)
- sb.append(0);
- sb.append(s);
- }
- }
- return sb;
- }
-
- public void start(Bundle b) throws BundleException {
- b.start();
- }
-
- public void stop(Bundle b) throws BundleException {
- b.stop();
- }
-
- public Object service(String clazz, String filter) throws InvalidSyntaxException {
- ServiceReference ref[] = getContext().getServiceReferences(clazz,filter);
- if (ref == null )
- return null;
-
- return getContext().getService(ref[0]);
- }
-
}
Modified: felix/trunk/gogo/src/main/java/org/apache/felix/gogo/shell/osgi/OSGiShell.java
URL: http://svn.apache.org/viewvc/felix/trunk/gogo/src/main/java/org/apache/felix/gogo/shell/osgi/OSGiShell.java?rev=787428&r1=787427&r2=787428&view=diff
==============================================================================
--- felix/trunk/gogo/src/main/java/org/apache/felix/gogo/shell/osgi/OSGiShell.java (original)
+++ felix/trunk/gogo/src/main/java/org/apache/felix/gogo/shell/osgi/OSGiShell.java Mon Jun 22 22:27:13 2009
@@ -20,109 +20,137 @@
// DWB4: get() with trailing colon causes org.osgi.framework.InvalidSyntaxException
package org.apache.felix.gogo.shell.osgi;
-import org.osgi.framework.*;
-import org.osgi.service.command.*;
-import org.osgi.service.component.*;
-import org.osgi.service.packageadmin.*;
-import org.osgi.service.threadio.*;
-
-import org.apache.felix.gogo.shell.runtime.*;
-
-public class OSGiShell extends CommandShellImpl {
- Bundle bundle;
+import org.apache.felix.gogo.shell.runtime.CommandShellImpl;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.InvalidSyntaxException;
+import org.osgi.framework.ServiceReference;
+import org.osgi.service.command.Converter;
+import org.osgi.service.component.ComponentContext;
+import org.osgi.service.packageadmin.PackageAdmin;
+import org.osgi.service.threadio.ThreadIO;
+
+public class OSGiShell extends CommandShellImpl
+{
+ Bundle bundle;
OSGiCommands commands;
- protected void activate(ComponentContext context) throws Exception {
+ protected void activate(ComponentContext context) throws Exception
+ {
this.bundle = context.getBundleContext().getBundle();
if (threadIO == null)
+ {
threadIO = (ThreadIO) context.locateService("x");
+ }
start();
}
- public void start() throws Exception {
+ public void start() throws Exception
+ {
commands = new OSGiCommands(bundle);
addCommand("osgi", this.bundle);
addCommand("osgi", commands);
setConverter(commands);
- if (bundle.getState() == Bundle.ACTIVE) {
- addCommand("osgi", commands.service(PackageAdmin.class.getName(),
- null), PackageAdmin.class);
+ if (bundle.getState() == Bundle.ACTIVE)
+ {
+ addCommand("osgi", commands.service(PackageAdmin.class.getName(), null), PackageAdmin.class);
addCommand("osgi", commands.getContext(), BundleContext.class);
-
- try {
+
+ try
+ {
// derek - dynamically load StartLevel to avoid import dependency
String sl = "org.osgi.service.startlevel.StartLevel";
Class<?> slClass = bundle.loadClass(sl);
addCommand("osgi", commands.service(sl, null), slClass);
- } catch (ClassNotFoundException e) {
}
-
- try {
+ catch (ClassNotFoundException e)
+ {
+ }
+
+ try
+ {
// derek - dynamically load PermissionAdmin to avoid import dependency
String pa = "org.osgi.service.permissionadmin.PermissionAdmin";
Class<?> paClass = bundle.loadClass(pa);
addCommand("osgi", commands.service(pa, null), paClass);
- } catch (ClassNotFoundException e) {
+ }
+ catch (ClassNotFoundException e)
+ {
}
}
- else {
+ else
+ {
System.err.println("eek! bundle not active: " + bundle);
}
}
- protected void deactivate(ComponentContext context) {
+ protected void deactivate(ComponentContext context)
+ {
System.out.println("Deactivating");
}
- public Object get(String name) {
- if (bundle.getBundleContext() != null) {
+ public Object get(String name)
+ {
+ if (bundle.getBundleContext() != null)
+ {
BundleContext context = bundle.getBundleContext();
- try {
+ try
+ {
Object cmd = super.get(name);
if (cmd != null)
+ {
return cmd;
+ }
int n = name.indexOf(':');
if (n < 0)
+ {
return null;
+ }
String service = name.substring(0, n);
String function = name.substring(n + 1);
-
+
// derek - fix org.osgi.framework.InvalidSyntaxException
if (service.length() == 0 || function.length() == 0)
+ {
return null;
+ }
- String filter = String.format(
- "(&(osgi.command.scope=%s)(osgi.command.function=%s))",
- service, function);
- ServiceReference refs[] = context.getServiceReferences(null,
- filter);
+ String filter = String.format("(&(osgi.command.scope=%s)(osgi.command.function=%s))", service, function);
+ ServiceReference refs[] = context.getServiceReferences(null, filter);
if (refs == null || refs.length == 0)
+ {
return null;
+ }
if (refs.length > 1)
- throw new IllegalArgumentException(
- "Command name is not unambiguous: " + name
- + ", found multiple impls");
+ {
+ throw new IllegalArgumentException("Command name is not unambiguous: " + name + ", found multiple impls");
+ }
return new ServiceCommand(this, refs[0], function);
- } catch (InvalidSyntaxException ise) {
+ }
+ catch (InvalidSyntaxException ise)
+ {
ise.printStackTrace();
}
}
return super.get(name);
}
- public void setThreadio(Object t) {
+ public void setThreadio(Object t)
+ {
super.setThreadio((ThreadIO) t);
}
- public void setBundle(Bundle bundle) {
+ public void setBundle(Bundle bundle)
+ {
this.bundle = bundle;
}
- public void setConverter(Converter c) {
+ public void setConverter(Converter c)
+ {
super.setConverter(c);
}
Modified: felix/trunk/gogo/src/main/java/org/apache/felix/gogo/shell/osgi/ServiceCommand.java
URL: http://svn.apache.org/viewvc/felix/trunk/gogo/src/main/java/org/apache/felix/gogo/shell/osgi/ServiceCommand.java?rev=787428&r1=787427&r2=787428&view=diff
==============================================================================
--- felix/trunk/gogo/src/main/java/org/apache/felix/gogo/shell/osgi/ServiceCommand.java (original)
+++ felix/trunk/gogo/src/main/java/org/apache/felix/gogo/shell/osgi/ServiceCommand.java Mon Jun 22 22:27:13 2009
@@ -18,34 +18,43 @@
*/
package org.apache.felix.gogo.shell.osgi;
-import java.util.*;
+import org.apache.felix.gogo.shell.runtime.CommandShellImpl;
+import org.apache.felix.gogo.shell.runtime.Reflective;
+import org.osgi.framework.ServiceReference;
+import org.osgi.service.command.CommandSession;
+import org.osgi.service.command.Function;
-import org.osgi.framework.*;
-import org.osgi.service.command.*;
+import java.util.List;
-import org.apache.felix.gogo.shell.runtime.*;
+public class ServiceCommand extends Reflective implements Function
+{
+ ServiceReference ref;
+ OSGiShell shell;
+ String name;
-public class ServiceCommand extends Reflective implements Function {
- ServiceReference ref;
- OSGiShell shell;
- String name;
-
- public ServiceCommand(OSGiShell shell, ServiceReference ref, String name) {
- this.shell =shell;
- this.ref = ref;
- this.name = name;
- }
-
- public Object execute(CommandSession session, List<Object> arguments) throws Exception {
- try {
- Object target = shell.bundle.getBundleContext().getService(ref);
- Object result = method(session,target, name, arguments);
- if ( result != CommandShellImpl.NO_SUCH_COMMAND )
- return result;
-
- throw new IllegalArgumentException("Service does not implement promised command " + ref + " " + name );
- } finally {
- shell.bundle.getBundleContext().ungetService(ref);
- }
- }
+ public ServiceCommand(OSGiShell shell, ServiceReference ref, String name)
+ {
+ this.shell = shell;
+ this.ref = ref;
+ this.name = name;
+ }
+
+ public Object execute(CommandSession session, List<Object> arguments) throws Exception
+ {
+ try
+ {
+ Object target = shell.bundle.getBundleContext().getService(ref);
+ Object result = method(session, target, name, arguments);
+ if (result != CommandShellImpl.NO_SUCH_COMMAND)
+ {
+ return result;
+ }
+
+ throw new IllegalArgumentException("Service does not implement promised command " + ref + " " + name);
+ }
+ finally
+ {
+ shell.bundle.getBundleContext().ungetService(ref);
+ }
+ }
}
Modified: felix/trunk/gogo/src/main/java/org/apache/felix/gogo/shell/runtime/Closure.java
URL: http://svn.apache.org/viewvc/felix/trunk/gogo/src/main/java/org/apache/felix/gogo/shell/runtime/Closure.java?rev=787428&r1=787427&r2=787428&view=diff
==============================================================================
--- felix/trunk/gogo/src/main/java/org/apache/felix/gogo/shell/runtime/Closure.java (original)
+++ felix/trunk/gogo/src/main/java/org/apache/felix/gogo/shell/runtime/Closure.java Mon Jun 22 22:27:13 2009
@@ -21,97 +21,123 @@
// DWB7: removing variable via 'execute("name=") throws OutOfBoundsException
package org.apache.felix.gogo.shell.runtime;
-import java.util.*;
+import org.osgi.service.command.CommandSession;
+import org.osgi.service.command.Function;
-import org.osgi.service.command.*;
+import java.util.*;
-public class Closure extends Reflective implements Function {
+public class Closure extends Reflective implements Function
+{
private static final long serialVersionUID = 1L;
- final CharSequence source;
- final Closure parent;
- CommandSessionImpl session;
- List<Object> parms;
+ final CharSequence source;
+ final Closure parent;
+ CommandSessionImpl session;
+ List<Object> parms;
- Closure(CommandSessionImpl session, Closure parent, CharSequence source) {
+ Closure(CommandSessionImpl session, Closure parent, CharSequence source)
+ {
this.session = session;
this.parent = parent;
this.source = source;
}
- public Object execute(CommandSession x, List<Object> values)
- throws Exception {
+ public Object execute(CommandSession x, List<Object> values) throws Exception
+ {
parms = values;
Parser parser = new Parser(source);
ArrayList<Pipe> pipes = new ArrayList<Pipe>();
List<List<List<CharSequence>>> program = parser.program();
- for (List<List<CharSequence>> statements : program) {
+ for (List<List<CharSequence>> statements : program)
+ {
Pipe current = new Pipe(this, statements);
- if (pipes.isEmpty()) {
+ if (pipes.isEmpty())
+ {
current.setIn(session.in);
current.setOut(session.out);
current.setErr(session.err); // XXX: derek.baum@paremus.com
- } else {
+ }
+ else
+ {
Pipe previous = pipes.get(pipes.size() - 1);
previous.connect(current);
}
pipes.add(current);
}
if (pipes.size() == 0)
+ {
return null;
+ }
- if (pipes.size() == 1) {
+ if (pipes.size() == 1)
+ {
pipes.get(0).run();
- } else {
- for (Pipe pipe : pipes) {
+ }
+ else
+ {
+ for (Pipe pipe : pipes)
+ {
pipe.start();
}
- for (Pipe pipe : pipes) {
+ for (Pipe pipe : pipes)
+ {
pipe.join();
}
}
Pipe last = pipes.get(pipes.size() - 1);
if (last.exception != null)
+ {
throw last.exception;
+ }
- if (last.result instanceof Object[]) {
+ if (last.result instanceof Object[])
+ {
return Arrays.asList((Object[]) last.result);
}
return last.result;
}
- Object executeStatement(List<CharSequence> statement) throws Exception {
+ Object executeStatement(List<CharSequence> statement) throws Exception
+ {
Object result;
List<Object> values = new ArrayList<Object>();
CharSequence statement0 = statement.remove(0);
-
+
// derek: FEATURE: add set -x facility if echo is set
StringBuilder buf = new StringBuilder("+ ");
buf.append(statement0);
-
+
Object cmd = eval(statement0);
- for (CharSequence token : statement) {
+ for (CharSequence token : statement)
+ {
buf.append(' ');
buf.append(token);
values.add(eval(token));
}
-
+
if (Boolean.TRUE.equals(session.get("echo")))
+ {
System.err.println(buf);
+ }
result = execute(cmd, values);
return result;
}
- private Object execute(Object cmd, List<Object> values) throws Exception {
- if (cmd == null) {
+ private Object execute(Object cmd, List<Object> values) throws Exception
+ {
+ if (cmd == null)
+ {
if (values.isEmpty())
+ {
return null;
+ }
else
- throw new IllegalArgumentException(
- "Command name evaluates to null");
+ {
+ throw new IllegalArgumentException("Command name evaluates to null");
+ }
}
// Now there are the following cases
@@ -120,130 +146,179 @@
// <object> // value of <object>
// <object> statement // method call
- if (cmd instanceof CharSequence) {
+ if (cmd instanceof CharSequence)
+ {
String scmd = cmd.toString();
- if (values.size() > 0 && "=".equals(values.get(0))) {
+ if (values.size() > 0 && "=".equals(values.get(0)))
+ {
//if (values.size() == 0)
if (values.size() == 1) // derek: BUGFIX
+ {
return session.variables.remove(scmd);
- else {
- Object value = execute(values.get(1), values.subList(2,
- values.size()));
+ }
+ else
+ {
+ Object value = execute(values.get(1), values.subList(2, values.size()));
return assignment(scmd, value);
}
- } else {
+ }
+ else
+ {
String scopedFunction = scmd;
Object x = get(scmd);
- if ( !(x instanceof Function) ) {
- if (scmd.indexOf(':') < 0) {
+ if (!(x instanceof Function))
+ {
+ if (scmd.indexOf(':') < 0)
+ {
scopedFunction = "*:" + scmd;
}
x = get(scopedFunction);
- if (x == null || !(x instanceof Function)) {
+ if (x == null || !(x instanceof Function))
+ {
if (values.isEmpty())
+ {
return scmd;
- throw new IllegalArgumentException("Command not found: "
- + scopedFunction);
- }
- }
+ }
+ throw new IllegalArgumentException("Command not found: " + scopedFunction);
+ }
+ }
return ((Function) x).execute(session, values);
}
- } else {
+ }
+ else
+ {
if (values.isEmpty())
+ {
return cmd;
+ }
else
+ {
return method(session, cmd, values.remove(0).toString(), values);
+ }
}
}
- private Object assignment(Object name, Object value) {
+ private Object assignment(Object name, Object value)
+ {
session.variables.put(name, value);
return value;
}
- private Object eval(CharSequence seq) throws Exception {
+ private Object eval(CharSequence seq) throws Exception
+ {
int end = seq.length();
- switch (seq.charAt(0)) {
- case '$':
- return var(seq);
- case '<':
- Closure c = new Closure(session, this, seq.subSequence(1, end - 1));
- return c.execute(session, parms);
- case '[':
- return array(seq.subSequence(1, end - 1));
-
- case '{':
- return new Closure(session, this, seq.subSequence(1, end - 1));
-
- default:
- String result = new Parser(seq).unescape();
- if ("null".equals(result))
- return null;
- if ("true".equalsIgnoreCase(result))
- return true;
- if ("false".equalsIgnoreCase(result))
- return false;
- return seq;
+ switch (seq.charAt(0))
+ {
+ case '$':
+ return var(seq);
+ case '<':
+ Closure c = new Closure(session, this, seq.subSequence(1, end - 1));
+ return c.execute(session, parms);
+ case '[':
+ return array(seq.subSequence(1, end - 1));
+
+ case '{':
+ return new Closure(session, this, seq.subSequence(1, end - 1));
+
+ default:
+ String result = new Parser(seq).unescape();
+ if ("null".equals(result))
+ {
+ return null;
+ }
+ if ("true".equalsIgnoreCase(result))
+ {
+ return true;
+ }
+ if ("false".equalsIgnoreCase(result))
+ {
+ return false;
+ }
+ return seq;
}
}
- private Object array(CharSequence array) throws Exception {
+ private Object array(CharSequence array) throws Exception
+ {
List<Object> list = new ArrayList<Object>();
Map<Object, Object> map = new LinkedHashMap<Object, Object>();
Parser p = new Parser(array);
- while (!p.eof()) {
+ while (!p.eof())
+ {
CharSequence token = p.value();
p.ws();
- if (p.peek() == '=') {
+ if (p.peek() == '=')
+ {
p.next();
p.ws();
- if (!p.eof()) {
+ if (!p.eof())
+ {
CharSequence value = p.messy();
map.put(eval(token), eval(value));
}
- } else
+ }
+ else
+ {
list.add(eval(token));
+ }
if (p.peek() == ',')
+ {
p.next();
+ }
p.ws();
}
p.ws();
if (!p.eof())
+ {
throw new IllegalArgumentException("Invalid array syntax: " + array);
+ }
if (map.size() != 0 && list.size() != 0)
- throw new IllegalArgumentException(
- "You can not mix maps and arrays: " + array);
+ {
+ throw new IllegalArgumentException("You can not mix maps and arrays: " + array);
+ }
if (map.size() > 0)
+ {
return map;
+ }
else
+ {
return list;
+ }
}
- private Object var(CharSequence var) throws Exception {
+ private Object var(CharSequence var) throws Exception
+ {
String name = eval(var.subSequence(1, var.length())).toString();
return get(name);
}
/**
- *
* @param name
* @return
*/
- private Object get(String name) {
- if (parms != null) {
+ private Object get(String name)
+ {
+ if (parms != null)
+ {
if ("it".equals(name))
+ {
return parms.get(0);
+ }
if ("args".equals(name))
+ {
return parms;
+ }
if (name.length() == 1 && Character.isDigit(name.charAt(0)))
+ {
return parms.get(name.charAt(0) - '0');
+ }
}
return session.get(name);
}
Modified: felix/trunk/gogo/src/main/java/org/apache/felix/gogo/shell/runtime/Command.java
URL: http://svn.apache.org/viewvc/felix/trunk/gogo/src/main/java/org/apache/felix/gogo/shell/runtime/Command.java?rev=787428&r1=787427&r2=787428&view=diff
==============================================================================
--- felix/trunk/gogo/src/main/java/org/apache/felix/gogo/shell/runtime/Command.java (original)
+++ felix/trunk/gogo/src/main/java/org/apache/felix/gogo/shell/runtime/Command.java Mon Jun 22 22:27:13 2009
@@ -18,21 +18,25 @@
*/
package org.apache.felix.gogo.shell.runtime;
-import java.util.*;
+import org.osgi.service.command.CommandSession;
+import org.osgi.service.command.Function;
-import org.osgi.service.command.*;
+import java.util.List;
-public class Command extends Reflective implements Function {
- Object target;
- String function;
-
- public Command(Object target, String function) {
- this.function = function;
- this.target = target;
- }
-
- public Object execute(CommandSession session, List<Object> arguments) throws Exception {
- return method(session,target, function, arguments);
- }
+public class Command extends Reflective implements Function
+{
+ Object target;
+ String function;
+
+ public Command(Object target, String function)
+ {
+ this.function = function;
+ this.target = target;
+ }
+
+ public Object execute(CommandSession session, List<Object> arguments) throws Exception
+ {
+ return method(session, target, function, arguments);
+ }
}