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>