Commit 0bac8554b36c32f2601712c8b32a31c3f2856b24
1 parent
a72f5cbe
Exists in
master
Resolvendo problema onde contextos personalizados não suportam
serialização.
Showing
4 changed files
with
11 additions
and
26 deletions
Show diff stats
impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/context/AbstractCustomContext.java
| ... | ... | @@ -157,8 +157,8 @@ public abstract class AbstractCustomContext implements CustomContext { |
| 157 | 157 | return this.scope; |
| 158 | 158 | } |
| 159 | 159 | |
| 160 | - protected static Store createStore(Class<?> owningClass) { | |
| 161 | - return new Store(owningClass); | |
| 160 | + protected static Store createStore() { | |
| 161 | + return new Store(); | |
| 162 | 162 | } |
| 163 | 163 | |
| 164 | 164 | private ResourceBundle getBundle(){ |
| ... | ... | @@ -200,33 +200,26 @@ public abstract class AbstractCustomContext implements CustomContext { |
| 200 | 200 | |
| 201 | 201 | private final String SEPARATOR = "#"; |
| 202 | 202 | |
| 203 | - private final String ID_PREFIX; | |
| 204 | - | |
| 205 | 203 | private Map<String, Object> cache = Collections.synchronizedMap(new HashMap<String, Object>()); |
| 206 | 204 | |
| 207 | - private Store(Class<?> owningClass) { | |
| 208 | - ID_PREFIX = Thread.currentThread().getContextClassLoader().toString() | |
| 209 | - + SEPARATOR + owningClass.getCanonicalName(); | |
| 210 | - } | |
| 211 | - | |
| 212 | 205 | private boolean contains(final Class<?> type) { |
| 213 | - return cache.containsKey( prefixId(type.getCanonicalName()) ); | |
| 206 | + return cache.containsKey( prefixId(type) ); | |
| 214 | 207 | } |
| 215 | 208 | |
| 216 | 209 | private Object get(final Class<?> type) { |
| 217 | - return cache.get( prefixId(type.getCanonicalName()) ); | |
| 210 | + return cache.get( prefixId(type) ); | |
| 218 | 211 | } |
| 219 | 212 | |
| 220 | 213 | private void put(final Class<?> type, final Object instance) { |
| 221 | - cache.put( prefixId(type.getCanonicalName()) , instance); | |
| 214 | + cache.put( prefixId(type) , instance); | |
| 222 | 215 | } |
| 223 | 216 | |
| 224 | 217 | public void clear() { |
| 225 | 218 | cache.clear(); |
| 226 | 219 | } |
| 227 | 220 | |
| 228 | - private String prefixId(String id){ | |
| 229 | - return ID_PREFIX + SEPARATOR + id; | |
| 221 | + private String prefixId(Class<?> type){ | |
| 222 | + return Thread.currentThread().getContextClassLoader().toString() + SEPARATOR + type.getCanonicalName(); | |
| 230 | 223 | } |
| 231 | 224 | |
| 232 | 225 | /*private Map<String, Object> getMap() { | ... | ... |
impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/context/AbstractStaticContext.java
| ... | ... | @@ -37,9 +37,6 @@ |
| 37 | 37 | package br.gov.frameworkdemoiselle.internal.context; |
| 38 | 38 | |
| 39 | 39 | import java.lang.annotation.Annotation; |
| 40 | -import java.util.Collections; | |
| 41 | -import java.util.HashMap; | |
| 42 | -import java.util.Map; | |
| 43 | 40 | |
| 44 | 41 | import br.gov.frameworkdemoiselle.annotation.Priority; |
| 45 | 42 | import br.gov.frameworkdemoiselle.annotation.StaticScoped; |
| ... | ... | @@ -61,7 +58,7 @@ import br.gov.frameworkdemoiselle.configuration.Configuration; |
| 61 | 58 | @Priority(Priority.MIN_PRIORITY) |
| 62 | 59 | public abstract class AbstractStaticContext extends AbstractCustomContext { |
| 63 | 60 | |
| 64 | - private static Map<String, Store> cache = Collections.synchronizedMap( new HashMap<String, Store>() ); | |
| 61 | + private final static Store store = createStore(); | |
| 65 | 62 | |
| 66 | 63 | /** |
| 67 | 64 | * Constructs this context to control the provided scope |
| ... | ... | @@ -72,16 +69,11 @@ public abstract class AbstractStaticContext extends AbstractCustomContext { |
| 72 | 69 | |
| 73 | 70 | @Override |
| 74 | 71 | protected Store getStore() { |
| 75 | - Store store = cache.get( this.getClass().getCanonicalName() ); | |
| 76 | - if ( store==null ){ | |
| 77 | - store = createStore(this.getClass()); | |
| 78 | - cache.put(this.getClass().getCanonicalName(), store); | |
| 79 | - } | |
| 80 | 72 | return store; |
| 81 | 73 | } |
| 82 | 74 | |
| 83 | 75 | @Override |
| 84 | 76 | protected boolean isStoreInitialized() { |
| 85 | - return cache.get( this.getClass().getCanonicalName() )!=null; | |
| 77 | + return store!=null; | |
| 86 | 78 | } |
| 87 | 79 | } | ... | ... |
impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/context/AbstractThreadLocalContext.java
| ... | ... | @@ -73,7 +73,7 @@ public abstract class AbstractThreadLocalContext extends AbstractCustomContext { |
| 73 | 73 | @Override |
| 74 | 74 | protected Store getStore() { |
| 75 | 75 | if (this.threadLocal.get() == null) { |
| 76 | - this.threadLocal.set(createStore(getClass())); | |
| 76 | + this.threadLocal.set(createStore()); | |
| 77 | 77 | } |
| 78 | 78 | |
| 79 | 79 | return this.threadLocal.get(); | ... | ... |
impl/extension/jsf/src/main/java/br/gov/frameworkdemoiselle/internal/context/FacesViewContextImpl.java
| ... | ... | @@ -75,7 +75,7 @@ public class FacesViewContextImpl extends AbstractCustomContext implements ViewC |
| 75 | 75 | String key = Store.class.getName(); |
| 76 | 76 | |
| 77 | 77 | if (!viewMap.containsKey(key)) { |
| 78 | - viewMap.put(key, createStore( getClass() )); | |
| 78 | + viewMap.put(key, createStore()); | |
| 79 | 79 | } |
| 80 | 80 | |
| 81 | 81 | return (Store) viewMap.get(key); | ... | ... |