This is an automated email from the ASF dual-hosted git repository. btellier pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 7f6c503f4df8d94f0d440a99f892a0f7ff7b4d2d Author: Benoit Tellier <[email protected]> AuthorDate: Mon Feb 7 10:57:16 2022 +0700 JAMES-3683 Introduce a redis.properties configuration file --- server/mailet/rate-limiter-redis/README.adoc | 30 +++++----------------- .../mailet/rate-limiter-redis/docker-compose.yml | 1 + .../mailet/rate-limiter-redis/mailetcontainer.xml | 1 - server/mailet/rate-limiter-redis/pom.xml | 11 ++++++++ server/mailet/rate-limiter-redis/redis.properties | 1 + .../rate/limiter/redis/RedisRateLimiter.scala | 19 +++++++------- .../redis/RedisRateLimiterConfiguration.scala | 6 ++--- .../james/rate/limiter/api/RateLimiter.scala | 5 ---- .../rate/limiter/memory/MemoryRateLimiter.scala | 17 ++++++------ .../james/transport/mailets/GlobalRateLimit.scala | 9 +++---- .../mailets/PerRecipientRateLimitMailet.scala | 5 ++-- .../transport/mailets/PerSenderRateLimit.scala | 9 +++---- .../transport/mailets/GlobalRateLimitTest.scala | 4 +-- .../mailets/PerRecipientRateLimitMailetTest.scala | 4 +-- .../transport/mailets/PerSenderRateLimitTest.scala | 4 +-- 15 files changed, 58 insertions(+), 68 deletions(-) diff --git a/server/mailet/rate-limiter-redis/README.adoc b/server/mailet/rate-limiter-redis/README.adoc index 404c455..2602c3c 100644 --- a/server/mailet/rate-limiter-redis/README.adoc +++ b/server/mailet/rate-limiter-redis/README.adoc @@ -13,31 +13,15 @@ for the underlying rate limiting. `extension.properties`: ---- -guice.extension.module=org.apache.james.rate.limiter.redis.R +guice.extension.module=org.apache.james.rate.limiter.redis.RedisRateLimiterModule ---- -- 4. Use the rate limiting mailets within `mailetcontainer.xml` +- 4. Provide a `redis.properties` file: -We provide a sample `docker-compose` demonstrating this setup. - -== Additionnal mailet parameters - -Mailets need to specify the `redisURL` tag. - -This consists in a list of urls to contact the Redis servers. - -Specifying a single URL will connect to a single Redis instance. - -Specifying a coma delimited list of URLs will connect to Redis as a cluster. - -Eg: +---- +redisURL=redis://redis:6379 +---- -``` -<mailet matcher="All" class="PerSenderRateLimit"> - <redisURL>redis://localhost:6379</redisURL> - <keyPrefix>myPrefix</keyPrefix> - <duration>1h</duration> - <count>10</count> -</mailet> -`` +- 5. Use the rate limiting mailets within `mailetcontainer.xml` +We provide a sample `docker-compose` demonstrating this setup. \ No newline at end of file diff --git a/server/mailet/rate-limiter-redis/docker-compose.yml b/server/mailet/rate-limiter-redis/docker-compose.yml index d21bf4c..45b1db8 100644 --- a/server/mailet/rate-limiter-redis/docker-compose.yml +++ b/server/mailet/rate-limiter-redis/docker-compose.yml @@ -14,4 +14,5 @@ services: volumes: - $PWD/target/james-server-rate-limiter-redis-3.7.0-SNAPSHOT-jar-with-dependencies.jar:/root/extensions-jars/james-server-rate-limiter-redis.jar - $PWD/extensions.properties:/root/conf/extensions.properties + - $PWD/redis.properties:/root/conf/redis.properties - $PWD/mailetcontainer.xml:/root/conf/mailetcontainer.xml diff --git a/server/mailet/rate-limiter-redis/mailetcontainer.xml b/server/mailet/rate-limiter-redis/mailetcontainer.xml index 1dd804c..8804b31 100644 --- a/server/mailet/rate-limiter-redis/mailetcontainer.xml +++ b/server/mailet/rate-limiter-redis/mailetcontainer.xml @@ -102,7 +102,6 @@ <processor state="relay" enableJmx="true"> <mailet matcher="All" class="PerSenderRateLimit"> - <redisURL>redis://redis:6379</redisURL> <keyPrefix>myPrefix</keyPrefix> <duration>1h</duration> <count>10</count> diff --git a/server/mailet/rate-limiter-redis/pom.xml b/server/mailet/rate-limiter-redis/pom.xml index 878b6e8..1665ac8 100644 --- a/server/mailet/rate-limiter-redis/pom.xml +++ b/server/mailet/rate-limiter-redis/pom.xml @@ -49,6 +49,12 @@ </dependency> <dependency> <groupId>${james.groupId}</groupId> + <artifactId>james-server-guice-configuration</artifactId> + <version>${project.version}</version> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>${james.groupId}</groupId> <artifactId>james-server-rate-limiter</artifactId> </dependency> <dependency> @@ -97,6 +103,11 @@ <scope>provided</scope> </dependency> <dependency> + <groupId>org.apache.commons</groupId> + <artifactId>commons-configuration2</artifactId> + <scope>provided</scope> + </dependency> + <dependency> <groupId>org.testcontainers</groupId> <artifactId>testcontainers</artifactId> <scope>test</scope> diff --git a/server/mailet/rate-limiter-redis/redis.properties b/server/mailet/rate-limiter-redis/redis.properties new file mode 100644 index 0000000..20c1718 --- /dev/null +++ b/server/mailet/rate-limiter-redis/redis.properties @@ -0,0 +1 @@ +redisURL=redis://redis:6379 \ No newline at end of file diff --git a/server/mailet/rate-limiter-redis/src/main/scala/org/apache/james/rate/limiter/redis/RedisRateLimiter.scala b/server/mailet/rate-limiter-redis/src/main/scala/org/apache/james/rate/limiter/redis/RedisRateLimiter.scala index e30a810..f2b3f7b 100644 --- a/server/mailet/rate-limiter-redis/src/main/scala/org/apache/james/rate/limiter/redis/RedisRateLimiter.scala +++ b/server/mailet/rate-limiter-redis/src/main/scala/org/apache/james/rate/limiter/redis/RedisRateLimiter.scala @@ -19,14 +19,15 @@ package org.apache.james.rate.limiter.redis -import com.google.inject.AbstractModule +import com.google.inject.{AbstractModule, Provides} import es.moki.ratelimitj.core.limiter.request.{AbstractRequestRateLimiterFactory, ReactiveRequestRateLimiter, RequestLimitRule} import es.moki.ratelimitj.redis.request.{RedisClusterRateLimiterFactory, RedisSlidingWindowRequestRateLimiter, RedisRateLimiterFactory => RedisSingleInstanceRateLimitjFactory} import io.lettuce.core.RedisClient import io.lettuce.core.cluster.RedisClusterClient +import javax.inject.Inject import org.apache.james.rate.limiter.api.Increment.Increment -import org.apache.james.rate.limiter.api.{AcceptableRate, RateExceeded, RateLimiter, RateLimiterFactory, RateLimiterFactoryProvider, RateLimitingKey, RateLimitingResult, Rule, Rules} -import org.apache.mailet.MailetConfig +import org.apache.james.rate.limiter.api.{AcceptableRate, RateExceeded, RateLimiter, RateLimiterFactory, RateLimitingKey, RateLimitingResult, Rule, Rules} +import org.apache.james.utils.PropertiesProvider import org.reactivestreams.Publisher import reactor.core.scala.publisher.SMono @@ -34,15 +35,15 @@ import scala.jdk.CollectionConverters._ class RedisRateLimiterModule() extends AbstractModule { override def configure(): Unit = - bind(classOf[RateLimiterFactoryProvider]) - .to(classOf[RedisRateLimiterFactoryProvider]) -} + bind(classOf[RateLimiterFactory]) + .to(classOf[RedisRateLimiterFactory]) -class RedisRateLimiterFactoryProvider extends RateLimiterFactoryProvider { - override def create(mailetConfig: MailetConfig): RateLimiterFactory = new RedisRateLimiterFactory(RedisRateLimiterConfiguration.from(mailetConfig)) + @Provides + def provideConfig(propertiesProvider: PropertiesProvider): RedisRateLimiterConfiguration = + RedisRateLimiterConfiguration.from(propertiesProvider.getConfiguration("redis")) } -class RedisRateLimiterFactory(redisConfiguration: RedisRateLimiterConfiguration) extends RateLimiterFactory { +class RedisRateLimiterFactory @Inject()(redisConfiguration: RedisRateLimiterConfiguration) extends RateLimiterFactory { val rateLimitjFactory: AbstractRequestRateLimiterFactory[RedisSlidingWindowRequestRateLimiter] = if (redisConfiguration.redisURI.value.size > 1) { new RedisClusterRateLimiterFactory(RedisClusterClient.create(redisConfiguration.redisURI.value.asJava)) diff --git a/server/mailet/rate-limiter-redis/src/main/scala/org/apache/james/rate/limiter/redis/RedisRateLimiterConfiguration.scala b/server/mailet/rate-limiter-redis/src/main/scala/org/apache/james/rate/limiter/redis/RedisRateLimiterConfiguration.scala index 7a84e19..1bd9be1 100644 --- a/server/mailet/rate-limiter-redis/src/main/scala/org/apache/james/rate/limiter/redis/RedisRateLimiterConfiguration.scala +++ b/server/mailet/rate-limiter-redis/src/main/scala/org/apache/james/rate/limiter/redis/RedisRateLimiterConfiguration.scala @@ -26,12 +26,12 @@ import eu.timepit.refined import eu.timepit.refined.api.Refined import eu.timepit.refined.collection.NonEmpty import io.lettuce.core.RedisURI +import org.apache.commons.configuration2.Configuration import org.apache.james.rate.limiter.redis.RedisUris.RedisUris -import org.apache.mailet.MailetConfig object RedisRateLimiterConfiguration { - def from(mailetConfig: MailetConfig): RedisRateLimiterConfiguration = - from(mailetConfig.getInitParameter("redisURL")) + def from(config: Configuration): RedisRateLimiterConfiguration = + from(config.getString("redisURL")) def from(redisUri: String, windowPrecision: Option[Duration] = None): RedisRateLimiterConfiguration = { Preconditions.checkArgument(redisUri != null && !redisUri.isBlank) diff --git a/server/mailet/rate-limiter/src/main/scala/org/apache/james/rate/limiter/api/RateLimiter.scala b/server/mailet/rate-limiter/src/main/scala/org/apache/james/rate/limiter/api/RateLimiter.scala index 83c69ba..1be822e 100644 --- a/server/mailet/rate-limiter/src/main/scala/org/apache/james/rate/limiter/api/RateLimiter.scala +++ b/server/mailet/rate-limiter/src/main/scala/org/apache/james/rate/limiter/api/RateLimiter.scala @@ -26,7 +26,6 @@ import eu.timepit.refined.api.Refined import eu.timepit.refined.numeric.Positive import org.apache.james.rate.limiter.api.AllowedQuantity.AllowedQuantity import org.apache.james.rate.limiter.api.Increment.Increment -import org.apache.mailet.MailetConfig import org.reactivestreams.Publisher trait RateLimitingKey { @@ -78,10 +77,6 @@ trait RateLimiterFactory { def withSpecification(rules: Rules): RateLimiter } -trait RateLimiterFactoryProvider { - def create(mailetConfig: MailetConfig): RateLimiterFactory -} - sealed trait RateLimitingResult { def merge(other: RateLimitingResult): RateLimitingResult } diff --git a/server/mailet/rate-limiter/src/main/scala/org/apache/james/rate/limiter/memory/MemoryRateLimiter.scala b/server/mailet/rate-limiter/src/main/scala/org/apache/james/rate/limiter/memory/MemoryRateLimiter.scala index c57e9d8..9b62411 100644 --- a/server/mailet/rate-limiter/src/main/scala/org/apache/james/rate/limiter/memory/MemoryRateLimiter.scala +++ b/server/mailet/rate-limiter/src/main/scala/org/apache/james/rate/limiter/memory/MemoryRateLimiter.scala @@ -24,9 +24,9 @@ import java.time.Duration import com.google.inject.AbstractModule import es.moki.ratelimitj.core.limiter.request.{RequestLimitRule, RequestRateLimiter} import es.moki.ratelimitj.inmemory.request.InMemorySlidingWindowRequestRateLimiter +import javax.inject.Inject import org.apache.james.rate.limiter.api.Increment.Increment -import org.apache.james.rate.limiter.api.{AcceptableRate, RateExceeded, RateLimiter, RateLimiterFactory, RateLimiterFactoryProvider, RateLimitingKey, RateLimitingResult, Rule, Rules} -import org.apache.mailet.MailetConfig +import org.apache.james.rate.limiter.api.{AcceptableRate, RateExceeded, RateLimiter, RateLimiterFactory, RateLimitingKey, RateLimitingResult, Rule, Rules} import org.reactivestreams.Publisher import reactor.core.scala.publisher.SMono @@ -34,15 +34,16 @@ import scala.jdk.CollectionConverters._ class MemoryRateLimiterModule() extends AbstractModule { override def configure(): Unit = - bind(classOf[RateLimiterFactoryProvider]) - .to(classOf[MemoryRateLimiterFactoryProvider]) + bind(classOf[RateLimiterFactory]) + .to(classOf[MemoryRateLimiterFactory]) } -class MemoryRateLimiterFactoryProvider() extends RateLimiterFactoryProvider { - override def create(mailetConfig: MailetConfig): RateLimiterFactory = new MemoryRateLimiterFactory() -} +class MemoryRateLimiterFactory (precision: Option[Duration] = None) extends RateLimiterFactory { + @Inject() + def this() = { + this(None) + } -class MemoryRateLimiterFactory(precision: Option[Duration] = None) extends RateLimiterFactory { override def withSpecification(rules: Rules): RateLimiter = { MemoryRateLimiter(new InMemorySlidingWindowRequestRateLimiter(rules.rules .map(convert) diff --git a/server/mailet/rate-limiter/src/main/scala/org/apache/james/transport/mailets/GlobalRateLimit.scala b/server/mailet/rate-limiter/src/main/scala/org/apache/james/transport/mailets/GlobalRateLimit.scala index 6d30f7a..1b891b0 100644 --- a/server/mailet/rate-limiter/src/main/scala/org/apache/james/transport/mailets/GlobalRateLimit.scala +++ b/server/mailet/rate-limiter/src/main/scala/org/apache/james/transport/mailets/GlobalRateLimit.scala @@ -22,7 +22,7 @@ package org.apache.james.transport.mailets import java.time.Duration import javax.inject.Inject -import org.apache.james.rate.limiter.api.{AcceptableRate, RateExceeded, RateLimiter, RateLimiterFactory, RateLimiterFactoryProvider, RateLimitingKey, RateLimitingResult} +import org.apache.james.rate.limiter.api.{AcceptableRate, RateExceeded, RateLimiter, RateLimiterFactory, RateLimitingKey, RateLimitingResult} import org.apache.mailet.Mail import org.apache.mailet.base.GenericMailet import org.reactivestreams.Publisher @@ -88,14 +88,14 @@ case class GlobalRateLimiter(rateLimiter: Option[RateLimiter], keyPrefix: Option * </code></pre> * * <p>Note that to use this extension you need to place the rate-limiter JAR in the <code>extensions-jars</code> folder - * and need to configure a viable option to invoke <code>RateLimiterFactoryProvider</code> which can be done by + * and need to configure a viable option to invoke <code>RateLimiterFactory</code> which can be done by * loading <code>org.apache.james.rate.limiter.memory.MemoryRateLimiterModule</code> Guice module within the * <code>guice.extension.module</code> in <code>extensions.properties</code> configuration file. Note that other Rate * limiter implementation might require extra configuration parameters within your mailet.</p> * - * @param rateLimiterFactoryProvider Allows instantiations of the underlying rate limiters. + * @param rateLimiterFactory Allows instantiations of the underlying rate limiters. */ -class GlobalRateLimit @Inject()(rateLimiterFactoryProvider: RateLimiterFactoryProvider) extends GenericMailet { +class GlobalRateLimit @Inject()(rateLimiterFactory: RateLimiterFactory) extends GenericMailet { private var countRateLimiter: GlobalRateLimiter = _ private var recipientsRateLimiter: GlobalRateLimiter = _ private var sizeRateLimiter: GlobalRateLimiter = _ @@ -104,7 +104,6 @@ class GlobalRateLimit @Inject()(rateLimiterFactoryProvider: RateLimiterFactoryPr private var keyPrefix: Option[KeyPrefix] = _ override def init(): Unit = { - val rateLimiterFactory = rateLimiterFactoryProvider.create(getMailetConfig) val duration: Duration = parseDuration() keyPrefix = Option(getInitParameter("keyPrefix")).map(KeyPrefix) diff --git a/server/mailet/rate-limiter/src/main/scala/org/apache/james/transport/mailets/PerRecipientRateLimitMailet.scala b/server/mailet/rate-limiter/src/main/scala/org/apache/james/transport/mailets/PerRecipientRateLimitMailet.scala index b6f6c23..31e2d7f 100644 --- a/server/mailet/rate-limiter/src/main/scala/org/apache/james/transport/mailets/PerRecipientRateLimitMailet.scala +++ b/server/mailet/rate-limiter/src/main/scala/org/apache/james/transport/mailets/PerRecipientRateLimitMailet.scala @@ -26,7 +26,7 @@ import com.google.common.collect.ImmutableList import javax.inject.Inject import org.apache.james.core.MailAddress import org.apache.james.lifecycle.api.LifecycleUtil -import org.apache.james.rate.limiter.api.{AcceptableRate, RateExceeded, RateLimiter, RateLimiterFactory, RateLimiterFactoryProvider, RateLimitingKey, RateLimitingResult} +import org.apache.james.rate.limiter.api.{AcceptableRate, RateExceeded, RateLimiter, RateLimiterFactory, RateLimitingKey, RateLimitingResult} import org.apache.james.util.ReactorUtils.DEFAULT_CONCURRENCY import org.apache.mailet.Mail import org.apache.mailet.base.GenericMailet @@ -50,12 +50,11 @@ case class RecipientKey(keyPrefix: Option[KeyPrefix], entityType: EntityType, ma }${entityType.asString()}_${mailAddress.asString()}" } -class PerRecipientRateLimitMailet @Inject()(rateLimiterFactoryProvider: RateLimiterFactoryProvider) extends GenericMailet { +class PerRecipientRateLimitMailet @Inject()(rateLimiterFactory: RateLimiterFactory) extends GenericMailet { private var exceededProcessor: String = _ private var rateLimiters: Seq[PerRecipientRateLimiter] = _ override def init(): Unit = { - val rateLimiterFactory: RateLimiterFactory = rateLimiterFactoryProvider.create(getMailetConfig) val duration: Duration = parseDuration() val keyPrefix: Option[KeyPrefix] = Option(getInitParameter("keyPrefix")).map(KeyPrefix) exceededProcessor = getInitParameter("exceededProcessor", Mail.ERROR) diff --git a/server/mailet/rate-limiter/src/main/scala/org/apache/james/transport/mailets/PerSenderRateLimit.scala b/server/mailet/rate-limiter/src/main/scala/org/apache/james/transport/mailets/PerSenderRateLimit.scala index edd83e6..cc4129b 100644 --- a/server/mailet/rate-limiter/src/main/scala/org/apache/james/transport/mailets/PerSenderRateLimit.scala +++ b/server/mailet/rate-limiter/src/main/scala/org/apache/james/transport/mailets/PerSenderRateLimit.scala @@ -24,7 +24,7 @@ import java.time.Duration import com.google.common.annotations.VisibleForTesting import javax.inject.Inject import org.apache.james.core.MailAddress -import org.apache.james.rate.limiter.api.{AcceptableRate, RateExceeded, RateLimiter, RateLimiterFactory, RateLimiterFactoryProvider, RateLimitingKey, RateLimitingResult} +import org.apache.james.rate.limiter.api.{AcceptableRate, RateExceeded, RateLimiter, RateLimiterFactory, RateLimitingKey, RateLimitingResult} import org.apache.mailet.Mail import org.apache.mailet.base.GenericMailet import org.reactivestreams.Publisher @@ -88,14 +88,14 @@ case class SenderKey(keyPrefix: Option[KeyPrefix], entityType: EntityType, mailA * </code></pre> * * <p>Note that to use this extension you need to place the rate-limiter JAR in the <code>extensions-jars</code> folder - * and need to configure a viable option to invoke <code>RateLimiterFactoryProvider</code> which can be done by + * and need to configure a viable option to invoke <code>RateLimiterFactory</code> which can be done by * loading <code>org.apache.james.rate.limiter.memory.MemoryRateLimiterModule</code> Guice module within the * <code>guice.extension.module</code> in <code>extensions.properties</code> configuration file. Note that other Rate * limiter implementation might require extra configuration parameters within your mailet.</p> * - * @param rateLimiterFactoryProvider Allows instantiations of the underlying rate limiters. + * @param rateLimiterFactory Allows instantiations of the underlying rate limiters. */ -class PerSenderRateLimit @Inject()(rateLimiterFactoryProvider: RateLimiterFactoryProvider) extends GenericMailet { +class PerSenderRateLimit @Inject()(rateLimiterFactory: RateLimiterFactory) extends GenericMailet { private var countRateLimiter: PerSenderRateLimiter = _ private var recipientsRateLimiter: PerSenderRateLimiter = _ private var sizeRateLimiter: PerSenderRateLimiter = _ @@ -104,7 +104,6 @@ class PerSenderRateLimit @Inject()(rateLimiterFactoryProvider: RateLimiterFactor private var keyPrefix: Option[KeyPrefix] = _ override def init(): Unit = { - val rateLimiterFactory = rateLimiterFactoryProvider.create(getMailetConfig) val duration: Duration = parseDuration() keyPrefix = Option(getInitParameter("keyPrefix")).map(KeyPrefix) diff --git a/server/mailet/rate-limiter/src/test/scala/org/apache/james/transport/mailets/GlobalRateLimitTest.scala b/server/mailet/rate-limiter/src/test/scala/org/apache/james/transport/mailets/GlobalRateLimitTest.scala index c79c2a3..96a2b51 100644 --- a/server/mailet/rate-limiter/src/test/scala/org/apache/james/transport/mailets/GlobalRateLimitTest.scala +++ b/server/mailet/rate-limiter/src/test/scala/org/apache/james/transport/mailets/GlobalRateLimitTest.scala @@ -20,7 +20,7 @@ package org.apache.james.transport.mailets import org.apache.james.core.MailAddress -import org.apache.james.rate.limiter.memory.MemoryRateLimiterFactoryProvider +import org.apache.james.rate.limiter.memory.MemoryRateLimiterFactory import org.apache.mailet.base.test.{FakeMail, FakeMailetConfig} import org.apache.mailet.{Mail, MailetConfig} import org.assertj.core.api.Assertions.assertThat @@ -31,7 +31,7 @@ import scala.jdk.CollectionConverters._ class GlobalRateLimitTest { def testee(mailetConfig: MailetConfig): GlobalRateLimit = { - val mailet = new GlobalRateLimit(new MemoryRateLimiterFactoryProvider()) + val mailet = new GlobalRateLimit(new MemoryRateLimiterFactory()) mailet.init(mailetConfig) mailet } diff --git a/server/mailet/rate-limiter/src/test/scala/org/apache/james/transport/mailets/PerRecipientRateLimitMailetTest.scala b/server/mailet/rate-limiter/src/test/scala/org/apache/james/transport/mailets/PerRecipientRateLimitMailetTest.scala index 7e7a3b6..f45002b 100644 --- a/server/mailet/rate-limiter/src/test/scala/org/apache/james/transport/mailets/PerRecipientRateLimitMailetTest.scala +++ b/server/mailet/rate-limiter/src/test/scala/org/apache/james/transport/mailets/PerRecipientRateLimitMailetTest.scala @@ -20,7 +20,7 @@ package org.apache.james.transport.mailets import org.apache.james.core.MailAddress -import org.apache.james.rate.limiter.memory.MemoryRateLimiterFactoryProvider +import org.apache.james.rate.limiter.memory.MemoryRateLimiterFactory import org.apache.mailet.base.test.{FakeMail, FakeMailContext, FakeMailetConfig} import org.apache.mailet.{Mail, MailetConfig} import org.assertj.core.api.Assertions.{assertThat, assertThatCode, assertThatThrownBy} @@ -34,7 +34,7 @@ import scala.jdk.CollectionConverters._ class PerRecipientRateLimitMailetTest { def testee(mailetConfig: MailetConfig) : PerRecipientRateLimitMailet = { - val mailet: PerRecipientRateLimitMailet = new PerRecipientRateLimitMailet(new MemoryRateLimiterFactoryProvider()) + val mailet: PerRecipientRateLimitMailet = new PerRecipientRateLimitMailet(new MemoryRateLimiterFactory()) mailet.init(mailetConfig) mailet } diff --git a/server/mailet/rate-limiter/src/test/scala/org/apache/james/transport/mailets/PerSenderRateLimitTest.scala b/server/mailet/rate-limiter/src/test/scala/org/apache/james/transport/mailets/PerSenderRateLimitTest.scala index aa3cce6..fcfd01c 100644 --- a/server/mailet/rate-limiter/src/test/scala/org/apache/james/transport/mailets/PerSenderRateLimitTest.scala +++ b/server/mailet/rate-limiter/src/test/scala/org/apache/james/transport/mailets/PerSenderRateLimitTest.scala @@ -20,7 +20,7 @@ package org.apache.james.transport.mailets import org.apache.james.core.MailAddress -import org.apache.james.rate.limiter.memory.MemoryRateLimiterFactoryProvider +import org.apache.james.rate.limiter.memory.MemoryRateLimiterFactory import org.apache.mailet.base.test.{FakeMail, FakeMailetConfig} import org.apache.mailet.{Mail, MailetConfig} import org.assertj.core.api.Assertions.{assertThat, assertThatCode, assertThatThrownBy} @@ -31,7 +31,7 @@ import scala.jdk.CollectionConverters._ class PerSenderRateLimitTest { def testee(mailetConfig: MailetConfig): PerSenderRateLimit = { - val mailet = new PerSenderRateLimit(new MemoryRateLimiterFactoryProvider()) + val mailet = new PerSenderRateLimit(new MemoryRateLimiterFactory()) mailet.init(mailetConfig) mailet } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
