You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2012/01/18 13:58:39 UTC
svn commit: r1232870 - in /openejb/trunk/openejb/server/openejb-ssh/src:
main/java/org/apache/openejb/server/ssh/
test/java/org/apache/openejb/server/ssh/
Author: rmannibucau
Date: Wed Jan 18 12:58:39 2012
New Revision: 1232870
URL: http://svn.apache.org/viewvc?rev=1232870&view=rev
Log:
some enhancing for ssh module
Added:
openejb/trunk/openejb/server/openejb-ssh/src/main/java/org/apache/openejb/server/ssh/OpenEJBCommands.java
- copied, changed from r1232827, openejb/trunk/openejb/server/openejb-ssh/src/main/java/org/apache/openejb/server/ssh/GroovyCommand.java
openejb/trunk/openejb/server/openejb-ssh/src/main/java/org/apache/openejb/server/ssh/OpenEJBShellFactory.java
- copied, changed from r1232827, openejb/trunk/openejb/server/openejb-ssh/src/main/java/org/apache/openejb/server/ssh/GroovyShellFactory.java
Removed:
openejb/trunk/openejb/server/openejb-ssh/src/main/java/org/apache/openejb/server/ssh/GroovyCommand.java
openejb/trunk/openejb/server/openejb-ssh/src/main/java/org/apache/openejb/server/ssh/GroovyShellFactory.java
Modified:
openejb/trunk/openejb/server/openejb-ssh/src/main/java/org/apache/openejb/server/ssh/SSHServer.java
openejb/trunk/openejb/server/openejb-ssh/src/test/java/org/apache/openejb/server/ssh/SSHServerTest.java
Copied: openejb/trunk/openejb/server/openejb-ssh/src/main/java/org/apache/openejb/server/ssh/OpenEJBCommands.java (from r1232827, openejb/trunk/openejb/server/openejb-ssh/src/main/java/org/apache/openejb/server/ssh/GroovyCommand.java)
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-ssh/src/main/java/org/apache/openejb/server/ssh/OpenEJBCommands.java?p2=openejb/trunk/openejb/server/openejb-ssh/src/main/java/org/apache/openejb/server/ssh/OpenEJBCommands.java&p1=openejb/trunk/openejb/server/openejb-ssh/src/main/java/org/apache/openejb/server/ssh/GroovyCommand.java&r1=1232827&r2=1232870&rev=1232870&view=diff
==============================================================================
--- openejb/trunk/openejb/server/openejb-ssh/src/main/java/org/apache/openejb/server/ssh/GroovyCommand.java (original)
+++ openejb/trunk/openejb/server/openejb-ssh/src/main/java/org/apache/openejb/server/ssh/OpenEJBCommands.java Wed Jan 18 12:58:39 2012
@@ -8,24 +8,32 @@ import org.apache.sshd.server.Command;
import org.apache.sshd.server.Environment;
import org.apache.sshd.server.ExitCallback;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.util.Collection;
-public class GroovyCommand implements Command, Runnable {
+public class OpenEJBCommands implements Command, Runnable {
public static final String EXIT_COMMAND = "exit";
- public static final String LINE_SEP = System.getProperty("line.separator");
+ private static final String GROOVY_PREFIX = "G ";
+ private static final String WELCOME = "Welcome on your $bind:$port $name server";
+ public static final String LINE_SEP = "\r\n"; // don't use line.separator (sshd use this one)
+ public static final String OS_LINE_SEP = System.getProperty("line.separator");
public static final String PROMPT = "openejb> ";
private OpenEJBGroovyShell shell;
private OutputStreamWriter serr;
private OutputStreamWriter sout;
- private InputStream sin;
private ExitCallback cbk;
+ private InputStream sin;
+ private String bind;
+ private int port;
+
+ public OpenEJBCommands(String bind, int port) {
+ this.bind = bind;
+ this.port = port;
+ }
@Override
public void setInputStream(InputStream in) {
@@ -61,21 +69,40 @@ public class GroovyCommand implements Co
@Override
public void run() {
try {
- final ConsoleReader reader = new ConsoleReader(sin, sout);
- reader.setBellEnabled(false);
+ System.setProperty("line.separator", LINE_SEP);
+ final ConsoleReader reader;
+ synchronized (OpenEJBCommands.class) {
+ reader = new ConsoleReader(sin, sout);
+ }
+ System.setProperty("line.separator", OS_LINE_SEP);
// TODO : add completers with method names...?
- // TODO: why is it adding spaces?
+ String name = "OpenEJB";
+ try {
+ getClass().getClassLoader().loadClass("org.apache.tomee.loader.TomcatHook");
+ name = "TomEE";
+ } catch (ClassNotFoundException cnfe) {
+ // ignored, we are using a simple OpenEJB server
+ }
+
String line;
+ write(sout, WELCOME // simple replace for now, if it is mandatory we could bring velocity to do it
+ .replace("$bind", bind)
+ .replace("$port", Integer.toString(port))
+ .replace("$name", name));
while ((line = reader.readLine(PROMPT)) != null) {
if (EXIT_COMMAND.equals(line)) {
break;
}
- try {
- write(sout, result(line));
- } catch (SshRuntimeException sshEx) {
- write((Exception) sshEx.getCause());
+ if (line.startsWith(GROOVY_PREFIX)) {
+ try {
+ write(sout, result(line));
+ } catch (SshRuntimeException sshEx) {
+ write((Exception) sshEx.getCause());
+ }
+ } else {
+ write(sout, "sorry i don't understand '" + line + "'");
}
}
} catch (IOException e) {
@@ -103,7 +130,7 @@ public class GroovyCommand implements Co
} else {
final StringBuilder error = new StringBuilder();
for (StackTraceElement elt : e.getStackTrace()) {
- error.append(elt.toString() + LINE_SEP);
+ error.append(elt.toString()).append(LINE_SEP);
}
write(serr, error.toString());
}
@@ -123,13 +150,11 @@ public class GroovyCommand implements Co
if (out instanceof Collection) {
final StringBuilder builder = new StringBuilder();
for (Object o : (Collection) out) {
- builder.append(string(o) + LINE_SEP);
+ builder.append(string(o)).append(LINE_SEP);
}
+ return builder.toString();
}
- if (out != null) {
- return string(out);
- }
- return null;
+ return string(out);
}
private static String string(Object out) {
Copied: openejb/trunk/openejb/server/openejb-ssh/src/main/java/org/apache/openejb/server/ssh/OpenEJBShellFactory.java (from r1232827, openejb/trunk/openejb/server/openejb-ssh/src/main/java/org/apache/openejb/server/ssh/GroovyShellFactory.java)
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-ssh/src/main/java/org/apache/openejb/server/ssh/OpenEJBShellFactory.java?p2=openejb/trunk/openejb/server/openejb-ssh/src/main/java/org/apache/openejb/server/ssh/OpenEJBShellFactory.java&p1=openejb/trunk/openejb/server/openejb-ssh/src/main/java/org/apache/openejb/server/ssh/GroovyShellFactory.java&r1=1232827&r2=1232870&rev=1232870&view=diff
==============================================================================
--- openejb/trunk/openejb/server/openejb-ssh/src/main/java/org/apache/openejb/server/ssh/GroovyShellFactory.java (original)
+++ openejb/trunk/openejb/server/openejb-ssh/src/main/java/org/apache/openejb/server/ssh/OpenEJBShellFactory.java Wed Jan 18 12:58:39 2012
@@ -3,9 +3,17 @@ package org.apache.openejb.server.ssh;
import org.apache.sshd.common.Factory;
import org.apache.sshd.server.Command;
-public class GroovyShellFactory implements Factory<Command> {
+public class OpenEJBShellFactory implements Factory<Command> {
+ private String bind;
+ private int port;
+
+ public OpenEJBShellFactory(String bind, int port) {
+ this.bind = bind;
+ this.port = port;
+ }
+
@Override
public Command create() {
- return new GroovyCommand();
+ return new OpenEJBCommands(bind, port);
}
}
Modified: openejb/trunk/openejb/server/openejb-ssh/src/main/java/org/apache/openejb/server/ssh/SSHServer.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-ssh/src/main/java/org/apache/openejb/server/ssh/SSHServer.java?rev=1232870&r1=1232869&r2=1232870&view=diff
==============================================================================
--- openejb/trunk/openejb/server/openejb-ssh/src/main/java/org/apache/openejb/server/ssh/SSHServer.java (original)
+++ openejb/trunk/openejb/server/openejb-ssh/src/main/java/org/apache/openejb/server/ssh/SSHServer.java Wed Jan 18 12:58:39 2012
@@ -22,19 +22,15 @@ import org.apache.openejb.server.ServerS
import org.apache.openejb.server.ServiceException;
import org.apache.sshd.SshServer;
import org.apache.sshd.common.util.SecurityUtils;
-import org.apache.sshd.server.PublickeyAuthenticator;
-import org.apache.sshd.server.command.ScpCommandFactory;
import org.apache.sshd.server.jaas.JaasPasswordAuthenticator;
import org.apache.sshd.server.keyprovider.PEMGeneratorHostKeyProvider;
import org.apache.sshd.server.keyprovider.SimpleGeneratorHostKeyProvider;
-import org.apache.sshd.server.session.ServerSession;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
-import java.security.PublicKey;
import java.util.Properties;
public class SSHServer implements ServerService, SelfManaging {
@@ -62,7 +58,7 @@ public class SSHServer implements Server
sshServer.setKeyPairProvider(new SimpleGeneratorHostKeyProvider(new File(basePath, KEY_NAME + ".ser").getPath()));
}
- sshServer.setShellFactory(new GroovyShellFactory());
+ sshServer.setShellFactory(new OpenEJBShellFactory(bind, port));
try {
sshServer.start();
@@ -82,12 +78,12 @@ public class SSHServer implements Server
@Override
public void service(InputStream in, OutputStream out) throws ServiceException, IOException {
-
+ // no-op
}
@Override
public void service(Socket socket) throws ServiceException, IOException {
-
+ // no-op
}
@Override
Modified: openejb/trunk/openejb/server/openejb-ssh/src/test/java/org/apache/openejb/server/ssh/SSHServerTest.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-ssh/src/test/java/org/apache/openejb/server/ssh/SSHServerTest.java?rev=1232870&r1=1232869&r2=1232870&view=diff
==============================================================================
--- openejb/trunk/openejb/server/openejb-ssh/src/test/java/org/apache/openejb/server/ssh/SSHServerTest.java (original)
+++ openejb/trunk/openejb/server/openejb-ssh/src/test/java/org/apache/openejb/server/ssh/SSHServerTest.java Wed Jan 18 12:58:39 2012
@@ -46,6 +46,11 @@ public class SSHServerTest {
@Test
public void call() {
+ while (Thread.currentThread().isAlive()) try {
+ Thread.sleep(100);
+ } catch (InterruptedException e) {
+ e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
+ }
System.out.println("ok");
}
}