Add remoting operation / handlers for key list editor
[taxeditor.git] / eu.etaxonomy.taxeditor.cdmlib / src / main / java / eu / etaxonomy / taxeditor / remoting / cache / EntityCacherDebugResult.java
index ca7ac3502b6cc8a8ddc23c3732e045f5393335e8..85012f237abb3299fac5a99c9d752d62ec3fa85d 100644 (file)
@@ -123,13 +123,15 @@ public class EntityCacherDebugResult {
                 sb.append(System.getProperty("line.separator"));
                 CdmEntityInfo cei = entry.getKey();
                 CdmBase cb = (CdmBase) cei.getObject();
-                Object cbParent = cei.getParent().getObject();
 
+                sb.append(" - " + cei.getField().getName() + ":" + cb.getUserFriendlyTypeName() + "/" + cb.getId());
+                if(cei.getParent() != null) {
+                    Object cbParent = cei.getParent().getObject();
+                    sb.append("     in entity " + cbParent.getClass().getCanonicalName());
+                    if(cbParent instanceof CdmBase) {
 
-                sb.append(" - " + cei.getField().getName() + ":" + cb.getUserFriendlyTypeName() + "/" + cb.getId() +
-                        " in entity " + cbParent.getClass().getCanonicalName());
-                if(cbParent instanceof CdmBase) {
-                    sb.append(" with id : " + ((CdmBase)cbParent).getId());
+                        sb.append(" with id : " + ((CdmBase)cbParent).getId());
+                    }
                 }
                 sb.append(System.getProperty("line.separator"));
                 sb.append("  -- entity belongs to cache(s) : " + getCachesContainingEntity(cb));
@@ -138,12 +140,18 @@ public class EntityCacherDebugResult {
 
                 CdmEntityInfo dupCei = entry.getValue();
                 CdmBase dupCb = (CdmBase) dupCei.getObject();
-                Object dupCbParent = dupCei.getParent().getObject();
 
-                sb.append(" - " + dupCei.getField().getName() + ":" + dupCb.getUserFriendlyTypeName() + "/" + dupCb.getId() +
-                        " in entity " + dupCbParent.getClass().getCanonicalName());
-                if(dupCbParent instanceof CdmBase) {
-                    sb.append(" with id : " + ((CdmBase)dupCbParent).getId());
+                String dupCeiFieldName = "";
+                if(dupCei.getField() != null) {
+                    dupCeiFieldName = dupCei.getField().getName();
+                }
+                sb.append(" - " + dupCeiFieldName + ":" + dupCb.getUserFriendlyTypeName() + "/" + dupCb.getId());
+                if(dupCei.getParent() != null) {
+                    Object dupCbParent = dupCei.getParent().getObject();
+                    sb.append("      in entity " + dupCbParent.getClass().getCanonicalName());
+                    if(dupCbParent instanceof CdmBase) {
+                        sb.append(" with id : " + ((CdmBase)dupCbParent).getId());
+                    }
                 }
                 sb.append(System.getProperty("line.separator"));
                 sb.append("  -- entity belongs to cache(s) : " + getCachesContainingEntity(dupCb));
@@ -350,18 +358,11 @@ public class EntityCacherDebugResult {
             childCei.setField(field);
 
             if(o != null) {
+                boolean isProxy = ProxyUtils.isProxy(o);
 
-                if(o instanceof HibernateProxy) {
-                    isHibernateProxy = true;
-                }
-
-                if(o instanceof PersistentCollection) {
-                    isPersistentCollection = true;
-                }
-                childCei.setObject(o);
-                childCei.setProxy(isHibernateProxy || isPersistentCollection);
-                if(!isHibernateProxy && !isPersistentCollection) {
-
+                childCei.setProxy(isProxy);
+                if(!isProxy) {
+                    childCei.setObject(ProxyUtils.deproxy(o));
                     if(CdmBase.class.isAssignableFrom(o.getClass())) {
                         logger.info("found initialised cdm entity '" + fieldName + "' in object of type " + clazz.getName() + " with id " + cdmEntity.getId());
                         cdmEntityInSubGraph  = (CdmBase)o;