You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by jd...@apache.org on 2006/06/05 06:57:42 UTC
svn commit: r411664 - in /geronimo/sandbox/gshell/trunk: ./
gshell-api/src/main/java/org/apache/geronimo/gshell/
gshell-api/src/main/java/org/apache/geronimo/gshell/command/
gshell-api/src/main/java/org/apache/geronimo/gshell/util/
gshell-api/src/test/...
Author: jdillon
Date: Sun Jun 4 21:57:41 2006
New Revision: 411664
URL: http://svn.apache.org/viewvc?rev=411664&view=rev
Log:
Hooked up ${...} post-parsing as a temporary solution until I can get the command line parser to do this in the first pass
Dropped CommandExecutor interface & related... components that used it really needed a Shell instance (for variables and execution)
Setting ///CLOVER:OFF on classes which should not be included in the code-coverage calculations
Added:
geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/commandline/VariableExpressionParser.java (with props)
geronimo/sandbox/gshell/trunk/gshell-core/src/test/java/org/apache/geronimo/gshell/MockShell.java (with props)
geronimo/sandbox/gshell/trunk/gshell-core/src/test/java/org/apache/geronimo/gshell/commandline/VariableExpressionParserTest.java (with props)
Removed:
geronimo/sandbox/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/command/CommandExecutor.java
geronimo/sandbox/gshell/trunk/gshell-api/src/test/java/org/apache/geronimo/gshell/command/MockCommandExecutor.java
geronimo/sandbox/gshell/trunk/gshell-core/src/test/java/org/apache/geronimo/gshell/command/MockCommandExecutor.java
Modified:
geronimo/sandbox/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/ExitNotification.java
geronimo/sandbox/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/command/CommandDefinition.java
geronimo/sandbox/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/command/Variables.java
geronimo/sandbox/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/util/Banner.java
geronimo/sandbox/gshell/trunk/gshell-cli/src/main/java/org/apache/geronimo/gshell/cli/Main.java
geronimo/sandbox/gshell/trunk/gshell-core/pom.xml
geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/Shell.java
geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/commandline/CommandLineBuilder.java
geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/commandline/ExecutingVisitor.java
geronimo/sandbox/gshell/trunk/gshell-core/src/test/java/org/apache/geronimo/gshell/commandline/CommandLineBuilderTest.java
geronimo/sandbox/gshell/trunk/gshell-core/src/test/java/org/apache/geronimo/gshell/commandline/ExecutingVisitorTest.java
geronimo/sandbox/gshell/trunk/pom.xml
Modified: geronimo/sandbox/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/ExitNotification.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/ExitNotification.java?rev=411664&r1=411663&r2=411664&view=diff
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/ExitNotification.java (original)
+++ geronimo/sandbox/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/ExitNotification.java Sun Jun 4 21:57:41 2006
@@ -27,6 +27,8 @@
public class ExitNotification
extends Error
{
+ ///CLOVER:OFF
+
//
// TODO: Need to find a better home for this...
//
Modified: geronimo/sandbox/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/command/CommandDefinition.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/command/CommandDefinition.java?rev=411664&r1=411663&r2=411664&view=diff
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/command/CommandDefinition.java (original)
+++ geronimo/sandbox/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/command/CommandDefinition.java Sun Jun 4 21:57:41 2006
@@ -122,6 +122,8 @@
public static class InvalidDefinitionException
extends CommandException
{
+ ///CLOVER:OFF
+
public InvalidDefinitionException(String msg) {
super(msg);
}
@@ -130,6 +132,8 @@
public static class MissingPropertyException
extends InvalidDefinitionException
{
+ ///CLOVER:OFF
+
MissingPropertyException(String name, Properties props) {
super("Missing '" + name + "' property in command definition: " + props);
}
Modified: geronimo/sandbox/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/command/Variables.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/command/Variables.java?rev=411664&r1=411663&r2=411664&view=diff
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/command/Variables.java (original)
+++ geronimo/sandbox/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/command/Variables.java Sun Jun 4 21:57:41 2006
@@ -52,6 +52,8 @@
class ImmutableVariableException
extends RuntimeException
{
+ ///CLOVER:OFF
+
public ImmutableVariableException(final String name) {
super("Variable is immutable: " + name);
}
Modified: geronimo/sandbox/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/util/Banner.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/util/Banner.java?rev=411664&r1=411663&r2=411664&view=diff
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/util/Banner.java (original)
+++ geronimo/sandbox/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/util/Banner.java Sun Jun 4 21:57:41 2006
@@ -26,6 +26,8 @@
*/
public class Banner
{
+ ///CLOVER:OFF
+
public static String getBanner() {
StringWriter writer = new StringWriter();
PrintWriter out = new PrintWriter(writer);
Modified: geronimo/sandbox/gshell/trunk/gshell-cli/src/main/java/org/apache/geronimo/gshell/cli/Main.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-cli/src/main/java/org/apache/geronimo/gshell/cli/Main.java?rev=411664&r1=411663&r2=411664&view=diff
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-cli/src/main/java/org/apache/geronimo/gshell/cli/Main.java (original)
+++ geronimo/sandbox/gshell/trunk/gshell-cli/src/main/java/org/apache/geronimo/gshell/cli/Main.java Sun Jun 4 21:57:41 2006
@@ -46,6 +46,8 @@
*/
public class Main
{
+ ///CLOVER:OFF
+
//
// NOTE: Do not use logging from this class, as it is used to configure
// the logging level with System properties, which will only get
Modified: geronimo/sandbox/gshell/trunk/gshell-core/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-core/pom.xml?rev=411664&r1=411663&r2=411664&view=diff
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-core/pom.xml (original)
+++ geronimo/sandbox/gshell/trunk/gshell-core/pom.xml Sun Jun 4 21:57:41 2006
@@ -46,6 +46,12 @@
<groupId>picocontainer</groupId>
<artifactId>picocontainer-gems</artifactId>
</dependency>
+
+ <dependency>
+ <groupId>commons-jexl</groupId>
+ <artifactId>commons-jexl</artifactId>
+ <version>1.0</version>
+ </dependency>
</dependencies>
<build>
@@ -103,7 +109,7 @@
<goal>run</goal>
</goals>
</execution>
-
+
<!-- Need to put these into a package so that Eclipse does not freak out -->
<execution>
<id>move-to-package</id>
@@ -116,7 +122,7 @@
<include name="*.java"/>
</fileset>
</move>
-
+
<mkdir dir="${pom.basedir}/target/generated-sources/javacc/org/apache/geronimo/gshell/commandline/parser"/>
<move todir="${pom.basedir}/target/generated-sources/javacc/org/apache/geronimo/gshell/commandline/parser">
<fileset dir="${pom.basedir}/target/generated-sources/javacc">
@@ -125,7 +131,7 @@
</move>
</tasks>
</configuration>
-
+
<goals>
<goal>run</goal>
</goals>
Modified: geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/Shell.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/Shell.java?rev=411664&r1=411663&r2=411664&view=diff
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/Shell.java (original)
+++ geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/Shell.java Sun Jun 4 21:57:41 2006
@@ -20,7 +20,6 @@
import org.apache.commons.logging.LogFactory;
import org.apache.commons.lang.time.StopWatch;
import org.apache.geronimo.gshell.console.IO;
-import org.apache.geronimo.gshell.command.CommandExecutor;
import org.apache.geronimo.gshell.command.Command;
import org.apache.geronimo.gshell.command.CommandManager;
import org.apache.geronimo.gshell.command.CommandContext;
@@ -43,8 +42,11 @@
* @version $Id$
*/
public class Shell
- implements CommandExecutor
{
+ //
+ // TODO: Introduce Shell interface?
+ //
+
private static final Log log = LogFactory.getLog(Shell.class);
private final IO io;
Modified: geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/commandline/CommandLineBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/commandline/CommandLineBuilder.java?rev=411664&r1=411663&r2=411664&view=diff
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/commandline/CommandLineBuilder.java (original)
+++ geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/commandline/CommandLineBuilder.java Sun Jun 4 21:57:41 2006
@@ -19,7 +19,8 @@
import org.apache.geronimo.gshell.commandline.parser.CommandLineParser;
import org.apache.geronimo.gshell.commandline.parser.ASTCommandLine;
import org.apache.geronimo.gshell.commandline.parser.ParseException;
-import org.apache.geronimo.gshell.command.CommandExecutor;
+import org.apache.geronimo.gshell.Shell;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -35,16 +36,16 @@
{
private static final Log log = LogFactory.getLog(CommandLineBuilder.class);
- private final CommandExecutor executor;
+ private final Shell shell;
private final CommandLineParser parser;
- public CommandLineBuilder(final CommandExecutor executor) {
- if (executor == null) {
- throw new IllegalArgumentException("Executor is null");
+ public CommandLineBuilder(final Shell shell) {
+ if (shell == null) {
+ throw new IllegalArgumentException("Shell is null");
}
- this.executor = executor;
+ this.shell = shell;
this.parser = new CommandLineParser();
}
@@ -73,7 +74,7 @@
}
final ASTCommandLine root = parse(commandLine);
- final ExecutingVisitor visitor = new ExecutingVisitor(this.executor);
+ final ExecutingVisitor visitor = new ExecutingVisitor(this.shell);
return new CommandLine() {
public void execute() throws Exception {
Modified: geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/commandline/ExecutingVisitor.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/commandline/ExecutingVisitor.java?rev=411664&r1=411663&r2=411664&view=diff
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/commandline/ExecutingVisitor.java (original)
+++ geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/commandline/ExecutingVisitor.java Sun Jun 4 21:57:41 2006
@@ -23,9 +23,8 @@
import org.apache.geronimo.gshell.commandline.parser.ASTQuotedString;
import org.apache.geronimo.gshell.commandline.parser.ASTOpaqueString;
import org.apache.geronimo.gshell.commandline.parser.ASTPlainString;
-import org.apache.geronimo.gshell.commandline.parser.StringSupport;
import org.apache.geronimo.gshell.util.Arguments;
-import org.apache.geronimo.gshell.command.CommandExecutor;
+import org.apache.geronimo.gshell.Shell;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -43,14 +42,17 @@
{
private static final Log log = LogFactory.getLog(ExecutingVisitor.class);
- private final CommandExecutor executor;
+ private final Shell shell;
- public ExecutingVisitor(final CommandExecutor executor) {
- if (executor == null) {
- throw new IllegalArgumentException("Executor is null");
+ private final VariableExpressionParser exprParser;
+
+ public ExecutingVisitor(final Shell shell) {
+ if (shell == null) {
+ throw new IllegalArgumentException("Shell is null");
}
- this.executor = executor;
+ this.shell = shell;
+ this.exprParser = new VariableExpressionParser(shell.getVariables());
}
public Object visit(final SimpleNode node, final Object data) {
@@ -84,7 +86,7 @@
// assert data != null;
// Create the argument list (cmd name + args)
- List list = new ArrayList(node.jjtGetNumChildren());
+ List<String> list = new ArrayList<String>(node.jjtGetNumChildren());
node.childrenAccept(this, list);
String[] args = (String[])list.toArray(new String[list.size()]);
@@ -96,7 +98,7 @@
int result;
try {
- result = executor.execute(commandName, args);
+ result = shell.execute(commandName, args);
}
catch (Exception e) {
//
@@ -109,27 +111,31 @@
return result;
}
- private Object appendString(final StringSupport node, final Object data) {
- assert node != null;
+ private Object appendString(final String value, final Object data) {
assert data != null;
assert data instanceof List;
- List args = (List)data;
- String value = node.getValue();
+ List<String> args = (List<String>)data;
args.add(value);
return value;
}
+ //
+ // TODO: Include parsed ${...} strings?
+ //
+
public Object visit(final ASTQuotedString node, final Object data) {
- return appendString(node, data);
+ String value = exprParser.parse(node.getValue());
+ return appendString(value, data);
}
public Object visit(final ASTOpaqueString node, final Object data) {
- return appendString(node, data);
+ return appendString(node.getValue(), data);
}
public Object visit(final ASTPlainString node, final Object data) {
- return appendString(node, data);
+ String value = exprParser.parse(node.getValue());
+ return appendString(value, data);
}
}
Added: geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/commandline/VariableExpressionParser.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/commandline/VariableExpressionParser.java?rev=411664&view=auto
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/commandline/VariableExpressionParser.java (added)
+++ geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/commandline/VariableExpressionParser.java Sun Jun 4 21:57:41 2006
@@ -0,0 +1,238 @@
+/*
+ * Copyright 2006 The Apache Software Foundation
+ *
+ * Licensed 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.commandline;
+
+import java.util.Map;
+import java.util.HashMap;
+import java.util.Iterator;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import org.apache.commons.jexl.JexlHelper;
+import org.apache.commons.jexl.JexlContext;
+import org.apache.commons.jexl.Expression;
+import org.apache.commons.jexl.ExpressionFactory;
+import org.apache.commons.jexl.resolver.FlatResolver;
+import org.apache.commons.lang.NullArgumentException;
+
+import org.apache.geronimo.gshell.command.Variables;
+
+/**
+ * Parser to handle ${...} expressions using
+ * <a href="http://jakarta.apache.org/commons/jexl/">JEXL</a>.
+ *
+ * @version $Id$
+ */
+public class VariableExpressionParser
+{
+ //
+ // NOTE: May want to add the ${...} bits the the CommandLineParser directly.
+ // This sub-parser is probably only short-term so we can get soemthing working
+ //
+
+ private static final Log log = LogFactory.getLog(VariableExpressionParser.class);
+
+ protected JexlContext context;
+
+ public VariableExpressionParser(final Map vars) {
+ if (vars == null) {
+ throw new NullArgumentException("vars");
+ }
+
+ context = JexlHelper.createContext();
+ context.setVars(vars);
+
+ if (log.isTraceEnabled()) {
+ log.trace("Using variables: " + context.getVars());
+ }
+ }
+
+ private static Map convertToMap(final Variables vars) {
+ if (vars == null) {
+ throw new NullArgumentException("vars");
+ }
+
+ Map map = new HashMap();
+ Iterator<String> iter = vars.names();
+
+ while (iter.hasNext()) {
+ String name = iter.next();
+ map.put(name, vars.get(name));
+ }
+
+ return map;
+ }
+
+ public VariableExpressionParser(final Variables vars) {
+ this(convertToMap(vars));
+ }
+
+ public VariableExpressionParser() {
+ this(System.getProperties());
+ }
+
+ public Map getVariables() {
+ return context.getVars();
+ }
+
+ public Object getVariable(final Object name) {
+ if (name == null) {
+ throw new NullArgumentException("name");
+ }
+
+ return getVariables().get(name);
+ }
+
+ public Object setVariable(final Object name, final Object value) {
+ if (name == null) {
+ throw new NullArgumentException("name");
+ }
+
+ return getVariables().put(name, value);
+ }
+
+ public Object unsetVariable(final Object name) {
+ if (name == null) {
+ throw new NullArgumentException("name");
+ }
+
+ return getVariables().remove(name);
+ }
+
+ public void addVariables(final Map map) {
+ if (map == null) {
+ throw new NullArgumentException("map");
+ }
+
+ getVariables().putAll(map);
+ }
+
+ private final FlatResolver resolver = new FlatResolver(true);
+
+ protected Expression createExpression(final String expression) throws Exception {
+ assert expression != null;
+
+ Expression expr = ExpressionFactory.createExpression(expression);
+ expr.addPreResolver(resolver);
+
+ return expr;
+ }
+
+ public Object evaluate(final String expression) throws Exception {
+ if (expression == null) {
+ throw new NullArgumentException("expression");
+ }
+
+ boolean trace = log.isTraceEnabled();
+ if (trace) {
+ log.trace("Evaluating expression: " + expression);
+ }
+
+ Expression expr = createExpression(expression);
+ Object obj = expr.evaluate(context);
+ if (trace) {
+ log.trace("Result: " + obj);
+ }
+
+ return obj;
+ }
+
+ private static final String PREFIX = "${";
+
+ private static final String SUFFIX = "}";
+
+ public String parse(final String input) throws SyntaxException {
+ if (input == null) {
+ throw new NullArgumentException("input");
+ }
+
+ boolean trace = log.isTraceEnabled();
+ if (trace) {
+ log.trace("Parsing input: " + input);
+ }
+
+ StringBuffer buff = new StringBuffer();
+
+ int cur = 0;
+ int prefixLoc = 0;
+ int suffixLoc = 0;
+
+ while (cur < input.length()) {
+ prefixLoc = input.indexOf(PREFIX, cur);
+
+ if (prefixLoc < 0) {
+ break;
+ }
+
+ suffixLoc = input.indexOf(SUFFIX, prefixLoc);
+ if (suffixLoc < 0) {
+ throw new SyntaxException("Missing '}': " + input);
+ }
+
+ String expr = input.substring(prefixLoc + 2, suffixLoc);
+ buff.append(input.substring(cur, prefixLoc));
+
+ try {
+ buff.append(evaluate(expr));
+ }
+ catch (Exception e) {
+ throw new SyntaxException("Failed to evaluate: " + expr, e);
+ }
+
+ cur = suffixLoc + 1;
+ }
+
+ buff.append(input.substring(cur));
+
+ if (trace) {
+ log.trace("Parsed result: " + buff);
+ }
+
+ return buff.toString();
+ }
+
+ public String parse(final String input, final boolean trim) throws SyntaxException {
+ String output = parse(input);
+ if (trim && output != null) {
+ output = output.trim();
+ }
+
+ return output;
+ }
+
+ //
+ // SyntaxException
+ //
+
+ /**
+ * Thrown to indicate a syntax error while parsing.
+ */
+ public static class SyntaxException
+ extends RuntimeException
+ {
+ ///CLOVER:OFF
+
+ public SyntaxException(final String msg) {
+ super(msg);
+ }
+
+ public SyntaxException(final String msg, final Throwable cause) {
+ super(msg, cause);
+ }
+ }
+}
\ No newline at end of file
Propchange: geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/commandline/VariableExpressionParser.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/commandline/VariableExpressionParser.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/commandline/VariableExpressionParser.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: geronimo/sandbox/gshell/trunk/gshell-core/src/test/java/org/apache/geronimo/gshell/MockShell.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-core/src/test/java/org/apache/geronimo/gshell/MockShell.java?rev=411664&view=auto
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-core/src/test/java/org/apache/geronimo/gshell/MockShell.java (added)
+++ geronimo/sandbox/gshell/trunk/gshell-core/src/test/java/org/apache/geronimo/gshell/MockShell.java Sun Jun 4 21:57:41 2006
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2006 The Apache Software Foundation
+ *
+ * Licensed 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;
+
+import junit.framework.TestCase;
+import org.apache.geronimo.gshell.console.IO;
+import org.apache.geronimo.gshell.command.CommandNotFoundException;
+import org.apache.geronimo.gshell.command.CommandException;
+
+/**
+ * Mock {@link Shell}.
+ *
+ * @version $Id$
+ */
+public class MockShell
+ extends Shell
+{
+ public String[] args;
+
+ public String commandName;
+
+ public MockShell() throws CommandException {
+ super(new IO());
+ }
+
+ public int execute(String... args) throws Exception {
+ this.args = args;
+
+ return 0;
+ }
+
+ public int execute(String commandName, String[] args) throws Exception {
+ this.commandName = commandName;
+ this.args = args;
+
+ return 0;
+ }
+}
Propchange: geronimo/sandbox/gshell/trunk/gshell-core/src/test/java/org/apache/geronimo/gshell/MockShell.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/sandbox/gshell/trunk/gshell-core/src/test/java/org/apache/geronimo/gshell/MockShell.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: geronimo/sandbox/gshell/trunk/gshell-core/src/test/java/org/apache/geronimo/gshell/MockShell.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: geronimo/sandbox/gshell/trunk/gshell-core/src/test/java/org/apache/geronimo/gshell/commandline/CommandLineBuilderTest.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-core/src/test/java/org/apache/geronimo/gshell/commandline/CommandLineBuilderTest.java?rev=411664&r1=411663&r2=411664&view=diff
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-core/src/test/java/org/apache/geronimo/gshell/commandline/CommandLineBuilderTest.java (original)
+++ geronimo/sandbox/gshell/trunk/gshell-core/src/test/java/org/apache/geronimo/gshell/commandline/CommandLineBuilderTest.java Sun Jun 4 21:57:41 2006
@@ -17,7 +17,7 @@
package org.apache.geronimo.gshell.commandline;
import junit.framework.TestCase;
-import org.apache.geronimo.gshell.command.MockCommandExecutor;
+import org.apache.geronimo.gshell.MockShell;
/**
* Unit tests for the {@link CommandLineBuilder} class.
@@ -38,16 +38,16 @@
}
public void testSimple() throws Exception {
- MockCommandExecutor executor = new MockCommandExecutor();
- CommandLineBuilder builder = new CommandLineBuilder(executor);
+ MockShell shell = new MockShell();
+ CommandLineBuilder builder = new CommandLineBuilder(shell);
CommandLine cl = builder.create("echo hi");
assertNotNull(cl);
cl.execute();
- assertEquals("echo", executor.commandName);
- assertEquals(1, executor.args.length);
- assertEquals("hi", executor.args[0]);
+ assertEquals("echo", shell.commandName);
+ assertEquals(1, shell.args.length);
+ assertEquals("hi", shell.args[0]);
}
}
Modified: geronimo/sandbox/gshell/trunk/gshell-core/src/test/java/org/apache/geronimo/gshell/commandline/ExecutingVisitorTest.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-core/src/test/java/org/apache/geronimo/gshell/commandline/ExecutingVisitorTest.java?rev=411664&r1=411663&r2=411664&view=diff
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-core/src/test/java/org/apache/geronimo/gshell/commandline/ExecutingVisitorTest.java (original)
+++ geronimo/sandbox/gshell/trunk/gshell-core/src/test/java/org/apache/geronimo/gshell/commandline/ExecutingVisitorTest.java Sun Jun 4 21:57:41 2006
@@ -18,7 +18,7 @@
import junit.framework.TestCase;
-import org.apache.geronimo.gshell.command.MockCommandExecutor;
+import org.apache.geronimo.gshell.MockShell;
/**
* Unit tests for the {@link ExecutingVisitor} usage.
@@ -38,6 +38,6 @@
}
// Happy day
- new ExecutingVisitor(new MockCommandExecutor());
+ new ExecutingVisitor(new MockShell());
}
}
Added: geronimo/sandbox/gshell/trunk/gshell-core/src/test/java/org/apache/geronimo/gshell/commandline/VariableExpressionParserTest.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-core/src/test/java/org/apache/geronimo/gshell/commandline/VariableExpressionParserTest.java?rev=411664&view=auto
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-core/src/test/java/org/apache/geronimo/gshell/commandline/VariableExpressionParserTest.java (added)
+++ geronimo/sandbox/gshell/trunk/gshell-core/src/test/java/org/apache/geronimo/gshell/commandline/VariableExpressionParserTest.java Sun Jun 4 21:57:41 2006
@@ -0,0 +1,81 @@
+/*
+ * Copyright 2006 The Apache Software Foundation
+ *
+ * Licensed 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.commandline;
+
+import junit.framework.TestCase;
+
+/**
+ * Unit test for the {@link VariableExpressionParser} class.
+ *
+ * @version $Id$
+ */
+public class VariableExpressionParserTest
+ extends TestCase
+{
+ protected VariableExpressionParser parser;
+
+ protected void setUp() throws Exception {
+ parser = new VariableExpressionParser();
+ }
+
+ protected void tearDown() throws Exception {
+ parser = null;
+ }
+
+ public void testDefault() throws Exception {
+ String value = "${java.home}";
+ String result = parser.parse(value);
+ assertEquals(result, System.getProperty("java.home"));
+ }
+
+ public void testSubst() throws Exception {
+ String value = "BEFORE${java.home}AFTER";
+ String result = parser.parse(value);
+ assertEquals(result, "BEFORE" + System.getProperty("java.home") + "AFTER");
+ }
+
+ public void testVariable() throws Exception {
+ String myvar = "this is my variable";
+ parser.getVariables().put("my.var", myvar);
+
+ String value = "${my.var}";
+ String result = parser.parse(value);
+ assertEquals(result, myvar);
+ }
+
+ public void testFlatVariable() throws Exception {
+ String myvar = "this is my variable";
+ parser.getVariables().put("my.var", myvar);
+ parser.getVariables().put("my", "not used");
+
+ String value = "${my.var}";
+ String result = parser.parse(value);
+ assertEquals(result, myvar);
+ }
+
+ public void testSyntax() throws Exception {
+ String value = "${java.home";
+
+ try {
+ String result = parser.parse(value);
+ fail("Should have thrown an exception");
+ }
+ catch (VariableExpressionParser.SyntaxException expected) {
+ // ignore
+ }
+ }
+}
\ No newline at end of file
Propchange: geronimo/sandbox/gshell/trunk/gshell-core/src/test/java/org/apache/geronimo/gshell/commandline/VariableExpressionParserTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/sandbox/gshell/trunk/gshell-core/src/test/java/org/apache/geronimo/gshell/commandline/VariableExpressionParserTest.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: geronimo/sandbox/gshell/trunk/gshell-core/src/test/java/org/apache/geronimo/gshell/commandline/VariableExpressionParserTest.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: geronimo/sandbox/gshell/trunk/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/pom.xml?rev=411664&r1=411663&r2=411664&view=diff
==============================================================================
--- geronimo/sandbox/gshell/trunk/pom.xml (original)
+++ geronimo/sandbox/gshell/trunk/pom.xml Sun Jun 4 21:57:41 2006
@@ -154,6 +154,15 @@
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.1</version>
+ <type>jar</type>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>commons-jexl</groupId>
+ <artifactId>commons-jexl</artifactId>
+ <version>1.0</version>
+ <type>jar</type>
<scope>compile</scope>
</dependency>
@@ -161,6 +170,7 @@
<groupId>classworlds</groupId>
<artifactId>classworlds</artifactId>
<version>1.1</version>
+ <type>jar</type>
<scope>compile</scope>
</dependency>