Class RateLimitingPolicy
- java.lang.Object
-
- io.apiman.gateway.engine.policies.AbstractMappedPolicy<RateLimitingConfig>
-
- io.apiman.gateway.engine.policies.RateLimitingPolicy
-
- All Implemented Interfaces:
IPolicy,IPolicyProbe<RateLimitingConfig,RateLimitingProbeConfig>
- Direct Known Subclasses:
QuotaPolicy
public class RateLimitingPolicy extends AbstractMappedPolicy<RateLimitingConfig> implements IPolicyProbe<RateLimitingConfig,RateLimitingProbeConfig>
Policy that enforces rate limits.- Author:
- eric.wittmann@redhat.com
-
-
Field Summary
-
Fields inherited from interface io.apiman.gateway.engine.policy.IPolicyProbe
mapper
-
-
Constructor Summary
Constructors Constructor Description RateLimitingPolicy()Constructor.
-
Method Summary
-
Methods inherited from class io.apiman.gateway.engine.policies.AbstractMappedPolicy
apply, apply, doProcessFailure, parseConfiguration, processFailure
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface io.apiman.gateway.engine.policy.IPolicy
apply, apply, parseConfiguration, processFailure
-
Methods inherited from interface io.apiman.gateway.engine.policy.IPolicyProbe
probe
-
-
-
-
Method Detail
-
getConfigurationClass
public Class<RateLimitingConfig> getConfigurationClass()
Description copied from class:AbstractMappedPolicyThe class to use for JSON configuration deserialization- Specified by:
getConfigurationClassin interfaceIPolicyProbe<RateLimitingConfig,RateLimitingProbeConfig>- Specified by:
getConfigurationClassin classAbstractMappedPolicy<RateLimitingConfig>- Returns:
- the class
-
doApply
protected void doApply(ApiRequest request, IPolicyContext context, RateLimitingConfig config, IPolicyChain<ApiRequest> chain)
Description copied from class:AbstractMappedPolicyOverride this method to interact with or observe the request.- Overrides:
doApplyin classAbstractMappedPolicy<RateLimitingConfig>- Parameters:
request- the requestchain- the ordered policy chain- See Also:
AbstractMappedPolicy.doApply(io.apiman.gateway.engine.beans.ApiRequest, io.apiman.gateway.engine.policy.IPolicyContext, java.lang.Object, io.apiman.gateway.engine.policy.IPolicyChain)
-
doApply
protected void doApply(ApiResponse response, IPolicyContext context, RateLimitingConfig config, IPolicyChain<ApiResponse> chain)
Description copied from class:AbstractMappedPolicyApply the policy to the response.Override this method to interact with or observe the response.
- Overrides:
doApplyin classAbstractMappedPolicy<RateLimitingConfig>- Parameters:
response- the responsecontext- the policy contextconfig- the configuration (seeAbstractMappedPolicy.getConfigurationClass())chain- the ordered policy chain- See Also:
AbstractMappedPolicy.doApply(io.apiman.gateway.engine.beans.ApiResponse, io.apiman.gateway.engine.policy.IPolicyContext, java.lang.Object, io.apiman.gateway.engine.policy.IPolicyChain)
-
responseHeaders
protected static Map<String,String> responseHeaders(RateLimitingConfig config, RateLimitResponse rtr, String defaultLimitHeader, String defaultRemainingHeader, String defaultResetHeader)
Set response headers
-
limitExceededFailure
protected PolicyFailure limitExceededFailure(IPolicyFailureFactoryComponent failureFactory)
Generate a rate limit exceeded policy failure.- Parameters:
failureFactory- failure factory- Returns:
- a limit exceeded policy failure
-
defaultResetHeader
protected String defaultResetHeader()
- Returns:
- the default reset header
-
defaultRemainingHeader
protected String defaultRemainingHeader()
- Returns:
- the default remaining header
-
defaultLimitHeader
protected String defaultLimitHeader()
- Returns:
- the default limit header
-
bucketId
protected String bucketId(ApiRequest request, RateLimitingConfig config)
-
bucketId
protected String bucketId(RateLimitingConfig config, BucketFactory.BucketIdBuilderContext context)
-
getProbeRequestClass
public Class<RateLimitingProbeConfig> getProbeRequestClass()
- Specified by:
getProbeRequestClassin interfaceIPolicyProbe<RateLimitingConfig,RateLimitingProbeConfig>
-
probe
public void probe(RateLimitingProbeConfig probeRequest, RateLimitingConfig policyConfig, ProbeContext probeContext, IPolicyContext context, IAsyncResultHandler<IPolicyProbeResponse> resultHandler)
- Specified by:
probein interfaceIPolicyProbe<RateLimitingConfig,RateLimitingProbeConfig>
-
-