Package net.shibboleth.shared.httpclient

# Class InMemoryCachingHttpClientBuilder

java.lang.Object
net.shibboleth.shared.httpclient.HttpClientBuilder
net.shibboleth.shared.httpclient.InMemoryCachingHttpClientBuilder

Direct Known Subclasses:
  `InMemoryCachingHttpClientFactoryBean`

public class InMemoryCachingHttpClientBuilder extends HttpClientBuilder
An `HttpClient` builder that supports RFC 2616 caching.

This client will cache information retrieved from the remote server in memory. The backing store does not perform any resource management (e.g., removing content that has nominally expired) so, special care must be taken to tune the `maxCacheEntries` and `maxCacheEntrySize` appropriately so that the system's memory is not fully consumed.

When using the single-arg constructor variant to wrap an existing instance of `CachingHttpClientBuilder`, there are several caveats of which to be aware:

- Several important non-caching-specific caveats are enumerated in this class's superclass `HttpClientBuilder`.
- Instances of the following which are set as the default instance on the Apache builder will be unconditionally overwritten by this builder when `HttpClientBuilder.buildClient()` is called:
  - `CacheConfig`

  This is due to the unfortunate fact that the Apache builder does not currently provide accessor methods to obtain the default instances currently set on the builder. Therefore, if you need to set any default cache config parameters which are not exposed by this builder, then you must use the Apache builder directly and may not use this builder.

## Field Summary

Fields
Modifier and Type
Field
Description
`private int`
`maxCacheEntries`
The maximum number of cached responses.
`private long`
`maxCacheEntrySize`
The maximum response body size, in bytes, that will be eligible for caching.

## Constructor Summary

Constructors
Constructor
Description
`InMemoryCachingHttpClientBuilder()`
Constructor.
`InMemoryCachingHttpClientBuilder(org.apache.hc.client5.http.impl.cache.CachingHttpClientBuilder builder)`
Constructor.

## Method Summary

Modifier and Type
Method
Description
`protected void`
`decorateApacheBuilder()`
Decorate the Apache builder as determined by this builder's parameters.
`int`
`getMaxCacheEntries()`
Gets the maximum number of cached responses.
`long`
`getMaxCacheEntrySize()`
Gets the maximum response body size, in bytes, that will be eligible for caching.
`void`
`setMaxCacheEntries(int maxEntries)`
Sets the maximum number of cached responses.
`void`
`setMaxCacheEntrySize(long size)`
Sets the maximum response body size, in bytes, that will be eligible for caching.

### Methods inherited from class net.shibboleth.shared.httpclient.HttpClientBuilder

`buildClient, buildConnectionFactory, buildConnectionManager, buildDefaultConnectionConfig, buildDefaultCredentialsProvider, buildDefaultRequestConfig, buildRoutePlanner, getApacheBuilder, getConnectionMaxIdleTime, getConnectionProxyHost, getConnectionProxyPassword, getConnectionProxyPort, getConnectionProxyUsername, getConnectionRequestTimeout, getConnectionTimeout, getFirstRequestInterceptors, getFirstResponseInterceptors, getHttpContentCharSet, getHttpRequestRetryStrategy, getLastRequestInterceptors, getLastResponseInterceptors, getMaxConnectionsPerRoute, getMaxConnectionsTotal, getRequestTimeout, getRequestTimeoutCorePoolSize, getResponseTimeout, getSchemePortResolver, getSocketBufferSize, getSocketLocalAddress, getSocketTimeout, getStaticContextHandlers, getTLSSocketFactory, getUserAgent, getValidateAfterInactivity, handleFluentProperties, isConnectionCloseAfterResponse, isConnectionDisregardTLSCertificate, isDisableAuthCaching, isDisableAutomaticRetries, isDisableConnectionState, isDisableContentCompression, isDisableCookieManagement, isDisableRedirectHandling, isEvictExpiredConnections, isEvictIdleConnections, isHttpFollowRedirects, isUseSystemProperties, resetDefaults, setConnectionCloseAfterResponse, setConnectionDisregardTLSCertificate, setConnectionMaxIdleTime, setConnectionProxyHost, setConnectionProxyPassword, setConnectionProxyPort, setConnectionProxyUsername, setConnectionRequestTimeout, setConnectionTimeout, setDisableAuthCaching, setDisableAutomaticRetries, setDisableConnectionState, setDisableContentCompression, setDisableCookieManagement, setDisableRedirectHandling, setEvictExpiredConnections, setEvictIdleConnections, setFirstRequestInterceptors, setFirstResponseInterceptors, setHttpContentCharSet, setHttpFollowRedirects, setHttpRequestRetryStrategy, setLastRequestInterceptors, setLastResponseInterceptors, setMaxConnectionsPerRoute, setMaxConnectionsTotal, setRequestTimeout, setRequestTimeoutCorePoolSize, setResponseTimeout, setSchemePortResolver, setSocketBufferSize, setSocketLocalAddress, setSocketLocalAddress, setSocketTimeout, setStaticContextHandlers, setTLSSocketFactory, setUserAgent, setUseSystemProperties, setValidateAfterInactivity`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Field Details

### maxCacheEntries

private int maxCacheEntries
The maximum number of cached responses. Default: 50

### maxCacheEntrySize

private long maxCacheEntrySize
The maximum response body size, in bytes, that will be eligible for caching. Default: 1048576 (1 megabyte)

## Constructor Details

### InMemoryCachingHttpClientBuilder

public InMemoryCachingHttpClientBuilder()
Constructor.

### InMemoryCachingHttpClientBuilder

public InMemoryCachingHttpClientBuilder(@Nonnull org.apache.hc.client5.http.impl.cache.CachingHttpClientBuilder builder)
Constructor.

Parameters:
  `builder` - builder of clients used to fetch data from remote servers

## Method Details

### getMaxCacheEntries

public int getMaxCacheEntries()
Gets the maximum number of cached responses.

Returns:
  maximum number of cached responses

### setMaxCacheEntries

public void setMaxCacheEntries(int maxEntries)
Sets the maximum number of cached responses.

Parameters:
  `maxEntries` - maximum number of cached responses, must be greater than zero

### getMaxCacheEntrySize

public long getMaxCacheEntrySize()
Gets the maximum response body size, in bytes, that will be eligible for caching.

Returns:
  maximum response body size that will be eligible for caching

### setMaxCacheEntrySize

public void setMaxCacheEntrySize(long size)
Sets the maximum response body size, in bytes, that will be eligible for caching.

Parameters:
  `size` - maximum response body size that will be eligible for caching, must be greater than zero

### decorateApacheBuilder

protected void decorateApacheBuilder() throws Exception
Decorate the Apache builder as determined by this builder's parameters. Subclasses will likely add additional decoration.

Overrides:
  `decorateApacheBuilder` in class `HttpClientBuilder`
Throws:
  `Exception` - if there is a problem decorating the Apache builder