You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by no...@apache.org on 2009/11/30 21:25:14 UTC
svn commit: r885575 - in /james/hupa/trunk:
client/src/main/java/org/apache/hupa/client/mvp/
server/src/main/java/org/apache/hupa/server/guice/
server/src/main/java/org/apache/hupa/server/handler/
server/src/main/java/org/apache/hupa/server/mock/ serve...
Author: norman
Date: Mon Nov 30 20:25:13 2009
New Revision: 885575
URL: http://svn.apache.org/viewvc?rev=885575&view=rev
Log:
Only send idle command if the store supports it.Rename Noop* to Idle* which better reflect the real purpose (HUPA-56)
Added:
james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/IdleHandler.java
- copied, changed from r885569, james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/NoopHandler.java
james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/IdleHandlerTest.java
- copied, changed from r885528, james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/NoopHandlerTest.java
james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/Idle.java
- copied, changed from r885528, james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/Noop.java
james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/IdleResult.java
- copied, changed from r885528, james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/NoopResult.java
Removed:
james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/NoopHandler.java
james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/NoopHandlerTest.java
james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/Noop.java
james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/NoopResult.java
Modified:
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/AppPresenter.java
james/hupa/trunk/server/src/main/java/org/apache/hupa/server/guice/GuiceServerModule.java
james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/PrepareNewMessageHandler.java
james/hupa/trunk/server/src/main/java/org/apache/hupa/server/mock/MockIMAPStore.java
Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/AppPresenter.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/AppPresenter.java?rev=885575&r1=885574&r2=885575&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/AppPresenter.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/AppPresenter.java Mon Nov 30 20:25:13 2009
@@ -40,8 +40,8 @@
import org.apache.hupa.shared.rpc.CheckSessionResult;
import org.apache.hupa.shared.rpc.LogoutUser;
import org.apache.hupa.shared.rpc.LogoutUserResult;
-import org.apache.hupa.shared.rpc.Noop;
-import org.apache.hupa.shared.rpc.NoopResult;
+import org.apache.hupa.shared.rpc.Idle;
+import org.apache.hupa.shared.rpc.IdleResult;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
@@ -71,7 +71,7 @@
public void setServerStatus(ServerStatus status);
}
- private Timer noopTimer = new NoopTimer();
+ private Timer noopTimer = new IdleTimer();
private DispatchAsync dispatcher;
private User user;
@@ -195,14 +195,19 @@
});
}
- private class NoopTimer extends Timer {
+ private class IdleTimer extends Timer {
boolean running = false;
public void run() {
if (!running) {
running = true;
- dispatcher.execute(new Noop(), new HupaCallback<NoopResult>(dispatcher, eventBus) {
- public void callback(NoopResult result) {
+ dispatcher.execute(new Idle(), new HupaCallback<IdleResult>(dispatcher, eventBus) {
+ public void callback(IdleResult result) {
running = false;
+ // check if the server is not supporting the Idle command.
+ // if so cancel this Timer
+ if (result.isSupported() == false) {
+ IdleTimer.this.cancel();
+ }
// Noop
// TODO: put code here to read new events from server (new messages ...)
}
Modified: james/hupa/trunk/server/src/main/java/org/apache/hupa/server/guice/GuiceServerModule.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/java/org/apache/hupa/server/guice/GuiceServerModule.java?rev=885575&r1=885574&r2=885575&view=diff
==============================================================================
--- james/hupa/trunk/server/src/main/java/org/apache/hupa/server/guice/GuiceServerModule.java (original)
+++ james/hupa/trunk/server/src/main/java/org/apache/hupa/server/guice/GuiceServerModule.java Mon Nov 30 20:25:13 2009
@@ -44,7 +44,7 @@
import org.apache.hupa.server.handler.LoginUserHandler;
import org.apache.hupa.server.handler.LogoutUserHandler;
import org.apache.hupa.server.handler.MoveMessageHandler;
-import org.apache.hupa.server.handler.NoopHandler;
+import org.apache.hupa.server.handler.IdleHandler;
import org.apache.hupa.server.handler.RenameFolderHandler;
import org.apache.hupa.server.handler.ReplyMessageHandler;
import org.apache.hupa.server.handler.SendMessageHandler;
@@ -94,7 +94,7 @@
bindHandler(SendMessageHandler.class);
bindHandler(ReplyMessageHandler.class);
bindHandler(ForwardMessageHandler.class);
- bindHandler(NoopHandler.class);
+ bindHandler(IdleHandler.class);
bindHandler(MoveMessageHandler.class);
bindHandler(RenameFolderHandler.class);
bindHandler(DeleteFolderHandler.class);
Copied: james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/IdleHandler.java (from r885569, james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/NoopHandler.java)
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/IdleHandler.java?p2=james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/IdleHandler.java&p1=james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/NoopHandler.java&r1=885569&r2=885575&rev=885575&view=diff
==============================================================================
--- james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/NoopHandler.java (original)
+++ james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/IdleHandler.java Mon Nov 30 20:25:13 2009
@@ -19,7 +19,6 @@
package org.apache.hupa.server.handler;
-import javax.mail.MessagingException;
import javax.servlet.http.HttpSession;
import net.customware.gwt.dispatch.server.ExecutionContext;
@@ -28,8 +27,8 @@
import org.apache.commons.logging.Log;
import org.apache.hupa.server.IMAPStoreCache;
import org.apache.hupa.server.guice.DemoModeConstants;
-import org.apache.hupa.shared.rpc.Noop;
-import org.apache.hupa.shared.rpc.NoopResult;
+import org.apache.hupa.shared.rpc.Idle;
+import org.apache.hupa.shared.rpc.IdleResult;
import com.google.inject.Inject;
import com.google.inject.Provider;
@@ -40,11 +39,11 @@
*
*
*/
-public class NoopHandler extends AbstractSessionHandler<Noop, NoopResult>{
+public class IdleHandler extends AbstractSessionHandler<Idle, IdleResult>{
@Inject
- public NoopHandler(IMAPStoreCache cache, Log logger, Provider<HttpSession> provider) {
+ public IdleHandler(IMAPStoreCache cache, Log logger, Provider<HttpSession> provider) {
super(cache,logger,provider);
}
@@ -52,7 +51,7 @@
* (non-Javadoc)
* @see org.apache.hupa.server.handler.AbstractSessionHandler#executeInternal(org.apache.hupa.shared.rpc.Session, net.customware.gwt.dispatch.server.ExecutionContext)
*/
- public NoopResult executeInternal(Noop action, ExecutionContext context)
+ public IdleResult executeInternal(Idle action, ExecutionContext context)
throws ActionException {
try {
IMAPStore store = cache.get(getUser());
@@ -64,10 +63,12 @@
if (store.hasCapability("IDLE")) {
// just send a noop to keep the connection alive
store.idle();
+ } else {
+ return new IdleResult(false);
}
}
- return new NoopResult();
+ return new IdleResult(true);
} catch (Exception e) {
throw new ActionException("Unable to send NOOP " + e.getMessage());
}
@@ -77,8 +78,8 @@
* (non-Javadoc)
* @see net.customware.gwt.dispatch.server.ActionHandler#getActionType()
*/
- public Class<Noop> getActionType() {
- return Noop.class;
+ public Class<Idle> getActionType() {
+ return Idle.class;
}
}
Modified: james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/PrepareNewMessageHandler.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/PrepareNewMessageHandler.java?rev=885575&r1=885574&r2=885575&view=diff
==============================================================================
--- james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/PrepareNewMessageHandler.java (original)
+++ james/hupa/trunk/server/src/main/java/org/apache/hupa/server/handler/PrepareNewMessageHandler.java Mon Nov 30 20:25:13 2009
@@ -27,8 +27,8 @@
import org.apache.commons.logging.Log;
import org.apache.hupa.server.IMAPStoreCache;
import org.apache.hupa.server.guice.DemoModeConstants;
-import org.apache.hupa.shared.rpc.Noop;
-import org.apache.hupa.shared.rpc.NoopResult;
+import org.apache.hupa.shared.rpc.Idle;
+import org.apache.hupa.shared.rpc.IdleResult;
import com.google.inject.Inject;
import com.google.inject.Provider;
@@ -39,7 +39,7 @@
*
*
*/
-public class PrepareNewMessageHandler extends AbstractSessionHandler<Noop, NoopResult>{
+public class PrepareNewMessageHandler extends AbstractSessionHandler<Idle, IdleResult>{
@Inject
@@ -51,7 +51,7 @@
* (non-Javadoc)
* @see org.apache.hupa.server.handler.AbstractSessionHandler#executeInternal(org.apache.hupa.shared.rpc.Session, net.customware.gwt.dispatch.server.ExecutionContext)
*/
- public NoopResult executeInternal(Noop action, ExecutionContext context)
+ public IdleResult executeInternal(Idle action, ExecutionContext context)
throws ActionException {
try {
IMAPStore store = cache.get(getUser());
@@ -60,7 +60,7 @@
// just send a noop to keep the connection alive
store.idle();
}
- return new NoopResult();
+ return new IdleResult(false);
} catch (Exception e) {
throw new ActionException("Unable to send NOOP " + e.getMessage());
}
@@ -70,8 +70,8 @@
* (non-Javadoc)
* @see net.customware.gwt.dispatch.server.ActionHandler#getActionType()
*/
- public Class<Noop> getActionType() {
- return Noop.class;
+ public Class<Idle> getActionType() {
+ return Idle.class;
}
}
Modified: james/hupa/trunk/server/src/main/java/org/apache/hupa/server/mock/MockIMAPStore.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/main/java/org/apache/hupa/server/mock/MockIMAPStore.java?rev=885575&r1=885574&r2=885575&view=diff
==============================================================================
--- james/hupa/trunk/server/src/main/java/org/apache/hupa/server/mock/MockIMAPStore.java (original)
+++ james/hupa/trunk/server/src/main/java/org/apache/hupa/server/mock/MockIMAPStore.java Mon Nov 30 20:25:13 2009
@@ -41,6 +41,7 @@
private Map<String, Integer> validServers = new HashMap<String, Integer>();
private boolean connected = false;
private List<MockIMAPFolder> folders = new ArrayList<MockIMAPFolder>();
+ private List<String> capList;
static final URLName demoUrl = new URLName(null, DemoModeConstants.DEMO_MODE, 143, null, null, null);
/**
@@ -213,4 +214,14 @@
throw new AuthenticationFailedException("Invalid login");
}
+ @Override
+ public synchronized boolean hasCapability(String capability) throws MessagingException {
+ if (capList == null) return false;
+ return capList.contains(capability);
+ }
+
+ public void setCapabilities(List<String> capList) {
+ this.capList = capList;
+ }
+
}
Copied: james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/IdleHandlerTest.java (from r885528, james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/NoopHandlerTest.java)
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/IdleHandlerTest.java?p2=james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/IdleHandlerTest.java&p1=james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/NoopHandlerTest.java&r1=885528&r2=885575&rev=885575&view=diff
==============================================================================
--- james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/NoopHandlerTest.java (original)
+++ james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/IdleHandlerTest.java Mon Nov 30 20:25:13 2009
@@ -22,19 +22,19 @@
import net.customware.gwt.dispatch.shared.ActionException;
import org.apache.hupa.shared.data.User;
-import org.apache.hupa.shared.rpc.Noop;
-import org.apache.hupa.shared.rpc.NoopResult;
+import org.apache.hupa.shared.rpc.Idle;
+import org.apache.hupa.shared.rpc.IdleResult;
-public class NoopHandlerTest extends AbstractHandlerTest{
+public class IdleHandlerTest extends AbstractHandlerTest{
public void testNoop() {
- NoopHandler handler = new NoopHandler(storeCache, logger, httpSessionProvider);
+ IdleHandler handler = new IdleHandler(storeCache, logger, httpSessionProvider);
User user = createUser();
- Noop action = new Noop();
+ Idle action = new Idle();
storeCache.addValidUser(user.getName(), user.getPassword());
httpSession.setAttribute("user", user);
try {
- NoopResult result = handler.execute(action, null);
+ IdleResult result = handler.execute(action, null);
assertNotNull(result);
} catch (ActionException e) {
e.printStackTrace();
Copied: james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/Idle.java (from r885528, james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/Noop.java)
URL: http://svn.apache.org/viewvc/james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/Idle.java?p2=james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/Idle.java&p1=james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/Noop.java&r1=885528&r2=885575&rev=885575&view=diff
==============================================================================
--- james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/Noop.java (original)
+++ james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/Idle.java Mon Nov 30 20:25:13 2009
@@ -22,7 +22,7 @@
import net.customware.gwt.dispatch.shared.Action;
-public class Noop implements Action<NoopResult>{
+public class Idle implements Action<IdleResult>{
private static final long serialVersionUID = 4076791577558340559L;
Copied: james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/IdleResult.java (from r885528, james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/NoopResult.java)
URL: http://svn.apache.org/viewvc/james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/IdleResult.java?p2=james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/IdleResult.java&p1=james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/NoopResult.java&r1=885528&r2=885575&rev=885575&view=diff
==============================================================================
--- james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/NoopResult.java (original)
+++ james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/IdleResult.java Mon Nov 30 20:25:13 2009
@@ -21,8 +21,26 @@
import net.customware.gwt.dispatch.shared.Result;
-public class NoopResult implements Result {
+public class IdleResult implements Result {
private static final long serialVersionUID = 5530385273335407315L;
+ private boolean supported;
+
+ protected IdleResult() {
+
+ }
+
+ public IdleResult(boolean supported) {
+ this.supported = supported;
+ }
+
+ /**
+ * Return if the IDLE command is supported by the server
+ *
+ * @return supported
+ */
+ public boolean isSupported() {
+ return supported;
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org