From 37d7ce64aa0b29b303ad33c87f9ea9782af6301f Mon Sep 17 00:00:00 2001 From: Cherian Mathew Date: Thu, 8 Oct 2015 12:44:55 +0200 Subject: [PATCH] Add load capability for MergeResult objects --- .../taxeditor/remoting/cache/CacheLoader.java | 10 ++++++++++ .../remoting/cache/CdmTransientEntityCacher.java | 5 +++++ .../service/CdmServiceRequestExecutor.java | 9 +-------- .../taxeditor/session/CdmEntitySession.java | 9 +++++++++ .../session/CdmEntitySessionManager.java | 15 +++++++++++++-- .../taxeditor/session/ICdmEntitySession.java | 3 +++ .../session/ICdmEntitySessionManager.java | 3 +++ .../etaxonomy/taxeditor/session/NullSession.java | 9 +++++++++ .../session/mock/MockCdmEntitySession.java | 9 +++++++++ .../session/mock/MockCdmEntitySessionManager.java | 9 +++++++++ 10 files changed, 71 insertions(+), 10 deletions(-) diff --git a/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/remoting/cache/CacheLoader.java b/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/remoting/cache/CacheLoader.java index 526e990e4..62fc5c20a 100644 --- a/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/remoting/cache/CacheLoader.java +++ b/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/remoting/cache/CacheLoader.java @@ -25,6 +25,7 @@ import org.springframework.util.ReflectionUtils; import eu.etaxonomy.cdm.api.service.pager.Pager; import eu.etaxonomy.cdm.model.ICdmCacher; import eu.etaxonomy.cdm.model.common.CdmBase; +import eu.etaxonomy.cdm.persistence.dto.MergeResult; /** * @author cmathew @@ -72,6 +73,8 @@ public class CacheLoader { } else if(obj instanceof Pager) { load(((Pager)obj).getRecords(), recursive, update); return obj; + } else if(obj instanceof MergeResult) { + return (T) load((MergeResult)obj, recursive, update); } return obj; @@ -199,6 +202,13 @@ public class CacheLoader { } + public MergeResult load(MergeResult mergeResult, boolean recursive, boolean update) { + CdmBase cdmBase = load(mergeResult.getMergedEntity(), recursive, update); + load(mergeResult.getNewEntities(), recursive, update); + return mergeResult; + } + + /** * Puts the (Key,Value) pair of ({@link java.util.UUID}, {@link eu.etaxonomy.cdm.model.common.CdmBase}), * in the cache corresponding to the given cache id diff --git a/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/remoting/cache/CdmTransientEntityCacher.java b/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/remoting/cache/CdmTransientEntityCacher.java index 7e67ecd22..7047b190d 100644 --- a/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/remoting/cache/CdmTransientEntityCacher.java +++ b/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/remoting/cache/CdmTransientEntityCacher.java @@ -34,6 +34,7 @@ import eu.etaxonomy.cdm.api.service.UpdateResult; import eu.etaxonomy.cdm.api.service.dto.CdmEntityIdentifier; import eu.etaxonomy.cdm.model.ICdmCacher; import eu.etaxonomy.cdm.model.common.CdmBase; +import eu.etaxonomy.cdm.persistence.dto.MergeResult; import eu.etaxonomy.taxeditor.session.ICdmEntitySessionManager; /** @@ -184,6 +185,10 @@ public class CdmTransientEntityCacher implements ICdmCacher { return result; } + public MergeResult load(MergeResult mergeResult, boolean update) { + return cacheLoader.load(mergeResult, true, update); + } + public CdmModelFieldPropertyFromClass getFromCdmlibModelCache(String className) { return cacheLoader.getFromCdmlibModelCache(className); } diff --git a/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/service/CdmServiceRequestExecutor.java b/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/service/CdmServiceRequestExecutor.java index fa0a4f14f..065a7f24d 100644 --- a/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/service/CdmServiceRequestExecutor.java +++ b/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/service/CdmServiceRequestExecutor.java @@ -12,7 +12,6 @@ import org.springframework.stereotype.Component; import eu.etaxonomy.cdm.api.application.CdmApplicationRemoteController; import eu.etaxonomy.cdm.api.application.CdmApplicationState; import eu.etaxonomy.cdm.api.service.UpdateResult; -import eu.etaxonomy.cdm.persistence.dto.MergeResult; import eu.etaxonomy.taxeditor.session.ICdmEntitySessionManager; @Component @@ -54,13 +53,7 @@ public class CdmServiceRequestExecutor extends CdmAuthenticatedHttpInvokerReques if("merge".equals(currentRemoteInvocation.getMethodName()) || "save".equals(currentRemoteInvocation.getMethodName()) || "findWithUpdate".equals(currentRemoteInvocation.getMethodName())) { - if(rir.getValue() instanceof MergeResult) { - MergeResult result = (MergeResult) rir.getValue(); - cdmEntitySessionManager.load(result.getMergedEntity(), true); - cdmEntitySessionManager.load(result.getNewEntities(), true); - } else { - rir = new RemoteInvocationResult(cdmEntitySessionManager.load(rir.getValue(), true)); - } + rir = new RemoteInvocationResult(cdmEntitySessionManager.load(rir.getValue(), true)); } else if(rir.getValue() instanceof UpdateResult){ UpdateResult result = (UpdateResult)rir.getValue(); if(result.isOk()){ diff --git a/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/session/CdmEntitySession.java b/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/session/CdmEntitySession.java index 5fdfafa9d..150d7d20e 100644 --- a/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/session/CdmEntitySession.java +++ b/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/session/CdmEntitySession.java @@ -23,6 +23,7 @@ import org.apache.log4j.Logger; import eu.etaxonomy.cdm.api.service.IService; import eu.etaxonomy.cdm.api.service.UpdateResult; import eu.etaxonomy.cdm.model.common.CdmBase; +import eu.etaxonomy.cdm.persistence.dto.MergeResult; import eu.etaxonomy.taxeditor.remoting.cache.CdmTransientEntityCacher; import eu.etaxonomy.taxeditor.remoting.cache.EntityCacherDebugResult; @@ -92,6 +93,14 @@ public class CdmEntitySession implements ICdmEntitySession { return cdmTransientEntityCacher.load(updateResult, update); } + /* (non-Javadoc) + * @see eu.etaxonomy.taxeditor.session.ICdmEntitySession#load(eu.etaxonomy.cdm.persistence.dto.MergeResult, boolean) + */ + @Override + public MergeResult load(MergeResult mergeResult, boolean update) { + return cdmTransientEntityCacher.load(mergeResult, update); + } + @Override public void update() { Collection rootEntities = getRootEntities(); diff --git a/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/session/CdmEntitySessionManager.java b/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/session/CdmEntitySessionManager.java index 1e5d7d889..80bc0caba 100644 --- a/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/session/CdmEntitySessionManager.java +++ b/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/session/CdmEntitySessionManager.java @@ -22,6 +22,7 @@ import org.springframework.stereotype.Component; import eu.etaxonomy.cdm.api.service.UpdateResult; import eu.etaxonomy.cdm.model.common.CdmBase; +import eu.etaxonomy.cdm.persistence.dto.MergeResult; /** * @author cmathew @@ -161,6 +162,18 @@ public class CdmEntitySessionManager implements ICdmEntitySessionManager { } + /* (non-Javadoc) + * @see eu.etaxonomy.taxeditor.session.ICdmEntitySessionManager#load(eu.etaxonomy.cdm.persistence.dto.MergeResult, boolean) + */ + @Override + public MergeResult load(MergeResult mergeResult, boolean update) { + if(activeSession == null) { + return mergeResult; + } + return activeSession.load(mergeResult, update); + } + + /* (non-Javadoc) * @see eu.etaxonomy.taxeditor.session.ICdmEntitySessionManager#load(java.util.Collection) */ @@ -244,7 +257,5 @@ public class CdmEntitySessionManager implements ICdmEntitySessionManager { return true; } - - } diff --git a/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/session/ICdmEntitySession.java b/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/session/ICdmEntitySession.java index 22388ed7e..bbd744f77 100644 --- a/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/session/ICdmEntitySession.java +++ b/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/session/ICdmEntitySession.java @@ -8,6 +8,7 @@ import net.sf.ehcache.statistics.LiveCacheStatistics; import eu.etaxonomy.cdm.api.service.IService; import eu.etaxonomy.cdm.api.service.UpdateResult; import eu.etaxonomy.cdm.model.common.CdmBase; +import eu.etaxonomy.cdm.persistence.dto.MergeResult; import eu.etaxonomy.taxeditor.remoting.cache.EntityCacherDebugResult; public interface ICdmEntitySession { @@ -22,6 +23,8 @@ public interface ICdmEntitySession { public UpdateResult load(UpdateResult updateResult, boolean update); + public MergeResult load(MergeResult mergeResult, boolean update); + public EntityCacherDebugResult debug(T cdmBase); public EntityCacherDebugResult debug(Collection cdmBase); diff --git a/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/session/ICdmEntitySessionManager.java b/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/session/ICdmEntitySessionManager.java index ea2c7867b..f6418aecb 100644 --- a/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/session/ICdmEntitySessionManager.java +++ b/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/session/ICdmEntitySessionManager.java @@ -4,6 +4,7 @@ import java.util.Collection; import eu.etaxonomy.cdm.api.service.UpdateResult; import eu.etaxonomy.cdm.model.common.CdmBase; +import eu.etaxonomy.cdm.persistence.dto.MergeResult; public interface ICdmEntitySessionManager { @@ -27,6 +28,8 @@ public interface ICdmEntitySessionManager { public abstract UpdateResult load(UpdateResult updateResult, boolean update); + public abstract MergeResult load(MergeResult mergeResult, boolean update); + public abstract Collection load(Collection cdmBaseList, boolean update); diff --git a/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/session/NullSession.java b/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/session/NullSession.java index 615f32a46..9efd8ec42 100644 --- a/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/session/NullSession.java +++ b/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/session/NullSession.java @@ -18,6 +18,7 @@ import net.sf.ehcache.statistics.LiveCacheStatistics; import eu.etaxonomy.cdm.api.service.IService; import eu.etaxonomy.cdm.api.service.UpdateResult; import eu.etaxonomy.cdm.model.common.CdmBase; +import eu.etaxonomy.cdm.persistence.dto.MergeResult; import eu.etaxonomy.taxeditor.remoting.cache.EntityCacherDebugResult; /** @@ -218,4 +219,12 @@ public class NullSession implements ICdmEntitySession { } + /* (non-Javadoc) + * @see eu.etaxonomy.taxeditor.session.ICdmEntitySession#load(eu.etaxonomy.cdm.persistence.dto.MergeResult, boolean) + */ + @Override + public MergeResult load(MergeResult mergeResult, boolean update) { + return mergeResult; + } + } diff --git a/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/session/mock/MockCdmEntitySession.java b/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/session/mock/MockCdmEntitySession.java index ef72bfa02..efe8b7e93 100644 --- a/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/session/mock/MockCdmEntitySession.java +++ b/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/session/mock/MockCdmEntitySession.java @@ -17,6 +17,7 @@ import net.sf.ehcache.statistics.LiveCacheStatistics; import eu.etaxonomy.cdm.api.service.IService; import eu.etaxonomy.cdm.api.service.UpdateResult; import eu.etaxonomy.cdm.model.common.CdmBase; +import eu.etaxonomy.cdm.persistence.dto.MergeResult; import eu.etaxonomy.taxeditor.remoting.cache.EntityCacherDebugResult; import eu.etaxonomy.taxeditor.session.ICdmEntitySession; import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled; @@ -207,5 +208,13 @@ public class MockCdmEntitySession implements ICdmEntitySession { } + /* (non-Javadoc) + * @see eu.etaxonomy.taxeditor.session.ICdmEntitySession#load(eu.etaxonomy.cdm.persistence.dto.MergeResult, boolean) + */ + @Override + public MergeResult load(MergeResult mergeResult, boolean update) { + return mergeResult; + } + } diff --git a/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/session/mock/MockCdmEntitySessionManager.java b/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/session/mock/MockCdmEntitySessionManager.java index 32467f377..263efab59 100644 --- a/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/session/mock/MockCdmEntitySessionManager.java +++ b/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/session/mock/MockCdmEntitySessionManager.java @@ -4,6 +4,7 @@ import java.util.Collection; import eu.etaxonomy.cdm.api.service.UpdateResult; import eu.etaxonomy.cdm.model.common.CdmBase; +import eu.etaxonomy.cdm.persistence.dto.MergeResult; import eu.etaxonomy.taxeditor.session.ICdmEntitySession; import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled; import eu.etaxonomy.taxeditor.session.ICdmEntitySessionManager; @@ -134,4 +135,12 @@ public class MockCdmEntitySessionManager implements ICdmEntitySessionManager { return new MockCdmEntitySession(); } + /* (non-Javadoc) + * @see eu.etaxonomy.taxeditor.session.ICdmEntitySessionManager#load(eu.etaxonomy.cdm.persistence.dto.MergeResult, boolean) + */ + @Override + public MergeResult load(MergeResult mergeResult, boolean update) { + return mergeResult; + } + } -- 2.34.1