package org.infinispan.jcache.annotation; import static org.infinispan.jcache.annotation.Contracts.assertNotNull; import java.lang.annotation.Annotation; import javax.cache.annotation.CacheInvocationParameter; import javax.cache.annotation.CacheKeyGenerator; import javax.cache.annotation.CacheKeyInvocationContext; import javax.cache.annotation.GeneratedCacheKey; import javax.enterprise.context.ApplicationScoped; /** * Default {@link javax.cache.annotation.CacheKeyGenerator} implementation. * By default all key parameters of the intercepted method compose the * {@link javax.cache.annotation.CacheKey}. * * @author Kevin Pollet <kevin.pollet@serli.com> (C) 2011 SERLI * @author Galder ZamarreƱo */ @ApplicationScoped public class DefaultCacheKeyGenerator implements CacheKeyGenerator { @Override public GeneratedCacheKey generateCacheKey(CacheKeyInvocationContext<? extends Annotation> cacheKeyInvocationContext) { assertNotNull(cacheKeyInvocationContext, "cacheKeyInvocationContext parameter must not be null"); final CacheInvocationParameter[] keyParameters = cacheKeyInvocationContext.getKeyParameters(); final Object[] keyValues = new Object[keyParameters.length]; for (int i = 0 ; i < keyParameters.length ; i++) { keyValues[i] = keyParameters[i].getValue(); } return new DefaultCacheKey(keyValues); } }