Commit a2538005f103c1ff771d8e363664f4a317e2d597

Authored by Ednara Oliveira
1 parent f0b8315f
Exists in master

Alterações no cache de proxy do ConfiguartionBootstrap

impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/bootstrap/ConfigurationBootstrap.java
@@ -62,8 +62,9 @@ public class ConfigurationBootstrap implements Extension { @@ -62,8 +62,9 @@ public class ConfigurationBootstrap implements Extension {
62 62
63 private final List<Class<Object>> cache = Collections.synchronizedList(new ArrayList<Class<Object>>()); 63 private final List<Class<Object>> cache = Collections.synchronizedList(new ArrayList<Class<Object>>());
64 64
65 - private static final Map<ClassLoader, List<String>> cacheClassLoader = Collections.synchronizedMap(new HashMap<ClassLoader, List<String>>());  
66 - 65 + private static final Map<ClassLoader, Map<String, Class<Object>>> cacheClassLoader = Collections
  66 + .synchronizedMap(new HashMap<ClassLoader, Map<String, Class<Object>>>());
  67 +
67 public void processAnnotatedType(@Observes final ProcessAnnotatedType<Object> event) { 68 public void processAnnotatedType(@Observes final ProcessAnnotatedType<Object> event) {
68 final AnnotatedType<Object> annotatedType = event.getAnnotatedType(); 69 final AnnotatedType<Object> annotatedType = event.getAnnotatedType();
69 70
@@ -78,9 +79,7 @@ public class ConfigurationBootstrap implements Extension { @@ -78,9 +79,7 @@ public class ConfigurationBootstrap implements Extension {
78 79
79 for (Class<Object> config : cache) { 80 for (Class<Object> config : cache) {
80 proxy = createProxy(config); 81 proxy = createProxy(config);
81 - if (proxy != null) {  
82 - event.addBean(new CustomBean(proxy, beanManager));  
83 - } 82 + event.addBean(new CustomBean(proxy, beanManager));
84 } 83 }
85 } 84 }
86 85
@@ -89,24 +88,20 @@ public class ConfigurationBootstrap implements Extension { @@ -89,24 +88,20 @@ public class ConfigurationBootstrap implements Extension {
89 String superClassName = type.getCanonicalName(); 88 String superClassName = type.getCanonicalName();
90 String chieldClassName = superClassName + "__DemoiselleProxy"; 89 String chieldClassName = superClassName + "__DemoiselleProxy";
91 90
92 - Class<Object> clazz = null;  
93 -  
94 - Boolean loaded = true; 91 + Map<String, Class<Object>> cacheProxy = Collections.synchronizedMap(new HashMap<String, Class<Object>>());;
  92 +
  93 + Class<Object> clazzProxy = null;
  94 +
95 ClassLoader classLoader = type.getClassLoader(); 95 ClassLoader classLoader = type.getClassLoader();
96 - if (cacheClassLoader.containsKey(classLoader)) {  
97 - if (!cacheClassLoader.get(classLoader).contains(chieldClassName)) {  
98 - loaded = false; 96 + if (cacheClassLoader.containsKey(classLoader)) {
  97 + cacheProxy = cacheClassLoader.get(classLoader);
  98 + if (cacheProxy.containsKey(chieldClassName)) {
  99 + clazzProxy = cacheProxy.get(chieldClassName);
99 } 100 }
100 } 101 }
101 - else{  
102 - List<String> strings = Collections.synchronizedList(new ArrayList<String>());  
103 - cacheClassLoader.put(classLoader, strings);  
104 - loaded = false;  
105 - }  
106 -  
107 - if (!loaded){  
108 - cacheClassLoader.get(classLoader).add(chieldClassName);  
109 - 102 +
  103 + if (clazzProxy == null) {
  104 +
110 ClassPool pool = new ClassPool(); 105 ClassPool pool = new ClassPool();
111 CtClass ctChieldClass = pool.getOrNull(chieldClassName); 106 CtClass ctChieldClass = pool.getOrNull(chieldClassName);
112 107
@@ -123,9 +118,13 @@ public class ConfigurationBootstrap implements Extension { @@ -123,9 +118,13 @@ public class ConfigurationBootstrap implements Extension {
123 118
124 ctChieldClass.addMethod(ctChieldMethod); 119 ctChieldClass.addMethod(ctChieldMethod);
125 } 120 }
126 - clazz = ctChieldClass.toClass(classLoader, type.getProtectionDomain()); 121 +
  122 + clazzProxy = ctChieldClass.toClass(classLoader, type.getProtectionDomain());
  123 +
  124 + cacheProxy.put(chieldClassName, clazzProxy);
  125 + cacheClassLoader.put(classLoader, cacheProxy);
127 } 126 }
128 127
129 - return clazz;  
130 - } 128 + return clazzProxy;
  129 + }
131 } 130 }