All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[ 0.8.0 ] - 2024-08-05
.expression.Operator#IN
. Example use:web.request.remote.address in io.github.ratelimiter.Bots.getBotIps()
.Bandwidths#getPermitsPer(TimeUnit)
.- Method
RateSource#getRates
to get rates defined at the respective source. - Add field
Rate.rate
.
RateLimiterFactory
. Rather useRateLimiterRegistry
directly.AnnotationConverter
and its implementations. Rather useJavaRateSources.of()
.
- Expressions to require space around operators. For example:
use:
sys.time.elapsed > PT9S
not:sys.time.elapsed>PT9S
. - Expressions. Simply format
sys.property = {name = value}
tosys.propery[name] = value
. .bandwidths.AllOrNothingBandwidth
is no longer in beta.
- Static factory methods from
.bandwidths.Bandwidth
to.bandwidths.Bandwidths
. - Static factory methods from
.bandwidths.BandwidthFactory
to.bandwidths.BandwidthFactories
. - Static factory methods from
.expression.ExpressionMatcher
to.expression.ExpressionMatchers
. - Static factory methods from
.expression.ExpressionParser
to.expression.ExpressionParsers
. - Static factory methods from
.expression.ExpressionResolver
to.expression.ExpressionResolvers
. - Static factory methods from
.util.Matcher
to.util.Matchers
. - Static factory methods from
.util.Ticker
to.util.Tickers
. - Static factory methods from
.RateLimiter
to.RateLimiters
.
[ 0.7.1 ] - 2024-01-26
- Improve performance, bump to v0.7.1
[ 0.7.0 ] - 2024-01-21
- Added
UnmodifiableBandwidth
viaBandwidths#unmodifiableBandwidth(Bandwidth)
[ 0.6.0 ] - 2024-01-12
- Moved
Matcher
andExpressionMatcher
from project rate-limiter-annotation to project rate-limiter.
[ 0.5.1 ] - 2023-05-20
- Renamed
Bandwidth#ALWAYS_AVAILABLE
toBandwidth#UNLIMITED
[ 0.5.0 ] - 2023-05-01
- Allow usage of 3rd party rate limiters
[ 0.4.2 ] - 2023-02-24
- Use system epoch millis as Ticker time
[ 0.4.1 ] - 2023-02-19
- Updated README
[ 0.4.0 ] - 2023-02-11
- Added
Bandwidth#ALWAYS_AVAILABLE
andRateLimiter#NO_LIMIT
.
[ 0.3.4 ] - 2023-02-05
- Permit expressions (for rate conditions) having
null
right-hand side - Improved expression splitting
- Renamed
web.session.cookie
toweb.request.cookie
- Renamed
web.session.user.role
toweb.request.user.role
- Renamed
web.session.user.principal
toweb.request.user.principal
- Renamed
Element
toRateSource
and addPropertyRateSource
- Renamed
Matcher#matchOrNull
toMatcher#match
- Use String return type for
Matcher#match
[ 0.3.3 ] - 2023-02-04
- Added field
id
toBandwidths
- Added support for multiple (non-composed) bandwidths
- Renamed
Operator#DEFAULT
toOperator#NONE
[ 0.3.2 ] - 2023-01-29
- Moved
ResourceLimiter
to rate-limiter-annotation.
[ 0.3.1 ] - 2023-01-24
- Implement JVM thread expressions, setup coverage reports
[ 0.3.0 ] - 2023-01-22
- Add a default operator i.e
Operator.DEFAULT
- Add more tests
- Improve performance
- Rename
Bandwidths.getMembers
toBandwidths.getBandwidths
[ 0.2.0 ] - 2023-01-08
- Rename package
com.looseboxes
toio.github.poshjosh
- Remove methods
RateCache.cache
andRateCache.listener
[ 0.1.0 ] - 2023-01-07
- Add builder like methods to
ResourceLimiter
for settingRateCache
andUsageListener
- Update README.md
- Rename all
of()
toofDefaults()
- Remove annotation
@Nullable
- Remove the value-related generic from
RateCache
. The value now has a fixed type ofBandwidths
[ 0.0.9 ] - 2022-12-30
- Add more Bandwidth tests
[ 0.0.8 ] - 2022-12-29
- Separate repository for annotations: rate-limiter-annotation
- Change log