Commit ee348c188d8fd39320cf524ee37f8f8768d22186

Authored by Ednara Oliveira
1 parent c73cbad5
Exists in master

Ajustes na implementação do ConfigurationBootstrap

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   -}