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]