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