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