diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/configuration/Configuration.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/configuration/Configuration.java index e9eff1a..5ba46d7 100644 --- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/configuration/Configuration.java +++ b/impl/core/src/main/java/br/gov/frameworkdemoiselle/configuration/Configuration.java @@ -46,6 +46,8 @@ import java.lang.annotation.Target; import javax.enterprise.inject.Stereotype; import javax.enterprise.util.Nonbinding; +import br.gov.frameworkdemoiselle.annotation.StaticScoped; + /** * Identifies a configuration class, that is, a structure reserved to store configuration values retrieved from a * given resource file or system variables. @@ -61,8 +63,9 @@ import javax.enterprise.util.Nonbinding; * * @author SERPRO */ -@Stereotype @Inherited +@Stereotype +@StaticScoped @Target(TYPE) @Retention(RUNTIME) public @interface Configuration { diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/ConfigurationBootstrap.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/ConfigurationBootstrap.java index 8b9c512..93cfae7 100644 --- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/ConfigurationBootstrap.java +++ b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/ConfigurationBootstrap.java @@ -51,7 +51,6 @@ import javassist.LoaderClassPath; import javassist.NotFoundException; import javax.enterprise.event.Observes; -import javax.enterprise.inject.spi.AfterBeanDiscovery; import javax.enterprise.inject.spi.AnnotatedType; import javax.enterprise.inject.spi.BeanManager; import javax.enterprise.inject.spi.Extension; @@ -62,26 +61,17 @@ import br.gov.frameworkdemoiselle.internal.implementation.ConfigurationImpl; public class ConfigurationBootstrap implements Extension { - private final List> cache = Collections.synchronizedList(new ArrayList>()); - private static final Map>> cacheClassLoader = Collections .synchronizedMap(new HashMap>>()); - public void processAnnotatedType(@Observes final ProcessAnnotatedType event) { + public void processAnnotatedType(@Observes final ProcessAnnotatedType event, BeanManager beanManager) + throws Exception { final AnnotatedType annotatedType = event.getAnnotatedType(); if (annotatedType.getJavaClass().isAnnotationPresent(Configuration.class)) { - cache.add(annotatedType.getJavaClass()); - event.veto(); - } - } - - public void afterBeanDiscovery(@Observes AfterBeanDiscovery event, BeanManager beanManager) throws Exception { - Class proxy; - - for (Class config : cache) { - proxy = createProxy(config); - event.addBean(new CustomBean(proxy, beanManager)); + Class proxyClass = createProxy(annotatedType.getJavaClass()); + AnnotatedType proxyAnnotatedType = beanManager.createAnnotatedType(proxyClass); + event.setAnnotatedType(proxyAnnotatedType); } } -- libgit2 0.21.2