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 2007/09/07 20:47:20 UTC

svn commit: r573669 - in /geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell: CommandLineBuilder.java ExecutingVisitor.java ShellImpl.java console/Console.java

Author: jdillon
Date: Fri Sep  7 11:47:20 2007
New Revision: 573669

URL: http://svn.apache.org/viewvc?rev=573669&view=rev
Log:
Don't use injection for some of this parsing muck, we can simply wire them up internally

Modified:
    geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/CommandLineBuilder.java
    geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/ExecutingVisitor.java
    geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/ShellImpl.java
    geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/console/Console.java

Modified: geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/CommandLineBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/CommandLineBuilder.java?rev=573669&r1=573668&r2=573669&view=diff
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/CommandLineBuilder.java (original)
+++ geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/CommandLineBuilder.java Fri Sep  7 11:47:20 2007
@@ -26,6 +26,7 @@
 import org.apache.geronimo.gshell.parser.CommandLineParser;
 import org.apache.geronimo.gshell.parser.ParseException;
 import org.codehaus.plexus.PlexusContainer;
+import org.codehaus.plexus.evaluator.ExpressionEvaluator;
 import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.component.annotations.Requirement;
 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
@@ -37,17 +38,25 @@
  *
  * @version $Rev$ $Date$
  */
-@Component(role=CommandLineBuilder.class)
 public class CommandLineBuilder
 {
     private Logger log = LoggerFactory.getLogger(getClass());
 
-    @Requirement
-    private PlexusContainer container;
-
-    @Requirement
     private CommandLineParser parser;
 
+    private Shell shell;
+
+    private ExpressionEvaluator evaluator;
+
+    public CommandLineBuilder(final Shell shell, final ExpressionEvaluator evaluator) {
+        assert shell != null;
+        assert evaluator != null;
+
+        this.shell = shell;
+        this.evaluator = evaluator;
+        this.parser = new CommandLineParser();
+    }
+
     private ASTCommandLine parse(final String input) throws ParseException {
         assert input != null;
 
@@ -70,18 +79,7 @@
             throw new IllegalArgumentException("Command line is empty");
         }
 
-        //
-        // HACK: Look up the vistor... just make it work for now
-        //
-        
-        final ExecutingVisitor visitor;
-        try {
-            visitor = (ExecutingVisitor) container.lookup(ExecutingVisitor.class);
-        }
-        catch (ComponentLookupException e) {
-            throw new RuntimeException(e);
-        }
-
+        final ExecutingVisitor visitor = new ExecutingVisitor(shell, evaluator);
         final ASTCommandLine root = parse(commandLine);
         
         return new CommandLine() {

Modified: geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/ExecutingVisitor.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/ExecutingVisitor.java?rev=573669&r1=573668&r2=573669&view=diff
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/ExecutingVisitor.java (original)
+++ geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/ExecutingVisitor.java Fri Sep  7 11:47:20 2007
@@ -44,18 +44,23 @@
  *
  * @version $Rev$ $Date$
  */
-@Component(role=ExecutingVisitor.class)
 public class ExecutingVisitor
     implements CommandLineParserVisitor
 {
-    private static final Logger log = LoggerFactory.getLogger(ExecutingVisitor.class);
+    private final Logger log = LoggerFactory.getLogger(getClass());
 
-    @Requirement
     private Shell shell;
 
-    @Requirement
     private ExpressionEvaluator evaluator;
 
+    public ExecutingVisitor(final Shell shell, final ExpressionEvaluator evaluator) {
+        assert shell != null;
+        assert evaluator != null;
+
+        this.shell = shell;
+        this.evaluator = evaluator;
+    }
+
     public Object visit(final SimpleNode node, final Object data) {
         assert node != null;
 
@@ -105,7 +110,7 @@
         assert data != null;
         assert data instanceof List;
 
-        List<Object> args = (List<Object>)data;
+        List args = (List)data;
         args.add(value);
 
         return value;

Modified: geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/ShellImpl.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/ShellImpl.java?rev=573669&r1=573668&r2=573669&view=diff
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/ShellImpl.java (original)
+++ geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/ShellImpl.java Fri Sep  7 11:47:20 2007
@@ -30,6 +30,9 @@
 import org.codehaus.plexus.PlexusContainer;
 import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.component.annotations.Requirement;
+import org.codehaus.plexus.evaluator.ExpressionEvaluator;
+import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
+import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -40,7 +43,7 @@
  */
 @Component(role=Shell.class)
 public class ShellImpl
-    implements Shell
+    implements Shell, Initializable
 {
     private Logger log = LoggerFactory.getLogger(getClass());
 
@@ -54,20 +57,15 @@
     private LayoutManager layoutManager;
 
     @Requirement
-    private CommandLineBuilder commandLineBuilder;
-
-    private final Variables variables = new VariablesImpl();
+    private ExpressionEvaluator evaluator;
 
-    public ShellImpl() {
-        // empty
-    }
+    private CommandLineBuilder commandLineBuilder;
 
-    //
-    // HACK: This is for testing, need to weed out and refactor all this shiz
-    //
+    private Variables variables = new VariablesImpl();
 
-    public ShellImpl(final IO io) {
-        this.io = io;
+    public void initialize() throws InitializationException {
+        assert evaluator != null;
+        commandLineBuilder = new CommandLineBuilder(this, evaluator);
     }
 
     public Variables getVariables() {
@@ -81,9 +79,7 @@
     public Object execute(final String commandLine) throws Exception {
         assert commandLine != null;
 
-        if (log.isInfoEnabled()) {
-            log.info("Executing (String): " + commandLine);
-        }
+        log.info("Executing (String): {}", commandLine);
 
         CommandLine cl = commandLineBuilder.create(commandLine);
         return cl.execute();

Modified: geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/console/Console.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/console/Console.java?rev=573669&r1=573668&r2=573669&view=diff
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/console/Console.java (original)
+++ geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/console/Console.java Fri Sep  7 11:47:20 2007
@@ -128,7 +128,8 @@
                 running = work();
             }
             catch (Throwable t) {
-                log.debug("Work failed: {}", t);
+                // Don't use {} here so we get the throwable detail in the log stream
+                log.debug("Work failed: " + t, t);
                 
                 if (errorHandler != null) {
                     ErrorHandler.Result result = errorHandler.handleError(t);