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 a6df85207f8834ec5e31a0fab7226d297e0bf0e5 Author: Matthieu Baechler <[email protected]> AuthorDate: Thu Feb 9 21:29:22 2023 +0100 Use extension method pattern to replace utility methods --- .../org/apache/james/transport/mailets/EntityType.scala | 14 ++++++-------- .../apache/james/transport/mailets/GlobalRateLimit.scala | 12 ++++++------ .../james/transport/mailets/PerRecipientRateLimit.scala | 9 +++++---- .../james/transport/mailets/PerSenderRateLimit.scala | 9 +++++---- 4 files changed, 22 insertions(+), 22 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 ca65489936..4fbbebd009 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 @@ -32,17 +32,15 @@ import scala.util.Try case class KeyPrefix(value: String) -object DurationParsingUtil { - def parseDuration(mailetConfig: MailetConfig): Duration = Option(mailetConfig.getInitParameter("duration")) - .map(string => DurationParser.parse(string, ChronoUnit.SECONDS)) - .getOrElse(throw new IllegalArgumentException("'duration' is compulsory")) -} +object ConfigurationOps { + implicit class DurationOps(mailetConfig: MailetConfig) { + def getDuration(key: String): Option[Duration] = Option(mailetConfig.getInitParameter(key)) + .map(string => DurationParser.parse(string, ChronoUnit.SECONDS)) + } -object PrecisionParsingUtil { - def parsePrecision(mailetConfig: MailetConfig): Option[Duration] = Option(mailetConfig.getInitParameter("precision")) - .map(string => DurationParser.parse(string, ChronoUnit.SECONDS)) } + sealed trait EntityType { def asString(): String 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 a0f119111e..e579d361c8 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 @@ -21,10 +21,11 @@ package org.apache.james.transport.mailets import java.time.Duration import java.util - import com.google.common.collect.ImmutableList + import javax.inject.Inject import org.apache.james.rate.limiter.api.{AcceptableRate, RateExceeded, RateLimiter, RateLimiterFactory, RateLimitingKey, RateLimitingResult} +import org.apache.james.transport.mailets.ConfigurationOps.DurationOps import org.apache.mailet.base.GenericMailet import org.apache.mailet.{Mail, ProcessingState} import org.reactivestreams.Publisher @@ -108,8 +109,10 @@ class GlobalRateLimit @Inject()(rateLimiterFactory: RateLimiterFactory) extends private var keyPrefix: Option[KeyPrefix] = _ override def init(): Unit = { - val duration: Duration = parseDuration() - val precision: Option[Duration] = parsePrecision() + val duration: Duration = getMailetConfig.getDuration("duration") + .getOrElse(throw new IllegalArgumentException("'duration' is compulsory")) + + val precision: Option[Duration] = getMailetConfig.getDuration("precision") keyPrefix = Option(getInitParameter("keyPrefix")).map(KeyPrefix) exceededProcessor = getInitParameter("exceededProcessor", Mail.ERROR) @@ -122,9 +125,6 @@ class GlobalRateLimit @Inject()(rateLimiterFactory: RateLimiterFactory) extends totalSizeRateLimiter = globalRateLimiter(TotalSize) } - def parseDuration(): Duration = DurationParsingUtil.parseDuration(getMailetConfig) - def parsePrecision(): Option[Duration] = PrecisionParsingUtil.parsePrecision(getMailetConfig) - override def service(mail: Mail): Unit = { val pivot: RateLimitingResult = AcceptableRate val result = SFlux.merge(Seq( 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 dd65a01138..0e0a4b16a9 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 @@ -21,13 +21,14 @@ package org.apache.james.transport.mailets import java.time.Duration import java.util - import com.google.common.annotations.VisibleForTesting 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, RateLimitingKey, RateLimitingResult} +import org.apache.james.transport.mailets.ConfigurationOps.DurationOps import org.apache.james.util.ReactorUtils.DEFAULT_CONCURRENCY import org.apache.mailet.base.GenericMailet import org.apache.mailet.{Mail, ProcessingState} @@ -98,7 +99,7 @@ class PerRecipientRateLimit @Inject()(rateLimiterFactory: RateLimiterFactory) ex override def init(): Unit = { val duration: Duration = parseDuration() - val precision: Option[Duration] = parsePrecision() + val precision: Option[Duration] = getMailetConfig.getDuration("precision") val keyPrefix: Option[KeyPrefix] = Option(getInitParameter("keyPrefix")).map(KeyPrefix) exceededProcessor = getInitParameter("exceededProcessor", Mail.ERROR) @@ -132,8 +133,8 @@ class PerRecipientRateLimit @Inject()(rateLimiterFactory: RateLimiterFactory) ex } @VisibleForTesting - def parseDuration(): Duration = DurationParsingUtil.parseDuration(getMailetConfig) - def parsePrecision(): Option[Duration] = PrecisionParsingUtil.parsePrecision(getMailetConfig) + def parseDuration(): Duration = getMailetConfig.getDuration("duration") + .getOrElse(throw new IllegalArgumentException("'duration' is compulsory")) private def createRateLimiter(entityType: EntityType, duration: Duration, precision: Option[Duration], rateLimiterFactory: RateLimiterFactory, keyPrefix: Option[KeyPrefix]): Option[PerRecipientRateLimiter] = 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 956d063f90..c48831d9a9 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 @@ -21,12 +21,13 @@ package org.apache.james.transport.mailets import java.time.Duration import java.util - import com.google.common.annotations.VisibleForTesting import com.google.common.collect.ImmutableList + import javax.inject.Inject import org.apache.james.core.MailAddress import org.apache.james.rate.limiter.api.{AcceptableRate, RateExceeded, RateLimiter, RateLimiterFactory, RateLimitingKey, RateLimitingResult} +import org.apache.james.transport.mailets.ConfigurationOps.DurationOps import org.apache.mailet.base.GenericMailet import org.apache.mailet.{Mail, ProcessingState} import org.reactivestreams.Publisher @@ -109,7 +110,7 @@ class PerSenderRateLimit @Inject()(rateLimiterFactory: RateLimiterFactory) exten override def init(): Unit = { val duration: Duration = parseDuration() - val precision: Option[Duration] = parsePrecision() + val precision: Option[Duration] = getMailetConfig.getDuration("precision") keyPrefix = Option(getInitParameter("keyPrefix")).map(KeyPrefix) exceededProcessor = getInitParameter("exceededProcessor", Mail.ERROR) @@ -123,8 +124,8 @@ class PerSenderRateLimit @Inject()(rateLimiterFactory: RateLimiterFactory) exten } @VisibleForTesting - def parseDuration(): Duration = DurationParsingUtil.parseDuration(getMailetConfig) - def parsePrecision(): Option[Duration] = PrecisionParsingUtil.parsePrecision(getMailetConfig) + def parseDuration(): Duration = getMailetConfig.getDuration("duration") + .getOrElse(throw new IllegalArgumentException("'duration' is compulsory")) override def service(mail: Mail): Unit = mail.getMaybeSender .asOptional() --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
