You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by gn...@apache.org on 2007/12/20 13:42:18 UTC
svn commit: r605911 - in /servicemix/smx4/runtime/trunk/gshell/gshell-core:
./ src/main/java/org/apache/geronimo/gshell/commands/builtins/
src/main/java/org/apache/geronimo/gshell/spring/
src/main/java/org/apache/geronimo/gshell/whisper/transport/ssl/ ...
Author: gnodet
Date: Thu Dec 20 04:42:18 2007
New Revision: 605911
URL: http://svn.apache.org/viewvc?rev=605911&view=rev
Log:
Fix builtins statefull commands by inheriting OsgiCommandSupport
Added:
servicemix/smx4/runtime/trunk/gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/commands/builtins/ClearCommand.java
servicemix/smx4/runtime/trunk/gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/commands/builtins/EchoCommand.java
servicemix/smx4/runtime/trunk/gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/commands/builtins/ExitCommand.java
- copied, changed from r604789, servicemix/smx4/runtime/trunk/gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/spring/ExitCommand.java
servicemix/smx4/runtime/trunk/gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/commands/builtins/HelpCommand.java
- copied, changed from r604789, servicemix/smx4/runtime/trunk/gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/spring/HelpCommand.java
servicemix/smx4/runtime/trunk/gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/commands/builtins/SetCommand.java
servicemix/smx4/runtime/trunk/gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/commands/builtins/SourceCommand.java
servicemix/smx4/runtime/trunk/gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/commands/builtins/UnsetCommand.java
Removed:
servicemix/smx4/runtime/trunk/gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/spring/ExitCommand.java
servicemix/smx4/runtime/trunk/gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/spring/HelpCommand.java
Modified:
servicemix/smx4/runtime/trunk/gshell/gshell-core/pom.xml
servicemix/smx4/runtime/trunk/gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/whisper/transport/ssl/SpringSslTransportFactory.java
servicemix/smx4/runtime/trunk/gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/whisper/transport/vm/SpringVmTransportFactory.java
servicemix/smx4/runtime/trunk/gshell/gshell-core/src/main/resources/META-INF/spring/gshell-commands.xml
Modified: servicemix/smx4/runtime/trunk/gshell/gshell-core/pom.xml
URL: http://svn.apache.org/viewvc/servicemix/smx4/runtime/trunk/gshell/gshell-core/pom.xml?rev=605911&r1=605910&r2=605911&view=diff
==============================================================================
--- servicemix/smx4/runtime/trunk/gshell/gshell-core/pom.xml (original)
+++ servicemix/smx4/runtime/trunk/gshell/gshell-core/pom.xml Thu Dec 20 04:42:18 2007
@@ -88,11 +88,6 @@
<version>${gshell.version}</version>
</dependency>
<dependency>
- <groupId>org.apache.geronimo.gshell.commands</groupId>
- <artifactId>gshell-builtins</artifactId>
- <version>${gshell.version}</version>
- </dependency>
- <dependency>
<groupId>org.apache.geronimo.gshell</groupId>
<artifactId>gshell-command-api</artifactId>
<version>${gshell.version}</version>
Added: servicemix/smx4/runtime/trunk/gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/commands/builtins/ClearCommand.java
URL: http://svn.apache.org/viewvc/servicemix/smx4/runtime/trunk/gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/commands/builtins/ClearCommand.java?rev=605911&view=auto
==============================================================================
--- servicemix/smx4/runtime/trunk/gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/commands/builtins/ClearCommand.java (added)
+++ servicemix/smx4/runtime/trunk/gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/commands/builtins/ClearCommand.java Thu Dec 20 04:42:18 2007
@@ -0,0 +1,67 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geronimo.gshell.commands.builtins;
+
+import java.io.PrintWriter;
+
+import jline.ConsoleReader;
+import jline.Terminal;
+import org.apache.geronimo.gshell.ansi.ANSI;
+import org.apache.geronimo.gshell.command.annotation.CommandComponent;
+import org.apache.geronimo.gshell.command.annotation.Requirement;
+import org.apache.geronimo.gshell.support.OsgiCommandSupport;
+
+/**
+ * Clear the terminal screen.
+ *
+ * @version $Rev: 595891 $ $Date: 2007-11-17 02:23:47 +0100 (Sat, 17 Nov 2007) $
+ */
+@CommandComponent(id="gshell-builtins:clear", description="Clear the terminal screen")
+public class ClearCommand
+ extends OsgiCommandSupport
+{
+ @Requirement
+ private Terminal terminal;
+
+ public ClearCommand() {
+ }
+
+ public ClearCommand(Terminal terminal) {
+ this.terminal = terminal;
+ }
+
+ protected OsgiCommandSupport createCommand() throws Exception {
+ return new ClearCommand(terminal);
+ }
+
+ protected Object doExecute() throws Exception {
+ ConsoleReader reader = new ConsoleReader(io.inputStream, new PrintWriter(io.outputStream, true), /*bindings*/ null, terminal);
+
+ if (!ANSI.isEnabled()) {
+ io.out.println("ANSI is not enabled. The clear command is not functional");
+ }
+ else {
+ reader.clearScreen();
+ return SUCCESS;
+ }
+
+ return SUCCESS;
+ }
+}
Added: servicemix/smx4/runtime/trunk/gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/commands/builtins/EchoCommand.java
URL: http://svn.apache.org/viewvc/servicemix/smx4/runtime/trunk/gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/commands/builtins/EchoCommand.java?rev=605911&view=auto
==============================================================================
--- servicemix/smx4/runtime/trunk/gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/commands/builtins/EchoCommand.java (added)
+++ servicemix/smx4/runtime/trunk/gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/commands/builtins/EchoCommand.java Thu Dec 20 04:42:18 2007
@@ -0,0 +1,62 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geronimo.gshell.commands.builtins;
+
+import java.util.List;
+
+import org.apache.geronimo.gshell.clp.Argument;
+import org.apache.geronimo.gshell.clp.Option;
+import org.apache.geronimo.gshell.command.CommandSupport;
+import org.apache.geronimo.gshell.command.annotation.CommandComponent;
+
+/**
+ * A simple command to <em>echo</em> all given arguments to the commands standard output.
+ *
+ * @version $Rev: 593392 $ $Date: 2007-11-09 03:14:15 +0100 (Fri, 09 Nov 2007) $
+ */
+@CommandComponent(id="gshell-builtins:echo", description="Echo or print arguments to STDOUT")
+public class EchoCommand
+ extends CommandSupport
+{
+ @Option(name="-n", description="Do not print the trailing newline character")
+ private boolean trailingNewline = true;
+
+ @Argument(description="Arguments")
+ private List<String> args;
+
+ protected Object doExecute() throws Exception {
+ if (args != null) {
+ int c=0;
+
+ for (String arg : args) {
+ io.out.print(arg);
+ if (++c + 1 < args.size()) {
+ io.out.print(" ");
+ }
+ }
+ }
+
+ if (trailingNewline) {
+ io.out.println();
+ }
+
+ return SUCCESS;
+ }
+}
\ No newline at end of file
Copied: servicemix/smx4/runtime/trunk/gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/commands/builtins/ExitCommand.java (from r604789, servicemix/smx4/runtime/trunk/gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/spring/ExitCommand.java)
URL: http://svn.apache.org/viewvc/servicemix/smx4/runtime/trunk/gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/commands/builtins/ExitCommand.java?p2=servicemix/smx4/runtime/trunk/gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/commands/builtins/ExitCommand.java&p1=servicemix/smx4/runtime/trunk/gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/spring/ExitCommand.java&r1=604789&r2=605911&rev=605911&view=diff
==============================================================================
--- servicemix/smx4/runtime/trunk/gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/spring/ExitCommand.java (original)
+++ servicemix/smx4/runtime/trunk/gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/commands/builtins/ExitCommand.java Thu Dec 20 04:42:18 2007
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.geronimo.gshell.spring;
+package org.apache.geronimo.gshell.commands.builtins;
import org.apache.geronimo.gshell.ExitNotification;
import org.apache.geronimo.gshell.clp.Argument;
Copied: servicemix/smx4/runtime/trunk/gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/commands/builtins/HelpCommand.java (from r604789, servicemix/smx4/runtime/trunk/gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/spring/HelpCommand.java)
URL: http://svn.apache.org/viewvc/servicemix/smx4/runtime/trunk/gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/commands/builtins/HelpCommand.java?p2=servicemix/smx4/runtime/trunk/gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/commands/builtins/HelpCommand.java&p1=servicemix/smx4/runtime/trunk/gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/spring/HelpCommand.java&r1=604789&r2=605911&rev=605911&view=diff
==============================================================================
--- servicemix/smx4/runtime/trunk/gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/spring/HelpCommand.java (original)
+++ servicemix/smx4/runtime/trunk/gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/commands/builtins/HelpCommand.java Thu Dec 20 04:42:18 2007
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.geronimo.gshell.spring;
+package org.apache.geronimo.gshell.commands.builtins;
import java.util.Comparator;
import java.util.List;
Added: servicemix/smx4/runtime/trunk/gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/commands/builtins/SetCommand.java
URL: http://svn.apache.org/viewvc/servicemix/smx4/runtime/trunk/gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/commands/builtins/SetCommand.java?rev=605911&view=auto
==============================================================================
--- servicemix/smx4/runtime/trunk/gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/commands/builtins/SetCommand.java (added)
+++ servicemix/smx4/runtime/trunk/gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/commands/builtins/SetCommand.java Thu Dec 20 04:42:18 2007
@@ -0,0 +1,170 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geronimo.gshell.commands.builtins;
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.Properties;
+
+import org.apache.geronimo.gshell.DefaultVariables;
+import org.apache.geronimo.gshell.clp.Argument;
+import org.apache.geronimo.gshell.clp.Option;
+import org.apache.geronimo.gshell.command.Variables;
+import org.apache.geronimo.gshell.command.annotation.CommandComponent;
+import org.apache.geronimo.gshell.support.OsgiCommandSupport;
+
+/**
+ * Set a variable or property.
+ *
+ * @version $Rev: 593392 $ $Date: 2007-11-09 03:14:15 +0100 (Fri, 09 Nov 2007) $
+ */
+@CommandComponent(id="gshell-builtins:set", description="Set a variable")
+public class SetCommand
+ extends OsgiCommandSupport
+{
+ enum Mode
+ {
+ VARIABLE,
+ PROPERTY
+ }
+
+ @Option(name="-m", aliases={"--mode"}, description="Set mode")
+ private Mode mode = Mode.VARIABLE;
+
+ @Argument(description="Variable definition")
+ private List<String> args;
+
+ protected Object doExecute() throws Exception {
+ // No args... list all properties or variables
+ if (args == null || args.size() == 0) {
+ switch (mode) {
+ case PROPERTY: {
+ Properties props = System.getProperties();
+
+ for (Object o : props.keySet()) {
+ String name = (String) o;
+ String value = props.getProperty(name);
+
+ io.out.print(name);
+ io.out.print("=");
+ io.out.print(value);
+ io.out.println();
+ }
+ break;
+ }
+
+ case VARIABLE: {
+ Iterator<String> iter = variables.names();
+
+ while (iter.hasNext()) {
+ String name = iter.next();
+ Object value = variables.get(name);
+
+ io.out.print(name);
+ io.out.print("=");
+ io.out.print(value);
+ io.out.println();
+ }
+ break;
+ }
+ }
+
+ return SUCCESS;
+ }
+
+ //
+ // FIXME: This does not jive well with the parser, and stuff like foo = "b a r"
+ //
+
+ //
+ // NOTE: May want to make x=b part of the CL grammar
+ //
+
+ for (Object arg : args) {
+ String namevalue = String.valueOf(arg);
+
+ switch (mode) {
+ case PROPERTY:
+ setProperty(namevalue);
+ break;
+
+ case VARIABLE:
+ setVariable(namevalue);
+ break;
+ }
+ }
+
+ return SUCCESS;
+ }
+
+ class NameValue
+ {
+ String name;
+ String value;
+ }
+
+ private NameValue parse(final String input) {
+ NameValue nv = new NameValue();
+
+ int i = input.indexOf("=");
+
+ if (i == -1) {
+ nv.name = input;
+ nv.value = "true";
+ }
+ else {
+ nv.name = input.substring(0, i);
+ nv.value = input.substring(i + 1, input.length());
+ }
+
+ nv.name = nv.name.trim();
+
+ return nv;
+ }
+
+ private void ensureIsIdentifier(final String name) {
+ if (!DefaultVariables.isIdentifier(name)) {
+ throw new RuntimeException("Invalid identifer name: " + name);
+ }
+ }
+
+ private void setProperty(final String namevalue) {
+ NameValue nv = parse(namevalue);
+
+ log.info("Setting system property: {}={}", nv.name, nv.value);
+
+ ensureIsIdentifier(nv.name);
+
+ System.setProperty(nv.name, nv.value);
+ }
+
+ private void setVariable(final String namevalue) {
+ NameValue nv = parse(namevalue);
+
+ log.info("Setting variable: {}={}", nv.name, nv.value);
+
+ ensureIsIdentifier(nv.name);
+
+ // Command vars always has a parent, set only makes sence when setting in parent's scope
+ Variables vars = variables.parent();
+
+ vars.set(nv.name, nv.value);
+ }
+}
Added: servicemix/smx4/runtime/trunk/gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/commands/builtins/SourceCommand.java
URL: http://svn.apache.org/viewvc/servicemix/smx4/runtime/trunk/gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/commands/builtins/SourceCommand.java?rev=605911&view=auto
==============================================================================
--- servicemix/smx4/runtime/trunk/gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/commands/builtins/SourceCommand.java (added)
+++ servicemix/smx4/runtime/trunk/gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/commands/builtins/SourceCommand.java Thu Dec 20 04:42:18 2007
@@ -0,0 +1,119 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geronimo.gshell.commands.builtins;
+
+import java.io.BufferedReader;
+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 org.apache.geronimo.gshell.clp.Argument;
+import org.apache.geronimo.gshell.command.CommandExecutor;
+import org.apache.geronimo.gshell.command.annotation.CommandComponent;
+import org.apache.geronimo.gshell.command.annotation.Requirement;
+import org.apache.geronimo.gshell.support.OsgiCommandSupport;
+import org.codehaus.plexus.util.IOUtil;
+
+/**
+ * Read and execute commands from a file/url in the current shell environment.
+ *
+ * @version $Rev: 600779 $ $Date: 2007-12-04 04:55:33 +0100 (Tue, 04 Dec 2007) $
+ */
+@CommandComponent(id="gshell-builtins:source", description="Load a file/url into the current shell")
+public class SourceCommand
+ extends OsgiCommandSupport
+{
+ @Requirement
+ private CommandExecutor executor;
+
+ @Argument(required=true, description="Source file")
+ private String source;
+
+ protected Object doExecute() throws Exception {
+ URL url;
+
+ try {
+ url = new URL(source);
+ }
+ catch (MalformedURLException e) {
+ url = new File(source).toURI().toURL();
+ }
+
+ BufferedReader reader = openReader(url);
+ try {
+ String line;
+ while ((line = reader.readLine()) != null) {
+ String tmp = line.trim();
+
+ // Ignore empty lines and comments
+ if (tmp.length() == 0 || tmp.startsWith("#")) {
+ continue;
+ }
+
+ executor.execute(line);
+ }
+ }
+ finally {
+ IOUtil.close(reader);
+ }
+
+ return SUCCESS;
+ }
+
+ private BufferedReader openReader(final Object source) throws IOException {
+ BufferedReader reader;
+
+ if (source instanceof File) {
+ File file = (File)source;
+ log.info("Using source file: {}", file);
+
+ reader = new BufferedReader(new FileReader(file));
+ }
+ else if (source instanceof URL) {
+ URL url = (URL)source;
+ log.info("Using source URL: {}", url);
+
+ reader = new BufferedReader(new InputStreamReader(url.openStream()));
+ }
+ else {
+ String tmp = String.valueOf(source);
+
+ // First try a URL
+ try {
+ URL url = new URL(tmp);
+ log.info("Using source URL: {}", url);
+
+ reader = new BufferedReader(new InputStreamReader(url.openStream()));
+ }
+ catch (MalformedURLException ignore) {
+ // They try a file
+ File file = new File(tmp);
+ log.info("Using source file: {}", file);
+
+ reader = new BufferedReader(new FileReader(tmp));
+ }
+ }
+
+ return reader;
+ }
+}
Added: servicemix/smx4/runtime/trunk/gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/commands/builtins/UnsetCommand.java
URL: http://svn.apache.org/viewvc/servicemix/smx4/runtime/trunk/gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/commands/builtins/UnsetCommand.java?rev=605911&view=auto
==============================================================================
--- servicemix/smx4/runtime/trunk/gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/commands/builtins/UnsetCommand.java (added)
+++ servicemix/smx4/runtime/trunk/gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/commands/builtins/UnsetCommand.java Thu Dec 20 04:42:18 2007
@@ -0,0 +1,94 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.geronimo.gshell.commands.builtins;
+
+import java.util.List;
+
+import org.apache.geronimo.gshell.DefaultVariables;
+import org.apache.geronimo.gshell.clp.Argument;
+import org.apache.geronimo.gshell.clp.Option;
+import org.apache.geronimo.gshell.command.Variables;
+import org.apache.geronimo.gshell.command.annotation.CommandComponent;
+import org.apache.geronimo.gshell.support.OsgiCommandSupport;
+
+/**
+ * Unset a variable or property.
+ *
+ * @version $Rev: 593392 $ $Date: 2007-11-09 03:14:15 +0100 (Fri, 09 Nov 2007) $
+ */
+@CommandComponent(id="gshell-builtins:unset", description="Unset a variable")
+public class UnsetCommand
+ extends OsgiCommandSupport
+{
+ enum Mode
+ {
+ VARIABLE,
+ PROPERTY
+ }
+
+ @Option(name="-m", aliases={"--mode"}, description="Unset mode")
+ private Mode mode = Mode.VARIABLE;
+
+ @Argument(required=true, description="Variable name")
+ private List<String> args;
+
+ protected Object doExecute() throws Exception {
+ for (String arg : args) {
+ String namevalue = String.valueOf(arg);
+
+ switch (mode) {
+ case PROPERTY:
+ unsetProperty(namevalue);
+ break;
+
+ case VARIABLE:
+ unsetVariable(namevalue);
+ break;
+ }
+ }
+
+ return SUCCESS;
+ }
+
+ private void ensureIsIdentifier(final String name) {
+ if (!DefaultVariables.isIdentifier(name)) {
+ throw new RuntimeException("Invalid identifer name: " + name);
+ }
+ }
+
+ private void unsetProperty(final String name) {
+ log.info("Unsetting system property: {}", name);
+
+ ensureIsIdentifier(name);
+
+ System.getProperties().remove(name);
+ }
+
+ private void unsetVariable(final String name) {
+ log.info("Unsetting variable: {}", name);
+
+ ensureIsIdentifier(name);
+
+ // Command vars always has a parent, set only makes sence when setting in parent's scope
+ Variables vars = variables.parent();
+
+ vars.unset(name);
+ }
+}
Modified: servicemix/smx4/runtime/trunk/gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/whisper/transport/ssl/SpringSslTransportFactory.java
URL: http://svn.apache.org/viewvc/servicemix/smx4/runtime/trunk/gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/whisper/transport/ssl/SpringSslTransportFactory.java?rev=605911&r1=605910&r2=605911&view=diff
==============================================================================
--- servicemix/smx4/runtime/trunk/gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/whisper/transport/ssl/SpringSslTransportFactory.java (original)
+++ servicemix/smx4/runtime/trunk/gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/whisper/transport/ssl/SpringSslTransportFactory.java Thu Dec 20 04:42:18 2007
@@ -16,8 +16,6 @@
*/
package org.apache.geronimo.gshell.whisper.transport.ssl;
-import org.apache.geronimo.gshell.whisper.transport.tcp.TcpTransport;
-import org.apache.geronimo.gshell.whisper.transport.tcp.TcpTransportServer;
import org.apache.geronimo.gshell.whisper.transport.base.SpringBaseTransportFactory;
import org.apache.geronimo.gshell.whisper.transport.base.BaseTransport;
import org.apache.geronimo.gshell.whisper.transport.base.BaseTransportServer;
Modified: servicemix/smx4/runtime/trunk/gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/whisper/transport/vm/SpringVmTransportFactory.java
URL: http://svn.apache.org/viewvc/servicemix/smx4/runtime/trunk/gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/whisper/transport/vm/SpringVmTransportFactory.java?rev=605911&r1=605910&r2=605911&view=diff
==============================================================================
--- servicemix/smx4/runtime/trunk/gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/whisper/transport/vm/SpringVmTransportFactory.java (original)
+++ servicemix/smx4/runtime/trunk/gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/whisper/transport/vm/SpringVmTransportFactory.java Thu Dec 20 04:42:18 2007
@@ -16,8 +16,6 @@
*/
package org.apache.geronimo.gshell.whisper.transport.vm;
-import org.apache.geronimo.gshell.whisper.transport.tcp.TcpTransport;
-import org.apache.geronimo.gshell.whisper.transport.tcp.TcpTransportServer;
import org.apache.geronimo.gshell.whisper.transport.base.SpringBaseTransportFactory;
import org.apache.geronimo.gshell.whisper.transport.base.BaseTransport;
import org.apache.geronimo.gshell.whisper.transport.base.BaseTransportServer;
Modified: servicemix/smx4/runtime/trunk/gshell/gshell-core/src/main/resources/META-INF/spring/gshell-commands.xml
URL: http://svn.apache.org/viewvc/servicemix/smx4/runtime/trunk/gshell/gshell-core/src/main/resources/META-INF/spring/gshell-commands.xml?rev=605911&r1=605910&r2=605911&view=diff
==============================================================================
--- servicemix/smx4/runtime/trunk/gshell/gshell-core/src/main/resources/META-INF/spring/gshell-commands.xml (original)
+++ servicemix/smx4/runtime/trunk/gshell/gshell-core/src/main/resources/META-INF/spring/gshell-commands.xml Thu Dec 20 04:42:18 2007
@@ -26,13 +26,15 @@
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util.xsd">
- <bean id="clear" class="org.apache.geronimo.gshell.commands.builtins.ClearCommand" />
+ <bean id="clear" class="org.apache.geronimo.gshell.commands.builtins.ClearCommand">
+ <constructor-arg ref="terminal" />
+ </bean>
<bean id="echo" class="org.apache.geronimo.gshell.commands.builtins.EchoCommand" />
- <bean id="exit" class="org.apache.geronimo.gshell.spring.ExitCommand" />
+ <bean id="exit" class="org.apache.geronimo.gshell.commands.builtins.ExitCommand" />
- <bean id="help" class="org.apache.geronimo.gshell.spring.HelpCommand">
+ <bean id="help" class="org.apache.geronimo.gshell.commands.builtins.HelpCommand">
<constructor-arg ref="commandRegistry" />
<constructor-arg ref="commandRegistry" />
<constructor-arg ref="branding" />