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: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org

Reply via email to