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