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 2015/02/20 13:46:50 UTC

svn commit: r1661112 - in /commons/proper/jcs/trunk: ./ commons-jcs-jcache-extras/ commons-jcs-jcache/ commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/cdi/ commons-jcs-jcache/src/main/resources/META-INF/ commons-jcs-tck-tests/ commons-jc...

Author: rmannibucau
Date: Fri Feb 20 12:46:49 2015
New Revision: 1661112

URL: http://svn.apache.org/r1661112
Log:
JCS-142 making cdi extension scanning independent

Removed:
    commons/proper/jcs/trunk/commons-jcs-jcache/src/main/resources/META-INF/beans.xml
Modified:
    commons/proper/jcs/trunk/commons-jcs-jcache-extras/pom.xml
    commons/proper/jcs/trunk/commons-jcs-jcache/pom.xml
    commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/cdi/CDIJCacheHelper.java
    commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/cdi/CachePutInterceptor.java
    commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/cdi/CacheRemoveAllInterceptor.java
    commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/cdi/CacheRemoveInterceptor.java
    commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/cdi/CacheResultInterceptor.java
    commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/cdi/MakeJCacheCDIInterceptorFriendly.java
    commons/proper/jcs/trunk/commons-jcs-tck-tests/pom.xml
    commons/proper/jcs/trunk/commons-jcs-tck-tests/src/test/java/org/apache/commons/jcs/jcache/OWBBeanProvider.java
    commons/proper/jcs/trunk/pom.xml

Modified: commons/proper/jcs/trunk/commons-jcs-jcache-extras/pom.xml
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/commons-jcs-jcache-extras/pom.xml?rev=1661112&r1=1661111&r2=1661112&view=diff
==============================================================================
--- commons/proper/jcs/trunk/commons-jcs-jcache-extras/pom.xml (original)
+++ commons/proper/jcs/trunk/commons-jcs-jcache-extras/pom.xml Fri Feb 20 12:46:49 2015
@@ -40,11 +40,11 @@
     </dependency>
     <dependency>
       <groupId>org.apache.geronimo.specs</groupId>
-      <artifactId>geronimo-jcdi_1.0_spec</artifactId>
+      <artifactId>geronimo-jcdi_1.1_spec</artifactId>
     </dependency>
     <dependency>
       <groupId>org.apache.geronimo.specs</groupId>
-      <artifactId>geronimo-interceptor_1.1_spec</artifactId>
+      <artifactId>geronimo-interceptor_1.2_spec</artifactId>
     </dependency>
     <dependency>
       <groupId>org.apache.geronimo.specs</groupId>

Modified: commons/proper/jcs/trunk/commons-jcs-jcache/pom.xml
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/commons-jcs-jcache/pom.xml?rev=1661112&r1=1661111&r2=1661112&view=diff
==============================================================================
--- commons/proper/jcs/trunk/commons-jcs-jcache/pom.xml (original)
+++ commons/proper/jcs/trunk/commons-jcs-jcache/pom.xml Fri Feb 20 12:46:49 2015
@@ -41,11 +41,15 @@
     </dependency>
     <dependency>
       <groupId>org.apache.geronimo.specs</groupId>
-      <artifactId>geronimo-jcdi_1.0_spec</artifactId>
+      <artifactId>geronimo-jcdi_1.1_spec</artifactId>
     </dependency>
     <dependency>
       <groupId>org.apache.geronimo.specs</groupId>
-      <artifactId>geronimo-interceptor_1.1_spec</artifactId>
+      <artifactId>geronimo-interceptor_1.2_spec</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.geronimo.specs</groupId>
+      <artifactId>geronimo-annotation_1.2_spec</artifactId>
     </dependency>
 
     <dependency>

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=1661112&r1=1661111&r2=1661112&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 20 12:46:49 2015
@@ -18,6 +18,12 @@
  */
 package org.apache.commons.jcs.jcache.cdi;
 
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Method;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+import java.util.logging.Logger;
 import javax.cache.annotation.CacheDefaults;
 import javax.cache.annotation.CacheKeyGenerator;
 import javax.cache.annotation.CacheResolverFactory;
@@ -28,12 +34,6 @@ 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.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-import java.util.logging.Logger;
 
 @ApplicationScoped
 public class CDIJCacheHelper
@@ -163,6 +163,12 @@ public class CDIJCacheHelper
         final Set<Bean<?>> beans = beanManager.getBeans(type);
         if (beans.isEmpty())
         {
+            if (CacheKeyGenerator.class == type) {
+                return (T) defaultCacheKeyGenerator;
+            }
+            if (CacheResolverFactory.class == type) {
+                return (T) defaultCacheResolverFactory;
+            }
             return null;
         }
         final Bean<?> bean = beanManager.resolve(beans);

Modified: commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/cdi/CachePutInterceptor.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/cdi/CachePutInterceptor.java?rev=1661112&r1=1661111&r2=1661112&view=diff
==============================================================================
--- commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/cdi/CachePutInterceptor.java (original)
+++ commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/cdi/CachePutInterceptor.java Fri Feb 20 12:46:49 2015
@@ -18,6 +18,8 @@
  */
 package org.apache.commons.jcs.jcache.cdi;
 
+import java.io.Serializable;
+import javax.annotation.Priority;
 import javax.cache.Cache;
 import javax.cache.annotation.CacheDefaults;
 import javax.cache.annotation.CacheKeyInvocationContext;
@@ -30,7 +32,8 @@ import javax.interceptor.InvocationConte
 
 @CachePut
 @Interceptor
-public class CachePutInterceptor
+@Priority(/*LIBRARY_BEFORE*/1000)
+public class CachePutInterceptor implements Serializable
 {
     @Inject
     private CDIJCacheHelper helper;

Modified: commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/cdi/CacheRemoveAllInterceptor.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/cdi/CacheRemoveAllInterceptor.java?rev=1661112&r1=1661111&r2=1661112&view=diff
==============================================================================
--- commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/cdi/CacheRemoveAllInterceptor.java (original)
+++ commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/cdi/CacheRemoveAllInterceptor.java Fri Feb 20 12:46:49 2015
@@ -18,6 +18,8 @@
  */
 package org.apache.commons.jcs.jcache.cdi;
 
+import java.io.Serializable;
+import javax.annotation.Priority;
 import javax.cache.Cache;
 import javax.cache.annotation.CacheDefaults;
 import javax.cache.annotation.CacheKeyInvocationContext;
@@ -29,7 +31,8 @@ import javax.interceptor.InvocationConte
 
 @CacheRemoveAll
 @Interceptor
-public class CacheRemoveAllInterceptor
+@Priority(/*LIBRARY_BEFORE*/1000)
+public class CacheRemoveAllInterceptor implements Serializable
 {
     @Inject
     private CDIJCacheHelper helper;

Modified: commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/cdi/CacheRemoveInterceptor.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/cdi/CacheRemoveInterceptor.java?rev=1661112&r1=1661111&r2=1661112&view=diff
==============================================================================
--- commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/cdi/CacheRemoveInterceptor.java (original)
+++ commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/cdi/CacheRemoveInterceptor.java Fri Feb 20 12:46:49 2015
@@ -18,6 +18,8 @@
  */
 package org.apache.commons.jcs.jcache.cdi;
 
+import java.io.Serializable;
+import javax.annotation.Priority;
 import javax.cache.Cache;
 import javax.cache.annotation.CacheDefaults;
 import javax.cache.annotation.CacheKeyInvocationContext;
@@ -30,7 +32,8 @@ import javax.interceptor.InvocationConte
 
 @CacheRemove
 @Interceptor
-public class CacheRemoveInterceptor
+@Priority(/*LIBRARY_BEFORE*/1000)
+public class CacheRemoveInterceptor implements Serializable
 {
     @Inject
     private CDIJCacheHelper helper;

Modified: commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/cdi/CacheResultInterceptor.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/cdi/CacheResultInterceptor.java?rev=1661112&r1=1661111&r2=1661112&view=diff
==============================================================================
--- commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/cdi/CacheResultInterceptor.java (original)
+++ commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/cdi/CacheResultInterceptor.java Fri Feb 20 12:46:49 2015
@@ -18,6 +18,8 @@
  */
 package org.apache.commons.jcs.jcache.cdi;
 
+import java.io.Serializable;
+import javax.annotation.Priority;
 import javax.cache.Cache;
 import javax.cache.annotation.CacheDefaults;
 import javax.cache.annotation.CacheKeyInvocationContext;
@@ -32,7 +34,8 @@ import javax.interceptor.InvocationConte
 
 @CacheResult
 @Interceptor
-public class CacheResultInterceptor
+@Priority(/*LIBRARY_BEFORE*/1000)
+public class CacheResultInterceptor implements Serializable
 {
     @Inject
     private CDIJCacheHelper helper;

Modified: commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/cdi/MakeJCacheCDIInterceptorFriendly.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/cdi/MakeJCacheCDIInterceptorFriendly.java?rev=1661112&r1=1661111&r2=1661112&view=diff
==============================================================================
--- commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/cdi/MakeJCacheCDIInterceptorFriendly.java (original)
+++ commons/proper/jcs/trunk/commons-jcs-jcache/src/main/java/org/apache/commons/jcs/jcache/cdi/MakeJCacheCDIInterceptorFriendly.java Fri Feb 20 12:46:49 2015
@@ -18,23 +18,68 @@
  */
 package org.apache.commons.jcs.jcache.cdi;
 
+import java.lang.annotation.Annotation;
 import javax.cache.annotation.CachePut;
 import javax.cache.annotation.CacheRemove;
 import javax.cache.annotation.CacheRemoveAll;
 import javax.cache.annotation.CacheResult;
 import javax.enterprise.event.Observes;
+import javax.enterprise.inject.spi.AfterBeanDiscovery;
+import javax.enterprise.inject.spi.AnnotatedType;
+import javax.enterprise.inject.spi.Bean;
+import javax.enterprise.inject.spi.BeanAttributes;
+import javax.enterprise.inject.spi.BeanManager;
 import javax.enterprise.inject.spi.BeforeBeanDiscovery;
 import javax.enterprise.inject.spi.Extension;
+import javax.enterprise.inject.spi.InjectionTarget;
+import javax.enterprise.inject.spi.InjectionTargetFactory;
+import javax.enterprise.inject.spi.ProcessAnnotatedType;
+
+import static java.util.Arrays.asList;
 
 // TODO: observe annotated type (or maybe sthg else) to cache data and inecjt this extension (used as metadata cache)
 // to get class model and this way allow to add cache annotation on the fly - == avoid java pure reflection to get metadata
 public class MakeJCacheCDIInterceptorFriendly implements Extension
 {
-    protected void discoverInterceptorBindings(final @Observes BeforeBeanDiscovery beforeBeanDiscoveryEvent)
+    private boolean needHelper = true;
+
+    protected void discoverInterceptorBindings(final @Observes BeforeBeanDiscovery beforeBeanDiscoveryEvent,
+                                               final BeanManager bm)
     {
-        beforeBeanDiscoveryEvent.addInterceptorBinding(CachePut.class);
-        beforeBeanDiscoveryEvent.addInterceptorBinding(CacheResult.class);
-        beforeBeanDiscoveryEvent.addInterceptorBinding(CacheRemove.class);
-        beforeBeanDiscoveryEvent.addInterceptorBinding(CacheRemoveAll.class);
+        for (final Class<?> interceptor : asList(
+                CachePutInterceptor.class, CacheRemoveInterceptor.class,
+                CacheRemoveAllInterceptor.class, CacheResultInterceptor.class)) {
+            beforeBeanDiscoveryEvent.addAnnotatedType(bm.createAnnotatedType(interceptor));
+        }
+        for (final Class<? extends Annotation> interceptor : asList(
+                CachePut.class, CacheRemove.class,
+                CacheRemoveAll.class, CacheResult.class)) {
+            beforeBeanDiscoveryEvent.addInterceptorBinding(interceptor);
+        }
+    }
+
+    protected void addHelper(final @Observes AfterBeanDiscovery afterBeanDiscovery,
+                             final BeanManager bm)
+    {
+        if (!needHelper) {
+            return;
+        }
+        final AnnotatedType<CDIJCacheHelper> annotatedType = bm.createAnnotatedType(CDIJCacheHelper.class);
+        final BeanAttributes<CDIJCacheHelper> beanAttributes = bm.createBeanAttributes(annotatedType);
+        final InjectionTarget<CDIJCacheHelper> injectionTarget = bm.createInjectionTarget(annotatedType);
+        final Bean<CDIJCacheHelper> bean = bm.createBean(beanAttributes, CDIJCacheHelper.class, new InjectionTargetFactory<CDIJCacheHelper>() {
+            @Override
+            public InjectionTarget<CDIJCacheHelper> createInjectionTarget(Bean<CDIJCacheHelper> bean) {
+                return injectionTarget;
+            }
+        });
+        afterBeanDiscovery.addBean(bean);
+    }
+
+    protected void vetoScannedCDIJCacheHelperQualifiers(final @Observes ProcessAnnotatedType<CDIJCacheHelper> pat) {
+        if (!needHelper) { // already seen, shouldn't really happen,just a protection
+            pat.veto();
+        }
+        needHelper = false;
     }
 }

Modified: commons/proper/jcs/trunk/commons-jcs-tck-tests/pom.xml
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/commons-jcs-tck-tests/pom.xml?rev=1661112&r1=1661111&r2=1661112&view=diff
==============================================================================
--- commons/proper/jcs/trunk/commons-jcs-tck-tests/pom.xml (original)
+++ commons/proper/jcs/trunk/commons-jcs-tck-tests/pom.xml Fri Feb 20 12:46:49 2015
@@ -113,7 +113,7 @@
 
     <dependency>
       <groupId>org.apache.geronimo.specs</groupId>
-      <artifactId>geronimo-jcdi_1.0_spec</artifactId>
+      <artifactId>geronimo-jcdi_1.1_spec</artifactId>
     </dependency>
     <dependency>
       <groupId>org.apache.geronimo.specs</groupId>
@@ -121,7 +121,11 @@
     </dependency>
     <dependency>
       <groupId>org.apache.geronimo.specs</groupId>
-      <artifactId>geronimo-interceptor_1.1_spec</artifactId>
+      <artifactId>geronimo-interceptor_1.2_spec</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.geronimo.specs</groupId>
+      <artifactId>geronimo-annotation_1.2_spec</artifactId>
     </dependency>
     <dependency>
       <groupId>org.apache.openwebbeans</groupId>

Modified: commons/proper/jcs/trunk/commons-jcs-tck-tests/src/test/java/org/apache/commons/jcs/jcache/OWBBeanProvider.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/commons-jcs-tck-tests/src/test/java/org/apache/commons/jcs/jcache/OWBBeanProvider.java?rev=1661112&r1=1661111&r2=1661112&view=diff
==============================================================================
--- commons/proper/jcs/trunk/commons-jcs-tck-tests/src/test/java/org/apache/commons/jcs/jcache/OWBBeanProvider.java (original)
+++ commons/proper/jcs/trunk/commons-jcs-tck-tests/src/test/java/org/apache/commons/jcs/jcache/OWBBeanProvider.java Fri Feb 20 12:46:49 2015
@@ -22,9 +22,9 @@ import org.apache.webbeans.config.WebBea
 import org.apache.webbeans.container.BeanManagerImpl;
 import org.apache.webbeans.spi.ContainerLifecycle;
 
+import java.util.Set;
 import javax.cache.annotation.BeanProvider;
 import javax.enterprise.inject.spi.Bean;
-import java.util.Set;
 
 public class OWBBeanProvider implements BeanProvider
 {

Modified: commons/proper/jcs/trunk/pom.xml
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/pom.xml?rev=1661112&r1=1661111&r2=1661112&view=diff
==============================================================================
--- commons/proper/jcs/trunk/pom.xml (original)
+++ commons/proper/jcs/trunk/pom.xml Fri Feb 20 12:46:49 2015
@@ -516,14 +516,14 @@
 
       <dependency>
         <groupId>org.apache.geronimo.specs</groupId>
-        <artifactId>geronimo-jcdi_1.0_spec</artifactId>
-        <version>1.0</version>
+        <artifactId>geronimo-jcdi_1.1_spec</artifactId>
+        <version>1.0-alpha-1</version>
         <scope>provided</scope>
       </dependency>
       <dependency>
         <groupId>org.apache.geronimo.specs</groupId>
-        <artifactId>geronimo-interceptor_1.1_spec</artifactId>
-        <version>1.0</version>
+        <artifactId>geronimo-interceptor_1.2_spec</artifactId>
+        <version>1.0-alpha-1</version>
         <scope>provided</scope>
       </dependency>
       <dependency>
@@ -541,9 +541,16 @@
       </dependency>
 
       <dependency>
+        <groupId>org.apache.geronimo.specs</groupId>
+        <artifactId>geronimo-annotation_1.2_spec</artifactId>
+        <version>1.0-alpha-1</version>
+        <scope>provided</scope>
+      </dependency>
+
+      <dependency>
         <groupId>org.apache.openwebbeans</groupId>
         <artifactId>openwebbeans-impl</artifactId>
-        <version>1.2.6</version>
+        <version>1.5.0-SNAPSHOT</version>
         <scope>test</scope>
       </dependency>