001package com.hammurapi.common.concurrent; 002 003import java.util.HashMap; 004import java.util.Map; 005import java.util.concurrent.ExecutorService; 006import java.util.concurrent.locks.ReadWriteLock; 007import java.util.concurrent.locks.ReentrantReadWriteLock; 008 009import com.hammurapi.common.Context; 010import com.hammurapi.convert.Converter; 011 012/** 013 * Property set which uses in-memory collections and reentrant read-write lock 014 * @author Pavel Vlasov 015 * 016 * @param <KP> 017 * @param <KE> 018 */ 019public abstract class LocalAbstractPropertySet<KP, KE> extends AbstractPropertySet<KP, KE> { 020 021 private Map<KE, Object> valueStore = new HashMap<KE, Object>(); 022 private Map<KE, AbstractPropertySet<KP, KE>> subSetStore = new HashMap<KE, AbstractPropertySet<KP,KE>>(); 023 private Map<KE, PropertySet<KP>> mounts = new HashMap<KE, PropertySet<KP>>(); 024 025 protected LocalAbstractPropertySet( 026 ExecutorService executorService, 027 Converter converter, 028// ClassLoader classLoader, 029 Context context, 030 PropertySet<KP>... shadows) { 031 super(executorService, converter, /* classLoader,*/ context, shadows); 032 } 033 034 @Override 035 protected Map<KE, Object> getValueStore() { 036 return valueStore; 037 } 038 039 @Override 040 protected Map<KE, AbstractPropertySet<KP, KE>> getSubSetStore() { 041 return subSetStore; 042 } 043 044 @Override 045 protected Map<KE, PropertySet<KP>> getMounts() { 046 return mounts; 047 } 048 049}