Author: norman
Date: Mon Nov 21 20:41:19 2011
New Revision: 1204691

URL: http://svn.apache.org/viewvc?rev=1204691&view=rev
Log:
Make FutureResponseImpl more easy to use

Modified:
    
james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/FutureResponseImpl.java
    
james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/FutureStreamResponseImpl.java
    
james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/StartTlsFutureResponse.java

Modified: 
james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/FutureResponseImpl.java
URL: 
http://svn.apache.org/viewvc/james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/FutureResponseImpl.java?rev=1204691&r1=1204690&r2=1204691&view=diff
==============================================================================
--- 
james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/FutureResponseImpl.java
 (original)
+++ 
james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/FutureResponseImpl.java
 Mon Nov 21 20:41:19 2011
@@ -27,16 +27,12 @@ import java.util.List;
  * 
  *
  */
-public class FutureResponseImpl extends AbstractResponse implements 
FutureResponse{
+public class FutureResponseImpl implements FutureResponse{
 
-    private final AbstractResponse response;
+    protected Response response;
     private boolean ready = false;
     private List<ResponseListener> listeners;
     private int waiters;
-    
-    public FutureResponseImpl(AbstractResponse response) {
-        this.response = response;
-    }
 
     protected final synchronized void checkReady() {
         while (!ready) {
@@ -74,34 +70,12 @@ public class FutureResponseImpl extends 
         return ready;
     }
     
-    public synchronized void markReady() {
-        if (!ready) {
-            ready = true;
-            
-            if (waiters > 0) {
-                notifyAll();
-            }
-            
-            for (ResponseListener listener: listeners) {
-                listener.onResponse(this);
-            }
-            listeners = null;
-        }
-    }
-
     @Override
     public List<CharSequence> getLines() {
         checkReady();
         return response.getLines();
     }
 
-    @Override
-    public synchronized void appendLine(CharSequence line) {
-        if (ready) {
-            throw new IllegalStateException("FutureResponse MUST NOT get 
modified after its ready");
-        }
-        response.appendLine(line);
-    }
 
     @Override
     public String getRetCode() {
@@ -109,13 +83,6 @@ public class FutureResponseImpl extends 
         return response.getRetCode();
     }
 
-    @Override
-    public synchronized void setRetCode(String retCode) {
-        if (ready) {
-            throw new IllegalStateException("FutureResponse MUST NOT get 
modified after its ready");
-        }
-        response.setRetCode(retCode);
-    }
 
     @Override
     public boolean isEndSession() {
@@ -124,16 +91,24 @@ public class FutureResponseImpl extends 
     }
 
     @Override
-    public synchronized void setEndSession(boolean endSession) {
-        if (ready) {
-            throw new IllegalStateException("FutureResponse MUST NOT get 
modified after its ready");
-        }
-        response.setEndSession(endSession);
-    }
-
-    @Override
     public synchronized String toString() {
+        checkReady();
         return response.toString();
     }
+    
+    public synchronized void setResponse(Response response) {
+        if (!ready) {
+            ready = true;
+            
+            if (waiters > 0) {
+                notifyAll();
+            }
+            
+            for (ResponseListener listener: listeners) {
+                listener.onResponse(this);
+            }
+            listeners = null;
+        }
+    }
 
 }

Modified: 
james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/FutureStreamResponseImpl.java
URL: 
http://svn.apache.org/viewvc/james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/FutureStreamResponseImpl.java?rev=1204691&r1=1204690&r2=1204691&view=diff
==============================================================================
--- 
james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/FutureStreamResponseImpl.java
 (original)
+++ 
james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/FutureStreamResponseImpl.java
 Mon Nov 21 20:41:19 2011
@@ -19,40 +19,23 @@
 
 package org.apache.james.protocols.api;
 
-import java.io.IOException;
 import java.io.InputStream;
 
 public class FutureStreamResponseImpl extends FutureResponseImpl implements 
StreamResponse{
 
-    private static final EmptyInputStream EMPTY = new EmptyInputStream();
-    
-    private InputStream in = EMPTY;
-    
-    public FutureStreamResponseImpl(AbstractResponse response) {
-        super(response);
-        if ((response instanceof StreamResponse) == false) {
-            throw new IllegalArgumentException("Given Response must be a 
StreamResponse");
+    @Override
+    public synchronized void setResponse(Response response) {
+        if (response instanceof StreamResponse) {
+            super.setResponse(response);
+        } else {
+            throw new IllegalArgumentException();
         }
     }
 
-    public synchronized void setStream(InputStream in) {
-        if (isReady()) {
-            throw new IllegalStateException("FutureResponse MUST NOT get 
modified after its ready");
-        }
-        this.in = in;
-    }
     @Override
     public InputStream getStream() {
         checkReady();
-        return in;
+        return ((StreamResponse) response).getStream();
         
     }
-
-    private final static class EmptyInputStream extends InputStream {
-       
-        @Override
-        public int read() throws IOException {
-            return -1;
-        }
-    }
 }

Modified: 
james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/StartTlsFutureResponse.java
URL: 
http://svn.apache.org/viewvc/james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/StartTlsFutureResponse.java?rev=1204691&r1=1204690&r2=1204691&view=diff
==============================================================================
--- 
james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/StartTlsFutureResponse.java
 (original)
+++ 
james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/StartTlsFutureResponse.java
 Mon Nov 21 20:41:19 2011
@@ -21,8 +21,14 @@ package org.apache.james.protocols.api;
 
 public class StartTlsFutureResponse extends FutureResponseImpl implements 
StartTlsResponse{
 
-    public StartTlsFutureResponse(AbstractResponse response) {
-        super(response);
+
+    @Override
+    public synchronized void setResponse(Response response) {
+        if (response instanceof StartTlsResponse) {
+            super.setResponse(response);
+        } else {
+            throw new IllegalArgumentException();
+        }
     }
 
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to