@CacheResult public Object get(String id) { return null; } }
protected CacheResultOperation createCacheResultOperation(Method method, @Nullable CacheDefaults defaults, CacheResult ann) { String cacheName = determineCacheName(method, defaults, ann.cacheName()); CacheResolverFactory cacheResolverFactory = determineCacheResolverFactory(defaults, ann.cacheResolverFactory()); KeyGenerator keyGenerator = determineKeyGenerator(defaults, ann.cacheKeyGenerator()); CacheMethodDetails<CacheResult> methodDetails = createMethodDetails(method, ann, cacheName); CacheResolver cacheResolver = getCacheResolver(cacheResolverFactory, methodDetails); CacheResolver exceptionCacheResolver = null; final String exceptionCacheName = ann.exceptionCacheName(); if (StringUtils.hasText(exceptionCacheName)) { exceptionCacheResolver = getExceptionCacheResolver(cacheResolverFactory, methodDetails); } return new CacheResultOperation(methodDetails, cacheResolver, keyGenerator, exceptionCacheResolver); }
public CacheResultOperation(CacheMethodDetails<CacheResult> methodDetails, CacheResolver cacheResolver, KeyGenerator keyGenerator, @Nullable CacheResolver exceptionCacheResolver) { super(methodDetails, cacheResolver, keyGenerator); CacheResult ann = methodDetails.getCacheAnnotation(); this.exceptionTypeFilter = createExceptionTypeFilter(ann.cachedExceptions(), ann.nonCachedExceptions()); this.exceptionCacheResolver = exceptionCacheResolver; this.exceptionCacheName = (StringUtils.hasText(ann.exceptionCacheName()) ? ann.exceptionCacheName() : null); }
final String cacheName = helper.defaultName(method, defaults, cacheResult.cacheName()); final CacheResolverFactory cacheResolverFactory = helper.cacheResolverFactoryFor(defaults, cacheResult.cacheResolverFactory()); final CacheResolver cacheResolver = cacheResolverFactory.getCacheResolver(context); final Cache<Object, Object> cache = cacheResolver.resolveCache(context); final GeneratedCacheKey cacheKey = helper.cacheKeyGeneratorFor(defaults, cacheResult.cacheKeyGenerator()).generateCacheKey(context); if (!cacheResult.skipGet()) if (!cacheResult.exceptionCacheName().isEmpty()) if (helper.isIncluded(t.getClass(), cacheResult.cachedExceptions(), cacheResult.nonCachedExceptions()))
if (!cacheResult.skipGet()) { result = cache.get(cacheKey); if (result != null) { if (!cacheResult.exceptionCacheName().isEmpty()) { exceptionCache = cacheResolverFactory.getExceptionCacheResolver(context).resolveCache(context); final Object exception = exceptionCache.get(cacheKey); if (helper.isIncluded(t.getClass(), cacheResult.cachedExceptions(), cacheResult.nonCachedExceptions())) { if (exceptionCache == null) { exceptionCache = cacheResolverFactory.getExceptionCacheResolver(context).resolveCache(context);
@Override public CacheResolver getExceptionCacheResolver(final CacheMethodDetails<CacheResult> cacheMethodDetails) { final String exceptionCacheName = cacheMethodDetails.getCacheAnnotation().exceptionCacheName(); if (exceptionCacheName == null || exceptionCacheName.isEmpty()) { throw new IllegalArgumentException("CacheResult.exceptionCacheName() not specified"); } return findCacheResolver(exceptionCacheName); }
: defaultName(ic.getMethod(), defaults, cacheResult.cacheName()); final CacheResolverFactory cacheResultCacheResolverFactory = cacheResult == null ? null : cacheResolverFactoryFor(defaults, cacheResult.cacheResolverFactory()); final CacheKeyGenerator cacheResultCacheKeyGenerator = cacheResult == null ? null : cacheKeyGeneratorFor(defaults, cacheResult.cacheKeyGenerator());
/** * Cache the exception if exception caching is enabled. * * @param exceptionCache The exception cache, may be null if no exception caching is being done * @param cacheKey The cache key * @param cacheResultAnnotation The cache result annotation * @param t The exception to cache */ protected void cacheException(final Cache<Object, Throwable> exceptionCache, final GeneratedCacheKey cacheKey, final CacheResult cacheResultAnnotation, Throwable t) { if (exceptionCache == null) { return; } final Class<? extends Throwable>[] cachedExceptions = cacheResultAnnotation.cachedExceptions(); final Class<? extends Throwable>[] nonCachedExceptions = cacheResultAnnotation.nonCachedExceptions(); final boolean included = ClassFilter.isIncluded(t, cachedExceptions, nonCachedExceptions, true); if (included) { //Cache the exception for future rethrow exceptionCache.put(cacheKey, t); } }
if (!cacheResult.skipGet()) if (!cacheResult.exceptionCacheName().isEmpty()) if (helper.isIncluded(t.getClass(), cacheResult.cachedExceptions(), cacheResult.nonCachedExceptions()))
@Override public CacheResolver getExceptionCacheResolver(final CacheMethodDetails<CacheResult> cacheMethodDetails) { final String exceptionCacheName = cacheMethodDetails.getCacheAnnotation().exceptionCacheName(); if (exceptionCacheName == null || exceptionCacheName.isEmpty()) { throw new IllegalArgumentException("CacheResult.exceptionCacheName() not specified"); } return findCacheResolver(exceptionCacheName); }
final String cacheResultCacheResultName = cacheResult == null ? null : defaultName(ic.getMethod(), defaults, cacheResult.cacheName()); final CacheResolverFactory cacheResultCacheResolverFactory = cacheResult == null ? null : cacheResolverFactoryFor(defaults, cacheResult.cacheResolverFactory()); final CacheKeyGenerator cacheResultCacheKeyGenerator = cacheResult == null ? null : cacheKeyGeneratorFor(defaults, cacheResult.cacheKeyGenerator());
@CacheResult(exceptionCacheName = "exception") public Object customKeyGeneratorAndCacheResolverWithExceptionName(Long id) { return null; } }
protected CacheResultOperation createCacheResultOperation(Method method, @Nullable CacheDefaults defaults, CacheResult ann) { String cacheName = determineCacheName(method, defaults, ann.cacheName()); CacheResolverFactory cacheResolverFactory = determineCacheResolverFactory(defaults, ann.cacheResolverFactory()); KeyGenerator keyGenerator = determineKeyGenerator(defaults, ann.cacheKeyGenerator()); CacheMethodDetails<CacheResult> methodDetails = createMethodDetails(method, ann, cacheName); CacheResolver cacheResolver = getCacheResolver(cacheResolverFactory, methodDetails); CacheResolver exceptionCacheResolver = null; final String exceptionCacheName = ann.exceptionCacheName(); if (StringUtils.hasText(exceptionCacheName)) { exceptionCacheResolver = getExceptionCacheResolver(cacheResolverFactory, methodDetails); } return new CacheResultOperation(methodDetails, cacheResolver, keyGenerator, exceptionCacheResolver); }
public CacheResultOperation(CacheMethodDetails<CacheResult> methodDetails, CacheResolver cacheResolver, KeyGenerator keyGenerator, @Nullable CacheResolver exceptionCacheResolver) { super(methodDetails, cacheResolver, keyGenerator); CacheResult ann = methodDetails.getCacheAnnotation(); this.exceptionTypeFilter = createExceptionTypeFilter(ann.cachedExceptions(), ann.nonCachedExceptions()); this.exceptionCacheResolver = exceptionCacheResolver; this.exceptionCacheName = (StringUtils.hasText(ann.exceptionCacheName()) ? ann.exceptionCacheName() : null); }
@Override public CacheResolver getExceptionCacheResolver(final CacheMethodDetails<CacheResult> cacheMethodDetails) { final String exceptionCacheName = cacheMethodDetails.getCacheAnnotation().exceptionCacheName(); if (exceptionCacheName.isEmpty()) { throw new IllegalArgumentException("CacheResult.exceptionCacheName() not specified"); } return findCacheResolver(exceptionCacheName, cacheMethodDetails); }
@Override @CacheResult public Long cacheNull(String id) { return null; }
protected CacheResultOperation createCacheResultOperation(Method method, CacheDefaults defaults, CacheResult ann) { String cacheName = determineCacheName(method, defaults, ann.cacheName()); CacheResolverFactory cacheResolverFactory = determineCacheResolverFactory(defaults, ann.cacheResolverFactory()); KeyGenerator keyGenerator = determineKeyGenerator(defaults, ann.cacheKeyGenerator()); CacheMethodDetails<CacheResult> methodDetails = createMethodDetails(method, ann, cacheName); CacheResolver cacheResolver = getCacheResolver(cacheResolverFactory, methodDetails); CacheResolver exceptionCacheResolver = null; final String exceptionCacheName = ann.exceptionCacheName(); if (StringUtils.hasText(exceptionCacheName)) { exceptionCacheResolver = getExceptionCacheResolver(cacheResolverFactory, methodDetails); } return new CacheResultOperation(methodDetails, cacheResolver, keyGenerator, exceptionCacheResolver); }
public CacheResultOperation(CacheMethodDetails<CacheResult> methodDetails, CacheResolver cacheResolver, KeyGenerator keyGenerator, CacheResolver exceptionCacheResolver) { super(methodDetails, cacheResolver, keyGenerator); CacheResult ann = methodDetails.getCacheAnnotation(); this.exceptionTypeFilter = createExceptionTypeFilter(ann.cachedExceptions(), ann.nonCachedExceptions()); this.exceptionCacheResolver = exceptionCacheResolver; this.exceptionCacheName = (StringUtils.hasText(ann.exceptionCacheName()) ? ann.exceptionCacheName() : null); }
@Override public CacheResolver getExceptionCacheResolver(final CacheMethodDetails<CacheResult> cacheMethodDetails) { final String exceptionCacheName = cacheMethodDetails.getCacheAnnotation().exceptionCacheName(); if (exceptionCacheName == null || exceptionCacheName.isEmpty()) { throw new IllegalArgumentException("CacheResult.exceptionCacheName() not specified"); } return findCacheResolver(exceptionCacheName); }
@CacheResult(cacheKeyGenerator = TestableCacheKeyGenerator.class) public Object customKeyGeneratorSpringBean(Long id) { return null; }