Author: btellier
Date: Thu Dec 17 14:51:38 2015
New Revision: 1720562

URL: http://svn.apache.org/viewvc?rev=1720562&view=rev
Log:
PROTOCOLS-68 Sessions should not be defined globally

Modified:
    
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/SieveParser.java
    
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/Authenticate.java
    
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/Capability.java
    
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/CheckScript.java
    
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/CoreCommands.java
    
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/DeleteScript.java
    
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/GetActive.java
    
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/GetScript.java
    
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/HaveSpace.java
    
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/LineCommands.java
    
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/ListScripts.java
    
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/Logout.java
    
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/Noop.java
    
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/PutScript.java
    
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/RenameScript.java
    
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/SetActive.java
    
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/StartTLS.java
    
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/Unauthenticate.java
    
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/core/CoreProcessor.java
    
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/transcode/LineToCore.java
    
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/transcode/LineToCoreToLine.java
    
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/util/SettableSession.java
    
james/project/trunk/protocols/managesieve/src/test/java/org/apache/james/managesieve/core/CoreProcessorTestCase.java
    
james/project/trunk/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/managesieve/ManageSieveMailet.java
    
james/project/trunk/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/managesieve/transcode/MessageToCoreToMessage.java
    
james/project/trunk/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/managesieve/ManageSieveMailetTestCase.java

Modified: 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/SieveParser.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/SieveParser.java?rev=1720562&r1=1720561&r2=1720562&view=diff
==============================================================================
--- 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/SieveParser.java
 (original)
+++ 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/SieveParser.java
 Thu Dec 17 14:51:38 2015
@@ -23,13 +23,10 @@ package org.apache.james.managesieve.api
 import java.util.List;
 
 
-/**
- * <code>SieveParser</code>
- */
 public interface SieveParser {
     
-    abstract List<String> parse(String content) throws SyntaxException;
+    List<String> parse(String content) throws SyntaxException;
     
-    abstract List<String> getExtensions();
+    List<String> getExtensions();
 
 }

Modified: 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/Authenticate.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/Authenticate.java?rev=1720562&r1=1720561&r2=1720562&view=diff
==============================================================================
--- 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/Authenticate.java
 (original)
+++ 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/Authenticate.java
 Thu Dec 17 14:51:38 2015
@@ -24,15 +24,11 @@ import org.apache.james.managesieve.api.
 
 
 /**
- * <code>Authenticate</code>
- * 
  * @see <a href=http://tools.ietf.org/html/rfc5804#section-2.1>RFC 5804 
AUTHENTICATE Command</a>
- * 
  */
 public interface Authenticate {
     
-    abstract public void authenticate(String mechanism) throws 
AuthenticationException;
+    void authenticate(String mechanism) throws AuthenticationException;
     
-    abstract public void authenticate(String mechanism, String initialData) 
throws AuthenticationException;
-
+    void authenticate(String mechanism, String initialData) throws 
AuthenticationException;
 }

Modified: 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/Capability.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/Capability.java?rev=1720562&r1=1720561&r2=1720562&view=diff
==============================================================================
--- 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/Capability.java
 (original)
+++ 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/Capability.java
 Thu Dec 17 14:51:38 2015
@@ -20,21 +20,18 @@
 
 package org.apache.james.managesieve.api.commands;
 
+import org.apache.james.managesieve.api.Session;
+
 import java.util.Map;
 
-/**
- * <code>Capability</code>
- */
 public interface Capability {
 
-    abstract public Map<Capabilities, String> capability();
+    Map<Capabilities, String> capability(Session session);
 
     /**
-     * <code>Capabilities</code>
-     * 
      *  @see <a href=http://tools.ietf.org/html/rfc5804#section-2.4>RFC 5804 
CAPABILITY Command</a>
      */
-    public enum Capabilities {
+    enum Capabilities {
         IMPLEMENTATION,
         SASL,
         SIEVE,

Modified: 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/CheckScript.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/CheckScript.java?rev=1720562&r1=1720561&r2=1720562&view=diff
==============================================================================
--- 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/CheckScript.java
 (original)
+++ 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/CheckScript.java
 Thu Dec 17 14:51:38 2015
@@ -23,15 +23,14 @@ package org.apache.james.managesieve.api
 import java.util.List;
 
 import org.apache.james.managesieve.api.AuthenticationRequiredException;
+import org.apache.james.managesieve.api.Session;
 import org.apache.james.managesieve.api.SyntaxException;
 
 /**
- * <code>CheckScript</code>
- * 
  *  @see <a href=http://tools.ietf.org/html/rfc5804#section-2.12>RFC 5804 
CHECKSCRIPT Command</a>
  */
 public interface CheckScript {
     
-    abstract public List<String> checkScript(String content) throws 
AuthenticationRequiredException, SyntaxException;
+    List<String> checkScript(Session session, String content) throws 
AuthenticationRequiredException, SyntaxException;
 
 }

Modified: 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/CoreCommands.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/CoreCommands.java?rev=1720562&r1=1720561&r2=1720562&view=diff
==============================================================================
--- 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/CoreCommands.java
 (original)
+++ 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/CoreCommands.java
 Thu Dec 17 14:51:38 2015
@@ -21,9 +21,7 @@
 package org.apache.james.managesieve.api.commands;
 
 /**
- * <code>CoreCommands</code>
- * 
- * <p>Core RFC 5804 Commands common to all transports
+ * Core RFC 5804 Commands common to all transports
  * 
  * @see <a href=http://tools.ietf.org/html/rfc5804#section-2>RFC 5804 
Commands</a>
  */

Modified: 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/DeleteScript.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/DeleteScript.java?rev=1720562&r1=1720561&r2=1720562&view=diff
==============================================================================
--- 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/DeleteScript.java
 (original)
+++ 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/DeleteScript.java
 Thu Dec 17 14:51:38 2015
@@ -21,16 +21,15 @@
 package org.apache.james.managesieve.api.commands;
 
 import org.apache.james.managesieve.api.AuthenticationRequiredException;
+import org.apache.james.managesieve.api.Session;
 import org.apache.james.sieverepository.api.exception.IsActiveException;
 import org.apache.james.sieverepository.api.exception.ScriptNotFoundException;
 
 /**
- * <code>DeleteScript</code>
- * 
  *  @see <a href=http://tools.ietf.org/html/rfc5804#section-2.10>RFC 5804 
DELETESCRIPT Command</a>
  */
 public interface DeleteScript {
     
-    abstract public void deleteScript(String name) throws 
AuthenticationRequiredException, ScriptNotFoundException, IsActiveException;
+    void deleteScript(Session session, String name) throws 
AuthenticationRequiredException, ScriptNotFoundException, IsActiveException;
 
 }

Modified: 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/GetActive.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/GetActive.java?rev=1720562&r1=1720561&r2=1720562&view=diff
==============================================================================
--- 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/GetActive.java
 (original)
+++ 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/GetActive.java
 Thu Dec 17 14:51:38 2015
@@ -21,6 +21,7 @@
 package org.apache.james.managesieve.api.commands;
 
 import org.apache.james.managesieve.api.AuthenticationRequiredException;
+import org.apache.james.managesieve.api.Session;
 import org.apache.james.sieverepository.api.exception.ScriptNotFoundException;
 import org.apache.james.sieverepository.api.exception.StorageException;
 
@@ -32,6 +33,6 @@ import org.apache.james.sieverepository.
  */
 public interface GetActive {
     
-    abstract public String getActive() throws AuthenticationRequiredException, 
ScriptNotFoundException, StorageException;
+    String getActive(Session session) throws AuthenticationRequiredException, 
ScriptNotFoundException, StorageException;
 
 }

Modified: 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/GetScript.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/GetScript.java?rev=1720562&r1=1720561&r2=1720562&view=diff
==============================================================================
--- 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/GetScript.java
 (original)
+++ 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/GetScript.java
 Thu Dec 17 14:51:38 2015
@@ -21,16 +21,15 @@
 package org.apache.james.managesieve.api.commands;
 
 import org.apache.james.managesieve.api.AuthenticationRequiredException;
+import org.apache.james.managesieve.api.Session;
 import org.apache.james.sieverepository.api.exception.ScriptNotFoundException;
 import org.apache.james.sieverepository.api.exception.StorageException;
 
 /**
- * <code>GetScript</code>
- * 
  *  @see <a href=http://tools.ietf.org/html/rfc5804#section-2.9>RFC 5804 
GETSCRIPT Command</a>
  */
 public interface GetScript {
     
-    abstract public String getScript(String name) throws 
AuthenticationRequiredException, ScriptNotFoundException, StorageException;
+    String getScript(Session session, String name) throws 
AuthenticationRequiredException, ScriptNotFoundException, StorageException;
 
 }

Modified: 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/HaveSpace.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/HaveSpace.java?rev=1720562&r1=1720561&r2=1720562&view=diff
==============================================================================
--- 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/HaveSpace.java
 (original)
+++ 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/HaveSpace.java
 Thu Dec 17 14:51:38 2015
@@ -21,15 +21,14 @@
 package org.apache.james.managesieve.api.commands;
 
 import org.apache.james.managesieve.api.AuthenticationRequiredException;
+import org.apache.james.managesieve.api.Session;
 import org.apache.james.sieverepository.api.exception.QuotaExceededException;
 
 /**
- * <code>HaveSpace</code>
- * 
  *  @see <a href=http://tools.ietf.org/html/rfc5804#section-2.5>RFC 5804 
HAVESPACE Command</a>
  */
 public interface HaveSpace {
     
-    abstract public void haveSpace(String name, long size) throws 
AuthenticationRequiredException, QuotaExceededException;
+    void haveSpace(Session session, String name, long size) throws 
AuthenticationRequiredException, QuotaExceededException;
 
 }

Modified: 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/LineCommands.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/LineCommands.java?rev=1720562&r1=1720561&r2=1720562&view=diff
==============================================================================
--- 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/LineCommands.java
 (original)
+++ 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/LineCommands.java
 Thu Dec 17 14:51:38 2015
@@ -21,9 +21,7 @@
 package org.apache.james.managesieve.api.commands;
 
 /**
- * <code>LineCommands</code>
- * 
- * <p>Commands specific to the line oriented protocol defined by RFC 5804
+ * Commands specific to the line oriented protocol defined by RFC 5804
  * 
  *  @see <a href=http://tools.ietf.org/html/rfc5804#section-1.8>RFC 5804 
Transport</a>
  */

Modified: 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/ListScripts.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/ListScripts.java?rev=1720562&r1=1720561&r2=1720562&view=diff
==============================================================================
--- 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/ListScripts.java
 (original)
+++ 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/ListScripts.java
 Thu Dec 17 14:51:38 2015
@@ -23,15 +23,14 @@ package org.apache.james.managesieve.api
 import java.util.List;
 
 import org.apache.james.managesieve.api.AuthenticationRequiredException;
+import org.apache.james.managesieve.api.Session;
 import org.apache.james.sieverepository.api.ScriptSummary;
 
 /**
- * <code>ListScripts</code>
- * 
  *  @see <a href=http://tools.ietf.org/html/rfc5804#section-2.7>RFC 5804 
LISTSCRIPTS Command</a>
  */
 public interface ListScripts {
        
-    abstract public List<ScriptSummary> listScripts() throws 
AuthenticationRequiredException;
+    List<ScriptSummary> listScripts(Session session) throws 
AuthenticationRequiredException;
 
 }

Modified: 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/Logout.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/Logout.java?rev=1720562&r1=1720561&r2=1720562&view=diff
==============================================================================
--- 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/Logout.java
 (original)
+++ 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/Logout.java
 Thu Dec 17 14:51:38 2015
@@ -22,12 +22,10 @@ package org.apache.james.managesieve.api
 
 
 /**
- * <code>Logout</code>
- * 
  *  @see <a href=http://tools.ietf.org/html/rfc5804#section-2.3>RFC 5804 
LOGOUT Command</a>
  */
 public interface Logout {
     
-    abstract public void logout();
+    void logout();
 
 }

Modified: 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/Noop.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/Noop.java?rev=1720562&r1=1720561&r2=1720562&view=diff
==============================================================================
--- 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/Noop.java
 (original)
+++ 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/Noop.java
 Thu Dec 17 14:51:38 2015
@@ -22,14 +22,12 @@ package org.apache.james.managesieve.api
 
 
 /**
- * <code>Noop</code>
- * 
  *  @see <a href=http://tools.ietf.org/html/rfc5804#section-2.13>RFC 5804 NOOP 
Command</a>
  */
 public interface Noop {
     
-    abstract public void noop();
+    void noop();
     
-    abstract public String noop(String tag);
+    String noop(String tag);
 
 }

Modified: 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/PutScript.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/PutScript.java?rev=1720562&r1=1720561&r2=1720562&view=diff
==============================================================================
--- 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/PutScript.java
 (original)
+++ 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/PutScript.java
 Thu Dec 17 14:51:38 2015
@@ -23,16 +23,15 @@ package org.apache.james.managesieve.api
 import java.util.List;
 
 import org.apache.james.managesieve.api.AuthenticationRequiredException;
+import org.apache.james.managesieve.api.Session;
 import org.apache.james.managesieve.api.SyntaxException;
 import org.apache.james.sieverepository.api.exception.QuotaExceededException;
 
 /**
- * <code>PutScript</code>
- * 
  *  @see <a href=http://tools.ietf.org/html/rfc5804#section-2.6>RFC 5804 
PUTSCRIPT Command</a>
  */
 public interface PutScript {
     
-    abstract public List<String> putScript(String name, String content) throws 
AuthenticationRequiredException, SyntaxException, QuotaExceededException;
+    List<String> putScript(Session session, String name, String content) 
throws AuthenticationRequiredException, SyntaxException, QuotaExceededException;
 
 }

Modified: 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/RenameScript.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/RenameScript.java?rev=1720562&r1=1720561&r2=1720562&view=diff
==============================================================================
--- 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/RenameScript.java
 (original)
+++ 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/RenameScript.java
 Thu Dec 17 14:51:38 2015
@@ -21,16 +21,15 @@
 package org.apache.james.managesieve.api.commands;
 
 import org.apache.james.managesieve.api.AuthenticationRequiredException;
+import org.apache.james.managesieve.api.Session;
 import org.apache.james.sieverepository.api.exception.DuplicateException;
 import org.apache.james.sieverepository.api.exception.ScriptNotFoundException;
 
 /**
- * <code>RenameScript</code>
- * 
  *  @see <a href=http://tools.ietf.org/html/rfc5804#section-2.11>RFC 5804 
RENAMESCRIPT Command</a>
  */
 public interface RenameScript {
    
-    abstract public void renameScript(String oldName, String newName) throws 
AuthenticationRequiredException, ScriptNotFoundException, DuplicateException;
+    void renameScript(Session session, String oldName, String newName) throws 
AuthenticationRequiredException, ScriptNotFoundException, DuplicateException;
 
 }

Modified: 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/SetActive.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/SetActive.java?rev=1720562&r1=1720561&r2=1720562&view=diff
==============================================================================
--- 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/SetActive.java
 (original)
+++ 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/SetActive.java
 Thu Dec 17 14:51:38 2015
@@ -21,15 +21,14 @@
 package org.apache.james.managesieve.api.commands;
 
 import org.apache.james.managesieve.api.AuthenticationRequiredException;
+import org.apache.james.managesieve.api.Session;
 import org.apache.james.sieverepository.api.exception.ScriptNotFoundException;
 
 /**
- * <code>SetActive</code>
- * 
  *  @see <a href=http://tools.ietf.org/html/rfc5804#section-2.8>RFC 5804 
SETACTIVE Command</a>
  */
 public interface SetActive {
     
-    abstract public void setActive(String name) throws 
AuthenticationRequiredException, ScriptNotFoundException;
+    void setActive(Session session, String name) throws 
AuthenticationRequiredException, ScriptNotFoundException;
 
 }

Modified: 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/StartTLS.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/StartTLS.java?rev=1720562&r1=1720561&r2=1720562&view=diff
==============================================================================
--- 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/StartTLS.java
 (original)
+++ 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/StartTLS.java
 Thu Dec 17 14:51:38 2015
@@ -21,12 +21,10 @@
 package org.apache.james.managesieve.api.commands;
 
 /**
- * <code>StartTLS</code>
- * 
  *  @see <a href=http://tools.ietf.org/html/rfc5804#section-2.2>RFC 5804 
STARTTLS Command</a>
  */
 public interface StartTLS {
     
-    abstract public void startTLS();
+    void startTLS();
 
 }

Modified: 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/Unauthenticate.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/Unauthenticate.java?rev=1720562&r1=1720561&r2=1720562&view=diff
==============================================================================
--- 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/Unauthenticate.java
 (original)
+++ 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/api/commands/Unauthenticate.java
 Thu Dec 17 14:51:38 2015
@@ -24,12 +24,10 @@ import org.apache.james.managesieve.api.
 
 
 /**
- * <code>Unauthenticate</code>
- * 
- *  @see <a href=http://tools.ietf.org/html/rfc5804#section-2.14.1>RFC 5804 
UNAUTHENTICATE Command</a>
+ * @see <a href=http://tools.ietf.org/html/rfc5804#section-2.14.1>RFC 5804 
UNAUTHENTICATE Command</a>
  */
 public interface Unauthenticate {
    
-    abstract public void unauthenticate() throws 
AuthenticationRequiredException;
+    void unauthenticate() throws AuthenticationRequiredException;
 
 }

Modified: 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/core/CoreProcessor.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/core/CoreProcessor.java?rev=1720562&r1=1720561&r2=1720562&view=diff
==============================================================================
--- 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/core/CoreProcessor.java
 (original)
+++ 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/core/CoreProcessor.java
 Thu Dec 17 14:51:38 2015
@@ -52,18 +52,15 @@ public class CoreProcessor implements Co
     
     private final SieveRepository sieveRepository;
     private final UsersRepository usersRepository;
-    private final Session session;
     private final SieveParser parser;
 
-    public CoreProcessor(Session session, SieveRepository repository, 
UsersRepository usersRepository, SieveParser parser) {
-        this.session = session;
+    public CoreProcessor(SieveRepository repository, UsersRepository 
usersRepository, SieveParser parser) {
         this.sieveRepository = repository;
         this.usersRepository = usersRepository;
         this.parser = parser;
-        ensureUser();
     }
 
-    public Map<Capabilities, String> capability() {
+    public Map<Capabilities, String> capability(Session session) {
         Map<Capabilities, String> capabilities = new HashMap<Capabilities, 
String>();
         capabilities.put(Capabilities.IMPLEMENTATION, 
IMPLEMENTATION_DESCRIPTION);
         capabilities.put(Capabilities.VERSION, MANAGE_SIEVE_VERSION);
@@ -75,22 +72,22 @@ public class CoreProcessor implements Co
         if (!extensions.isEmpty()) {
             capabilities.put(Capabilities.SIEVE, extensions);
         }
-        if (isAuthenticated()) {
-            capabilities.put(Capabilities.OWNER, getUser());
+        if (session.isAuthenticated()) {
+            capabilities.put(Capabilities.OWNER, session.getUser());
         }
         capabilities.put(Capabilities.GETACTIVE, null);
         return capabilities;
     }
 
-    public List<String> checkScript(String content) throws 
AuthenticationRequiredException, SyntaxException {
-        authenticationCheck();
+    public List<String> checkScript(Session session, String content) throws 
AuthenticationRequiredException, SyntaxException {
+        authenticationCheck(session);
         return parser.parse(content);
     }
 
-    public void deleteScript(String name) throws 
AuthenticationRequiredException, ScriptNotFoundException, IsActiveException {
-        authenticationCheck();
+    public void deleteScript(Session session, String name) throws 
AuthenticationRequiredException, ScriptNotFoundException, IsActiveException {
+        authenticationCheck(session);
         try {
-            sieveRepository.deleteScript(getUser(), name);
+            sieveRepository.deleteScript(session.getUser(), name);
         } catch (StorageException ex) {
             throw new ManageSieveRuntimeException(ex);
         } catch (UserNotFoundException ex) {
@@ -98,10 +95,10 @@ public class CoreProcessor implements Co
         }
     }
 
-    public String getScript(String name) throws 
AuthenticationRequiredException, ScriptNotFoundException, StorageException {
-        authenticationCheck();
+    public String getScript(Session session, String name) throws 
AuthenticationRequiredException, ScriptNotFoundException, StorageException {
+        authenticationCheck(session);
         try {
-            return IOUtils.toString(sieveRepository.getScript(getUser(), 
name));
+            return 
IOUtils.toString(sieveRepository.getScript(session.getUser(), name));
         } catch (UserNotFoundException ex) {
             throw new ManageSieveRuntimeException(ex);
         } catch (IOException ex) {
@@ -110,29 +107,29 @@ public class CoreProcessor implements Co
         }
     }
 
-    public void haveSpace(String name, long size) throws 
AuthenticationRequiredException, QuotaExceededException {
-        authenticationCheck();
+    public void haveSpace(Session session, String name, long size) throws 
AuthenticationRequiredException, QuotaExceededException {
+        authenticationCheck(session);
         try {
-            sieveRepository.haveSpace(getUser(), name, size);
+            sieveRepository.haveSpace(session.getUser(), name, size);
         } catch (SieveRepositoryException ex) {
             throw new ManageSieveRuntimeException(ex);
         }
     }
 
-    public List<ScriptSummary> listScripts() throws 
AuthenticationRequiredException {
-        authenticationCheck();
+    public List<ScriptSummary> listScripts(Session session) throws 
AuthenticationRequiredException {
+        authenticationCheck(session);
         try {
-            return sieveRepository.listScripts(getUser());
+            return sieveRepository.listScripts(session.getUser());
         } catch (SieveRepositoryException ex) {
             throw new ManageSieveRuntimeException(ex);
         }
     }
 
-    public List<String> putScript(String name, String content) throws 
AuthenticationRequiredException, SyntaxException, QuotaExceededException {
-        authenticationCheck();
+    public List<String> putScript(Session session, String name, String 
content) throws AuthenticationRequiredException, SyntaxException, 
QuotaExceededException {
+        authenticationCheck(session);
         List<String> warnings = parser.parse(content);
         try {
-            sieveRepository.putScript(getUser(), name, content);
+            sieveRepository.putScript(session.getUser(), name, content);
         } catch (UserNotFoundException ex) {
             throw new ManageSieveRuntimeException(ex);
         } catch (StorageException ex) {
@@ -141,10 +138,10 @@ public class CoreProcessor implements Co
         return warnings;
     }
 
-    public void renameScript(String oldName, String newName) throws 
AuthenticationRequiredException, ScriptNotFoundException, DuplicateException {
-        authenticationCheck();
+    public void renameScript(Session session, String oldName, String newName) 
throws AuthenticationRequiredException, ScriptNotFoundException, 
DuplicateException {
+        authenticationCheck(session);
         try {
-            sieveRepository.renameScript(getUser(), oldName, newName);
+            sieveRepository.renameScript(session.getUser(), oldName, newName);
         } catch (UserNotFoundException ex) {
             throw new ManageSieveRuntimeException(ex);
         } catch (StorageException ex) {
@@ -152,10 +149,10 @@ public class CoreProcessor implements Co
         }
     }
 
-    public void setActive(String name) throws AuthenticationRequiredException, 
ScriptNotFoundException {
-        authenticationCheck();
+    public void setActive(Session session, String name) throws 
AuthenticationRequiredException, ScriptNotFoundException {
+        authenticationCheck(session);
         try {
-            sieveRepository.setActive(getUser(), name);
+            sieveRepository.setActive(session.getUser(), name);
         } catch (UserNotFoundException ex) {
             throw new ManageSieveRuntimeException(ex);
         } catch (StorageException ex) {
@@ -163,10 +160,10 @@ public class CoreProcessor implements Co
         }
     }
 
-    public String getActive() throws AuthenticationRequiredException, 
ScriptNotFoundException, StorageException {
-        authenticationCheck();
+    public String getActive(Session session) throws 
AuthenticationRequiredException, ScriptNotFoundException, StorageException {
+        authenticationCheck(session);
         try {
-            return IOUtils.toString(sieveRepository.getActive(getUser()));
+            return 
IOUtils.toString(sieveRepository.getActive(session.getUser()));
         } catch (UserNotFoundException ex) {
             throw new ManageSieveRuntimeException(ex);
         } catch (IOException e) {
@@ -174,28 +171,21 @@ public class CoreProcessor implements Co
         }
     }
     
-    protected String getUser() {
-        return session.getUser();
+    protected void authenticationCheck(Session session) throws 
AuthenticationRequiredException {
+        ensureUser(session);
+        if (!session.isAuthenticated()) {
+            throw new AuthenticationRequiredException();
+        }
     }
 
-    private void ensureUser() {
+    private void ensureUser(Session session) {
         try {
-            if (usersRepository.contains(session.getUser())) {
+            if (session.getUser() == null || 
!usersRepository.contains(session.getUser())) {
                 throw new RuntimeException("User " + session.getUser() + " not 
found");
             }
         } catch (UsersRepositoryException e) {
             Throwables.propagate(e);
         }
     }
-    
-    protected void authenticationCheck() throws 
AuthenticationRequiredException {
-        if (!isAuthenticated()) {
-            throw new AuthenticationRequiredException();
-
-        }
-    }
 
-    protected boolean isAuthenticated() {
-        return session.isAuthenticated();
-    }
 }
\ No newline at end of file

Modified: 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/transcode/LineToCore.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/transcode/LineToCore.java?rev=1720562&r1=1720561&r2=1720562&view=diff
==============================================================================
--- 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/transcode/LineToCore.java
 (original)
+++ 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/transcode/LineToCore.java
 Thu Dec 17 14:51:38 2015
@@ -22,6 +22,7 @@ package org.apache.james.managesieve.tra
 
 import org.apache.james.managesieve.api.ArgumentException;
 import org.apache.james.managesieve.api.AuthenticationRequiredException;
+import org.apache.james.managesieve.api.Session;
 import org.apache.james.managesieve.api.SyntaxException;
 import org.apache.james.managesieve.api.commands.Capability.Capabilities;
 import org.apache.james.managesieve.api.commands.CoreCommands;
@@ -40,88 +41,63 @@ import java.util.NoSuchElementException;
 import java.util.Scanner;
 
 /**
- * <code>LineToCore</code>
+ * Parses the user input and calls the underlying command processor
  */
 public class LineToCore{
     
-    private CoreCommands _core = null;
+    private final CoreCommands core;
 
-    /**
-     * Creates a new instance of LineToCore.
-     *
-     */
-    private LineToCore() {
-        super();
-    }
-    
-    /**
-     * Creates a new instance of LineToCore.
-     *
-     * @param core
-     */
     public LineToCore(CoreCommands core) {
-        this();
-        _core = core;
+        this.core = core;
     }
     
-    public Map<Capabilities, String> capability(String args) throws 
ArgumentException
-    {
-        if (!args.trim().isEmpty())
-        {
+    public Map<Capabilities, String> capability(Session session, String args) 
throws ArgumentException {
+        if (!args.trim().isEmpty()) {
             throw new ArgumentException("Too many arguments: " + args);
         }
-        return _core.capability();
+        return core.capability(session);
     }
     
-    public void deleteScript(String args) throws 
AuthenticationRequiredException, ScriptNotFoundException, IsActiveException, 
ArgumentException
-    {       
+    public void deleteScript(Session session, String args) throws 
AuthenticationRequiredException, ScriptNotFoundException, IsActiveException, 
ArgumentException {
         String scriptName = ParserUtils.getScriptName(args);
-        if (null == scriptName || scriptName.isEmpty())
-        {
+        if (null == scriptName || scriptName.isEmpty()) {
             throw new ArgumentException("Missing argument: script name");
         }
         
         Scanner scanner = new 
Scanner(args.substring(scriptName.length()).trim()).useDelimiter("\\A");
-        if (scanner.hasNext())
-        {
+        if (scanner.hasNext()) {
             throw new ArgumentException("Too many arguments: " + 
scanner.next());
         }
-        _core.deleteScript(ParserUtils.unquote(scriptName));
+        core.deleteScript(session, ParserUtils.unquote(scriptName));
     }    
     
-    public String getScript(String args) throws 
AuthenticationRequiredException, ScriptNotFoundException, ArgumentException, 
StorageException {
+    public String getScript(Session session, String args) throws 
AuthenticationRequiredException, ScriptNotFoundException, ArgumentException, 
StorageException {
         String scriptName = ParserUtils.getScriptName(args);
-        if (null == scriptName || scriptName.isEmpty())
-        {
+        if (null == scriptName || scriptName.isEmpty()) {
             throw new ArgumentException("Missing argument: script name");
         }
         Scanner scanner = new 
Scanner(args.substring(scriptName.length()).trim()).useDelimiter("\\A");
-        if (scanner.hasNext())
-        {
+        if (scanner.hasNext()) {
             throw new ArgumentException("Too many arguments: " + 
scanner.next());
         }
-        return _core.getScript(ParserUtils.unquote(scriptName));
+        return core.getScript(session, ParserUtils.unquote(scriptName));
     }     
     
-    public List<String> checkScript(String args) throws ArgumentException, 
AuthenticationRequiredException, SyntaxException
-    {
-        if (args.trim().isEmpty())
-        {
+    public List<String> checkScript(Session session, String args) throws 
ArgumentException, AuthenticationRequiredException, SyntaxException {
+        if (args.trim().isEmpty()) {
             throw new ArgumentException("Missing argument: script content");
         }
-        return _core.checkScript(args);
+        return core.checkScript(session, args);
     }
 
-    public void haveSpace(String args) throws AuthenticationRequiredException,
-            QuotaExceededException, ArgumentException {
+    public void haveSpace(Session session, String args) throws 
AuthenticationRequiredException, QuotaExceededException, ArgumentException {
         String scriptName = ParserUtils.getScriptName(args);
         if (null == scriptName || scriptName.isEmpty()) {
             throw new ArgumentException("Missing argument: script name");
         }
 
         Scanner scanner = new 
Scanner(args.substring(scriptName.length()).trim());
-        long size = 0;
-
+        long size;
         try {
             size = scanner.nextLong();
         } catch (InputMismatchException ex) {
@@ -134,79 +110,66 @@ public class LineToCore{
         if (scanner.hasNext()) {
             throw new ArgumentException("Too many arguments: " + 
scanner.next().trim());
         }
-        _core.haveSpace(ParserUtils.unquote(scriptName), size);
+        core.haveSpace(session, ParserUtils.unquote(scriptName), size);
     }
 
-    public List<ScriptSummary> listScripts(String args) throws 
AuthenticationRequiredException, ArgumentException {
-        if (!args.trim().isEmpty())
-        {
+    public List<ScriptSummary> listScripts(Session session, String args) 
throws AuthenticationRequiredException, ArgumentException {
+        if (!args.trim().isEmpty()) {
             throw new ArgumentException("Too many arguments: " + args);
         }
-        return _core.listScripts();
+        return core.listScripts(session);
     }
 
-    public List<String> putScript(String args)
-            throws AuthenticationRequiredException, SyntaxException, 
QuotaExceededException, ArgumentException {
+    public List<String> putScript(Session session, String args) throws 
AuthenticationRequiredException, SyntaxException, QuotaExceededException, 
ArgumentException {
         String scriptName = ParserUtils.getScriptName(args);
-        if (null == scriptName || scriptName.isEmpty())
-        {
+        if (null == scriptName || scriptName.isEmpty()) {
             throw new ArgumentException("Missing argument: script name");
         }
         Scanner scanner = new 
Scanner(args.substring(scriptName.length()).trim()).useDelimiter("\\A");
-        if (!scanner.hasNext())
-        {
+        if (!scanner.hasNext()) {
             throw new ArgumentException("Missing argument: script content");
         }
         String content = scanner.next();
-        return _core.putScript(ParserUtils.unquote(scriptName), content);
+        return core.putScript(session, ParserUtils.unquote(scriptName), 
content);
     }
 
-    public void renameScript(String args)
-            throws AuthenticationRequiredException, ScriptNotFoundException,
-            DuplicateException, ArgumentException {
+    public void renameScript(Session session, String args) throws 
AuthenticationRequiredException, ScriptNotFoundException, DuplicateException, 
ArgumentException {
         String oldName = ParserUtils.getScriptName(args);
-        if (null == oldName || oldName.isEmpty())
-        {
+        if (null == oldName || oldName.isEmpty()) {
             throw new ArgumentException("Missing argument: old script name");
         }
         
         String newName = 
ParserUtils.getScriptName(args.substring(oldName.length()));
-        if (null == newName || newName.isEmpty())
-        {
+        if (null == newName || newName.isEmpty()) {
             throw new ArgumentException("Missing argument: new script name");
         } 
         
         Scanner scanner = new Scanner(args.substring(oldName.length() + 1 + 
newName.length()).trim()).useDelimiter("\\A");
-        if (scanner.hasNext())
-        {
+        if (scanner.hasNext()) {
             throw new ArgumentException("Too many arguments: " + 
scanner.next());
         }
-        _core.renameScript(oldName, newName);    
+        core.renameScript(session, oldName, newName);
     }
 
-    public void setActive(String args) throws AuthenticationRequiredException,
-            ScriptNotFoundException, ArgumentException {
+    public void setActive(Session session, String args) throws 
AuthenticationRequiredException, ScriptNotFoundException, ArgumentException {
         String scriptName = ParserUtils.getScriptName(args);
-        if (null == scriptName || scriptName.isEmpty())
-        {
+        if (null == scriptName || scriptName.isEmpty()) {
             throw new ArgumentException("Missing argument: script name");
         }
         
         Scanner scanner = new 
Scanner(args.substring(scriptName.length()).trim()).useDelimiter("\\A");
-        if (scanner.hasNext())
-        {
+        if (scanner.hasNext()) {
             throw new ArgumentException("Too many arguments: " + 
scanner.next());
         }
-        _core.setActive(ParserUtils.unquote(scriptName));
+        core.setActive(session, ParserUtils.unquote(scriptName));
     } 
     
-    public String getActive(String args) throws 
AuthenticationRequiredException, ScriptNotFoundException, ArgumentException, 
StorageException {
+    public String getActive(Session session, String args) throws 
AuthenticationRequiredException, ScriptNotFoundException, ArgumentException, 
StorageException {
         Scanner scanner = new Scanner(args.trim()).useDelimiter("\\A");
-        if (scanner.hasNext())
-        {
+        if (scanner.hasNext()) {
             throw new ArgumentException("Too many arguments: " + 
scanner.next());
         }
-        return _core.getActive();
+        return core.getActive(session);
     }  
 
 }

Modified: 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/transcode/LineToCoreToLine.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/transcode/LineToCoreToLine.java?rev=1720562&r1=1720561&r2=1720562&view=diff
==============================================================================
--- 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/transcode/LineToCoreToLine.java
 (original)
+++ 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/transcode/LineToCoreToLine.java
 Thu Dec 17 14:51:38 2015
@@ -22,6 +22,7 @@ package org.apache.james.managesieve.tra
 
 import org.apache.james.managesieve.api.ArgumentException;
 import org.apache.james.managesieve.api.AuthenticationRequiredException;
+import org.apache.james.managesieve.api.Session;
 import org.apache.james.managesieve.api.SyntaxException;
 import org.apache.james.managesieve.api.commands.Capability.Capabilities;
 import org.apache.james.sieverepository.api.ScriptSummary;
@@ -36,50 +37,53 @@ import java.util.Map.Entry;
 import java.util.Set;
 
 /**
- * <code>LineToCoreToLine</code>
+ * Calls the parser (that handles interactions with the processor)
+ * and format the outputs into an answer.
+ *
+ * You can use this as a base for implementing a manageSieve server.
+ *
+ * Note : you still need to identify the given commands.
  */
 public class LineToCoreToLine {
     
-    private LineToCore _lineToCore = null;
-
-    /**
-     * Creates a new instance of LineToCoreToLine.
-     *
-     */
-    private LineToCoreToLine() {
-        super();
-    }
+    private final LineToCore lineToCore;
     
     public LineToCoreToLine(LineToCore lineToCore) {
-        this();
-        _lineToCore = lineToCore;
+        this.lineToCore = lineToCore;
     }    
 
-    public String capability(String args) {       
-        Set<Entry<Capabilities, String>> entries = null;
+    public String capability(Session session, String args) {
         try {
-            entries =_lineToCore.capability(args).entrySet(); 
+            Set<Entry<Capabilities, String>> entries = 
lineToCore.capability(session, args).entrySet();
+            StringBuilder builder = new StringBuilder();
+            for (Entry<Capabilities, String> entry : entries) {
+                builder.append(entry.getKey().toString())
+                    .append(' ')
+                    .append(entry.getValue() == null ? "" : entry.getValue())
+                    .append("\r\n");
+            }
+            builder.append("OK");
+            return builder.toString();
         } catch (ArgumentException ex) {
             return "NO \"" + ex.getMessage() + "\"";
         }
-        
-        StringBuilder builder = new StringBuilder();
-        for (Entry<Capabilities, String> entry : entries)
-        {
-            builder
-                .append(entry.getKey().toString())
-                .append(' ')
-                .append(null == entry.getValue() ? "" : entry.getValue())
-                .append("\r\n");
-        }
-        builder.append("OK");
-        return builder.toString();
     }
 
-    public String checkScript(String args) {
-        List<String> warnings = null;
+    public String checkScript(Session session, String args) {
         try {
-            warnings = _lineToCore.checkScript(args);
+            List<String> warnings = lineToCore.checkScript(session, args);
+            StringBuilder builder = new StringBuilder();
+            if (!warnings.isEmpty()) {
+                builder.append("OK (WARNINGS)");
+                for (String warning : warnings) {
+                    builder.append(" \"")
+                        .append(warning)
+                        .append('"');
+                }
+            } else {
+                builder.append("OK");
+            }
+            return builder.toString();
         } catch (AuthenticationRequiredException ex) {
             return "NO";
         } catch (ArgumentException ex) {
@@ -87,25 +91,11 @@ public class LineToCoreToLine {
         } catch (SyntaxException ex) {
             return "NO \"Syntax Error: " + ex.getMessage() + "\"";
         }
-
-        StringBuilder builder = new StringBuilder();
-        if (!warnings.isEmpty()) {
-            builder.append("OK (WARNINGS)");
-            for (String warning : warnings) {
-                builder
-                .append(" \"")
-                .append(warning)
-                .append('"');
-            }
-        } else {
-            builder.append("OK");
-        }
-        return builder.toString();
     }
 
-    public String deleteScript(String args) {
+    public String deleteScript(Session session, String args) {
         try {
-            _lineToCore.deleteScript(args);
+            lineToCore.deleteScript(session, args);
         } catch (AuthenticationRequiredException ex) {
             return "NO";
         } catch (ScriptNotFoundException ex) {
@@ -118,10 +108,9 @@ public class LineToCoreToLine {
         return "OK";
     }
 
-    public String getScript(String args) {
-        String content = null;
+    public String getScript(Session session, String args) {
         try {
-            content = _lineToCore.getScript(args);
+            return lineToCore.getScript(session, args) + "\r\n" + "OK";
         } catch (AuthenticationRequiredException ex) {
             return "NO";
         } catch (ScriptNotFoundException ex) {
@@ -131,16 +120,12 @@ public class LineToCoreToLine {
         } catch (StorageException ex) {
             return "NO \"" + ex.getMessage() + "\"";
         }
-        StringBuilder builder = new StringBuilder(content);
-        builder
-            .append("\r\n")
-            .append("OK");
-        return builder.toString();
+
     }
 
-    public String haveSpace(String args) {
+    public String haveSpace(Session session, String args) {
         try {
-            _lineToCore.haveSpace(args);
+            lineToCore.haveSpace(session, args);
         } catch (AuthenticationRequiredException ex) {
             return "NO";
         } catch (QuotaExceededException ex) {
@@ -151,39 +136,45 @@ public class LineToCoreToLine {
         return "OK";
     }
 
-    public String listScripts(String args) {
-        List<ScriptSummary> summaries = null;
+    public String listScripts(Session session, String args) {
         try {
-            summaries = _lineToCore.listScripts(args);
+            List<ScriptSummary> summaries = lineToCore.listScripts(session, 
args);
+            StringBuilder builder = new StringBuilder();
+            for (ScriptSummary summary : summaries) {
+                builder.append('"')
+                    .append(summary.getName())
+                    .append('"');
+                if (summary.isActive()) {
+                    builder.append(' ')
+                        .append("ACTIVE");
+                }
+                builder.append("\r\n");
+            }
+            builder.append("OK");
+            return builder.toString();
         } catch (AuthenticationRequiredException ex) {
             return "NO";
         } catch (ArgumentException ex) {
             return "NO \"" + ex.getMessage() + "\"";
         }
-        StringBuilder builder = new StringBuilder();
-        for (ScriptSummary summary : summaries)
-        {
-            builder
-                .append('"')
-                .append(summary.getName())
-                .append('"');
-            if (summary.isActive())
-            {
-                builder
-                    .append(' ')
-                    .append("ACTIVE");
-            }
-            builder
-                .append("\r\n");
-        }
-        builder.append("OK");
-        return builder.toString();
     }
 
-    public String putScript(String args) {
-        List<String> warnings = null;
+    public String putScript(Session session, String args) {
         try {
-            warnings = _lineToCore.putScript(args);
+            List<String> warnings = lineToCore.putScript(session, args);
+            StringBuilder builder = new StringBuilder();
+            if (!warnings.isEmpty()) {
+                builder.append("OK (WARNINGS)");
+                for (String warning : warnings) {
+                    builder
+                        .append(" \"")
+                        .append(warning)
+                        .append('"');
+                }
+            } else {
+                builder.append("OK");
+            }
+            return builder.toString();
         } catch (AuthenticationRequiredException ex) {
             return "NO";
         } catch (SyntaxException ex) {
@@ -193,24 +184,12 @@ public class LineToCoreToLine {
         } catch (ArgumentException ex) {
             return "NO \"" + ex.getMessage() + "\"";
         }
-        StringBuilder builder = new StringBuilder();
-        if (!warnings.isEmpty()) {
-            builder.append("OK (WARNINGS)");
-            for (String warning : warnings) {
-                builder
-                    .append(" \"")
-                    .append(warning)
-                    .append('"');
-            }
-        } else {
-            builder.append("OK");
-        }
-        return builder.toString();
+
     }
 
-    public String renameScript(String args) {
+    public String renameScript(Session session, String args) {
         try {
-            _lineToCore.renameScript(args);
+            lineToCore.renameScript(session, args);
         } catch (AuthenticationRequiredException ex) {
             return "NO";
         } catch (ScriptNotFoundException ex) {
@@ -220,12 +199,12 @@ public class LineToCoreToLine {
         } catch (ArgumentException ex) {
             return "NO \"" + ex.getMessage() + "\"";
         }
-    return "OK";
+        return "OK";
     }
 
-    public String setActive(String args) {
+    public String setActive(Session session, String args) {
         try {
-            _lineToCore.setActive(args);
+            lineToCore.setActive(session, args);
         } catch (AuthenticationRequiredException ex) {
             return "NO";
         } catch (ScriptNotFoundException ex) {
@@ -236,10 +215,9 @@ public class LineToCoreToLine {
         return "OK";
     }
     
-    public String getActive(String args) {
-        String content = null;
+    public String getActive(Session session, String args) {
         try {
-            content = _lineToCore.getActive(args);
+            return lineToCore.getActive(session, args) + "\r\n" + "OK";
         } catch (AuthenticationRequiredException ex) {
             return "NO";
         } catch (ScriptNotFoundException ex) {
@@ -249,11 +227,6 @@ public class LineToCoreToLine {
         } catch (StorageException ex) {
             return "NO \"" + ex.getMessage() + "\"";
         }
-        StringBuilder builder = new StringBuilder(content);
-        builder
-            .append("\r\n")
-            .append("OK");
-        return builder.toString();
     }
 
 }

Modified: 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/util/SettableSession.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/util/SettableSession.java?rev=1720562&r1=1720561&r2=1720562&view=diff
==============================================================================
--- 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/util/SettableSession.java
 (original)
+++ 
james/project/trunk/protocols/managesieve/src/main/java/org/apache/james/managesieve/util/SettableSession.java
 Thu Dec 17 14:51:38 2015
@@ -24,25 +24,28 @@ import org.apache.james.managesieve.api.
 
 public class SettableSession implements Session {
 
-    String _user = null;
-    boolean _isAuthenticated = false;
+    private String user;
+    private boolean isAuthenticated;
+
+    public SettableSession() {
+        this.isAuthenticated = false;
+    }
 
     public String getUser() {
-        return _user;
+        return user;
     }
 
     public boolean isAuthenticated() {
-        return _isAuthenticated;
+        return isAuthenticated;
     }
 
-
     public void setAuthentication(boolean isAuthenticated) {
-        _isAuthenticated = isAuthenticated;
+        this.isAuthenticated = isAuthenticated;
 
     }
 
     public void setUser(String user) {
-        _user = user;
+        this.user = user;
     }
 
 }

Modified: 
james/project/trunk/protocols/managesieve/src/test/java/org/apache/james/managesieve/core/CoreProcessorTestCase.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/protocols/managesieve/src/test/java/org/apache/james/managesieve/core/CoreProcessorTestCase.java?rev=1720562&r1=1720561&r2=1720562&view=diff
==============================================================================
--- 
james/project/trunk/protocols/managesieve/src/test/java/org/apache/james/managesieve/core/CoreProcessorTestCase.java
 (original)
+++ 
james/project/trunk/protocols/managesieve/src/test/java/org/apache/james/managesieve/core/CoreProcessorTestCase.java
 Thu Dec 17 14:51:38 2015
@@ -63,7 +63,7 @@ public class CoreProcessorTestCase {
         sieveParser = mock(SieveParser.class);
         sieveRepository = mock(SieveRepository.class);
         UsersRepository usersRepository = mock(UsersRepository.class);
-        core = new CoreProcessor(session, sieveRepository, usersRepository, 
sieveParser);
+        core = new CoreProcessor(sieveRepository, usersRepository, 
sieveParser);
         when(usersRepository.contains(USER)).thenAnswer(new Answer<Boolean>() {
             public Boolean answer(InvocationOnMock invocationOnMock) throws 
Throwable {
                 return true;
@@ -79,7 +79,7 @@ public class CoreProcessorTestCase {
                 return Lists.newArrayList("a", "b", "c");
             }
         });
-        
assertThat(core.capability()).containsEntry(Capabilities.IMPLEMENTATION, 
CoreProcessor.IMPLEMENTATION_DESCRIPTION)
+        
assertThat(core.capability(session)).containsEntry(Capabilities.IMPLEMENTATION, 
CoreProcessor.IMPLEMENTATION_DESCRIPTION)
             .containsEntry(Capabilities.VERSION, 
CoreProcessor.MANAGE_SIEVE_VERSION)
             .containsEntry(Capabilities.SIEVE, "a b c")
             .containsKey(Capabilities.GETACTIVE);
@@ -94,7 +94,7 @@ public class CoreProcessorTestCase {
             }
         });
         session.setUser(USER);
-        
assertThat(core.capability()).containsEntry(Capabilities.IMPLEMENTATION, 
CoreProcessor.IMPLEMENTATION_DESCRIPTION)
+        
assertThat(core.capability(session)).containsEntry(Capabilities.IMPLEMENTATION, 
CoreProcessor.IMPLEMENTATION_DESCRIPTION)
             .containsEntry(Capabilities.VERSION, 
CoreProcessor.MANAGE_SIEVE_VERSION)
             .containsEntry(Capabilities.SIEVE, "a b c")
             .containsEntry(Capabilities.OWNER, USER)
@@ -104,7 +104,8 @@ public class CoreProcessorTestCase {
     @Test(expected = AuthenticationRequiredException.class)
     public final void testCheckScriptUnauthorised() throws 
AuthenticationRequiredException, SyntaxException {
         session.setAuthentication(false);
-        core.checkScript("warning");
+        session.setUser(USER);
+        core.checkScript(session, "warning");
     }
 
     @Test
@@ -116,7 +117,7 @@ public class CoreProcessorTestCase {
                 return Lists.newArrayList("warning1", "warning2");
             }
         });
-        assertThat(core.checkScript(CONTENT)).containsOnly("warning1", 
"warning2");
+        assertThat(core.checkScript(session, 
CONTENT)).containsOnly("warning1", "warning2");
     }
 
     @Test(expected = SyntaxException.class)
@@ -124,13 +125,14 @@ public class CoreProcessorTestCase {
         doThrow(new SyntaxException("Syntax 
exception")).when(sieveParser).parse(CONTENT);
         session.setAuthentication(true);
         session.setUser(USER);
-        core.checkScript(CONTENT);
+        core.checkScript(session, CONTENT);
     }
 
     @Test(expected = AuthenticationRequiredException.class)
     public final void testDeleteScriptUnauthorised() throws Exception {
         session.setAuthentication(false);
-        core.deleteScript(SCRIPT);
+        session.setUser(USER);
+        core.deleteScript(session, SCRIPT);
     }
 
     @Test(expected = ScriptNotFoundException.class)
@@ -138,7 +140,7 @@ public class CoreProcessorTestCase {
         doThrow(new 
ScriptNotFoundException()).when(sieveRepository).deleteScript(USER, SCRIPT);
         session.setAuthentication(true);
         session.setUser(USER);
-        core.deleteScript(SCRIPT);
+        core.deleteScript(session, SCRIPT);
     }
 
 
@@ -147,7 +149,7 @@ public class CoreProcessorTestCase {
         session.setAuthentication(true);
         session.setUser(USER);
         sieveRepository.putScript(USER, SCRIPT, CONTENT);
-        core.deleteScript(SCRIPT);
+        core.deleteScript(session, SCRIPT);
         verify(sieveRepository).deleteScript(USER, SCRIPT);
     }
 
@@ -156,13 +158,14 @@ public class CoreProcessorTestCase {
         doThrow(new 
IsActiveException()).when(sieveRepository).deleteScript(USER, SCRIPT);
         session.setAuthentication(true);
         session.setUser(USER);
-        core.deleteScript(SCRIPT);
+        core.deleteScript(session, SCRIPT);
     }
 
     @Test(expected = AuthenticationRequiredException.class)
     public final void testGetUnauthorisedScript() throws Exception {
         session.setAuthentication(false);
-        core.getScript(SCRIPT);
+        session.setUser(USER);
+        core.getScript(session, SCRIPT);
     }
 
     @Test(expected = ScriptNotFoundException.class)
@@ -170,7 +173,7 @@ public class CoreProcessorTestCase {
         doThrow(new 
ScriptNotFoundException()).when(sieveRepository).getScript(USER, SCRIPT);
         session.setAuthentication(true);
         session.setUser(USER);
-        core.getScript(SCRIPT);
+        core.getScript(session, SCRIPT);
     }
 
     @Test
@@ -182,27 +185,29 @@ public class CoreProcessorTestCase {
                 return CONTENT;
             }
         });
-        assertThat(core.getScript(SCRIPT)).isEqualTo(CONTENT);
+        assertThat(core.getScript(session, SCRIPT)).isEqualTo(CONTENT);
     }
 
     @Test(expected = AuthenticationRequiredException.class)
     public final void testHaveSpaceUnauthorised() throws Exception {
         session.setAuthentication(false);
-        core.haveSpace(SCRIPT, Long.MAX_VALUE);
+        session.setUser(USER);
+        core.haveSpace(session, SCRIPT, Long.MAX_VALUE);
     }
 
     @Test
     public final void testHaveSpace() throws Exception {
         session.setAuthentication(true);
         session.setUser(USER);
-        core.haveSpace(SCRIPT, Long.MAX_VALUE);
+        core.haveSpace(session, SCRIPT, Long.MAX_VALUE);
         verify(sieveRepository).haveSpace(USER, SCRIPT, Long.MAX_VALUE);
     }
 
     @Test(expected = AuthenticationRequiredException.class)
     public final void testListScriptsUnauthorised() throws Exception {
         session.setAuthentication(false);
-        core.listScripts();
+        session.setUser(USER);
+        core.listScripts(session);
     }
 
     @Test
@@ -216,20 +221,21 @@ public class CoreProcessorTestCase {
             }
         });
         sieveRepository.putScript(USER, SCRIPT, CONTENT);
-        assertThat(core.listScripts()).containsOnly(new ScriptSummary(SCRIPT, 
false));
+        assertThat(core.listScripts(session)).containsOnly(new 
ScriptSummary(SCRIPT, false));
     }
 
     @Test(expected = AuthenticationRequiredException.class)
     public final void testPutScriptUnauthorised() throws Exception {
         session.setAuthentication(false);
-        core.putScript(SCRIPT, CONTENT);
+        session.setUser(USER);
+        core.putScript(session, SCRIPT, CONTENT);
     }
 
     @Test
     public final void testPutScriptAuthorized() throws Exception {
         session.setAuthentication(true);
         session.setUser(USER);
-        core.putScript(SCRIPT, CONTENT);
+        core.putScript(session, SCRIPT, CONTENT);
         verify(sieveRepository).putScript(USER, SCRIPT, CONTENT);
     }
 
@@ -238,41 +244,44 @@ public class CoreProcessorTestCase {
         doThrow(new SyntaxException("Syntax 
exception")).when(sieveParser).parse(CONTENT);
         session.setAuthentication(true);
         session.setUser(USER);
-        core.putScript(SCRIPT, CONTENT);
+        core.putScript(session, SCRIPT, CONTENT);
     }
 
     @Test(expected = AuthenticationRequiredException.class)
     public final void testRenameScriptUnauthorized() throws Exception {
         session.setAuthentication(false);
-        core.renameScript(OLDNAME, NEW_NAME);
+        session.setUser(USER);
+        core.renameScript(session, OLDNAME, NEW_NAME);
     }
 
     @Test
     public final void testRenameScript() throws Exception {
         session.setAuthentication(true);
         session.setUser(USER);
-        core.renameScript(OLDNAME, NEW_NAME);
+        core.renameScript(session, OLDNAME, NEW_NAME);
         verify(sieveRepository).renameScript(USER, OLDNAME, NEW_NAME);
     }
 
     @Test(expected = AuthenticationRequiredException.class)
     public final void testSetActiveUnauthorised() throws Exception {
         session.setAuthentication(false);
-        core.setActive(SCRIPT);
+        session.setUser(USER);
+        core.setActive(session, SCRIPT);
     }
 
     @Test
     public final void testSetActive() throws Exception {
         session.setAuthentication(true);
         session.setUser(USER);
-        core.setActive(SCRIPT);
+        core.setActive(session, SCRIPT);
         verify(sieveRepository).setActive(USER, SCRIPT);
     }
 
     @Test(expected = AuthenticationRequiredException.class)
     public final void testGetUnauthorisedActive() throws Exception {
         session.setAuthentication(false);
-        core.getActive();
+        session.setUser(USER);
+        core.getActive(session);
     }
 
     @Test(expected = ScriptNotFoundException.class)
@@ -280,7 +289,7 @@ public class CoreProcessorTestCase {
         doThrow(new 
ScriptNotFoundException()).when(sieveRepository).getActive(USER);
         session.setAuthentication(true);
         session.setUser(USER);
-        core.getActive();
+        core.getActive(session);
     }
 
     @Test
@@ -293,6 +302,6 @@ public class CoreProcessorTestCase {
                 return CONTENT;
             }
         });
-        assertThat(core.getActive()).isEqualTo(CONTENT);
+        assertThat(core.getActive(session)).isEqualTo(CONTENT);
     }
 }

Modified: 
james/project/trunk/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/managesieve/ManageSieveMailet.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/managesieve/ManageSieveMailet.java?rev=1720562&r1=1720561&r2=1720562&view=diff
==============================================================================
--- 
james/project/trunk/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/managesieve/ManageSieveMailet.java
 (original)
+++ 
james/project/trunk/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/managesieve/ManageSieveMailet.java
 Thu Dec 17 14:51:38 2015
@@ -29,6 +29,7 @@ import java.util.Scanner;
 import javax.inject.Inject;
 import javax.mail.MessagingException;
 
+import com.google.common.annotations.VisibleForTesting;
 import org.apache.james.managesieve.api.SieveParser;
 import org.apache.james.managesieve.core.CoreProcessor;
 import org.apache.james.managesieve.transcode.LineToCore;
@@ -38,7 +39,7 @@ import org.apache.james.sieverepository.
 import 
org.apache.james.transport.mailets.managesieve.transcode.MessageToCoreToMessage;
 import org.apache.james.user.api.UsersRepository;
 import org.apache.mailet.Mail;
-import org.apache.mailet.MailAddress;
+import org.apache.mailet.MailetContext;
 import org.apache.mailet.base.GenericMailet;
 
 /**
@@ -83,26 +84,8 @@ import org.apache.mailet.base.GenericMai
  */
 public class ManageSieveMailet extends GenericMailet implements 
MessageToCoreToMessage.HelpProvider {
 
-    private class MailSession extends SettableSession {
-
-        public MailSession() {
-            super();
-        }
-
-        public void setMail(Mail mail) {
-            setUser(getUser(mail.getSender()));
-            setAuthentication(null != 
mail.getAttribute(SMTP_AUTH_USER_ATTRIBUTE_NAME));
-        }
-
-        protected String getUser(MailAddress addr) {
-            return addr.getLocalPart() + '@' + (null == addr.getDomain() ? 
"localhost" : addr.getDomain());
-        }
-
-    }
-
     public final static String SMTP_AUTH_USER_ATTRIBUTE_NAME = 
"org.apache.james.SMTPAuthUser";
 
-    private MailSession session = null;
     // Injected
     private SieveRepository sieveRepository = null;
     // Injected
@@ -126,11 +109,10 @@ public class ManageSieveMailet extends G
         
         setHelpURL(getInitParameter("helpURL"));
         cache = getInitParameter("cache", true);
-        session = new MailSession();
         transcoder = new MessageToCoreToMessage(
             new LineToCoreToLine(
                 new LineToCore(
-                    new CoreProcessor(session, sieveRepository, 
usersRepository, sieveParser))),
+                    new CoreProcessor(sieveRepository, usersRepository, 
sieveParser))),
             this);
     }
 
@@ -138,18 +120,19 @@ public class ManageSieveMailet extends G
     public void service(Mail mail) throws MessagingException {
         // Sanity checks
         if (mail.getSender() == null) {
-            getMailetContext().log("ERROR: Sender is null");
+            getMailetContext().log(MailetContext.LogLevel.ERROR, "Sender is 
null");
             return;
         }
-
         if 
(!getMailetContext().isLocalServer(mail.getSender().getDomain().toLowerCase())) 
{
-            getMailetContext().log("ERROR: Sender not local");
+            getMailetContext().log(MailetContext.LogLevel.ERROR, "Sender not 
local");
             return;
         }
 
         // Update the Session for the current mail and execute
-        session.setMail(mail);
-        getMailetContext().sendMail(transcoder.execute(mail.getMessage()));
+        SettableSession session = new SettableSession();
+        
session.setAuthentication(mail.getAttribute(SMTP_AUTH_USER_ATTRIBUTE_NAME) != 
null);
+        session.setUser(mail.getSender().getLocalPart() + '@' + 
(mail.getSender().getDomain() == null ? "localhost" : 
mail.getSender().getDomain()));
+        getMailetContext().sendMail(transcoder.execute(session, 
mail.getMessage()));
         mail.setState(Mail.GHOST);
         
         // And tidy up
@@ -176,7 +159,7 @@ public class ManageSieveMailet extends G
         return getClass().getName();
     }
 
-    protected void setHelpURL(String helpURL) throws MessagingException {
+    private void setHelpURL(String helpURL) throws MessagingException {
         try {
             this.helpURL = new URL(helpURL);
         } catch (MalformedURLException ex) {
@@ -184,12 +167,13 @@ public class ManageSieveMailet extends G
         }
     }
 
-    protected void clearCaches() {
+    private void clearCaches() {
         if (!cache) {
             help = null;
         }
     }
 
+    @VisibleForTesting
     public String getHelp() throws MessagingException {
         if (null == help) {
             help = computeHelp();
@@ -197,7 +181,7 @@ public class ManageSieveMailet extends G
         return help;
     }
 
-    protected String computeHelp() throws MessagingException {
+    private String computeHelp() throws MessagingException {
         InputStream stream = null;
         try {
             stream = helpURL.openStream();



---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org

Reply via email to