Author: gnodet
Date: Mon Jun 16 02:58:46 2008
New Revision: 668098

URL: http://svn.apache.org/viewvc?rev=668098&view=rev
Log:
Move streams to the session

Modified:
    
servicemix/sandbox/gshell-web/gshell-gwt/src/org/apache/servicemix/gshellweb/server/ShellServiceImpl.java

Modified: 
servicemix/sandbox/gshell-web/gshell-gwt/src/org/apache/servicemix/gshellweb/server/ShellServiceImpl.java
URL: 
http://svn.apache.org/viewvc/servicemix/sandbox/gshell-web/gshell-gwt/src/org/apache/servicemix/gshellweb/server/ShellServiceImpl.java?rev=668098&r1=668097&r2=668098&view=diff
==============================================================================
--- 
servicemix/sandbox/gshell-web/gshell-gwt/src/org/apache/servicemix/gshellweb/server/ShellServiceImpl.java
 (original)
+++ 
servicemix/sandbox/gshell-web/gshell-gwt/src/org/apache/servicemix/gshellweb/server/ShellServiceImpl.java
 Mon Jun 16 02:58:46 2008
@@ -40,13 +40,6 @@
     private Map<String, Session> sessions = new ConcurrentHashMap<String, 
Session>();
     private Timer timer = new Timer(true);
     private long timeout = 5 * 60 * 1000;
-    private InputStream out;
-    private InputStream err;
-    private BufferedReader outReader;
-    private BufferedReader errReader;
-
-    private PipedOutputStream outPipe;
-    private PipedOutputStream errPipe;
 
     public void init() throws ServletException {
         super.init();
@@ -56,26 +49,17 @@
             }
         }, 1000, 1000);
 
-        try {
-            // TODO: bridge the out / err to gshell
-            outPipe = new PipedOutputStream();
-            errPipe = new PipedOutputStream();
-
-            out = new PipedInputStream(outPipe);
-            outReader = new BufferedReader(new InputStreamReader(out));
-            err = new PipedInputStream(errPipe);
-            errReader = new BufferedReader(new InputStreamReader(err));
-        } catch (IOException e) {
-            throw new ServletException(e);
-        }
     }
 
     public String login(String username, String password) {
-        Session session = new Session();
-        String sessionId = session.toString();
-        sessions.put(sessionId, session);
-        useSession(sessionId);
-        return sessionId;
+        try {
+            Session session = new Session();
+            String sessionId = session.toString();
+            sessions.put(sessionId, session);
+            return sessionId;
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
     }
        
        public void logout(String sessionId) {
@@ -86,7 +70,7 @@
         System.out.println("setNextLineIn [sessionId=" + sessionId + ", in=" + 
in + "]");
         Session session = useSession(sessionId);
         try {
-            outPipe.write(("Command: " + in + "\n").getBytes());
+            session.outPipe.write(("Command: " + in + "\n").getBytes());
         } catch (IOException e) {
             handleException(sessionId, e);
         }
@@ -96,7 +80,7 @@
         System.out.println("getNextLineOut [sessionId=" + sessionId + "]");
         Session session = useSession(sessionId);
         try {
-            return outReader.readLine();
+            return session.outReader.readLine();
         } catch (IOException e) {
             handleException(sessionId, e);
             return null;
@@ -107,7 +91,7 @@
         System.out.println("getNextLineErr [sessionId=" + sessionId + "]");
         Session session = useSession(sessionId);
         try {
-            return errReader.readLine();
+            return session.errReader.readLine();
         } catch (IOException e) {
             handleException(sessionId, e);
             return null;
@@ -139,6 +123,25 @@
 
     private static class Session {
         private long lastUsed;
+        private InputStream out;
+        private InputStream err;
+        private BufferedReader outReader;
+        private BufferedReader errReader;
+        private PipedOutputStream outPipe;
+        private PipedOutputStream errPipe;
+
+        public Session() throws IOException {
+            // TODO: bridge the out / err to gshell
+            outPipe = new PipedOutputStream();
+            errPipe = new PipedOutputStream();
+
+            out = new PipedInputStream(outPipe);
+            outReader = new BufferedReader(new InputStreamReader(out));
+            err = new PipedInputStream(errPipe);
+            errReader = new BufferedReader(new InputStreamReader(err));
+
+            updateLastUsed();
+        }
         public long getLastUsed() {
             return lastUsed;
         }


Reply via email to