Reinstate RedisCacheConfiguration.getTtl().
Reintroduce and deprecate RedisCacheConfiguration.getTtl for backwards compatibility. Closes #2628 Original Pull Request: #2597
This commit is contained in:
committed by
Christoph Strobl
parent
65f628ab76
commit
fe88d31d09
@@ -326,6 +326,26 @@ public class RedisCacheConfiguration {
|
||||
return this.valueSerializationPair;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a computed {@link Duration TTL expiration timeout} based on cache entry key/value
|
||||
* if a {@link TtlFunction} was confiugred using {@link #entryTtl(TtlFunction)}.
|
||||
* <p>
|
||||
* Otherwise, returns the user-provided, fixed {@link Duration} if {@link #entryTtl(Duration)}
|
||||
* was called during cache configuration.
|
||||
*
|
||||
* @return the configured {@link Duration TTL expiration}.
|
||||
* @deprecated use {@link #getTtlFunction()} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
@SuppressWarnings("all")
|
||||
public Duration getTtl() {
|
||||
|
||||
TtlFunction ttlFunction = getTtlFunction();
|
||||
|
||||
return ttlFunction instanceof FixedDurationTtlFunction it ? it.duration()
|
||||
: ttlFunction.getTimeToLive(null, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the {@link TtlFunction} used to compute a cache key {@literal time-to-live (TTL) expiration}.
|
||||
*
|
||||
|
||||
@@ -15,9 +15,18 @@
|
||||
*/
|
||||
package org.springframework.data.redis.cache;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.ArgumentMatchers.isNull;
|
||||
import static org.mockito.Mockito.doReturn;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.times;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.verifyNoMoreInteractions;
|
||||
|
||||
import static org.assertj.core.api.Assertions.*;
|
||||
import java.time.Duration;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import org.springframework.beans.DirectFieldAccessor;
|
||||
import org.springframework.core.convert.converter.Converter;
|
||||
@@ -28,6 +37,7 @@ import org.springframework.lang.Nullable;
|
||||
* Unit tests for {@link RedisCacheConfiguration}.
|
||||
*
|
||||
* @author Mark Paluch
|
||||
* @author John Blum
|
||||
*/
|
||||
class RedisCacheConfigurationUnitTests {
|
||||
|
||||
@@ -56,6 +66,42 @@ class RedisCacheConfigurationUnitTests {
|
||||
assertThat(config.getConversionService().canConvert(DomainType.class, String.class)).isTrue();
|
||||
}
|
||||
|
||||
@Test // GH-2628
|
||||
@SuppressWarnings("deprecation")
|
||||
void getTtlReturnsFixedDuration() {
|
||||
|
||||
Duration sixtySeconds = Duration.ofSeconds(60);
|
||||
|
||||
RedisCacheConfiguration cacheConfiguration = RedisCacheConfiguration.defaultCacheConfig()
|
||||
.entryTtl(sixtySeconds);
|
||||
|
||||
|
||||
assertThat(cacheConfiguration).isNotNull();
|
||||
assertThat(cacheConfiguration.getTtl()).isEqualByComparingTo(sixtySeconds);
|
||||
assertThat(cacheConfiguration.getTtl()).isEqualByComparingTo(sixtySeconds); // does not change!
|
||||
}
|
||||
|
||||
@Test // GH-2628
|
||||
@SuppressWarnings("deprecation")
|
||||
public void getTtlCanReturnDynamicDuration() {
|
||||
|
||||
Duration thirtyMinutes = Duration.ofMinutes(30);
|
||||
Duration twoHours = Duration.ofHours(2);
|
||||
|
||||
RedisCacheWriter.TtlFunction mockTtlFunction = mock(RedisCacheWriter.TtlFunction.class);
|
||||
|
||||
doReturn(thirtyMinutes).doReturn(twoHours).when(mockTtlFunction).getTimeToLive(any(), any());
|
||||
|
||||
RedisCacheConfiguration cacheConfiguration = RedisCacheConfiguration.defaultCacheConfig()
|
||||
.entryTtl(mockTtlFunction);
|
||||
|
||||
assertThat(cacheConfiguration.getTtl()).isEqualTo(thirtyMinutes);
|
||||
assertThat(cacheConfiguration.getTtl()).isEqualTo(twoHours);
|
||||
|
||||
verify(mockTtlFunction, times(2)).getTimeToLive(isNull(), isNull());
|
||||
verifyNoMoreInteractions(mockTtlFunction);
|
||||
}
|
||||
|
||||
private static class DomainType {
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user