Commit 3ba5b60a9f3a364f2ecd27cb2248dbf879e51ac5
1 parent
15dffee5
Exists in
master
Regressão de solução para contextos não serializáveis, até encontrar
forma de identificar unicamente classloaders.
Showing
1 changed file
with
13 additions
and
16 deletions
Show diff stats
impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/context/AbstractCustomContext.java
@@ -36,7 +36,6 @@ | @@ -36,7 +36,6 @@ | ||
36 | */ | 36 | */ |
37 | package br.gov.frameworkdemoiselle.internal.context; | 37 | package br.gov.frameworkdemoiselle.internal.context; |
38 | 38 | ||
39 | -import java.io.Serializable; | ||
40 | import java.lang.annotation.Annotation; | 39 | import java.lang.annotation.Annotation; |
41 | import java.util.Collections; | 40 | import java.util.Collections; |
42 | import java.util.HashMap; | 41 | import java.util.HashMap; |
@@ -194,40 +193,38 @@ public abstract class AbstractCustomContext implements CustomContext { | @@ -194,40 +193,38 @@ public abstract class AbstractCustomContext implements CustomContext { | ||
194 | return true; | 193 | return true; |
195 | } | 194 | } |
196 | 195 | ||
197 | - static class Store implements Serializable { | 196 | + static class Store { |
198 | 197 | ||
199 | - private static final long serialVersionUID = -8237464177510563034L; | ||
200 | - | ||
201 | - private final String SEPARATOR = "#"; | ||
202 | - | ||
203 | - private Map<String, Object> cache = Collections.synchronizedMap(new HashMap<String, Object>()); | 198 | + private Map<ClassLoader, Map<Class<?>, Object>> cache = Collections |
199 | + .synchronizedMap(new HashMap<ClassLoader, Map<Class<?>, Object>>()); | ||
200 | + | ||
201 | + private Store() { | ||
202 | + } | ||
204 | 203 | ||
205 | private boolean contains(final Class<?> type) { | 204 | private boolean contains(final Class<?> type) { |
206 | - return cache.containsKey( prefixId(type) ); | 205 | + return this.getMap().containsKey(type); |
207 | } | 206 | } |
208 | 207 | ||
209 | private Object get(final Class<?> type) { | 208 | private Object get(final Class<?> type) { |
210 | - return cache.get( prefixId(type) ); | 209 | + return this.getMap().get(type); |
211 | } | 210 | } |
212 | 211 | ||
213 | private void put(final Class<?> type, final Object instance) { | 212 | private void put(final Class<?> type, final Object instance) { |
214 | - cache.put( prefixId(type) , instance); | 213 | + this.getMap().put(type, instance); |
215 | } | 214 | } |
216 | 215 | ||
217 | public void clear() { | 216 | public void clear() { |
218 | cache.clear(); | 217 | cache.clear(); |
219 | } | 218 | } |
220 | - | ||
221 | - private String prefixId(Class<?> type){ | ||
222 | - return Thread.currentThread().getContextClassLoader().toString() + SEPARATOR + type.getCanonicalName(); | ||
223 | - } | ||
224 | 219 | ||
225 | - /*private Map<String, Object> getMap() { | 220 | + private Map<Class<?>, Object> getMap() { |
221 | + ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); | ||
222 | + | ||
226 | if (!cache.containsKey(classLoader)) { | 223 | if (!cache.containsKey(classLoader)) { |
227 | cache.put(classLoader, Collections.synchronizedMap(new HashMap<Class<?>, Object>())); | 224 | cache.put(classLoader, Collections.synchronizedMap(new HashMap<Class<?>, Object>())); |
228 | } | 225 | } |
229 | 226 | ||
230 | return cache.get(classLoader); | 227 | return cache.get(classLoader); |
231 | - }*/ | 228 | + } |
232 | } | 229 | } |
233 | } | 230 | } |