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/02 06:09:17 UTC

svn commit: r411026 - in /geronimo/sandbox/gshell/trunk: gshell-assemblies/gshell-assembly/ gshell-core/src/main/java/org/apache/geronimo/gshell/console/ gshell-server/ gshell-server/gshell-server-core/ gshell-server/gshell-server-core/src/main/java/or...

Author: jdillon
Date: Thu Jun  1 21:09:16 2006
New Revision: 411026

URL: http://svn.apache.org/viewvc?rev=411026&view=rev
Log:
Split off Telnet bits from the server core

Added:
    geronimo/sandbox/gshell/trunk/gshell-server/gshell-server-telnet/src/main/java/org/apache/geronimo/gshell/server/telnet/ConsoleFactoryImpl.java   (with props)
    geronimo/sandbox/gshell/trunk/gshell-server/gshell-server-telnet/src/main/resources/META-INF/org.apache.geronimo.gshell.console.ConsoleFactory/
      - copied from r411022, geronimo/sandbox/gshell/trunk/gshell-server/gshell-server-telnet/src/main/resources/META-INF/org.apache.geronimo.gshell.command/
    geronimo/sandbox/gshell/trunk/gshell-server/gshell-server-telnet/src/main/resources/META-INF/org.apache.geronimo.gshell.console.ConsoleFactory/telnet
Removed:
    geronimo/sandbox/gshell/trunk/gshell-server/gshell-server-core/src/main/java/org/apache/geronimo/gshell/server/telnet/
    geronimo/sandbox/gshell/trunk/gshell-server/gshell-server-telnet/src/main/java/org/apache/geronimo/gshell/server/GShellServer.java
    geronimo/sandbox/gshell/trunk/gshell-server/gshell-server-telnet/src/main/java/org/apache/geronimo/gshell/server/ServerCommand.java
    geronimo/sandbox/gshell/trunk/gshell-server/gshell-server-telnet/src/main/java/org/apache/geronimo/gshell/server/SocketServerDaemon.java
    geronimo/sandbox/gshell/trunk/gshell-server/gshell-server-telnet/src/main/resources/META-INF/org.apache.geronimo.gshell.command/
    geronimo/sandbox/gshell/trunk/gshell-server/gshell-server-telnet/src/main/resources/META-INF/org.apache.geronimo.gshell.console.ConsoleFactory/server.properties
Modified:
    geronimo/sandbox/gshell/trunk/gshell-assemblies/gshell-assembly/pom.xml
    geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/console/Console.java
    geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/console/ConsoleFactory.java
    geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/console/JLineConsole.java
    geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/console/SimpleConsole.java
    geronimo/sandbox/gshell/trunk/gshell-server/gshell-server-core/pom.xml
    geronimo/sandbox/gshell/trunk/gshell-server/gshell-server-core/src/main/java/org/apache/geronimo/gshell/server/GShellServer.java
    geronimo/sandbox/gshell/trunk/gshell-server/gshell-server-telnet/pom.xml
    geronimo/sandbox/gshell/trunk/gshell-server/pom.xml

Modified: geronimo/sandbox/gshell/trunk/gshell-assemblies/gshell-assembly/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-assemblies/gshell-assembly/pom.xml?rev=411026&r1=411025&r2=411026&view=diff
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-assemblies/gshell-assembly/pom.xml (original)
+++ geronimo/sandbox/gshell/trunk/gshell-assemblies/gshell-assembly/pom.xml Thu Jun  1 21:09:16 2006
@@ -35,10 +35,16 @@
 
         <dependency>
             <groupId>${pom.groupId}</groupId>
-            <artifactId>gshell-server</artifactId>
+            <artifactId>gshell-server-core</artifactId>
             <version>${pom.version}</version>
         </dependency>
-        
+
+        <dependency>
+            <groupId>${pom.groupId}</groupId>
+            <artifactId>gshell-server-telnet</artifactId>
+            <version>${pom.version}</version>
+        </dependency>
+
         <dependency>
             <groupId>${pom.groupId}</groupId>
             <artifactId>standard-commands</artifactId>

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=411026&r1=411025&r2=411026&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 Thu Jun  1 21:09:16 2006
@@ -28,4 +28,6 @@
 public interface Console
 {
     String readLine(final String prompt) throws IOException;
+
+    IO getIO();
 }

Modified: geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/console/ConsoleFactory.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/console/ConsoleFactory.java?rev=411026&r1=411025&r2=411026&view=diff
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/console/ConsoleFactory.java (original)
+++ geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/console/ConsoleFactory.java Thu Jun  1 21:09:16 2006
@@ -16,6 +16,9 @@
 
 package org.apache.geronimo.gshell.console;
 
+import java.io.InputStream;
+import java.io.OutputStream;
+
 /**
  * Interface to abstract creation of {@link Console} instances.
  *
@@ -28,9 +31,5 @@
     //       (like the script command) with out needing to know which is the right flavor
     //
 
-    //
-    // TODO: Re-eval if this needs to be an interface... might not
-    //
-
-    Console create(IO io) throws Exception;
+    Console create(InputStream input, OutputStream output) throws Exception;
 }

Modified: geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/console/JLineConsole.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/console/JLineConsole.java?rev=411026&r1=411025&r2=411026&view=diff
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/console/JLineConsole.java (original)
+++ geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/console/JLineConsole.java Thu Jun  1 21:09:16 2006
@@ -52,7 +52,7 @@
         if (io == null) {
             throw new IllegalArgumentException("IO is null");
         }
-        
+
         this.io = io;
         this.reader = new ConsoleReader(io.inputStream, io.out);
     }
@@ -61,6 +61,10 @@
         assert prompt != null;
 
         return reader.readLine(prompt);
+    }
+
+    public IO getIO() {
+        return io;
     }
 
     public ConsoleReader getReader() {

Modified: geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/console/SimpleConsole.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/console/SimpleConsole.java?rev=411026&r1=411025&r2=411026&view=diff
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/console/SimpleConsole.java (original)
+++ geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/console/SimpleConsole.java Thu Jun  1 21:09:16 2006
@@ -54,6 +54,10 @@
         return reader.readLine();
     }
 
+    public IO getIO() {
+        return io;
+    }
+
     public BufferedReader getReader() {
         return reader;
     }

Modified: geronimo/sandbox/gshell/trunk/gshell-server/gshell-server-core/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-server/gshell-server-core/pom.xml?rev=411026&r1=411025&r2=411026&view=diff
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-server/gshell-server-core/pom.xml (original)
+++ geronimo/sandbox/gshell/trunk/gshell-server/gshell-server-core/pom.xml Thu Jun  1 21:09:16 2006
@@ -26,25 +26,10 @@
             <artifactId>gshell-core</artifactId>
             <version>${pom.version}</version>
         </dependency>
-
+        
         <dependency>
             <groupId>commons-cli</groupId>
             <artifactId>commons-cli</artifactId>
-        </dependency>
-
-        <!--
-
-        NOTE: May want to enhance xbean-telnet to behave like nvt4j and be more extendable than nvt4j
-
-        <dependency>
-            <groupId>org.apache.xbean</groupId>
-            <artifactId>xbean-telnet</artifactId>
-        </dependency>
-        -->
-
-        <dependency>
-            <groupId>nvt4j</groupId>
-            <artifactId>nvt4j</artifactId>
         </dependency>
     </dependencies>
     

Modified: geronimo/sandbox/gshell/trunk/gshell-server/gshell-server-core/src/main/java/org/apache/geronimo/gshell/server/GShellServer.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-server/gshell-server-core/src/main/java/org/apache/geronimo/gshell/server/GShellServer.java?rev=411026&r1=411025&r2=411026&view=diff
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-server/gshell-server-core/src/main/java/org/apache/geronimo/gshell/server/GShellServer.java (original)
+++ geronimo/sandbox/gshell/trunk/gshell-server/gshell-server-core/src/main/java/org/apache/geronimo/gshell/server/GShellServer.java Thu Jun  1 21:09:16 2006
@@ -20,16 +20,18 @@
 import org.apache.commons.logging.LogFactory;
 import org.apache.geronimo.gshell.GShell;
 import org.apache.geronimo.gshell.InteractiveGShell;
-import org.apache.geronimo.gshell.server.telnet.TelnetTerminal;
 import org.apache.geronimo.gshell.command.CommandException;
 import org.apache.geronimo.gshell.console.IO;
 import org.apache.geronimo.gshell.console.Console;
 import org.apache.geronimo.gshell.console.JLineConsole;
+import org.apache.geronimo.gshell.console.ConsoleFactory;
+import org.apache.xbean.finder.ResourceFinder;
 
 import java.net.Socket;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
+import java.util.Map;
 
 import jline.ConsoleReader;
 
@@ -46,6 +48,26 @@
 {
     private static final Log log = LogFactory.getLog(GShellServer.class);
 
+    private final ConsoleFactory consoleFactory;
+
+    public GShellServer() throws Exception {
+        ResourceFinder resourceFinder = new ResourceFinder("META-INF");
+        Map<String, Class> resourcesMap = resourceFinder.mapAvailableImplementations(java.net.URLStreamHandler.class);
+        String typename = "telnet";
+
+        Class type = resourcesMap.get(typename);
+        if (type == null) {
+            throw new CommandException("Could not load ConsoleFactory of type: " + typename);
+        }
+
+        try {
+            this.consoleFactory = (ConsoleFactory)type.newInstance();
+        }
+        catch (Exception e) {
+            throw new CommandException("Failed to create ConsoleFactory of type: " + typename, e);
+        }
+    }
+
     public void service(final Socket socket) throws CommandException, IOException {
         if (socket == null) {
             throw new IllegalArgumentException("Socket is null");
@@ -64,53 +86,29 @@
         }
     }
 
-    public void service(final InputStream in, final OutputStream out) throws CommandException, IOException {
-        if (in == null) {
+    public void service(final InputStream input, final OutputStream output) throws CommandException, IOException {
+        if (input == null) {
             throw new IllegalArgumentException("Input is null");
         }
-        if (out == null) {
+        if (output == null) {
             throw new IllegalArgumentException("Output is null");
         }
 
-        IO io = null;
-
         //
         // TODO: Need to figure out how to get the logging stream for this GShell to use
         //       the given IO streams
         //
 
+        IO io = null;
         try {
-            //
-            // TODO: Abstract Telnet specifics; support other protocols (ie. SSH)
-            //
-
-            //
-            // TODO: Need access to the Terminal... NVT4J
-            //
-
-            TelnetTerminal term = new TelnetTerminal(in, out);
-
-            if (log.isDebugEnabled()) {
-                log.debug("Using terminal: " + term);
-                log.debug("  supported: " + term.isSupported());
-                log.debug("  height: " + term.getTerminalHeight());
-                log.debug("  width: " + term.getTerminalWidth());
-                log.debug("  echo: " + term.getEcho());
-                log.debug("  ANSI: " + term.isANSISupported());
-            }
-
-            io = term.getIO();
-
-            //
-            // HACK: This is specific to JLine... should abstract this
-            //
-
-            ConsoleReader reader = new ConsoleReader(io.inputStream, io.out, /* bindings */ null, term);
-            Console console = new JLineConsole(io, reader);
-
+            Console console = consoleFactory.create(input, output);
+            io = console.getIO();
             GShell shell = new GShell(io);
             InteractiveGShell interp = new InteractiveGShell(console, shell);
             interp.run();
+        }
+        catch (Exception e) {
+            throw new CommandException(e);
         }
         finally {
             if (io != null) {

Modified: geronimo/sandbox/gshell/trunk/gshell-server/gshell-server-telnet/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-server/gshell-server-telnet/pom.xml?rev=411026&r1=411025&r2=411026&view=diff
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-server/gshell-server-telnet/pom.xml (original)
+++ geronimo/sandbox/gshell/trunk/gshell-server/gshell-server-telnet/pom.xml Thu Jun  1 21:09:16 2006
@@ -16,14 +16,20 @@
         <relativePath>../pom.xml</relativePath>
     </parent>
     
-    <artifactId>gshell-server-core</artifactId>
-    <name>GShell Server :: Core</name>
+    <artifactId>gshell-server-telnet</artifactId>
+    <name>GShell Server :: Telnet</name>
     <packaging>jar</packaging>
 
     <dependencies>
         <dependency>
             <groupId>${pom.groupId}</groupId>
             <artifactId>gshell-core</artifactId>
+            <version>${pom.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>${pom.groupId}</groupId>
+            <artifactId>gshell-server-core</artifactId>
             <version>${pom.version}</version>
         </dependency>
 

Added: geronimo/sandbox/gshell/trunk/gshell-server/gshell-server-telnet/src/main/java/org/apache/geronimo/gshell/server/telnet/ConsoleFactoryImpl.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-server/gshell-server-telnet/src/main/java/org/apache/geronimo/gshell/server/telnet/ConsoleFactoryImpl.java?rev=411026&view=auto
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-server/gshell-server-telnet/src/main/java/org/apache/geronimo/gshell/server/telnet/ConsoleFactoryImpl.java (added)
+++ geronimo/sandbox/gshell/trunk/gshell-server/gshell-server-telnet/src/main/java/org/apache/geronimo/gshell/server/telnet/ConsoleFactoryImpl.java Thu Jun  1 21:09:16 2006
@@ -0,0 +1,65 @@
+/*
+ * 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.server.telnet;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.geronimo.gshell.console.ConsoleFactory;
+import org.apache.geronimo.gshell.console.Console;
+import org.apache.geronimo.gshell.console.IO;
+import org.apache.geronimo.gshell.console.JLineConsole;
+import jline.ConsoleReader;
+
+import java.io.InputStream;
+import java.io.OutputStream;
+
+/**
+ * ???
+ *
+ * @version $Id$
+ */
+public class ConsoleFactoryImpl
+    implements ConsoleFactory
+{
+    private static final Log log = LogFactory.getLog(ConsoleFactoryImpl.class);
+
+    public Console create(final InputStream in, final OutputStream out) throws Exception {
+        if (in == null) {
+            throw new IllegalArgumentException("Input is null");
+        }
+        if (out == null) {
+            throw new IllegalArgumentException("Output is null");
+        }
+
+        TelnetTerminal term = new TelnetTerminal(in, out);
+
+        if (log.isDebugEnabled()) {
+            log.debug("Using terminal: " + term);
+            log.debug("  supported: " + term.isSupported());
+            log.debug("  height: " + term.getTerminalHeight());
+            log.debug("  width: " + term.getTerminalWidth());
+            log.debug("  echo: " + term.getEcho());
+            log.debug("  ANSI: " + term.isANSISupported());
+        }
+
+        IO io = term.getIO();
+        ConsoleReader reader = new ConsoleReader(io.inputStream, io.out, /* bindings */ null, term);
+        Console console = new JLineConsole(io, reader);
+
+        return console;
+    }
+}
\ No newline at end of file

Propchange: geronimo/sandbox/gshell/trunk/gshell-server/gshell-server-telnet/src/main/java/org/apache/geronimo/gshell/server/telnet/ConsoleFactoryImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/sandbox/gshell/trunk/gshell-server/gshell-server-telnet/src/main/java/org/apache/geronimo/gshell/server/telnet/ConsoleFactoryImpl.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: geronimo/sandbox/gshell/trunk/gshell-server/gshell-server-telnet/src/main/java/org/apache/geronimo/gshell/server/telnet/ConsoleFactoryImpl.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/sandbox/gshell/trunk/gshell-server/gshell-server-telnet/src/main/resources/META-INF/org.apache.geronimo.gshell.console.ConsoleFactory/telnet
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-server/gshell-server-telnet/src/main/resources/META-INF/org.apache.geronimo.gshell.console.ConsoleFactory/telnet?rev=411026&view=auto
==============================================================================
    (empty)

Modified: geronimo/sandbox/gshell/trunk/gshell-server/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-server/pom.xml?rev=411026&r1=411025&r2=411026&view=diff
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-server/pom.xml (original)
+++ geronimo/sandbox/gshell/trunk/gshell-server/pom.xml Thu Jun  1 21:09:16 2006
@@ -22,6 +22,7 @@
     
     <modules>
         <module>gshell-server-core</module>
+        <module>gshell-server-telnet</module>
     </modules>
     
 </project>