package org.jboss.seam.security.external.contexts; import java.util.HashMap; import java.util.Map; import javax.enterprise.context.spi.Contextual; /** * Non-serializable bean store, based on a hash map. This bean store should not * be used for passivating scopes! * * @author Marcel Kolsteren */ public class HashMapBeanStore { protected Map<Contextual<?>, ContextualInstance<? extends Object>> contextualInstanceMap; public HashMapBeanStore() { contextualInstanceMap = new HashMap<Contextual<?>, ContextualInstance<? extends Object>>(); } public <T extends Object> ContextualInstance<T> get(Contextual<T> contextual) { @SuppressWarnings("unchecked") ContextualInstance<T> instance = (ContextualInstance<T>) contextualInstanceMap.get(contextual); return instance; } private <T> void destroy(Contextual<T> contextual) { ContextualInstance<T> beanInstance = get(contextual); beanInstance.getContextual().destroy(beanInstance.getInstance(), beanInstance.getCreationalContext()); } public void clear() { for (Contextual<?> contextual : contextualInstanceMap.keySet()) { destroy(contextual); } contextualInstanceMap.clear(); } public <T> void put(Contextual<T> contextual, ContextualInstance<T> beanInstance) { contextualInstanceMap.put(contextual, beanInstance); } }