Skip to content

Instantly share code, notes, and snippets.

View antoinesd's full-sized avatar

Antoine Sabot-Durand antoinesd

View GitHub Profile
@antoinesd
antoinesd / injectiontargetsample_IocForFrameworkZ.java
Last active December 14, 2016 11:01
Basic Example for CDI-643
package org.jboss.cdi.api.test.injectiontargetsample;
import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.context.spi.CreationalContext;
import javax.enterprise.inject.Produces;
import javax.enterprise.inject.literal.InjectLiteral;
import javax.enterprise.inject.spi.BeanManager;
import javax.enterprise.inject.spi.InjectionTarget;
import javax.enterprise.inject.spi.InjectionTargetFactory;
import javax.inject.Inject;
@antoinesd
antoinesd / CacheContextExt.java
Created February 15, 2016 20:37
Turn Adding an existing annotation into a qualifier. Don't forget to add META-INF/services/javax.enterprise.inject.spi.Extension to activate the extension
import org.cdisandbox.event.Qualified;
import javax.enterprise.event.Observes;
import javax.enterprise.inject.spi.BeforeBeanDiscovery;
import javax.enterprise.inject.spi.Extension;
public class CacheContextExt implements Extension {
public void addCacheContextAsQualifier(@Observes BeforeBeanDiscovery bbd) {
bbd.addQualifier(CacheContext.class);
@antoinesd
antoinesd / ContextualizedAnnotatedType.java
Created June 26, 2015 09:34
Create a decorating AnnotatedType
package org.cdisandbox.injectarget;
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
import java.util.HashSet;
import java.util.Set;
import javax.enterprise.inject.spi.AnnotatedConstructor;
import javax.enterprise.inject.spi.AnnotatedField;
import javax.enterprise.inject.spi.AnnotatedMethod;
import javax.enterprise.inject.spi.AnnotatedType;
@antoinesd
antoinesd / Convert.java
Last active August 29, 2015 14:09
Implementing type conversion with CDI 1.1+
package org.cdispec.converter;
import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.ElementType.PARAMETER;
import static java.lang.annotation.ElementType.TYPE;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
@antoinesd
antoinesd / ReplaceRequestScopedExtension.java
Created February 6, 2014 16:34
Example of a CDI 1.1 extrnsion which replace all @RequestScoped by @SessionScoped
package org.jboss.weld.test;
import javax.enterprise.context.RequestScoped;
import javax.enterprise.context.SessionScoped;
import javax.enterprise.event.Observes;
import javax.enterprise.inject.spi.AnnotatedConstructor;
import javax.enterprise.inject.spi.AnnotatedField;
import javax.enterprise.inject.spi.AnnotatedMethod;
import javax.enterprise.inject.spi.AnnotatedType;
import javax.enterprise.inject.spi.Extension;
@antoinesd
antoinesd / profile in pom.xml
Last active December 16, 2015 19:09
Stack trace when launching test with Arquillian Weld-SE container
java.lang.NoClassDefFoundError: javax/servlet/ServletContextListener
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
<X> void processAnnotatedType(@Observes final ProcessAnnotatedType<X> pat, BeanManager beanManager) {
final AnnotatedType<X> annotatedType = pat.getAnnotatedType();
final Class<X> javaClass = annotatedType.getJavaClass();
final Package pkg = javaClass.getPackage();
// Support for @Veto
if (annotatedType.isAnnotationPresent(Veto.class) || (pkg != null && pkg.isAnnotationPresent(Veto.class))) {
pat.veto();
log.info("Preventing " + javaClass + " from being installed as bean due to @Veto annotation");
return;