Repository: james-project
Updated Branches:
  refs/heads/JAMES-1645 [created] 07576d3c1


JAMES-1645 As a user I should be able to manage SIEVE quotas


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/07576d3c
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/07576d3c
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/07576d3c

Branch: refs/heads/JAMES-1645
Commit: 07576d3c13771ea6669392880dcbaef53608e621
Parents: 68c05f8
Author: Benoit Tellier <[email protected]>
Authored: Sun Dec 13 03:10:27 2015 +0100
Committer: Benoit Tellier <[email protected]>
Committed: Thu Feb 18 23:49:56 2016 +0700

----------------------------------------------------------------------
 .../apache/james/utils/GuiceServerProbe.java    |  38 ++++-
 .../java/org/apache/james/cli/ServerCmd.java    |  22 +++
 .../org/apache/james/cli/probe/ServerProbe.java |  12 ++
 .../james/cli/probe/impl/JmxServerProbe.java    |  36 +++++
 .../java/org/apache/james/cli/type/CmdType.java |   8 +-
 .../org/apache/james/cli/ServerCmdTest.java     | 162 +++++++++++++++++++
 .../org/apache/james/cli/type/CmdTypeTest.java  |  30 ++++
 .../META-INF/org/apache/james/spring-server.xml |   4 +-
 .../api/SieveRepositoryManagementMBean.java     |  39 +++++
 .../lib/SieveRepositoryManagement.java          |  73 +++++++++
 10 files changed, 419 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/07576d3c/server/container/cassandra-guice/src/main/java/org/apache/james/utils/GuiceServerProbe.java
----------------------------------------------------------------------
diff --git 
a/server/container/cassandra-guice/src/main/java/org/apache/james/utils/GuiceServerProbe.java
 
b/server/container/cassandra-guice/src/main/java/org/apache/james/utils/GuiceServerProbe.java
index 151410f..43850fe 100644
--- 
a/server/container/cassandra-guice/src/main/java/org/apache/james/utils/GuiceServerProbe.java
+++ 
b/server/container/cassandra-guice/src/main/java/org/apache/james/utils/GuiceServerProbe.java
@@ -37,7 +37,6 @@ import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageManager;
 import org.apache.james.mailbox.cassandra.CassandraId;
-import org.apache.james.mailbox.exception.BadCredentialsException;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailbox.model.MailboxMetaData;
@@ -47,6 +46,7 @@ import org.apache.james.mailbox.store.mail.MailboxMapper;
 import org.apache.james.mailbox.store.mail.MailboxMapperFactory;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
 import org.apache.james.rrt.lib.Mappings;
+import org.apache.james.sieverepository.api.SieveRepository;
 import org.apache.james.user.api.UsersRepository;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -63,13 +63,16 @@ public class GuiceServerProbe implements 
ExtendedServerProbe {
     private final MailboxMapperFactory<CassandraId> mailboxMapperFactory;
     private final DomainList domainList;
     private final UsersRepository usersRepository;
+    private final SieveRepository sieveRepository;
 
     @Inject
-    private GuiceServerProbe(MailboxManager mailboxManager, 
MailboxMapperFactory<CassandraId> mailboxMapperFactory, DomainList domainList, 
UsersRepository usersRepository) {
+    private GuiceServerProbe(MailboxManager mailboxManager, 
MailboxMapperFactory<CassandraId> mailboxMapperFactory,
+                             DomainList domainList, UsersRepository 
usersRepository, SieveRepository sieveRepository) {
         this.mailboxManager = mailboxManager;
         this.mailboxMapperFactory = mailboxMapperFactory;
         this.domainList = domainList;
         this.usersRepository = usersRepository;
+        this.sieveRepository = sieveRepository;
     }
 
     @Override
@@ -292,7 +295,7 @@ public class GuiceServerProbe implements 
ExtendedServerProbe {
 
     @Override
     public void appendMessage(String username, MailboxPath mailboxPath, 
InputStream message, Date internalDate, boolean isRecent, Flags flags) 
-            throws BadCredentialsException, MailboxException {
+            throws MailboxException {
         
         MailboxSession mailboxSession = 
mailboxManager.createSystemSession(username, LOGGER);
         MessageManager messageManager = mailboxManager.getMailbox(mailboxPath, 
mailboxSession);
@@ -309,4 +312,33 @@ public class GuiceServerProbe implements 
ExtendedServerProbe {
         throw new NotImplementedException();
     }
 
+    @Override
+    public long getSieveQuota() throws Exception {
+        return sieveRepository.getQuota();
+    }
+
+    @Override
+    public void setSieveQuota(long quota) throws Exception {
+        sieveRepository.setQuota(quota);
+    }
+
+    @Override
+    public void removeSieveQuota() throws Exception {
+        sieveRepository.removeQuota();
+    }
+
+    @Override
+    public long getSieveQuota(String user) throws Exception {
+        return sieveRepository.getQuota(user);
+    }
+
+    @Override
+    public void setSieveQuota(String user, long quota) throws Exception {
+        sieveRepository.setQuota(user, quota);
+    }
+
+    @Override
+    public void removeSieveQuota(String user) throws Exception {
+        sieveRepository.removeQuota(user);
+    }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/07576d3c/server/container/cli/src/main/java/org/apache/james/cli/ServerCmd.java
----------------------------------------------------------------------
diff --git 
a/server/container/cli/src/main/java/org/apache/james/cli/ServerCmd.java 
b/server/container/cli/src/main/java/org/apache/james/cli/ServerCmd.java
index 7c09284..270dac0 100644
--- a/server/container/cli/src/main/java/org/apache/james/cli/ServerCmd.java
+++ b/server/container/cli/src/main/java/org/apache/james/cli/ServerCmd.java
@@ -265,6 +265,28 @@ public class ServerCmd {
         case REINDEXALL:
             probe.reIndexAll();
             break;
+            case SETSIEVEQUOTA:
+                
probe.setSieveQuota(ValueWithUnit.parse(arguments[1]).getConvertedValue());
+                break;
+            case SETSIEVEUSERQUOTA:
+                probe.setSieveQuota(arguments[1], 
ValueWithUnit.parse(arguments[2]).getConvertedValue());
+                break;
+            case GETSIEVEQUOTA:
+                System.out.println("Storage space allowed for Sieve scripts by 
default : "
+                    + formatStorageValue(probe.getSieveQuota()));
+                break;
+            case GETSIEVEUSERQUOTA:
+                System.out.println("Storage space allowed for "
+                    + arguments[1]
+                    + " Sieve scripts : "
+                    + formatStorageValue(probe.getSieveQuota(arguments[1])));
+                break;
+            case REMOVESIEVEQUOTA:
+                probe.removeSieveQuota();
+                break;
+            case REMOVESIEVEUSERQUOTA:
+                probe.removeSieveQuota(arguments[1]);
+                break;
         default:
             throw new UnrecognizedCommandException(cmdType.getCommand());
         }

http://git-wip-us.apache.org/repos/asf/james-project/blob/07576d3c/server/container/cli/src/main/java/org/apache/james/cli/probe/ServerProbe.java
----------------------------------------------------------------------
diff --git 
a/server/container/cli/src/main/java/org/apache/james/cli/probe/ServerProbe.java
 
b/server/container/cli/src/main/java/org/apache/james/cli/probe/ServerProbe.java
index ec6dd73..e9d3a9b 100644
--- 
a/server/container/cli/src/main/java/org/apache/james/cli/probe/ServerProbe.java
+++ 
b/server/container/cli/src/main/java/org/apache/james/cli/probe/ServerProbe.java
@@ -248,4 +248,16 @@ public interface ServerProbe extends Closeable {
     void reIndexMailbox(String namespace, String user, String name) throws 
Exception;
 
     void reIndexAll() throws Exception;
+
+    long getSieveQuota() throws Exception;
+
+    void setSieveQuota(long quota) throws Exception;
+
+    void removeSieveQuota() throws Exception;
+
+    long getSieveQuota(String user) throws Exception;
+
+    void setSieveQuota(String user, long quota) throws Exception;
+
+    void removeSieveQuota(String user) throws Exception;
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/07576d3c/server/container/cli/src/main/java/org/apache/james/cli/probe/impl/JmxServerProbe.java
----------------------------------------------------------------------
diff --git 
a/server/container/cli/src/main/java/org/apache/james/cli/probe/impl/JmxServerProbe.java
 
b/server/container/cli/src/main/java/org/apache/james/cli/probe/impl/JmxServerProbe.java
index ad1ede2..3877b39 100644
--- 
a/server/container/cli/src/main/java/org/apache/james/cli/probe/impl/JmxServerProbe.java
+++ 
b/server/container/cli/src/main/java/org/apache/james/cli/probe/impl/JmxServerProbe.java
@@ -40,6 +40,7 @@ import 
org.apache.james.domainlist.api.DomainListManagementMBean;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.rrt.api.RecipientRewriteTableManagementMBean;
 import org.apache.james.rrt.lib.Mappings;
+import org.apache.james.sieverepository.api.SieveRepositoryManagementMBean;
 import org.apache.james.user.api.UsersRepositoryManagementMBean;
 
 public class JmxServerProbe implements ServerProbe {
@@ -50,6 +51,7 @@ public class JmxServerProbe implements ServerProbe {
     private final static String USERSREPOSITORY_OBJECT_NAME = 
"org.apache.james:type=component,name=usersrepository";
     private final static String MAILBOXCOPIER_OBJECT_NAME = 
"org.apache.james:type=component,name=mailboxcopier";
     private final static String MAILBOXMANAGER_OBJECT_NAME = 
"org.apache.james:type=component,name=mailboxmanagerbean";
+    private final static String SIEVEMANAGER_OBJECT_NAME = 
"org.apache.james:type=component,name=sievemanagerbean";
     private final static String QUOTAMANAGER_OBJECT_NAME = 
"org.apache.james:type=component,name=quotamanagerbean";
     private final static String REINDEXER_OBJECT_NAME = 
"org.apache.james:type=component,name=reindexerbean";
 
@@ -62,6 +64,7 @@ public class JmxServerProbe implements ServerProbe {
     private MailboxManagerManagementMBean mailboxManagerManagement;
     private QuotaManagementMBean quotaManagement;
     private ReIndexerManagementMBean reIndexerManagement;
+    private SieveRepositoryManagementMBean sieveRepositoryManagement;
 
     private static final String fmtUrl = 
"service:jmx:rmi:///jndi/rmi://%s:%d/jmxrmi";
     private static final int defaultPort = 9999;
@@ -125,6 +128,9 @@ public class JmxServerProbe implements ServerProbe {
             name = new ObjectName(REINDEXER_OBJECT_NAME);
             reIndexerManagement = 
MBeanServerInvocationHandler.newProxyInstance(
                 mbeanServerConn, name, ReIndexerManagementMBean.class, true);
+            name = new ObjectName(SIEVEMANAGER_OBJECT_NAME);
+            sieveRepositoryManagement = 
MBeanServerInvocationHandler.newProxyInstance(
+                mbeanServerConn, name, SieveRepositoryManagementMBean.class, 
true);
         } catch (MalformedObjectNameException e) {
             throw new RuntimeException("Invalid ObjectName? Please report this 
as a bug.", e);
         }
@@ -294,4 +300,34 @@ public class JmxServerProbe implements ServerProbe {
     public void reIndexAll() throws Exception {
         reIndexerManagement.reIndex();
     }
+
+    @Override
+    public long getSieveQuota() throws Exception {
+        return sieveRepositoryManagement.getQuota();
+    }
+
+    @Override
+    public void setSieveQuota(long quota) throws Exception {
+        sieveRepositoryManagement.setQuota(quota);
+    }
+
+    @Override
+    public void removeSieveQuota() throws Exception {
+        sieveRepositoryManagement.removeQuota();
+    }
+
+    @Override
+    public long getSieveQuota(String user) throws Exception {
+        return sieveRepositoryManagement.getQuota(user);
+    }
+
+    @Override
+    public void setSieveQuota(String user, long quota) throws Exception {
+        sieveRepositoryManagement.setQuota(user, quota);
+    }
+
+    @Override
+    public void removeSieveQuota(String user) throws Exception {
+        sieveRepositoryManagement.removeQuota(user);
+    }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/07576d3c/server/container/cli/src/main/java/org/apache/james/cli/type/CmdType.java
----------------------------------------------------------------------
diff --git 
a/server/container/cli/src/main/java/org/apache/james/cli/type/CmdType.java 
b/server/container/cli/src/main/java/org/apache/james/cli/type/CmdType.java
index 80e0212..3876699 100644
--- a/server/container/cli/src/main/java/org/apache/james/cli/type/CmdType.java
+++ b/server/container/cli/src/main/java/org/apache/james/cli/type/CmdType.java
@@ -53,7 +53,13 @@ public enum CmdType {
     GETDEFAULTMAXSTORAGEQUOTA("getdefaultmaxstoragequota"),
     GETDEFAULTMAXMESSAGECOUNTQUOTA("getdefaultmaxmessagecountquota"),
     REINDEXMAILBOX("reindexmailbox", "namespace", "user", "name"),
-    REINDEXALL("reindexall");
+    REINDEXALL("reindexall"),
+    GETSIEVEQUOTA("getsievequota"),
+    SETSIEVEQUOTA("setsievequota", "quota"),
+    REMOVESIEVEQUOTA("removesievequota"),
+    GETSIEVEUSERQUOTA("getsieveuserquota", "username"),
+    SETSIEVEUSERQUOTA("setsieveuserquota", "username", "quota"),
+    REMOVESIEVEUSERQUOTA("removesieveuserquota", "username");
 
     private final String command;
     private final String[] arguments;

http://git-wip-us.apache.org/repos/asf/james-project/blob/07576d3c/server/container/cli/src/test/java/org/apache/james/cli/ServerCmdTest.java
----------------------------------------------------------------------
diff --git 
a/server/container/cli/src/test/java/org/apache/james/cli/ServerCmdTest.java 
b/server/container/cli/src/test/java/org/apache/james/cli/ServerCmdTest.java
index 2e91fa2..ebbbe54 100644
--- a/server/container/cli/src/test/java/org/apache/james/cli/ServerCmdTest.java
+++ b/server/container/cli/src/test/java/org/apache/james/cli/ServerCmdTest.java
@@ -509,6 +509,87 @@ public class ServerCmdTest {
         control.verify();
     }
 
+    @Test
+    public void setSieveQuotaCommandShouldWork() throws Exception {
+        String[] arguments = { "-h", "127.0.0.1", "-p", "9999", 
CmdType.SETSIEVEQUOTA.getCommand(), "2K"};
+        CommandLine commandLine = ServerCmd.parseCommandLine(arguments);
+
+        serverProbe.setSieveQuota(2048);
+        expectLastCall();
+
+        control.replay();
+        testee.executeCommandLine(commandLine);
+        control.verify();
+    }
+
+    @Test
+    public void setSieveUserQuotaCommandShouldWork() throws Exception {
+        String user = "[email protected]";
+        String[] arguments = { "-h", "127.0.0.1", "-p", "9999", 
CmdType.SETSIEVEUSERQUOTA.getCommand(), user, "1K"};
+        CommandLine commandLine = ServerCmd.parseCommandLine(arguments);
+
+        serverProbe.setSieveQuota(user, 1024);
+        expectLastCall();
+
+        control.replay();
+        testee.executeCommandLine(commandLine);
+        control.verify();
+    }
+
+    @Test
+    public void getSieveQuotaCommandShouldWork() throws Exception {
+        String[] arguments = { "-h", "127.0.0.1", "-p", "9999", 
CmdType.GETSIEVEQUOTA.getCommand()};
+        CommandLine commandLine = ServerCmd.parseCommandLine(arguments);
+
+        expect(serverProbe.getSieveQuota()).andReturn(18L);
+        expectLastCall();
+
+        control.replay();
+        testee.executeCommandLine(commandLine);
+        control.verify();
+    }
+
+    @Test
+    public void getSieveUserQuotaCommandShouldWork() throws Exception {
+        String user = "[email protected]";
+        String[] arguments = { "-h", "127.0.0.1", "-p", "9999", 
CmdType.GETSIEVEUSERQUOTA.getCommand(), user};
+        CommandLine commandLine = ServerCmd.parseCommandLine(arguments);
+
+        expect(serverProbe.getSieveQuota(user)).andReturn(18L);
+        expectLastCall();
+
+        control.replay();
+        testee.executeCommandLine(commandLine);
+        control.verify();
+    }
+
+    @Test
+    public void removeSieveQuotaCommandShouldWork() throws Exception {
+        String[] arguments = { "-h", "127.0.0.1", "-p", "9999", 
CmdType.REMOVESIEVEQUOTA.getCommand()};
+        CommandLine commandLine = ServerCmd.parseCommandLine(arguments);
+
+        serverProbe.removeSieveQuota();
+        expectLastCall();
+
+        control.replay();
+        testee.executeCommandLine(commandLine);
+        control.verify();
+    }
+
+    @Test
+    public void removeSieveUserQuotaCommandShouldWork() throws Exception {
+        String user = "[email protected]";
+        String[] arguments = { "-h", "127.0.0.1", "-p", "9999", 
CmdType.REMOVESIEVEUSERQUOTA.getCommand(), user};
+        CommandLine commandLine = ServerCmd.parseCommandLine(arguments);
+
+        serverProbe.removeSieveQuota(user);
+        expectLastCall();
+
+        control.replay();
+        testee.executeCommandLine(commandLine);
+        control.verify();
+    }
+
     @Test(expected = InvalidArgumentNumberException.class)
     public void addDomainCommandShouldThrowOnMissingArguments() throws 
Exception {
         String[] arguments = { "-h", "127.0.0.1", "-p", "9999", 
CmdType.ADDDOMAIN.getCommand()};
@@ -1041,6 +1122,87 @@ public class ServerCmdTest {
         }
     }
 
+    @Test(expected = InvalidArgumentNumberException.class)
+    public void removeSieveQuotaCommandShouldThrowOnAdditionalArguments() 
throws Exception {
+        String[] arguments = { "-h", "127.0.0.1", "-p", "9999", 
CmdType.REMOVESIEVEQUOTA.getCommand(), ADDITIONAL_ARGUMENT };
+        CommandLine commandLine = ServerCmd.parseCommandLine(arguments);
+
+        control.replay();
+        try {
+            testee.executeCommandLine(commandLine);
+        } finally {
+            control.verify();
+        }
+    }
+
+    @Test(expected = InvalidArgumentNumberException.class)
+    public void removeSieveUserQuotaCommandShouldThrowOnAdditionalArguments() 
throws Exception {
+        String user = "user@domain";
+        String[] arguments = { "-h", "127.0.0.1", "-p", "9999", 
CmdType.REMOVESIEVEUSERQUOTA.getCommand(), user, ADDITIONAL_ARGUMENT };
+        CommandLine commandLine = ServerCmd.parseCommandLine(arguments);
+
+        control.replay();
+        try {
+            testee.executeCommandLine(commandLine);
+        } finally {
+            control.verify();
+        }
+    }
+
+    @Test(expected = InvalidArgumentNumberException.class)
+    public void getSieveQuotaCommandShouldThrowOnAdditionalArguments() throws 
Exception {
+        String[] arguments = { "-h", "127.0.0.1", "-p", "9999", 
CmdType.GETSIEVEQUOTA.getCommand(), ADDITIONAL_ARGUMENT };
+        CommandLine commandLine = ServerCmd.parseCommandLine(arguments);
+
+        control.replay();
+        try {
+            testee.executeCommandLine(commandLine);
+        } finally {
+            control.verify();
+        }
+    }
+
+    @Test(expected = InvalidArgumentNumberException.class)
+    public void setSieveQuotaCommandShouldThrowOnAdditionalArguments() throws 
Exception {
+        String[] arguments = { "-h", "127.0.0.1", "-p", "9999", 
CmdType.SETSIEVEQUOTA.getCommand(), "64K", ADDITIONAL_ARGUMENT };
+        CommandLine commandLine = ServerCmd.parseCommandLine(arguments);
+
+        control.replay();
+        try {
+            testee.executeCommandLine(commandLine);
+        } finally {
+            control.verify();
+        }
+    }
+
+    @Test(expected = InvalidArgumentNumberException.class)
+    public void getSieveUserQuotaCommandShouldThrowOnAdditionalArguments() 
throws Exception {
+        String user = "user@domain";
+        String[] arguments = { "-h", "127.0.0.1", "-p", "9999", 
CmdType.GETSIEVEUSERQUOTA.getCommand(), user, ADDITIONAL_ARGUMENT };
+        CommandLine commandLine = ServerCmd.parseCommandLine(arguments);
+
+        control.replay();
+        try {
+            testee.executeCommandLine(commandLine);
+        } finally {
+            control.verify();
+        }
+    }
+
+    @Test(expected = InvalidArgumentNumberException.class)
+    public void setSieveUserQuotaCommandShouldThrowOnAdditionalArguments() 
throws Exception {
+        String user = "user@domain";
+        String[] arguments = { "-h", "127.0.0.1", "-p", "9999", 
CmdType.SETSIEVEUSERQUOTA.getCommand(), user, "64K", ADDITIONAL_ARGUMENT };
+        CommandLine commandLine = ServerCmd.parseCommandLine(arguments);
+
+        control.replay();
+        try {
+            testee.executeCommandLine(commandLine);
+        } finally {
+            control.verify();
+        }
+    }
+
     @Test(expected = UnrecognizedCommandException.class)
     public void executeCommandLineShouldThrowOnUnrecognizedCommands() throws 
Exception {
         String[] arguments = { "-h", "127.0.0.1", "-p", "9999", 
"wrongCommand"};

http://git-wip-us.apache.org/repos/asf/james-project/blob/07576d3c/server/container/cli/src/test/java/org/apache/james/cli/type/CmdTypeTest.java
----------------------------------------------------------------------
diff --git 
a/server/container/cli/src/test/java/org/apache/james/cli/type/CmdTypeTest.java 
b/server/container/cli/src/test/java/org/apache/james/cli/type/CmdTypeTest.java
index 70fa0f4..e38a81f 100644
--- 
a/server/container/cli/src/test/java/org/apache/james/cli/type/CmdTypeTest.java
+++ 
b/server/container/cli/src/test/java/org/apache/james/cli/type/CmdTypeTest.java
@@ -198,6 +198,36 @@ public class CmdTypeTest {
         
assertThat(CmdType.lookup("reindexmailbox")).isEqualTo(CmdType.REINDEXMAILBOX);
     }
 
+    @Test
+    public void lookupGetSieveQuotaShouldReturnEnumValue() {
+        
assertThat(CmdType.lookup("getsievequota")).isEqualTo(CmdType.GETSIEVEQUOTA);
+    }
+
+    @Test
+    public void lookupGetSieveUserQuotaShouldReturnEnumValue() {
+        
assertThat(CmdType.lookup("getsieveuserquota")).isEqualTo(CmdType.GETSIEVEUSERQUOTA);
+    }
+
+    @Test
+    public void lookupSetSieveQuotaShouldReturnEnumValue() {
+        
assertThat(CmdType.lookup("setsievequota")).isEqualTo(CmdType.SETSIEVEQUOTA);
+    }
+
+    @Test
+    public void lookupSetSieveUserQuotaShouldReturnEnumValue() {
+        
assertThat(CmdType.lookup("setsieveuserquota")).isEqualTo(CmdType.SETSIEVEUSERQUOTA);
+    }
+
+    @Test
+    public void lookupRemoveSieveQuotaShouldReturnEnumValue() {
+        
assertThat(CmdType.lookup("removesievequota")).isEqualTo(CmdType.REMOVESIEVEQUOTA);
+    }
+
+    @Test
+    public void lookupRemoveSieveUserQuotaShouldReturnEnumValue() {
+        
assertThat(CmdType.lookup("removesieveuserquota")).isEqualTo(CmdType.REMOVESIEVEUSERQUOTA);
+    }
+
     @Test 
     public void lookupEmptyStringShouldReturnNull() {
         assertThat(CmdType.lookup("")).isNull();

http://git-wip-us.apache.org/repos/asf/james-project/blob/07576d3c/server/container/spring/src/main/resources/META-INF/org/apache/james/spring-server.xml
----------------------------------------------------------------------
diff --git 
a/server/container/spring/src/main/resources/META-INF/org/apache/james/spring-server.xml
 
b/server/container/spring/src/main/resources/META-INF/org/apache/james/spring-server.xml
index c436561..4769445 100644
--- 
a/server/container/spring/src/main/resources/META-INF/org/apache/james/spring-server.xml
+++ 
b/server/container/spring/src/main/resources/META-INF/org/apache/james/spring-server.xml
@@ -250,12 +250,13 @@
                 <entry key="org.apache.james:type=container,name=logprovider" 
value-ref="logprovider"/>
                 <entry 
key="org.apache.james:type=component,name=quotamanagerbean" 
value-ref="quotamanagermanagement"/>
                 <entry 
key="org.apache.james:type=component,name=reindexerbean" 
value-ref="reindexermanagement"/>
+                <entry 
key="org.apache.james:type=component,name=sievemanagerbean" 
value-ref="sievemanagerbean"/>
             </map>
         </property>
         <property name="assembler">
             <bean 
class="org.springframework.jmx.export.assembler.InterfaceBasedMBeanInfoAssembler">
                 <property name="managedInterfaces"
-                          
value="org.apache.james.fetchmail.FetchSchedulerMBean,org.apache.james.domainlist.api.DomainListManagementMBean,org.apache.james.dnsservice.api.DNSServiceMBean,org.apache.james.rrt.api.RecipientRewriteTableManagementMBean,org.apache.james.user.api.UsersRepositoryManagementMBean,org.apache.james.adapter.mailbox.MailboxManagerManagementMBean,org.apache.james.adapter.mailbox.MailboxCopierManagementMBean,org.apache.james.mailetcontainer.api.jmx.MailSpoolerMBean,org.apache.james.container.spring.lifecycle.LogProviderManagementMBean,org.apache.james.adapter.mailbox.QuotaManagementMBean,org.apache.james.adapter.mailbox.ReIndexerManagementMBean"/>
+                          
value="org.apache.james.fetchmail.FetchSchedulerMBean,org.apache.james.domainlist.api.DomainListManagementMBean,org.apache.james.dnsservice.api.DNSServiceMBean,org.apache.james.rrt.api.RecipientRewriteTableManagementMBean,org.apache.james.user.api.UsersRepositoryManagementMBean,org.apache.james.adapter.mailbox.MailboxManagerManagementMBean,org.apache.james.adapter.mailbox.MailboxCopierManagementMBean,org.apache.james.mailetcontainer.api.jmx.MailSpoolerMBean,org.apache.james.container.spring.lifecycle.LogProviderManagementMBean,org.apache.james.adapter.mailbox.QuotaManagementMBean,org.apache.james.adapter.mailbox.ReIndexerManagementMBean,org.apache.james.sieverepository.api.SieveRepositoryManagementMBean"/>
             </bean>
         </property>
     </bean>
@@ -275,6 +276,7 @@
     <bean id="reindexermanagement" 
class="org.apache.james.adapter.mailbox.ReIndexerManagement">
         <constructor-arg index="0" ref="reindexer"/>
     </bean>
+    <bean id="sievemanagerbean" 
class="org.apache.james.sieverepository.lib.SieveRepositoryManagement"/>
     <!--
         <bean id="james23importermanagement" 
class="org.apache.james.container.spring.tool.James23ImporterManagement" />
     -->

http://git-wip-us.apache.org/repos/asf/james-project/blob/07576d3c/server/data/data-api/src/main/java/org/apache/james/sieverepository/api/SieveRepositoryManagementMBean.java
----------------------------------------------------------------------
diff --git 
a/server/data/data-api/src/main/java/org/apache/james/sieverepository/api/SieveRepositoryManagementMBean.java
 
b/server/data/data-api/src/main/java/org/apache/james/sieverepository/api/SieveRepositoryManagementMBean.java
new file mode 100644
index 0000000..cde69df
--- /dev/null
+++ 
b/server/data/data-api/src/main/java/org/apache/james/sieverepository/api/SieveRepositoryManagementMBean.java
@@ -0,0 +1,39 @@
+/*
+ *   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.sieverepository.api;
+
+import org.apache.james.sieverepository.api.exception.SieveRepositoryException;
+
+public interface SieveRepositoryManagementMBean {
+
+    long getQuota() throws SieveRepositoryException;
+
+    void setQuota(long quota) throws SieveRepositoryException;
+
+    void removeQuota() throws SieveRepositoryException;
+
+    long getQuota(String user) throws SieveRepositoryException;
+
+    void setQuota(String user, long quota) throws SieveRepositoryException;
+
+    void removeQuota(String user) throws SieveRepositoryException;
+
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/07576d3c/server/data/data-library/src/main/java/org/apache/james/sieverepository/lib/SieveRepositoryManagement.java
----------------------------------------------------------------------
diff --git 
a/server/data/data-library/src/main/java/org/apache/james/sieverepository/lib/SieveRepositoryManagement.java
 
b/server/data/data-library/src/main/java/org/apache/james/sieverepository/lib/SieveRepositoryManagement.java
new file mode 100644
index 0000000..b89eb97
--- /dev/null
+++ 
b/server/data/data-library/src/main/java/org/apache/james/sieverepository/lib/SieveRepositoryManagement.java
@@ -0,0 +1,73 @@
+/*
+ *   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.sieverepository.lib;
+
+import org.apache.james.sieverepository.api.SieveRepository;
+import org.apache.james.sieverepository.api.SieveRepositoryManagementMBean;
+import org.apache.james.sieverepository.api.exception.SieveRepositoryException;
+
+import javax.inject.Inject;
+import javax.management.NotCompliantMBeanException;
+import javax.management.StandardMBean;
+
+public class SieveRepositoryManagement extends StandardMBean implements 
SieveRepositoryManagementMBean {
+
+    private SieveRepository sieveRepository;
+
+    public SieveRepositoryManagement() throws NotCompliantMBeanException {
+        super(SieveRepositoryManagementMBean.class);
+    }
+
+    @Inject
+    public void setSieveRepository(SieveRepository sieveRepository) {
+        this.sieveRepository = sieveRepository;
+    }
+
+    @Override
+    public long getQuota() throws SieveRepositoryException {
+        return sieveRepository.getQuota();
+    }
+
+    @Override
+    public void setQuota(long quota) throws SieveRepositoryException {
+        sieveRepository.setQuota(quota);
+    }
+
+    @Override
+    public void removeQuota() throws SieveRepositoryException {
+        sieveRepository.removeQuota();
+    }
+
+    @Override
+    public long getQuota(String user) throws SieveRepositoryException {
+        return sieveRepository.getQuota(user);
+    }
+
+    @Override
+    public void setQuota(String user, long quota) throws 
SieveRepositoryException {
+        sieveRepository.setQuota(user, quota);
+    }
+
+    @Override
+    public void removeQuota(String user) throws SieveRepositoryException {
+        sieveRepository.removeQuota(user);
+    }
+}


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to