Author: btellier
Date: Thu Dec 17 14:57:38 2015
New Revision: 1720580
URL: http://svn.apache.org/viewvc?rev=1720580&view=rev
Log:
JAMES-1618 HAVESPACE should be RFC-5804 compliant
Added:
james/project/trunk/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/HaveSpaceTest.java
james/project/trunk/mpt/impl/managesieve/core/src/main/resources/org/apache/james/managesieve/scripts/havespace.test
Modified:
james/project/trunk/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/host/JamesManageSieveHostSystem.java
james/project/trunk/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/host/ManageSieveHostSystem.java
james/project/trunk/mpt/impl/managesieve/core/src/main/resources/org/apache/james/managesieve/scripts/capability.test
james/project/trunk/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/ManageSieveFileTest.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/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
Modified:
james/project/trunk/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/host/JamesManageSieveHostSystem.java
URL:
http://svn.apache.org/viewvc/james/project/trunk/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/host/JamesManageSieveHostSystem.java?rev=1720580&r1=1720579&r2=1720580&view=diff
==============================================================================
---
james/project/trunk/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/host/JamesManageSieveHostSystem.java
(original)
+++
james/project/trunk/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/host/JamesManageSieveHostSystem.java
Thu Dec 17 14:57:38 2015
@@ -49,6 +49,11 @@ public abstract class JamesManageSieveHo
}
@Override
+ public void setMaxQuota(String user, long value) throws Exception {
+ sieveRepository.setQuota(user, value);
+ }
+
+ @Override
public Session newSession(Continuation continuation) throws Exception {
return new ManageSieveSession(processor, continuation);
}
Modified:
james/project/trunk/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/host/ManageSieveHostSystem.java
URL:
http://svn.apache.org/viewvc/james/project/trunk/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/host/ManageSieveHostSystem.java?rev=1720580&r1=1720579&r2=1720580&view=diff
==============================================================================
---
james/project/trunk/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/host/ManageSieveHostSystem.java
(original)
+++
james/project/trunk/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/host/ManageSieveHostSystem.java
Thu Dec 17 14:57:38 2015
@@ -23,4 +23,6 @@ import org.apache.james.mpt.api.HostSyst
public interface ManageSieveHostSystem extends HostSystem {
+ void setMaxQuota(String user, long value) throws Exception;
+
}
Added:
james/project/trunk/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/HaveSpaceTest.java
URL:
http://svn.apache.org/viewvc/james/project/trunk/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/HaveSpaceTest.java?rev=1720580&view=auto
==============================================================================
---
james/project/trunk/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/HaveSpaceTest.java
(added)
+++
james/project/trunk/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/HaveSpaceTest.java
Thu Dec 17 14:57:38 2015
@@ -0,0 +1,49 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+
+package org.apache.james.mpt.testsuite;
+
+import com.google.inject.Inject;
+import org.apache.james.mpt.host.ManageSieveHostSystem;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.util.Locale;
+
+public class HaveSpaceTest extends ManageSieveMPTTest {
+
+ @Inject
+ private static ManageSieveHostSystem hostSystem;
+
+ public HaveSpaceTest() throws Exception {
+ super(hostSystem);
+ }
+
+ @Before
+ public void setUp() throws Exception {
+ super.setUp();
+ hostSystem.setMaxQuota(USER, 50);
+ }
+
+ @Test
+ public void haveSpaceShouldWork() throws Exception {
+ scriptTest("havespace", Locale.US);
+ }
+
+}
Modified:
james/project/trunk/mpt/impl/managesieve/core/src/main/resources/org/apache/james/managesieve/scripts/capability.test
URL:
http://svn.apache.org/viewvc/james/project/trunk/mpt/impl/managesieve/core/src/main/resources/org/apache/james/managesieve/scripts/capability.test?rev=1720580&r1=1720579&r2=1720580&view=diff
==============================================================================
---
james/project/trunk/mpt/impl/managesieve/core/src/main/resources/org/apache/james/managesieve/scripts/capability.test
(original)
+++
james/project/trunk/mpt/impl/managesieve/core/src/main/resources/org/apache/james/managesieve/scripts/capability.test
Thu Dec 17 14:57:38 2015
@@ -18,11 +18,13 @@
################################################################
C: CAPABILITY
+SUB {
S: "SASL" "PLAIN"
S: "SIEVE" "log reject fileinto i;ascii-numeric envelope body"
S: "STARTTLS"
S: "IMPLEMENTATION" "Apache ManageSieve v1.0"
S: "VERSION" "1.0"
+}
S: OK
C: AUTHENTICATE "PLAIN"
@@ -31,10 +33,12 @@ C: user password
S: OK authentication successfull
C: CAPABILITY
+SUB {
S: "OWNER" "user"
S: "SASL" "PLAIN"
S: "SIEVE" "log reject fileinto i;ascii-numeric envelope body"
S: "STARTTLS"
S: "IMPLEMENTATION" "Apache ManageSieve v1.0"
S: "VERSION" "1.0"
+}
S: OK
\ No newline at end of file
Added:
james/project/trunk/mpt/impl/managesieve/core/src/main/resources/org/apache/james/managesieve/scripts/havespace.test
URL:
http://svn.apache.org/viewvc/james/project/trunk/mpt/impl/managesieve/core/src/main/resources/org/apache/james/managesieve/scripts/havespace.test?rev=1720580&view=auto
==============================================================================
---
james/project/trunk/mpt/impl/managesieve/core/src/main/resources/org/apache/james/managesieve/scripts/havespace.test
(added)
+++
james/project/trunk/mpt/impl/managesieve/core/src/main/resources/org/apache/james/managesieve/scripts/havespace.test
Thu Dec 17 14:57:38 2015
@@ -0,0 +1,38 @@
+################################################################
+# Licensed to the Apache Software Foundation (ASF) under one #
+# or more contributor license agreements. See the NOTICE file #
+# distributed with this work for additional information #
+# regarding copyright ownership. The ASF licenses this file #
+# to you under the Apache License, Version 2.0 (the #
+# "License"); you may not use this file except in compliance #
+# with the License. You may obtain a copy of the License at #
+# #
+# http://www.apache.org/licenses/LICENSE-2.0 #
+# #
+# Unless required by applicable law or agreed to in writing, #
+# software distributed under the License is distributed on an #
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY #
+# KIND, either express or implied. See the License for the #
+# specific language governing permissions and limitations #
+# under the License. #
+################################################################
+
+C: HAVESPACE
+S: NO "Missing argument: script name"
+
+C: HAVESPACE "scriptname"
+S: NO "Missing argument: script size"
+
+C: HAVESPACE "scriptname" 49
+S: NO
+
+C: AUTHENTICATE "PLAIN"
+S: \+ ""
+C: user password
+S: OK authentication successfull
+
+C: HAVESPACE "scriptname" 49
+S: OK
+
+C: HAVESPACE "scriptname" 51
+S: NO \(QUOTA/MAXSIZE\) "Quota exceeded"
\ No newline at end of file
Modified:
james/project/trunk/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/ManageSieveFileTest.java
URL:
http://svn.apache.org/viewvc/james/project/trunk/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/ManageSieveFileTest.java?rev=1720580&r1=1720579&r2=1720580&view=diff
==============================================================================
---
james/project/trunk/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/ManageSieveFileTest.java
(original)
+++
james/project/trunk/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/ManageSieveFileTest.java
Thu Dec 17 14:57:38 2015
@@ -21,6 +21,7 @@ package org.apache.james.mpt.managesieve
import org.apache.james.mpt.testsuite.AuthenticateTest;
import org.apache.james.mpt.testsuite.CapabilityTest;
+import org.apache.james.mpt.testsuite.HaveSpaceTest;
import org.apache.james.mpt.testsuite.LogoutTest;
import org.apache.james.mpt.testsuite.NoopTest;
import org.apache.james.mpt.testsuite.StartTlsTest;
@@ -38,7 +39,8 @@ import org.junit.runners.Suite;
LogoutTest.class,
AuthenticateTest.class,
StartTlsTest.class,
- CapabilityTest.class
+ CapabilityTest.class,
+ HaveSpaceTest.class
})
public class ManageSieveFileTest {
}
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=1720580&r1=1720579&r2=1720580&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:57:38 2015
@@ -23,12 +23,14 @@ package org.apache.james.managesieve.api
import org.apache.james.managesieve.api.AuthenticationRequiredException;
import org.apache.james.managesieve.api.Session;
import org.apache.james.sieverepository.api.exception.QuotaExceededException;
+import org.apache.james.sieverepository.api.exception.StorageException;
+import org.apache.james.sieverepository.api.exception.UserNotFoundException;
/**
* @see <a href=http://tools.ietf.org/html/rfc5804#section-2.5>RFC 5804
HAVESPACE Command</a>
*/
public interface HaveSpace {
- void haveSpace(Session session, String name, long size) throws
AuthenticationRequiredException, QuotaExceededException;
+ void haveSpace(Session session, String name, long size) throws
AuthenticationRequiredException, QuotaExceededException, UserNotFoundException,
StorageException;
}
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=1720580&r1=1720579&r2=1720580&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:57:38 2015
@@ -116,13 +116,9 @@ public class CoreProcessor implements Co
}
@Override
- public void haveSpace(Session session, String name, long size) throws
AuthenticationRequiredException, QuotaExceededException {
+ public void haveSpace(Session session, String name, long size) throws
AuthenticationRequiredException, QuotaExceededException, UserNotFoundException,
StorageException {
authenticationCheck(session);
- try {
- sieveRepository.haveSpace(session.getUser(), name, size);
- } catch (SieveRepositoryException ex) {
- throw new ManageSieveRuntimeException(ex);
- }
+ sieveRepository.haveSpace(session.getUser(), name, size);
}
@Override
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=1720580&r1=1720579&r2=1720580&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:57:38 2015
@@ -37,6 +37,7 @@ import org.apache.james.sieverepository.
import org.apache.james.sieverepository.api.exception.QuotaExceededException;
import org.apache.james.sieverepository.api.exception.ScriptNotFoundException;
import org.apache.james.sieverepository.api.exception.StorageException;
+import org.apache.james.sieverepository.api.exception.UserNotFoundException;
import java.util.InputMismatchException;
import java.util.List;
@@ -118,7 +119,7 @@ public class LineToCore{
return core.checkScript(session, args);
}
- public void haveSpace(Session session, String args) throws
AuthenticationRequiredException, QuotaExceededException, ArgumentException {
+ public void haveSpace(Session session, String args) throws
AuthenticationRequiredException, QuotaExceededException, ArgumentException,
UserNotFoundException, StorageException {
String scriptName = ParserUtils.getScriptName(args);
if (null == scriptName || scriptName.isEmpty()) {
throw new ArgumentException("Missing argument: script name");
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=1720580&r1=1720579&r2=1720580&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:57:38 2015
@@ -34,6 +34,7 @@ import org.apache.james.sieverepository.
import org.apache.james.sieverepository.api.exception.QuotaExceededException;
import org.apache.james.sieverepository.api.exception.ScriptNotFoundException;
import org.apache.james.sieverepository.api.exception.StorageException;
+import org.apache.james.sieverepository.api.exception.UserNotFoundException;
import java.util.List;
import java.util.Map.Entry;
@@ -175,6 +176,10 @@ public class LineToCoreToLine {
return "NO (QUOTA/MAXSIZE) \"Quota exceeded\"";
} catch (ArgumentException ex) {
return "NO \"" + ex.getMessage() + "\"";
+ } catch (UserNotFoundException e) {
+ return "NO user not found : " + session.getUser();
+ } catch (StorageException e) {
+ return "NO storage exception : " + e.getMessage();
}
return "OK";
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]