From 9d0c8a27d1000e2ffff7f40666214d5243b60622 Mon Sep 17 00:00:00 2001 From: Joram Barrez Date: Mon, 24 Aug 2015 21:11:42 +0200 Subject: [PATCH] Improvements to generic entity fetch methods --- .../impl/agenda/EndExecutionOperation.java | 2 +- .../ExecuteInactiveBehaviorsOperation.java | 2 +- .../activiti/engine/impl/db/DbSqlSession.java | 4 ++-- .../entity/AbstractEntityManager.java | 21 +++++++------------ .../persistence/entity/EntityManager.java | 6 ++---- .../entity/ExecutionEntityManagerImpl.java | 9 ++------ .../org/activiti/ldap/LDAPGroupManager.java | 9 ++------ .../org/activiti/ldap/LDAPUserManager.java | 9 ++------ 8 files changed, 20 insertions(+), 42 deletions(-) diff --git a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/agenda/EndExecutionOperation.java b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/agenda/EndExecutionOperation.java index 0cfe4f5c8f..3001361d5f 100644 --- a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/agenda/EndExecutionOperation.java +++ b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/agenda/EndExecutionOperation.java @@ -48,7 +48,7 @@ public class EndExecutionOperation extends AbstractOperation { // Find parent execution. If not found, it's the process instance and other logic needs to happen ExecutionEntity parentExecution = null; if (executionEntity.getParentId() != null) { - parentExecution = executionEntityManager.get(executionEntity.getParentId()); + parentExecution = executionEntityManager.getEntity(executionEntity.getParentId()); } if (parentExecution != null) { diff --git a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/agenda/ExecuteInactiveBehaviorsOperation.java b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/agenda/ExecuteInactiveBehaviorsOperation.java index 63f50dbd4f..edd5cbaa4b 100644 --- a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/agenda/ExecuteInactiveBehaviorsOperation.java +++ b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/agenda/ExecuteInactiveBehaviorsOperation.java @@ -51,7 +51,7 @@ public class ExecuteInactiveBehaviorsOperation extends AbstractOperation { Collection inactiveExecutions = commandContext.getExecutionEntityManager().findInactiveExecutionsByProcessInstanceId(executionEntity.getProcessInstanceId()); for (ExecutionEntity inactiveExecution : inactiveExecutions) { if (!inactiveExecution.isActive() && flowNodeIdsWithInactivatedBehavior.contains(inactiveExecution.getActivityId()) - && !commandContext.getDbSqlSession().isPersistentObjectDeleted(inactiveExecution)) { + && !commandContext.getDbSqlSession().isPersistentObjectToBeDeleted(inactiveExecution)) { FlowNode flowNode = (FlowNode) process.getFlowElement(inactiveExecution.getActivityId(), true); InactiveActivityBehavior inactiveActivityBehavior = ((InactiveActivityBehavior) flowNode.getBehavior()); diff --git a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/db/DbSqlSession.java b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/db/DbSqlSession.java index 86f51c1888..9cc4ab2059 100755 --- a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/db/DbSqlSession.java +++ b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/db/DbSqlSession.java @@ -757,7 +757,7 @@ public class DbSqlSession implements Session { for (CachedObject cachedObject : classCache.values()) { PersistentObject persistentObject = cachedObject.getPersistentObject(); - if (!isPersistentObjectDeleted(persistentObject)) { + if (!isPersistentObjectToBeDeleted(persistentObject)) { Object originalState = cachedObject.getPersistentObjectState(); if (persistentObject.getPersistentState() != null && !persistentObject.getPersistentState().equals(originalState)) { updatedObjects.add(persistentObject); @@ -772,7 +772,7 @@ public class DbSqlSession implements Session { return updatedObjects; } - public boolean isPersistentObjectDeleted(PersistentObject persistentObject) { + public boolean isPersistentObjectToBeDeleted(PersistentObject persistentObject) { for (DeleteOperation deleteOperation : deleteOperations) { if (deleteOperation.sameIdentity(persistentObject)) { return true; diff --git a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/entity/AbstractEntityManager.java b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/entity/AbstractEntityManager.java index 798d7a4bf5..6675c4c6dc 100644 --- a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/entity/AbstractEntityManager.java +++ b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/entity/AbstractEntityManager.java @@ -48,7 +48,7 @@ public class AbstractEntityManager extends Abst @Override public void delete(String id) { - Entity entity = get(id); + Entity entity = getEntity(id); delete(entity); } @@ -67,32 +67,27 @@ public class AbstractEntityManager extends Abst } } - @Override - public Entity get(String persistentObjectId) { - return getDbSqlSession().selectById(getManagedPersistentObject(), persistentObjectId); - } - /* * Advanced operations */ @Override - public Entity getEntity(Class clazz, String entityId, CachedEntityMatcher cachedEntityMatcher) { + public Entity getEntity(String entityId) { // Cache for (Entity cachedEntity : getDbSqlSession().findInCache(getManagedPersistentObject())) { - if (cachedEntityMatcher.isRetained(cachedEntity)) { + if (entityId.equals(cachedEntity.getId())) { return cachedEntity; } } // Database - return getDbSqlSession().selectById(clazz, entityId); + return getDbSqlSession().selectById(getManagedPersistentObject(), entityId); } @Override @SuppressWarnings("unchecked") - public Entity getEntity(Class clazz, String selectQuery, Object parameter, CachedEntityMatcher cachedEntityMatcher) { + public Entity getEntity(String selectQuery, Object parameter, CachedEntityMatcher cachedEntityMatcher) { // Cache for (Entity cachedEntity : getDbSqlSession().findInCache(getManagedPersistentObject())) { if (cachedEntityMatcher.isRetained(cachedEntity)) { @@ -107,10 +102,10 @@ public class AbstractEntityManager extends Abst @Override @SuppressWarnings("unchecked") public List getList(String dbQueryName, Object parameter, CachedEntityMatcher retainEntityCondition) { - HashMap entityMap = new HashMap(); // Database List entitiesFromDb = getDbSqlSession().selectList(dbQueryName, parameter); + HashMap entityMap = new HashMap(entitiesFromDb.size()); for (Entity entity : entitiesFromDb) { entityMap.put(entity.getId(), entity); } @@ -118,7 +113,7 @@ public class AbstractEntityManager extends Abst // Cache for (Entity cachedEntity : getDbSqlSession().findInCache(getManagedPersistentObject())) { if (retainEntityCondition.isRetained(cachedEntity)) { - entityMap.put(cachedEntity.getId(), cachedEntity); + entityMap.put(cachedEntity.getId(), cachedEntity); // will overwite db version with newer version } } @@ -137,7 +132,7 @@ public class AbstractEntityManager extends Abst if (result.size() > 0) { Iterator resultIterator = result.iterator(); while (resultIterator.hasNext()) { - if (getDbSqlSession().isPersistentObjectDeleted(resultIterator.next())) { + if (getDbSqlSession().isPersistentObjectToBeDeleted(resultIterator.next())) { resultIterator.remove(); } } diff --git a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/entity/EntityManager.java b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/entity/EntityManager.java index bc0ef1f070..f5b36f26a4 100644 --- a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/entity/EntityManager.java +++ b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/entity/EntityManager.java @@ -26,11 +26,9 @@ public interface EntityManager { void insert(Entity entity, boolean fireCreateEvent); - Entity get(String persistentObjectId); + Entity getEntity(String entityId); - Entity getEntity(Class clazz, String entityId, CachedEntityMatcher cachedEntityMatcher); - - Entity getEntity(Class clazz, String selectQuery, Object parameter, CachedEntityMatcher cachedEntityMatcher); + Entity getEntity(String selectQuery, Object parameter, CachedEntityMatcher cachedEntityMatcher); List getList(String dbQueryName, Object parameter, CachedEntityMatcher retainEntityCondition); diff --git a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/entity/ExecutionEntityManagerImpl.java b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/entity/ExecutionEntityManagerImpl.java index f2ebcb223d..d9a2c10ddd 100644 --- a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/entity/ExecutionEntityManagerImpl.java +++ b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/entity/ExecutionEntityManagerImpl.java @@ -60,7 +60,7 @@ public class ExecutionEntityManagerImpl extends AbstractEntityManager() { + return getEntity("selectSubProcessInstanceBySuperExecutionId", superExecutionId, new CachedEntityMatcher() { public boolean isRetained(ExecutionEntity executionEntity) { return executionEntity.getSuperExecutionId() != null && superExecutionId.equals(executionEntity.getSuperExecutionId()); @@ -91,12 +91,7 @@ public class ExecutionEntityManagerImpl extends AbstractEntityManager() { - @Override - public boolean isRetained(ExecutionEntity entity) { - return entity.getId().equals(executionId); - } - }); + return getEntity(executionId); } @Override diff --git a/modules/activiti-ldap/src/main/java/org/activiti/ldap/LDAPGroupManager.java b/modules/activiti-ldap/src/main/java/org/activiti/ldap/LDAPGroupManager.java index 35dae0b297..80a69327c7 100644 --- a/modules/activiti-ldap/src/main/java/org/activiti/ldap/LDAPGroupManager.java +++ b/modules/activiti-ldap/src/main/java/org/activiti/ldap/LDAPGroupManager.java @@ -187,17 +187,12 @@ public class LDAPGroupManager extends AbstractManager implements GroupEntityMana } @Override - public GroupEntity get(String persistentObjectId) { + public GroupEntity getEntity(String entityId) { throw new ActivitiException("Unsupported by LDAP group manager"); } @Override - public GroupEntity getEntity(Class clazz, String entityId, CachedEntityMatcher cachedEntityMatcher) { - throw new ActivitiException("Unsupported by LDAP group manager"); - } - - @Override - public GroupEntity getEntity(Class clazz, String selectQuery, Object parameter, CachedEntityMatcher cachedEntityMatcher) { + public GroupEntity getEntity(String selectQuery, Object parameter, CachedEntityMatcher cachedEntityMatcher) { throw new ActivitiException("Unsupported by LDAP group manager"); } diff --git a/modules/activiti-ldap/src/main/java/org/activiti/ldap/LDAPUserManager.java b/modules/activiti-ldap/src/main/java/org/activiti/ldap/LDAPUserManager.java index 84a6f5d39e..b98cb381b4 100644 --- a/modules/activiti-ldap/src/main/java/org/activiti/ldap/LDAPUserManager.java +++ b/modules/activiti-ldap/src/main/java/org/activiti/ldap/LDAPUserManager.java @@ -328,17 +328,12 @@ public class LDAPUserManager extends AbstractManager implements UserEntityManage } @Override - public UserEntity get(String persistentObjectId) { + public UserEntity getEntity(String entityId) { throw new ActivitiException("Unsupported by LDAP user manager"); } @Override - public UserEntity getEntity(Class clazz, String entityId, CachedEntityMatcher cachedEntityMatcher) { - throw new ActivitiException("Unsupported by LDAP user manager"); - } - - @Override - public UserEntity getEntity(Class clazz, String selectQuery, Object parameter, CachedEntityMatcher cachedEntityMatcher) { + public UserEntity getEntity(String selectQuery, Object parameter, CachedEntityMatcher cachedEntityMatcher) { throw new ActivitiException("Unsupported by LDAP user manager"); } -- GitLab