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]
