Author: rdonkin
Date: Mon May 12 14:40:49 2008
New Revision: 655656

URL: http://svn.apache.org/viewvc?rev=655656&view=rev
Log:
Simplify commands

Added:
    
james/server/trunk/imap-command-library/src/main/java/org/apache/james/imap/command/imap4rev1/ImapCommandImpl.java
Removed:
    
james/server/trunk/imap-command-library/src/main/java/org/apache/james/imap/command/AuthenticatedStateCommand.java
    
james/server/trunk/imap-command-library/src/main/java/org/apache/james/imap/command/CommandTemplate.java
    
james/server/trunk/imap-command-library/src/main/java/org/apache/james/imap/command/NonAuthenticatedStateCommand.java
    
james/server/trunk/imap-command-library/src/main/java/org/apache/james/imap/command/SelectedStateCommand.java
    
james/server/trunk/imap-command-library/src/main/java/org/apache/james/imap/command/imap4rev1/AppendCommand.java
    
james/server/trunk/imap-command-library/src/main/java/org/apache/james/imap/command/imap4rev1/AuthenticateCommand.java
    
james/server/trunk/imap-command-library/src/main/java/org/apache/james/imap/command/imap4rev1/CapabilityCommand.java
    
james/server/trunk/imap-command-library/src/main/java/org/apache/james/imap/command/imap4rev1/CheckCommand.java
    
james/server/trunk/imap-command-library/src/main/java/org/apache/james/imap/command/imap4rev1/CloseCommand.java
    
james/server/trunk/imap-command-library/src/main/java/org/apache/james/imap/command/imap4rev1/CopyCommand.java
    
james/server/trunk/imap-command-library/src/main/java/org/apache/james/imap/command/imap4rev1/CreateCommand.java
    
james/server/trunk/imap-command-library/src/main/java/org/apache/james/imap/command/imap4rev1/DeleteCommand.java
    
james/server/trunk/imap-command-library/src/main/java/org/apache/james/imap/command/imap4rev1/ExamineCommand.java
    
james/server/trunk/imap-command-library/src/main/java/org/apache/james/imap/command/imap4rev1/ExpungeCommand.java
    
james/server/trunk/imap-command-library/src/main/java/org/apache/james/imap/command/imap4rev1/FetchCommand.java
    
james/server/trunk/imap-command-library/src/main/java/org/apache/james/imap/command/imap4rev1/ListCommand.java
    
james/server/trunk/imap-command-library/src/main/java/org/apache/james/imap/command/imap4rev1/LoginCommand.java
    
james/server/trunk/imap-command-library/src/main/java/org/apache/james/imap/command/imap4rev1/LogoutCommand.java
    
james/server/trunk/imap-command-library/src/main/java/org/apache/james/imap/command/imap4rev1/LsubCommand.java
    
james/server/trunk/imap-command-library/src/main/java/org/apache/james/imap/command/imap4rev1/NoopCommand.java
    
james/server/trunk/imap-command-library/src/main/java/org/apache/james/imap/command/imap4rev1/RenameCommand.java
    
james/server/trunk/imap-command-library/src/main/java/org/apache/james/imap/command/imap4rev1/SearchCommand.java
    
james/server/trunk/imap-command-library/src/main/java/org/apache/james/imap/command/imap4rev1/SelectCommand.java
    
james/server/trunk/imap-command-library/src/main/java/org/apache/james/imap/command/imap4rev1/StatusCommand.java
    
james/server/trunk/imap-command-library/src/main/java/org/apache/james/imap/command/imap4rev1/StoreCommand.java
    
james/server/trunk/imap-command-library/src/main/java/org/apache/james/imap/command/imap4rev1/SubscribeCommand.java
    
james/server/trunk/imap-command-library/src/main/java/org/apache/james/imap/command/imap4rev1/UidCommand.java
    
james/server/trunk/imap-command-library/src/main/java/org/apache/james/imap/command/imap4rev1/UnsubscribeCommand.java
Modified:
    
james/server/trunk/imap-command-library/src/main/java/org/apache/james/imap/command/imap4rev1/StandardImap4Rev1CommandFactory.java

Added: 
james/server/trunk/imap-command-library/src/main/java/org/apache/james/imap/command/imap4rev1/ImapCommandImpl.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/imap-command-library/src/main/java/org/apache/james/imap/command/imap4rev1/ImapCommandImpl.java?rev=655656&view=auto
==============================================================================
--- 
james/server/trunk/imap-command-library/src/main/java/org/apache/james/imap/command/imap4rev1/ImapCommandImpl.java
 (added)
+++ 
james/server/trunk/imap-command-library/src/main/java/org/apache/james/imap/command/imap4rev1/ImapCommandImpl.java
 Mon May 12 14:40:49 2008
@@ -0,0 +1,82 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+
+package org.apache.james.imap.command.imap4rev1;
+
+import org.apache.avalon.framework.logger.AbstractLogEnabled;
+import org.apache.james.api.imap.ImapCommand;
+import org.apache.james.api.imap.ImapSessionState;
+
+/**
+ * Basic implementation.
+ */
+class ImapCommandImpl extends AbstractLogEnabled implements ImapCommand {
+
+    public static ImapCommand nonAuthenticatedStateCommand(final String name) {
+        return new ImapCommandImpl(false, false, true, name);
+    }
+    
+    public static ImapCommand authenticatedStateCommand(final String name) {
+        return new ImapCommandImpl(true, true, false, name);
+    }
+    
+    public static ImapCommand selectedStateCommand(final String name) {
+        return new ImapCommandImpl(false, true, false, name);
+    }
+    
+    public static ImapCommand anyStateCommand(final String name) {
+        return new ImapCommandImpl(true, true, true, name);
+    }
+    
+    private final boolean validInAuthenticated;
+    private final boolean validInSelected;
+    private final boolean validInNonAuthenticated;
+    private final String name;
+    
+    private ImapCommandImpl(boolean validInAuthenticated, boolean 
validInSelected, 
+            boolean validInNonAuthenticated, final String name) {
+        super();
+        this.validInAuthenticated = validInAuthenticated;
+        this.validInSelected = validInSelected;
+        this.validInNonAuthenticated = validInNonAuthenticated;
+        this.name = name;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public boolean validForState(ImapSessionState state) {
+        final boolean result;
+        if (state == ImapSessionState.AUTHENTICATED) {
+            result = validInAuthenticated;
+        } else if (state == ImapSessionState.NON_AUTHENTICATED ) {
+            result = validInNonAuthenticated;
+        } else if (state == ImapSessionState.SELECTED) {
+            result = validInSelected;
+        } else {
+          result = false;  
+        }
+        return result;
+    }
+
+    public String toString() {
+        return name;
+    }
+}

Modified: 
james/server/trunk/imap-command-library/src/main/java/org/apache/james/imap/command/imap4rev1/StandardImap4Rev1CommandFactory.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/imap-command-library/src/main/java/org/apache/james/imap/command/imap4rev1/StandardImap4Rev1CommandFactory.java?rev=655656&r1=655655&r2=655656&view=diff
==============================================================================
--- 
james/server/trunk/imap-command-library/src/main/java/org/apache/james/imap/command/imap4rev1/StandardImap4Rev1CommandFactory.java
 (original)
+++ 
james/server/trunk/imap-command-library/src/main/java/org/apache/james/imap/command/imap4rev1/StandardImap4Rev1CommandFactory.java
 Mon May 12 14:40:49 2008
@@ -19,200 +19,201 @@
 package org.apache.james.imap.command.imap4rev1;
 
 import org.apache.james.api.imap.ImapCommand;
+import org.apache.james.api.imap.ImapConstants;
 import org.apache.james.api.imap.imap4rev1.Imap4Rev1CommandFactory;
 
 public class StandardImap4Rev1CommandFactory implements 
Imap4Rev1CommandFactory {
 
-    private final AppendCommand APPEND = new AppendCommand();   
-    private final AuthenticateCommand AUTHENTICATE = new AuthenticateCommand();
-    private final CapabilityCommand CAPABILITY = new CapabilityCommand();
-    private final CheckCommand CHECK = new CheckCommand();
-    private final CloseCommand CLOSE  = new CloseCommand();
-    private final CopyCommand COPY = new CopyCommand();
-    private final CreateCommand CREATE = new CreateCommand();
-    private final DeleteCommand DELETE = new DeleteCommand();
-    private final ExamineCommand EXAMINE = new ExamineCommand();
-    private final ExpungeCommand EXPUNGE = new ExpungeCommand();
-    private final FetchCommand FETCH = new FetchCommand();
-    private final ListCommand LIST = new ListCommand();
-    private final LoginCommand LOGIN = new LoginCommand();
-    private final LogoutCommand LOGOUT = new LogoutCommand();
-    private final LsubCommand LSUB = new LsubCommand();
-    private final NoopCommand NOOP = new NoopCommand();
-    private final RenameCommand RENAME = new RenameCommand();
-    private final SearchCommand SEARCH = new SearchCommand();
-    private final SelectCommand SELECT = new SelectCommand();
-    private final StatusCommand STATUS = new StatusCommand();
-    private final StoreCommand STORE = new StoreCommand();
-    private final SubscribeCommand SUBSCRIBE = new SubscribeCommand();
-    private final UidCommand UID = new UidCommand();
-    private final UnsubscribeCommand UNSUBSCRIBE  = new UnsubscribeCommand();
+    private final ImapCommand append = 
ImapCommandImpl.authenticatedStateCommand(ImapConstants.APPEND_COMMAND_NAME);   
+    private final ImapCommand authenticate = 
ImapCommandImpl.nonAuthenticatedStateCommand(ImapConstants.AUTHENTICATE_COMMAND_NAME);
+    private final ImapCommand capability = 
ImapCommandImpl.anyStateCommand(ImapConstants.CAPABILITY_COMMAND_NAME);
+    private final ImapCommand check = 
ImapCommandImpl.selectedStateCommand(ImapConstants.CHECK_COMMAND_NAME);
+    private final ImapCommand close  = 
ImapCommandImpl.selectedStateCommand(ImapConstants.CLOSE_COMMAND_NAME);
+    private final ImapCommand copy = 
ImapCommandImpl.selectedStateCommand(ImapConstants.COPY_COMMAND_NAME);
+    private final ImapCommand create = 
ImapCommandImpl.authenticatedStateCommand(ImapConstants.CREATE_COMMAND_NAME);
+    private final ImapCommand delete = 
ImapCommandImpl.authenticatedStateCommand(ImapConstants.DELETE_COMMAND_NAME);
+    private final ImapCommand examine = 
ImapCommandImpl.authenticatedStateCommand(ImapConstants.EXAMINE_COMMAND_NAME);
+    private final ImapCommand expunge = 
ImapCommandImpl.selectedStateCommand(ImapConstants.EXPUNGE_COMMAND_NAME);
+    private final ImapCommand fetch = 
ImapCommandImpl.selectedStateCommand(ImapConstants.FETCH_COMMAND_NAME);
+    private final ImapCommand list = 
ImapCommandImpl.authenticatedStateCommand(ImapConstants.LIST_COMMAND_NAME);
+    private final ImapCommand login = 
ImapCommandImpl.nonAuthenticatedStateCommand(ImapConstants.LOGIN_COMMAND_NAME);
+    private final ImapCommand logout = 
ImapCommandImpl.anyStateCommand(ImapConstants.LOGOUT_COMMAND_NAME);
+    private final ImapCommand lsub = 
ImapCommandImpl.authenticatedStateCommand(ImapConstants.LSUB_COMMAND_NAME);
+    private final ImapCommand noop = 
ImapCommandImpl.anyStateCommand(ImapConstants.NOOP_COMMAND_NAME);
+    private final ImapCommand rename = 
ImapCommandImpl.authenticatedStateCommand(ImapConstants.RENAME_COMMAND_NAME);
+    private final ImapCommand search = 
ImapCommandImpl.selectedStateCommand(ImapConstants.SEARCH_COMMAND_NAME);
+    private final ImapCommand select = 
ImapCommandImpl.authenticatedStateCommand(ImapConstants.SELECT_COMMAND_NAME);
+    private final ImapCommand status = 
ImapCommandImpl.authenticatedStateCommand(ImapConstants.STATUS_COMMAND_NAME);
+    private final ImapCommand store = 
ImapCommandImpl.selectedStateCommand(ImapConstants.STORE_COMMAND_NAME);
+    private final ImapCommand subscribe = 
ImapCommandImpl.authenticatedStateCommand(ImapConstants.SUBSCRIBE_COMMAND_NAME);
+    private final ImapCommand uid = 
ImapCommandImpl.selectedStateCommand(ImapConstants.UID_COMMAND_NAME);
+    private final ImapCommand unsubscribe  = 
ImapCommandImpl.authenticatedStateCommand(ImapConstants.UNSUBSCRIBE_COMMAND_NAME);
     
     /**
      * @see 
org.apache.james.api.imap.imap4rev1.Imap4Rev1CommandFactory#getAppend()
      */
     public ImapCommand getAppend() {
-        return APPEND;
+        return append;
     }
     
     /**
      * @see 
org.apache.james.api.imap.imap4rev1.Imap4Rev1CommandFactory#getAuthenticate()
      */
     public ImapCommand getAuthenticate() {
-        return AUTHENTICATE;
+        return authenticate;
     }
     
     /**
      * @see 
org.apache.james.api.imap.imap4rev1.Imap4Rev1CommandFactory#getCapability()
      */
     public ImapCommand getCapability() {
-        return CAPABILITY;
+        return capability;
     }
     
     /**
      * @see 
org.apache.james.api.imap.imap4rev1.Imap4Rev1CommandFactory#getCheck()
      */
     public ImapCommand getCheck() {
-        return CHECK;
+        return check;
     }
     
     /**
      * @see 
org.apache.james.api.imap.imap4rev1.Imap4Rev1CommandFactory#getClose()
      */
     public ImapCommand getClose() {
-        return CLOSE;
+        return close;
     }
     
     /**
      * @see 
org.apache.james.api.imap.imap4rev1.Imap4Rev1CommandFactory#getCopy()
      */
     public ImapCommand getCopy() {
-        return COPY;
+        return copy;
     }
     
     /**
      * @see 
org.apache.james.api.imap.imap4rev1.Imap4Rev1CommandFactory#getCreate()
      */
     public ImapCommand getCreate() {
-        return CREATE;
+        return create;
     }
     
     /**
      * @see 
org.apache.james.api.imap.imap4rev1.Imap4Rev1CommandFactory#getDelete()
      */
     public ImapCommand getDelete() {
-        return DELETE;
+        return delete;
     }
     
     /**
      * @see 
org.apache.james.api.imap.imap4rev1.Imap4Rev1CommandFactory#getExamine()
      */
     public ImapCommand getExamine() {
-        return EXAMINE;
+        return examine;
     }
     
     /**
      * @see 
org.apache.james.api.imap.imap4rev1.Imap4Rev1CommandFactory#getExpunge()
      */
     public ImapCommand getExpunge() {
-        return EXPUNGE;
+        return expunge;
     }
     
     /**
      * @see 
org.apache.james.api.imap.imap4rev1.Imap4Rev1CommandFactory#getFetch()
      */
     public ImapCommand getFetch() {
-        return FETCH;
+        return fetch;
     }
     
     /**
      * @see 
org.apache.james.api.imap.imap4rev1.Imap4Rev1CommandFactory#getList()
      */
     public ImapCommand getList() {
-        return LIST;
+        return list;
     }
     
     /**
      * @see 
org.apache.james.api.imap.imap4rev1.Imap4Rev1CommandFactory#getLogin()
      */
     public ImapCommand getLogin() {
-        return LOGIN;
+        return login;
     }
 
     /**
      * @see 
org.apache.james.api.imap.imap4rev1.Imap4Rev1CommandFactory#getLogout()
      */
     public ImapCommand getLogout() {
-        return LOGOUT;
+        return logout;
     }
     
     /**
      * @see 
org.apache.james.api.imap.imap4rev1.Imap4Rev1CommandFactory#getLsub()
      */
     public ImapCommand getLsub() {
-        return LSUB;
+        return lsub;
     }
     
     /**
      * @see 
org.apache.james.api.imap.imap4rev1.Imap4Rev1CommandFactory#getNoop()
      */
     public ImapCommand getNoop() {
-        return NOOP;
+        return noop;
     }
     
     /**
      * @see 
org.apache.james.api.imap.imap4rev1.Imap4Rev1CommandFactory#getRename()
      */
     public ImapCommand getRename() {
-        return RENAME;
+        return rename;
     }
     
     /**
      * @see 
org.apache.james.api.imap.imap4rev1.Imap4Rev1CommandFactory#getSearch()
      */
     public ImapCommand getSearch() {
-        return SEARCH;
+        return search;
     }
     
     /**
      * @see 
org.apache.james.api.imap.imap4rev1.Imap4Rev1CommandFactory#getSelect()
      */
     public ImapCommand getSelect() {
-        return SELECT;
+        return select;
     }
     
     /**
      * @see 
org.apache.james.api.imap.imap4rev1.Imap4Rev1CommandFactory#getStatus()
      */
     public ImapCommand getStatus() {
-        return STATUS;
+        return status;
     }
     
     /**
      * @see 
org.apache.james.api.imap.imap4rev1.Imap4Rev1CommandFactory#getStore()
      */
     public ImapCommand getStore() {
-        return STORE;
+        return store;
     }
     
     /**
      * @see 
org.apache.james.api.imap.imap4rev1.Imap4Rev1CommandFactory#getSubscribe()
      */
     public ImapCommand getSubscribe() {
-        return SUBSCRIBE;
+        return subscribe;
     }
     
     /**
      * @see 
org.apache.james.api.imap.imap4rev1.Imap4Rev1CommandFactory#getUid()
      */
     public ImapCommand getUid() {
-        return UID;
+        return uid;
     }
     
     /**
      * @see 
org.apache.james.api.imap.imap4rev1.Imap4Rev1CommandFactory#getUnsubscribe()
      */
     public ImapCommand getUnsubscribe() {
-        return UNSUBSCRIBE;
+        return unsubscribe;
     }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to