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: [email protected]
For additional commands, e-mail: [email protected]