Repository: james-project Updated Branches: refs/heads/master 5c80ce22d -> 9e331f716
JAMES-2344 split CassandraPerUserMaxQuotaDao so that a single DAO manage a single table Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/9e331f71 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/9e331f71 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/9e331f71 Branch: refs/heads/master Commit: 9e331f716c72e515e96b764d1c47297ff8d6fbea Parents: 290b2a9 Author: Matthieu Baechler <matth...@apache.org> Authored: Fri Mar 2 15:18:16 2018 +0100 Committer: Matthieu Baechler <matth...@apache.org> Committed: Fri Mar 9 14:57:12 2018 +0100 ---------------------------------------------------------------------- .../quota/CassandraDefaultMaxQuotaDao.java | 119 +++++++++++++++++++ .../quota/CassandraPerUserMaxQuotaDao.java | 104 +--------------- .../quota/CassandraPerUserMaxQuotaManager.java | 32 ++--- .../mailbox/cassandra/quota/QuotaCodec.java | 56 +++++++++ .../cassandra/CassandraTestSystemFixture.java | 5 +- .../CassandraPerUserMaxQuotaManagerTest.java | 4 +- .../cassandra/host/CassandraHostSystem.java | 5 +- .../modules/mailbox/CassandraQuotaModule.java | 4 + 8 files changed, 211 insertions(+), 118 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/9e331f71/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/quota/CassandraDefaultMaxQuotaDao.java ---------------------------------------------------------------------- diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/quota/CassandraDefaultMaxQuotaDao.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/quota/CassandraDefaultMaxQuotaDao.java new file mode 100644 index 0000000..8205863 --- /dev/null +++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/quota/CassandraDefaultMaxQuotaDao.java @@ -0,0 +1,119 @@ +/**************************************************************** + * 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.mailbox.cassandra.quota; + +import static com.datastax.driver.core.querybuilder.QueryBuilder.bindMarker; +import static com.datastax.driver.core.querybuilder.QueryBuilder.delete; +import static com.datastax.driver.core.querybuilder.QueryBuilder.eq; +import static com.datastax.driver.core.querybuilder.QueryBuilder.insertInto; +import static com.datastax.driver.core.querybuilder.QueryBuilder.select; + +import java.util.Optional; + +import javax.inject.Inject; + +import org.apache.james.mailbox.cassandra.table.CassandraDefaultMaxQuota; +import org.apache.james.mailbox.quota.QuotaCount; +import org.apache.james.mailbox.quota.QuotaSize; + +import com.datastax.driver.core.PreparedStatement; +import com.datastax.driver.core.ResultSet; +import com.datastax.driver.core.Session; +import com.datastax.driver.core.querybuilder.Delete; +import com.datastax.driver.core.querybuilder.Insert; +import com.datastax.driver.core.querybuilder.Select; + +public class CassandraDefaultMaxQuotaDao { + + private final Session session; + private final PreparedStatement setDefaultMaxStorageStatement; + private final PreparedStatement setDefaultMaxMessageStatement; + private final PreparedStatement getDefaultMaxStatement; + private final PreparedStatement removeDefaultMaxQuotaStatement; + + @Inject + public CassandraDefaultMaxQuotaDao(Session session) { + this.session = session; + this.getDefaultMaxStatement = session.prepare(getDefaultMaxStatement()); + this.setDefaultMaxMessageStatement = session.prepare(setDefaultMaxMessageStatement()); + this.setDefaultMaxStorageStatement = session.prepare(setDefaultMaxStorageStatement()); + this.removeDefaultMaxQuotaStatement = session.prepare(removeDefaultMaxQuotaStatement()); + } + + private Delete.Where removeDefaultMaxQuotaStatement() { + return delete().all() + .from(CassandraDefaultMaxQuota.TABLE_NAME) + .where(eq(CassandraDefaultMaxQuota.TYPE, bindMarker(CassandraDefaultMaxQuota.TYPE))); + } + + private Insert setDefaultMaxStorageStatement() { + return insertInto(CassandraDefaultMaxQuota.TABLE_NAME) + .value(CassandraDefaultMaxQuota.TYPE, CassandraDefaultMaxQuota.STORAGE) + .value(CassandraDefaultMaxQuota.VALUE, bindMarker()); + } + + private Insert setDefaultMaxMessageStatement() { + return insertInto(CassandraDefaultMaxQuota.TABLE_NAME) + .value(CassandraDefaultMaxQuota.TYPE, CassandraDefaultMaxQuota.MESSAGE) + .value(CassandraDefaultMaxQuota.VALUE, bindMarker()); + } + + private Select.Where getDefaultMaxStatement() { + return select(CassandraDefaultMaxQuota.VALUE) + .from(CassandraDefaultMaxQuota.TABLE_NAME) + .where(eq(CassandraDefaultMaxQuota.TYPE, bindMarker(CassandraDefaultMaxQuota.TYPE))); + } + + public void setDefaultMaxStorage(QuotaSize defaultMaxStorage) { + session.execute(setDefaultMaxStorageStatement.bind(QuotaCodec.quotaValueToLong(defaultMaxStorage))); + } + + public void setDefaultMaxMessage(QuotaCount defaultMaxMessageCount) { + session.execute(setDefaultMaxMessageStatement.bind(QuotaCodec.quotaValueToLong(defaultMaxMessageCount))); + } + + public Optional<QuotaSize> getDefaultMaxStorage() { + ResultSet resultSet = session.execute(getDefaultMaxStatement.bind() + .setString(CassandraDefaultMaxQuota.TYPE, CassandraDefaultMaxQuota.STORAGE)); + if (resultSet.isExhausted()) { + return Optional.empty(); + } + Long maxStorage = resultSet.one().get(CassandraDefaultMaxQuota.VALUE, Long.class); + return QuotaCodec.longToQuotaSize(maxStorage); + } + + public Optional<QuotaCount> getDefaultMaxMessage() { + ResultSet resultSet = session.execute(getDefaultMaxStatement.bind() + .setString(CassandraDefaultMaxQuota.TYPE, CassandraDefaultMaxQuota.MESSAGE)); + if (resultSet.isExhausted()) { + return Optional.empty(); + } + Long maxMessages = resultSet.one().get(CassandraDefaultMaxQuota.VALUE, Long.class); + return QuotaCodec.longToQuotaCount(maxMessages); + } + + public void removeDefaultMaxStorage() { + session.execute(removeDefaultMaxQuotaStatement.bind(CassandraDefaultMaxQuota.STORAGE)); + } + + public void removeDefaultMaxMessage() { + session.execute(removeDefaultMaxQuotaStatement.bind(CassandraDefaultMaxQuota.MESSAGE)); + } +} http://git-wip-us.apache.org/repos/asf/james-project/blob/9e331f71/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/quota/CassandraPerUserMaxQuotaDao.java ---------------------------------------------------------------------- diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/quota/CassandraPerUserMaxQuotaDao.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/quota/CassandraPerUserMaxQuotaDao.java index 46ede92..1a861c7 100644 --- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/quota/CassandraPerUserMaxQuotaDao.java +++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/quota/CassandraPerUserMaxQuotaDao.java @@ -26,16 +26,13 @@ import static com.datastax.driver.core.querybuilder.QueryBuilder.insertInto; import static com.datastax.driver.core.querybuilder.QueryBuilder.select; import java.util.Optional; -import java.util.function.Function; import javax.inject.Inject; -import org.apache.james.mailbox.cassandra.table.CassandraDefaultMaxQuota; import org.apache.james.mailbox.cassandra.table.CassandraMaxQuota; import org.apache.james.mailbox.model.QuotaRoot; import org.apache.james.mailbox.quota.QuotaCount; import org.apache.james.mailbox.quota.QuotaSize; -import org.apache.james.mailbox.quota.QuotaValue; import com.datastax.driver.core.PreparedStatement; import com.datastax.driver.core.ResultSet; @@ -46,18 +43,13 @@ import com.datastax.driver.core.querybuilder.Select; public class CassandraPerUserMaxQuotaDao { - private static final long INFINITE = -1; private final Session session; private final PreparedStatement setMaxStorageStatement; private final PreparedStatement setMaxMessageStatement; private final PreparedStatement getMaxStorageStatement; private final PreparedStatement getMaxMessageStatement; - private final PreparedStatement setDefaultMaxStorageStatement; - private final PreparedStatement setDefaultMaxMessageStatement; - private final PreparedStatement getDefaultMaxStatement; private final PreparedStatement removeMaxStorageStatement; private final PreparedStatement removeMaxMessageStatement; - private final PreparedStatement removeDefaultMaxQuotaStatement; @Inject public CassandraPerUserMaxQuotaDao(Session session) { @@ -66,10 +58,6 @@ public class CassandraPerUserMaxQuotaDao { this.setMaxMessageStatement = session.prepare(setMaxMessageStatement()); this.getMaxStorageStatement = session.prepare(getMaxStorageStatement()); this.getMaxMessageStatement = session.prepare(getMaxMessageStatement()); - this.getDefaultMaxStatement = session.prepare(getDefaultMaxStatement()); - this.setDefaultMaxMessageStatement = session.prepare(setDefaultMaxMessageStatement()); - this.setDefaultMaxStorageStatement = session.prepare(setDefaultMaxStorageStatement()); - this.removeDefaultMaxQuotaStatement = session.prepare(removeDefaultMaxQuotaStatement()); this.removeMaxStorageStatement = session.prepare(removeMaxStorageStatement()); this.removeMaxMessageStatement = session.prepare(removeMaxMessageStatement()); } @@ -86,30 +74,6 @@ public class CassandraPerUserMaxQuotaDao { .where(eq(CassandraMaxQuota.QUOTA_ROOT, bindMarker())); } - private Delete.Where removeDefaultMaxQuotaStatement() { - return delete().all() - .from(CassandraDefaultMaxQuota.TABLE_NAME) - .where(eq(CassandraDefaultMaxQuota.TYPE, bindMarker(CassandraDefaultMaxQuota.TYPE))); - } - - private Insert setDefaultMaxStorageStatement() { - return insertInto(CassandraDefaultMaxQuota.TABLE_NAME) - .value(CassandraDefaultMaxQuota.TYPE, CassandraDefaultMaxQuota.STORAGE) - .value(CassandraDefaultMaxQuota.VALUE, bindMarker()); - } - - private Insert setDefaultMaxMessageStatement() { - return insertInto(CassandraDefaultMaxQuota.TABLE_NAME) - .value(CassandraDefaultMaxQuota.TYPE, CassandraDefaultMaxQuota.MESSAGE) - .value(CassandraDefaultMaxQuota.VALUE, bindMarker()); - } - - private Select.Where getDefaultMaxStatement() { - return select(CassandraDefaultMaxQuota.VALUE) - .from(CassandraDefaultMaxQuota.TABLE_NAME) - .where(eq(CassandraDefaultMaxQuota.TYPE, bindMarker(CassandraDefaultMaxQuota.TYPE))); - } - private Select.Where getMaxMessageStatement() { return select(CassandraMaxQuota.MESSAGE_COUNT) .from(CassandraMaxQuota.TABLE_NAME) @@ -135,39 +99,11 @@ public class CassandraPerUserMaxQuotaDao { } public void setMaxStorage(QuotaRoot quotaRoot, QuotaSize maxStorageQuota) { - session.execute(setMaxStorageStatement.bind(quotaRoot.getValue(), quotaValueToLong(maxStorageQuota))); + session.execute(setMaxStorageStatement.bind(quotaRoot.getValue(), QuotaCodec.quotaValueToLong(maxStorageQuota))); } public void setMaxMessage(QuotaRoot quotaRoot, QuotaCount maxMessageCount) { - session.execute(setMaxMessageStatement.bind(quotaRoot.getValue(), quotaValueToLong(maxMessageCount))); - } - - public void setDefaultMaxStorage(QuotaSize defaultMaxStorage) { - session.execute(setDefaultMaxStorageStatement.bind(quotaValueToLong(defaultMaxStorage))); - } - - public void setDefaultMaxMessage(QuotaCount defaultMaxMessageCount) { - session.execute(setDefaultMaxMessageStatement.bind(quotaValueToLong(defaultMaxMessageCount))); - } - - public Optional<QuotaSize> getDefaultMaxStorage() { - ResultSet resultSet = session.execute(getDefaultMaxStatement.bind() - .setString(CassandraDefaultMaxQuota.TYPE, CassandraDefaultMaxQuota.STORAGE)); - if (resultSet.isExhausted()) { - return Optional.empty(); - } - Long maxStorage = resultSet.one().get(CassandraDefaultMaxQuota.VALUE, Long.class); - return longToQuotaSize(maxStorage); - } - - public Optional<QuotaCount> getDefaultMaxMessage() { - ResultSet resultSet = session.execute(getDefaultMaxStatement.bind() - .setString(CassandraDefaultMaxQuota.TYPE, CassandraDefaultMaxQuota.MESSAGE)); - if (resultSet.isExhausted()) { - return Optional.empty(); - } - Long maxMessages = resultSet.one().get(CassandraDefaultMaxQuota.VALUE, Long.class); - return longToQuotaCount(maxMessages); + session.execute(setMaxMessageStatement.bind(quotaRoot.getValue(), QuotaCodec.quotaValueToLong(maxMessageCount))); } public Optional<QuotaSize> getMaxStorage(QuotaRoot quotaRoot) { @@ -176,7 +112,7 @@ public class CassandraPerUserMaxQuotaDao { return Optional.empty(); } Long maxStorage = resultSet.one().get(CassandraMaxQuota.STORAGE, Long.class); - return longToQuotaSize(maxStorage); + return QuotaCodec.longToQuotaSize(maxStorage); } public Optional<QuotaCount> getMaxMessage(QuotaRoot quotaRoot) { @@ -185,32 +121,7 @@ public class CassandraPerUserMaxQuotaDao { return Optional.empty(); } Long maxMessages = resultSet.one().get(CassandraMaxQuota.MESSAGE_COUNT, Long.class); - return longToQuotaCount(maxMessages); - } - - private Long quotaValueToLong(QuotaValue<?> value) { - if (value.isUnlimited()) { - return INFINITE; - } - return value.asLong(); - } - - private Optional<QuotaSize> longToQuotaSize(Long value) { - return longToQuotaValue(value, QuotaSize.unlimited(), QuotaSize::size); - } - - private Optional<QuotaCount> longToQuotaCount(Long value) { - return longToQuotaValue(value, QuotaCount.unlimited(), QuotaCount::count); - } - - private <T extends QuotaValue<T>> Optional<T> longToQuotaValue(Long value, T infiniteValue, Function<Long, T> quotaFactory) { - if (value == null) { - return Optional.empty(); - } - if (value == INFINITE) { - return Optional.of(infiniteValue); - } - return Optional.of(quotaFactory.apply(value)); + return QuotaCodec.longToQuotaCount(maxMessages); } public void removeMaxMessage(QuotaRoot quotaRoot) { @@ -221,11 +132,4 @@ public class CassandraPerUserMaxQuotaDao { session.execute(removeMaxStorageStatement.bind(quotaRoot.getValue())); } - public void removeDefaultMaxStorage() { - session.execute(removeDefaultMaxQuotaStatement.bind(CassandraDefaultMaxQuota.STORAGE)); - } - - public void removeDefaultMaxMessage() { - session.execute(removeDefaultMaxQuotaStatement.bind(CassandraDefaultMaxQuota.MESSAGE)); - } } http://git-wip-us.apache.org/repos/asf/james-project/blob/9e331f71/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/quota/CassandraPerUserMaxQuotaManager.java ---------------------------------------------------------------------- diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/quota/CassandraPerUserMaxQuotaManager.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/quota/CassandraPerUserMaxQuotaManager.java index 46fe5e3..d73db1f 100644 --- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/quota/CassandraPerUserMaxQuotaManager.java +++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/quota/CassandraPerUserMaxQuotaManager.java @@ -32,73 +32,75 @@ import com.github.fge.lambdas.Throwing; public class CassandraPerUserMaxQuotaManager implements MaxQuotaManager { - private final CassandraPerUserMaxQuotaDao dao; + private final CassandraPerUserMaxQuotaDao perUserQuota; + private final CassandraDefaultMaxQuotaDao defaultQuota; @Inject - public CassandraPerUserMaxQuotaManager(CassandraPerUserMaxQuotaDao dao) { - this.dao = dao; + public CassandraPerUserMaxQuotaManager(CassandraPerUserMaxQuotaDao perUserQuota, CassandraDefaultMaxQuotaDao defaultQuota) { + this.perUserQuota = perUserQuota; + this.defaultQuota = defaultQuota; } @Override public void setMaxStorage(QuotaRoot quotaRoot, QuotaSize maxStorageQuota) { - dao.setMaxStorage(quotaRoot, maxStorageQuota); + perUserQuota.setMaxStorage(quotaRoot, maxStorageQuota); } @Override public void setMaxMessage(QuotaRoot quotaRoot, QuotaCount maxMessageCount) { - dao.setMaxMessage(quotaRoot, maxMessageCount); + perUserQuota.setMaxMessage(quotaRoot, maxMessageCount); } @Override public void removeMaxMessage(QuotaRoot quotaRoot) { - dao.removeMaxMessage(quotaRoot); + perUserQuota.removeMaxMessage(quotaRoot); } @Override public void removeMaxStorage(QuotaRoot quotaRoot) { - dao.removeMaxStorage(quotaRoot); + perUserQuota.removeMaxStorage(quotaRoot); } @Override public void setDefaultMaxStorage(QuotaSize defaultMaxStorage) { - dao.setDefaultMaxStorage(defaultMaxStorage); + defaultQuota.setDefaultMaxStorage(defaultMaxStorage); } @Override public void removeDefaultMaxStorage() { - dao.removeDefaultMaxStorage(); + defaultQuota.removeDefaultMaxStorage(); } @Override public void setDefaultMaxMessage(QuotaCount defaultMaxMessageCount) { - dao.setDefaultMaxMessage(defaultMaxMessageCount); + defaultQuota.setDefaultMaxMessage(defaultMaxMessageCount); } @Override public void removeDefaultMaxMessage() { - dao.removeDefaultMaxMessage(); + defaultQuota.removeDefaultMaxMessage(); } @Override public Optional<QuotaSize> getDefaultMaxStorage() { - return dao.getDefaultMaxStorage(); + return defaultQuota.getDefaultMaxStorage(); } @Override public Optional<QuotaCount> getDefaultMaxMessage() { - return dao.getDefaultMaxMessage(); + return defaultQuota.getDefaultMaxMessage(); } @Override public Optional<QuotaSize> getMaxStorage(QuotaRoot quotaRoot) { - return dao.getMaxStorage(quotaRoot) + return perUserQuota.getMaxStorage(quotaRoot) .map(Optional::of) .orElseGet(Throwing.supplier(this::getDefaultMaxStorage).sneakyThrow()); } @Override public Optional<QuotaCount> getMaxMessage(QuotaRoot quotaRoot) { - return dao.getMaxMessage(quotaRoot) + return perUserQuota.getMaxMessage(quotaRoot) .map(Optional::of) .orElseGet(Throwing.supplier(this::getDefaultMaxMessage).sneakyThrow()); } http://git-wip-us.apache.org/repos/asf/james-project/blob/9e331f71/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/quota/QuotaCodec.java ---------------------------------------------------------------------- diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/quota/QuotaCodec.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/quota/QuotaCodec.java new file mode 100644 index 0000000..3ab6eaa --- /dev/null +++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/quota/QuotaCodec.java @@ -0,0 +1,56 @@ +/**************************************************************** + * 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.mailbox.cassandra.quota; + +import java.util.Optional; +import java.util.function.Function; + +import org.apache.james.mailbox.quota.QuotaCount; +import org.apache.james.mailbox.quota.QuotaSize; +import org.apache.james.mailbox.quota.QuotaValue; + +public class QuotaCodec { + + private static final long INFINITE = -1; + + static Long quotaValueToLong(QuotaValue<?> value) { + if (value.isUnlimited()) { + return INFINITE; + } + return value.asLong(); + } + + static Optional<QuotaSize> longToQuotaSize(Long value) { + return longToQuotaValue(value, QuotaSize.unlimited(), QuotaSize::size); + } + + static Optional<QuotaCount> longToQuotaCount(Long value) { + return longToQuotaValue(value, QuotaCount.unlimited(), QuotaCount::count); + } + + private static <T extends QuotaValue<T>> Optional<T> longToQuotaValue(Long value, T infiniteValue, Function<Long, T> quotaFactory) { + if (value == null) { + return Optional.empty(); + } + if (value == INFINITE) { + return Optional.of(infiniteValue); + } + return Optional.of(quotaFactory.apply(value)); + } +} http://git-wip-us.apache.org/repos/asf/james-project/blob/9e331f71/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraTestSystemFixture.java ---------------------------------------------------------------------- diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraTestSystemFixture.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraTestSystemFixture.java index 6f6de00..8fffb69 100644 --- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraTestSystemFixture.java +++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraTestSystemFixture.java @@ -26,6 +26,7 @@ import org.apache.james.mailbox.acl.SimpleGroupMembershipResolver; import org.apache.james.mailbox.acl.UnionMailboxACLResolver; import org.apache.james.mailbox.cassandra.ids.CassandraMessageId; import org.apache.james.mailbox.cassandra.quota.CassandraCurrentQuotaManager; +import org.apache.james.mailbox.cassandra.quota.CassandraDefaultMaxQuotaDao; import org.apache.james.mailbox.cassandra.quota.CassandraPerUserMaxQuotaDao; import org.apache.james.mailbox.cassandra.quota.CassandraPerUserMaxQuotaManager; import org.apache.james.mailbox.quota.CurrentQuotaManager; @@ -81,7 +82,9 @@ public class CassandraTestSystemFixture { } public static MaxQuotaManager createMaxQuotaManager(CassandraCluster cassandra) { - return new CassandraPerUserMaxQuotaManager(new CassandraPerUserMaxQuotaDao(cassandra.getConf())); + return new CassandraPerUserMaxQuotaManager( + new CassandraPerUserMaxQuotaDao(cassandra.getConf()), + new CassandraDefaultMaxQuotaDao(cassandra.getConf())); } public static CurrentQuotaManager createCurrentQuotaManager(CassandraCluster cassandra) { http://git-wip-us.apache.org/repos/asf/james-project/blob/9e331f71/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/quota/CassandraPerUserMaxQuotaManagerTest.java ---------------------------------------------------------------------- diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/quota/CassandraPerUserMaxQuotaManagerTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/quota/CassandraPerUserMaxQuotaManagerTest.java index 09cab4f..35e495c 100644 --- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/quota/CassandraPerUserMaxQuotaManagerTest.java +++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/quota/CassandraPerUserMaxQuotaManagerTest.java @@ -36,7 +36,9 @@ public class CassandraPerUserMaxQuotaManagerTest extends GenericMaxQuotaManagerT @Override protected MaxQuotaManager provideMaxQuotaManager() { cassandra = CassandraCluster.create(new CassandraQuotaModule(), cassandraServer.getIp(), cassandraServer.getBindingPort()); - return new CassandraPerUserMaxQuotaManager(new CassandraPerUserMaxQuotaDao(cassandra.getConf())); + return new CassandraPerUserMaxQuotaManager( + new CassandraPerUserMaxQuotaDao(cassandra.getConf()), + new CassandraDefaultMaxQuotaDao(cassandra.getConf())); } @After http://git-wip-us.apache.org/repos/asf/james-project/blob/9e331f71/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java ---------------------------------------------------------------------- diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java index efe3d1a..c27c9ca 100644 --- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java +++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java @@ -48,6 +48,7 @@ import org.apache.james.mailbox.cassandra.modules.CassandraQuotaModule; import org.apache.james.mailbox.cassandra.modules.CassandraSubscriptionModule; import org.apache.james.mailbox.cassandra.modules.CassandraUidModule; import org.apache.james.mailbox.cassandra.quota.CassandraCurrentQuotaManager; +import org.apache.james.mailbox.cassandra.quota.CassandraDefaultMaxQuotaDao; import org.apache.james.mailbox.cassandra.quota.CassandraPerUserMaxQuotaDao; import org.apache.james.mailbox.cassandra.quota.CassandraPerUserMaxQuotaManager; import org.apache.james.mailbox.exception.MailboxException; @@ -126,7 +127,9 @@ public class CassandraHostSystem extends JamesImapHostSystem { mailboxEventDispatcher, delegatingMailboxListener, annotationManager, storeRightManager); QuotaRootResolver quotaRootResolver = new DefaultUserQuotaRootResolver(mapperFactory); - perUserMaxQuotaManager = new CassandraPerUserMaxQuotaManager(new CassandraPerUserMaxQuotaDao(session)); + perUserMaxQuotaManager = new CassandraPerUserMaxQuotaManager( + new CassandraPerUserMaxQuotaDao(session), + new CassandraDefaultMaxQuotaDao(session)); CassandraCurrentQuotaManager currentQuotaManager = new CassandraCurrentQuotaManager(session); http://git-wip-us.apache.org/repos/asf/james-project/blob/9e331f71/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraQuotaModule.java ---------------------------------------------------------------------- diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraQuotaModule.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraQuotaModule.java index 27da710..6d3a04b 100644 --- a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraQuotaModule.java +++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraQuotaModule.java @@ -21,6 +21,8 @@ package org.apache.james.modules.mailbox; import org.apache.james.backends.cassandra.components.CassandraModule; import org.apache.james.mailbox.cassandra.quota.CassandraCurrentQuotaManager; +import org.apache.james.mailbox.cassandra.quota.CassandraDefaultMaxQuotaDao; +import org.apache.james.mailbox.cassandra.quota.CassandraPerUserMaxQuotaDao; import org.apache.james.mailbox.cassandra.quota.CassandraPerUserMaxQuotaManager; import org.apache.james.mailbox.quota.CurrentQuotaManager; import org.apache.james.mailbox.quota.MaxQuotaManager; @@ -40,6 +42,8 @@ public class CassandraQuotaModule extends AbstractModule { @Override protected void configure() { bind(CassandraCurrentQuotaManager.class).in(Scopes.SINGLETON); + bind(CassandraDefaultMaxQuotaDao.class).in(Scopes.SINGLETON); + bind(CassandraPerUserMaxQuotaDao.class).in(Scopes.SINGLETON); bind(CassandraPerUserMaxQuotaManager.class).in(Scopes.SINGLETON); bind(DefaultUserQuotaRootResolver.class).in(Scopes.SINGLETON); bind(StoreQuotaManager.class).in(Scopes.SINGLETON); --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org