private void assertCacheKeyGenerator(KeyGenerator actual, Class<? extends CacheKeyGenerator> expectedTargetType) { assertEquals("Wrong cache resolver implementation", KeyGeneratorAdapter.class, actual.getClass()); KeyGeneratorAdapter adapter = (KeyGeneratorAdapter) actual; assertEquals("Wrong target CacheKeyGenerator implementation", expectedTargetType, adapter.getTarget().getClass()); }
private void assertDefaults(AbstractJCacheKeyOperation<?> operation) { assertEquals(defaultCacheResolver, operation.getCacheResolver()); assertEquals(KeyGeneratorAdapter.class, operation.getKeyGenerator().getClass()); assertEquals(defaultKeyGenerator, ((KeyGeneratorAdapter) operation.getKeyGenerator()).getTarget()); }
@Test public void customCacheResolver() { CacheResultOperation operation = getCacheOperation(CacheResultOperation.class, CustomService.class, name.getMethodName(), Long.class); assertJCacheResolver(operation.getCacheResolver(), TestableCacheResolver.class); assertJCacheResolver(operation.getExceptionCacheResolver(), null); assertEquals(KeyGeneratorAdapter.class, operation.getKeyGenerator().getClass()); assertEquals(defaultKeyGenerator, ((KeyGeneratorAdapter) operation.getKeyGenerator()).getTarget()); }
@Test public void customKeyGeneratorSpringBean() { TestableCacheKeyGenerator bean = new TestableCacheKeyGenerator(); beanFactory.registerSingleton("fooBar", bean); CacheResultOperation operation = getCacheOperation(CacheResultOperation.class, CustomService.class, name.getMethodName(), Long.class); assertEquals(defaultCacheResolver, operation.getCacheResolver()); assertNull(operation.getExceptionCacheResolver()); KeyGeneratorAdapter adapter = (KeyGeneratorAdapter) operation.getKeyGenerator(); assertSame(bean, adapter.getTarget()); // take bean from context }