r1403 - in trunk/simexplorer-is/simexplorer-is-security/src/test: . com com/bm com/bm/introspectors com/bm/introspectors/relations
Author: glandais Date: 2008-03-19 18:05:45 +0000 (Wed, 19 Mar 2008) New Revision: 1403 Added: trunk/simexplorer-is/simexplorer-is-security/src/test/com/ trunk/simexplorer-is/simexplorer-is-security/src/test/com/bm/ trunk/simexplorer-is/simexplorer-is-security/src/test/com/bm/introspectors/ trunk/simexplorer-is/simexplorer-is-security/src/test/com/bm/introspectors/relations/ trunk/simexplorer-is/simexplorer-is-security/src/test/com/bm/introspectors/relations/GlobalPrimaryKeyStore.java Log: Patch to ejb3unit Added: trunk/simexplorer-is/simexplorer-is-security/src/test/com/bm/introspectors/relations/GlobalPrimaryKeyStore.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-security/src/test/com/bm/introspectors/relations/GlobalPrimaryKeyStore.java (rev 0) +++ trunk/simexplorer-is/simexplorer-is-security/src/test/com/bm/introspectors/relations/GlobalPrimaryKeyStore.java 2008-03-19 18:05:45 UTC (rev 1403) @@ -0,0 +1,74 @@ +package com.bm.introspectors.relations; + +import java.util.HashMap; +import java.util.Map; +import java.util.Set; + +import com.bm.introspectors.PrimaryKeyInfo; +import com.bm.introspectors.Property; + +/** + * Global store for storing the primary key properties of entity classes. + * Such a global store is necessary to avoid cyclic dependencies while processing relations. + * + * @author Peter Doornbosch + */ +public class GlobalPrimaryKeyStore { + + private static final org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory + .getLog(GlobalPrimaryKeyStore.class); + + private static final GlobalPrimaryKeyStore singleton = new GlobalPrimaryKeyStore(); + + private Map<Class, Map<Property, PrimaryKeyInfo>> store = new HashMap<Class, Map<Property, PrimaryKeyInfo>>(); + + private GlobalPrimaryKeyStore() { + // singleton constructor + } + + /** + * Returns the singleton instance. + * + * @return - the singleton instance + */ + public static GlobalPrimaryKeyStore getStore() { + return singleton; + } + + /** + * Stores primary key info of a given entity class. + * @param entityClass the entity class + * @param pkFieldInfo the primary key property and field info; usually the map will contain + * just one entry, but it might contain more entries in case of a composite primary key. + */ + public void put(Class entityClass, Map<Property, PrimaryKeyInfo> pkFieldInfo) { + log.info(entityClass); + log.info(pkFieldInfo); + store.put(entityClass, pkFieldInfo); + } + + private Map<Property, PrimaryKeyInfo> getPkInfo(Class entityClass) { + Map<Property, PrimaryKeyInfo> pkInfo = store.get(entityClass); + if (pkInfo == null && entityClass != null) { + pkInfo = getPkInfo(entityClass.getSuperclass()); + } + return pkInfo; + } + + /** + * Retrieves primary key info. + * @param entityClass + * @return one or more (in case of a composite primary key) properties that specify the + * primary key(s), or null if no primary key info is registered for the given class. + */ + public Set<Property> getPrimaryKeyInfo(Class entityClass) { + log.info(entityClass); + Map<Property, PrimaryKeyInfo> pkInfo = getPkInfo(entityClass); //store.get(entityClass); + if (pkInfo == null) { + return null; + } + else { + return pkInfo.keySet(); + } + } +}
participants (1)
-
glandais@users.labs.libre-entreprise.org