This is an automated email from the ASF dual-hosted git repository. matthieu pushed a commit to branch refactorings-5 in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 8e12bd0dc7a3d4bc585b3939b3292fa753cb8023 Author: Matthieu Baechler <[email protected]> AuthorDate: Thu Feb 9 21:41:05 2023 +0100 Simplify PerRecipientRateLimit init --- .../scala/org/apache/james/transport/mailets/EntityType.scala | 8 ++++++-- .../james/transport/mailets/PerRecipientRateLimit.scala | 11 ++++------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/server/mailet/rate-limiter/src/main/scala/org/apache/james/transport/mailets/EntityType.scala b/server/mailet/rate-limiter/src/main/scala/org/apache/james/transport/mailets/EntityType.scala index 4fbbebd009..cf9d87b979 100644 --- a/server/mailet/rate-limiter/src/main/scala/org/apache/james/transport/mailets/EntityType.scala +++ b/server/mailet/rate-limiter/src/main/scala/org/apache/james/transport/mailets/EntityType.scala @@ -33,11 +33,15 @@ import scala.util.Try case class KeyPrefix(value: String) object ConfigurationOps { + + implicit class OptionOps(mailetConfig: MailetConfig) { + def getOptionalString(key: String): Option[String] = Option(mailetConfig.getInitParameter(key)) + } + implicit class DurationOps(mailetConfig: MailetConfig) { - def getDuration(key: String): Option[Duration] = Option(mailetConfig.getInitParameter(key)) + def getDuration(key: String): Option[Duration] = mailetConfig.getOptionalString(key) .map(string => DurationParser.parse(string, ChronoUnit.SECONDS)) } - } diff --git a/server/mailet/rate-limiter/src/main/scala/org/apache/james/transport/mailets/PerRecipientRateLimit.scala b/server/mailet/rate-limiter/src/main/scala/org/apache/james/transport/mailets/PerRecipientRateLimit.scala index 0e0a4b16a9..13b0f17fb7 100644 --- a/server/mailet/rate-limiter/src/main/scala/org/apache/james/transport/mailets/PerRecipientRateLimit.scala +++ b/server/mailet/rate-limiter/src/main/scala/org/apache/james/transport/mailets/PerRecipientRateLimit.scala @@ -28,7 +28,7 @@ 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, RateLimitingKey, RateLimitingResult} -import org.apache.james.transport.mailets.ConfigurationOps.DurationOps +import org.apache.james.transport.mailets.ConfigurationOps.{DurationOps, OptionOps} import org.apache.james.util.ReactorUtils.DEFAULT_CONCURRENCY import org.apache.mailet.base.GenericMailet import org.apache.mailet.{Mail, ProcessingState} @@ -100,15 +100,12 @@ class PerRecipientRateLimit @Inject()(rateLimiterFactory: RateLimiterFactory) ex override def init(): Unit = { val duration: Duration = parseDuration() val precision: Option[Duration] = getMailetConfig.getDuration("precision") - val keyPrefix: Option[KeyPrefix] = Option(getInitParameter("keyPrefix")).map(KeyPrefix) - exceededProcessor = getInitParameter("exceededProcessor", Mail.ERROR) + val keyPrefix: Option[KeyPrefix] = getMailetConfig.getOptionalString("keyPrefix").map(KeyPrefix) + exceededProcessor = getMailetConfig.getOptionalString("exceededProcessor").getOrElse(Mail.ERROR) def perRecipientRateLimiter(entityType: EntityType): Option[PerRecipientRateLimiter] = createRateLimiter(entityType, duration, precision, rateLimiterFactory, keyPrefix) - rateLimiters = Seq(perRecipientRateLimiter(Size), - perRecipientRateLimiter(Count)) - .filter(limiter => limiter.isDefined) - .map(limiter => limiter.get) + rateLimiters = Seq(Size, Count).flatMap(perRecipientRateLimiter) } override def service(mail: Mail): Unit = { --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
