You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by rm...@apache.org on 2017/02/24 18:35:17 UTC
svn commit: r1784313 -
/commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/cdi/CDIJCacheHelper.java
Author: rmannibucau
Date: Fri Feb 24 18:35:17 2017
New Revision: 1784313
URL: http://svn.apache.org/viewvc?rev=1784313&view=rev
Log:
JCS-173 support of java.lang.reflect.Proxy for cdi integration
Modified:
commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/cdi/CDIJCacheHelper.java
Modified: commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/cdi/CDIJCacheHelper.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/cdi/CDIJCacheHelper.java?rev=1784313&r1=1784312&r2=1784313&view=diff
==============================================================================
--- commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/cdi/CDIJCacheHelper.java (original)
+++ commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/cdi/CDIJCacheHelper.java Fri Feb 24 18:35:17 2017
@@ -18,18 +18,8 @@
*/
package org.apache.commons.jcs.jcache.cdi;
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Method;
-import java.util.Collection;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-import java.util.logging.Logger;
import javax.annotation.PreDestroy;
import javax.cache.annotation.CacheDefaults;
-import javax.cache.annotation.CacheInvocationParameter;
import javax.cache.annotation.CacheKey;
import javax.cache.annotation.CacheKeyGenerator;
import javax.cache.annotation.CacheResolverFactory;
@@ -41,6 +31,15 @@ import javax.enterprise.inject.spi.Bean;
import javax.enterprise.inject.spi.BeanManager;
import javax.inject.Inject;
import javax.interceptor.InvocationContext;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+import java.util.logging.Logger;
@ApplicationScoped
public class CDIJCacheHelper
@@ -104,8 +103,25 @@ public class CDIJCacheHelper
public CacheDefaults findDefaults(final InvocationContext ic)
{
- Class<?> clazz = ic.getTarget().getClass();
+ if (ic.getTarget() != null && Proxy.isProxyClass(ic.getTarget().getClass())) // target doesnt hold annotations
+ {
+ final Class<?> api = ic.getMethod().getDeclaringClass();
+ for (final Class<?> type : ic.getTarget().getClass().getInterfaces())
+ {
+ if (!api.isAssignableFrom(type))
+ {
+ continue;
+ }
+ return extractDefaults(type);
+ }
+ }
+ return extractDefaults(ic.getTarget().getClass());
+ }
+
+ private CacheDefaults extractDefaults(final Class<?> type)
+ {
CacheDefaults annotation = null;
+ Class<?> clazz = type;
while (clazz != null && clazz != Object.class)
{
annotation = clazz.getAnnotation(CacheDefaults.class);