Commit ee348c188d8fd39320cf524ee37f8f8768d22186
1 parent
c73cbad5
Exists in
master
Ajustes na implementação do ConfigurationBootstrap
Showing
5 changed files
with
81 additions
and
52 deletions
Show diff stats
impl/core/src/main/java/br/gov/frameworkdemoiselle/configuration/Configuration.java
| ... | ... | @@ -43,6 +43,8 @@ import java.lang.annotation.Inherited; |
| 43 | 43 | import java.lang.annotation.Retention; |
| 44 | 44 | import java.lang.annotation.Target; |
| 45 | 45 | |
| 46 | +import javax.enterprise.context.ApplicationScoped; | |
| 47 | +import javax.enterprise.context.RequestScoped; | |
| 46 | 48 | import javax.enterprise.inject.Stereotype; |
| 47 | 49 | import javax.enterprise.util.Nonbinding; |
| 48 | 50 | import javax.inject.Singleton; |
| ... | ... | @@ -62,7 +64,7 @@ import javax.inject.Singleton; |
| 62 | 64 | * |
| 63 | 65 | * @author SERPRO |
| 64 | 66 | */ |
| 65 | -@Singleton | |
| 67 | +//@Singleton | |
| 66 | 68 | @Stereotype |
| 67 | 69 | @Inherited |
| 68 | 70 | @Target(TYPE) | ... | ... |
impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/ConfigurationBootstrap.java
| ... | ... | @@ -42,7 +42,6 @@ import java.util.List; |
| 42 | 42 | |
| 43 | 43 | import javassist.ClassPool; |
| 44 | 44 | import javassist.CtClass; |
| 45 | -import javassist.CtField; | |
| 46 | 45 | import javassist.CtMethod; |
| 47 | 46 | import javassist.CtNewMethod; |
| 48 | 47 | import javassist.LoaderClassPath; |
| ... | ... | @@ -55,6 +54,7 @@ import javax.enterprise.inject.spi.Extension; |
| 55 | 54 | import javax.enterprise.inject.spi.ProcessAnnotatedType; |
| 56 | 55 | |
| 57 | 56 | import br.gov.frameworkdemoiselle.configuration.Configuration; |
| 57 | +import br.gov.frameworkdemoiselle.internal.implementation.ConfigurationImpl; | |
| 58 | 58 | |
| 59 | 59 | public class ConfigurationBootstrap implements Extension { |
| 60 | 60 | |
| ... | ... | @@ -84,6 +84,8 @@ public class ConfigurationBootstrap implements Extension { |
| 84 | 84 | String chieldClassName = superClassName + "__DemoiselleProxy"; |
| 85 | 85 | |
| 86 | 86 | ClassPool pool = ClassPool.getDefault(); |
| 87 | + ClassPool.doPruning = true; | |
| 88 | + | |
| 87 | 89 | CtClass ctChieldClass = pool.getOrNull(chieldClassName); |
| 88 | 90 | |
| 89 | 91 | ClassLoader classLoader = type.getClassLoader(); |
| ... | ... | @@ -97,20 +99,26 @@ public class ConfigurationBootstrap implements Extension { |
| 97 | 99 | |
| 98 | 100 | CtClass ctSuperClass = pool.get(superClassName); |
| 99 | 101 | |
| 100 | - ctChieldClass = pool.makeClass(chieldClassName, ctSuperClass); | |
| 102 | + // ctChieldClass = pool.makeClass(chieldClassName, ctSuperClass); | |
| 103 | + ctChieldClass = pool.getAndRename(ConfigurationImpl.class.getCanonicalName(), chieldClassName); | |
| 104 | + ctChieldClass.setSuperclass(ctSuperClass); | |
| 101 | 105 | |
| 102 | - CtClass ctClassX = pool.get("br.gov.frameworkdemoiselle.internal.implementation.X"); | |
| 106 | + // for (CtField ctFieldImpl : ctClassImpl.getDeclaredFields()) { | |
| 107 | + // ctChieldClass.addField(new CtField(ctFieldImpl, ctChieldClass)); | |
| 108 | + // System.out.println("FFFFFFFFFFFFFFFFFFFFFFFFFF-----------" + ctFieldImpl.toString()); | |
| 109 | + // } | |
| 103 | 110 | |
| 104 | - CtField ctFieldX = ctClassX.getField("cache"); | |
| 105 | - ctChieldClass.addField(new CtField(ctFieldX, ctChieldClass)); | |
| 106 | - | |
| 107 | - CtMethod ctMethodX = ctClassX.getDeclaredMethod("loadProxyConfigurarion"); | |
| 108 | - ctChieldClass.addMethod(new CtMethod(ctMethodX, ctChieldClass, null)); | |
| 111 | + // for (CtMethod ctMethodImpl : ctClassImpl.getDeclaredMethods()) { | |
| 112 | + // ctChieldClass.addMethod(new CtMethod(ctMethodImpl, ctChieldClass, null)); | |
| 113 | + // System.out.println("MMMMMMMMMMMMMMMMMMMMMMMMMM-----------" + ctMethodImpl.toString()); | |
| 114 | + // } | |
| 109 | 115 | |
| 110 | 116 | CtMethod ctChieldMethod; |
| 111 | 117 | for (CtMethod ctSuperMethod : ctSuperClass.getDeclaredMethods()) { |
| 112 | 118 | ctChieldMethod = CtNewMethod.delegator(ctSuperMethod, ctChieldClass); |
| 113 | - ctChieldMethod.insertBefore("loadProxyConfigurarion();"); | |
| 119 | + ctChieldMethod.insertBefore("loadProxyConfigurarion(this);"); | |
| 120 | + // ctChieldMethod | |
| 121 | + // .insertBefore("new br.gov.frameworkdemoiselle.internal.configuration.ConfigurationLoader().load(this);"); | |
| 114 | 122 | |
| 115 | 123 | ctChieldClass.addMethod(ctChieldMethod); |
| 116 | 124 | } | ... | ... |
impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/ProxyBean.java
| ... | ... | @@ -42,6 +42,7 @@ import java.util.Collections; |
| 42 | 42 | import java.util.HashSet; |
| 43 | 43 | import java.util.Set; |
| 44 | 44 | |
| 45 | +import javax.enterprise.context.Dependent; | |
| 45 | 46 | import javax.enterprise.context.spi.CreationalContext; |
| 46 | 47 | import javax.enterprise.inject.Any; |
| 47 | 48 | import javax.enterprise.inject.Default; |
| ... | ... | @@ -51,7 +52,7 @@ import javax.enterprise.inject.spi.BeanManager; |
| 51 | 52 | import javax.enterprise.inject.spi.InjectionPoint; |
| 52 | 53 | import javax.enterprise.inject.spi.InjectionTarget; |
| 53 | 54 | import javax.enterprise.util.AnnotationLiteral; |
| 54 | -import javax.inject.Singleton; | |
| 55 | +import javax.inject.Scope; | |
| 55 | 56 | |
| 56 | 57 | /** |
| 57 | 58 | * @see http://docs.jboss.org/weld/reference/latest/en-US/html_single/#d0e5035 |
| ... | ... | @@ -101,7 +102,7 @@ public class ProxyBean implements Bean<Object> { |
| 101 | 102 | } |
| 102 | 103 | |
| 103 | 104 | public Class<? extends Annotation> getScope() { |
| 104 | - return Singleton.class; | |
| 105 | + return Dependent.class; | |
| 105 | 106 | } |
| 106 | 107 | |
| 107 | 108 | public String getName() { | ... | ... |
impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationImpl.java
0 → 100644
| ... | ... | @@ -0,0 +1,58 @@ |
| 1 | +package br.gov.frameworkdemoiselle.internal.implementation; | |
| 2 | + | |
| 3 | +import java.util.ArrayList; | |
| 4 | +import java.util.Collections; | |
| 5 | +import java.util.HashMap; | |
| 6 | +import java.util.List; | |
| 7 | +import java.util.Map; | |
| 8 | + | |
| 9 | +import br.gov.frameworkdemoiselle.internal.configuration.ConfigurationLoader; | |
| 10 | +import br.gov.frameworkdemoiselle.util.Beans; | |
| 11 | + | |
| 12 | +public class ConfigurationImpl { | |
| 13 | + | |
| 14 | + private static Map<ClassLoader, List<Class<?>>> cache; | |
| 15 | + | |
| 16 | + private boolean loaded = false; | |
| 17 | + | |
| 18 | + private synchronized static Map<ClassLoader, List<Class<?>>> getCache() { | |
| 19 | + if (cache == null) { | |
| 20 | + cache = Collections.synchronizedMap(new HashMap<ClassLoader, List<Class<?>>>()); | |
| 21 | + } | |
| 22 | + | |
| 23 | + return cache; | |
| 24 | + } | |
| 25 | + | |
| 26 | + @SuppressWarnings("unused") | |
| 27 | + private synchronized void loadProxyConfigurarion(Object instance) { | |
| 28 | + if (!loaded) { | |
| 29 | + Beans.getReference(ConfigurationLoader.class).load(instance); | |
| 30 | + loaded = true; | |
| 31 | + } | |
| 32 | + } | |
| 33 | + | |
| 34 | + @SuppressWarnings("unused") | |
| 35 | + private synchronized static void loadProxyConfigurarionX(Object instance) { | |
| 36 | + Class<?> clazz = instance.getClass().getSuperclass(); | |
| 37 | + ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); | |
| 38 | + | |
| 39 | + boolean loaded = true; | |
| 40 | + | |
| 41 | + if (getCache().containsKey(classLoader)) { | |
| 42 | + if (!getCache().get(classLoader).contains(clazz)) { | |
| 43 | + loaded = false; | |
| 44 | + } | |
| 45 | + | |
| 46 | + } else { | |
| 47 | + List<Class<?>> classes = Collections.synchronizedList(new ArrayList<Class<?>>()); | |
| 48 | + getCache().put(classLoader, classes); | |
| 49 | + loaded = false; | |
| 50 | + } | |
| 51 | + | |
| 52 | + if (!loaded) { | |
| 53 | +// new br.gov.frameworkdemoiselle.internal.configuration.ConfigurationLoader().load(instance); | |
| 54 | + Beans.getReference(ConfigurationLoader.class).load(instance); | |
| 55 | + getCache().get(classLoader).add(clazz); | |
| 56 | + } | |
| 57 | + } | |
| 58 | +} | ... | ... |
impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/X.java
| ... | ... | @@ -1,40 +0,0 @@ |
| 1 | -package br.gov.frameworkdemoiselle.internal.implementation; | |
| 2 | - | |
| 3 | -import java.util.ArrayList; | |
| 4 | -import java.util.Collections; | |
| 5 | -import java.util.HashMap; | |
| 6 | -import java.util.List; | |
| 7 | -import java.util.Map; | |
| 8 | - | |
| 9 | -import br.gov.frameworkdemoiselle.internal.configuration.ConfigurationLoader; | |
| 10 | - | |
| 11 | -public class X { | |
| 12 | - | |
| 13 | - private final Map<ClassLoader, List<Class<?>>> cache = Collections | |
| 14 | - .synchronizedMap(new HashMap<ClassLoader, List<Class<?>>>()); | |
| 15 | - | |
| 16 | - private void loadProxyConfigurarion() { | |
| 17 | - Class<?> clazz = this.getClass(); | |
| 18 | - ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); | |
| 19 | - | |
| 20 | - boolean loaded = true; | |
| 21 | - | |
| 22 | - if (cache.containsKey(classLoader)) { | |
| 23 | - if (!cache.get(classLoader).contains(clazz)) { | |
| 24 | - loaded = false; | |
| 25 | - } | |
| 26 | - | |
| 27 | - } else { | |
| 28 | - List<Class<?>> classes = Collections.synchronizedList(new ArrayList<Class<?>>()); | |
| 29 | - cache.put(classLoader, classes); | |
| 30 | - loaded = false; | |
| 31 | - } | |
| 32 | - | |
| 33 | - if (!loaded) { | |
| 34 | - new ConfigurationLoader().load(this); | |
| 35 | - cache.get(classLoader).add(clazz); | |
| 36 | - } | |
| 37 | - | |
| 38 | - new ConfigurationLoader().load(this); | |
| 39 | - } | |
| 40 | -} |