fixing bug: CdmEntityCache no longer misses analyzing nomenclatural refs
authorAndreas Kohlbecker <a.kohlbecker@bgbm.org>
Tue, 12 Dec 2017 15:54:46 +0000 (16:54 +0100)
committerAndreas Kohlbecker <a.kohlbecker@bgbm.org>
Tue, 12 Dec 2017 15:54:46 +0000 (16:54 +0100)
src/main/java/eu/etaxonomy/cdm/cache/CdmEntityCache.java

index 67c3ccaffd40ec115d043a803228efca47f37416..7cc011f4d3640c090f06d1a10e66932bb4661f17 100644 (file)
@@ -21,6 +21,7 @@ import java.util.Set;
 
 import org.apache.commons.beanutils.PropertyUtils;
 import org.apache.commons.lang.builder.HashCodeBuilder;
+import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
 import org.hibernate.Hibernate;
 import org.hibernate.collection.internal.AbstractPersistentCollection;
@@ -30,6 +31,7 @@ import org.hibernate.envers.internal.entities.mapper.relation.lazy.proxy.SortedM
 
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.common.CdmBase;
+import eu.etaxonomy.cdm.model.reference.INomenclaturalReference;
 import eu.etaxonomy.cdm.persistence.dao.initializer.AbstractBeanInitializer;
 
 /**
@@ -123,10 +125,13 @@ public class CdmEntityCache implements EntityCache {
                 }
 
                 String propertyPathSuffix = "." + prop.getName();
+                logger.debug("\t\tnext property:" + propertyPathSuffix);
 
                 if(Hibernate.isInitialized(propertyValue)) {
 
-                    if(CdmBase.class.isAssignableFrom(prop.getPropertyType())){
+                    if(CdmBase.class.isAssignableFrom(prop.getPropertyType())
+                            || INomenclaturalReference.class.isAssignableFrom(prop.getPropertyType())
+                            ){
                         analyzeEntity(HibernateProxyHelper.deproxy(propertyValue, CdmBase.class), propertyPath + propertyPathSuffix);
                         continue;
                     }
@@ -291,6 +296,7 @@ public class CdmEntityCache implements EntityCache {
     @Override
     public <CDM extends CdmBase> void add(CDM value) {
         entities.add(value);
+        logger.setLevel(Level.DEBUG);
         analyzeEntity(value, "");
     }