提交 9d0c8a27 编写于 作者: J Joram Barrez

Improvements to generic entity fetch methods

上级 ac85faaf
......@@ -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) {
......
......@@ -51,7 +51,7 @@ public class ExecuteInactiveBehaviorsOperation extends AbstractOperation {
Collection<ExecutionEntity> 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());
......
......@@ -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;
......
......@@ -48,7 +48,7 @@ public class AbstractEntityManager<Entity extends PersistentObject> 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<Entity extends PersistentObject> extends Abst
}
}
@Override
public Entity get(String persistentObjectId) {
return getDbSqlSession().selectById(getManagedPersistentObject(), persistentObjectId);
}
/*
* Advanced operations
*/
@Override
public Entity getEntity(Class<? extends Entity> clazz, String entityId, CachedEntityMatcher<Entity> 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<? extends Entity> clazz, String selectQuery, Object parameter, CachedEntityMatcher<Entity> cachedEntityMatcher) {
public Entity getEntity(String selectQuery, Object parameter, CachedEntityMatcher<Entity> cachedEntityMatcher) {
// Cache
for (Entity cachedEntity : getDbSqlSession().findInCache(getManagedPersistentObject())) {
if (cachedEntityMatcher.isRetained(cachedEntity)) {
......@@ -107,10 +102,10 @@ public class AbstractEntityManager<Entity extends PersistentObject> extends Abst
@Override
@SuppressWarnings("unchecked")
public List<Entity> getList(String dbQueryName, Object parameter, CachedEntityMatcher<Entity> retainEntityCondition) {
HashMap<String, Entity> entityMap = new HashMap<String, Entity>();
// Database
List<Entity> entitiesFromDb = getDbSqlSession().selectList(dbQueryName, parameter);
HashMap<String, Entity> entityMap = new HashMap<String, Entity>(entitiesFromDb.size());
for (Entity entity : entitiesFromDb) {
entityMap.put(entity.getId(), entity);
}
......@@ -118,7 +113,7 @@ public class AbstractEntityManager<Entity extends PersistentObject> 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<Entity extends PersistentObject> extends Abst
if (result.size() > 0) {
Iterator<Entity> resultIterator = result.iterator();
while (resultIterator.hasNext()) {
if (getDbSqlSession().isPersistentObjectDeleted(resultIterator.next())) {
if (getDbSqlSession().isPersistentObjectToBeDeleted(resultIterator.next())) {
resultIterator.remove();
}
}
......
......@@ -26,11 +26,9 @@ public interface EntityManager<Entity extends PersistentObject> {
void insert(Entity entity, boolean fireCreateEvent);
Entity get(String persistentObjectId);
Entity getEntity(String entityId);
Entity getEntity(Class<? extends Entity> clazz, String entityId, CachedEntityMatcher<Entity> cachedEntityMatcher);
Entity getEntity(Class<? extends Entity> clazz, String selectQuery, Object parameter, CachedEntityMatcher<Entity> cachedEntityMatcher);
Entity getEntity(String selectQuery, Object parameter, CachedEntityMatcher<Entity> cachedEntityMatcher);
List<Entity> getList(String dbQueryName, Object parameter, CachedEntityMatcher<Entity> retainEntityCondition);
......
......@@ -60,7 +60,7 @@ public class ExecutionEntityManagerImpl extends AbstractEntityManager<ExecutionE
@Override
public ExecutionEntity findSubProcessInstanceBySuperExecutionId(final String superExecutionId) {
return getEntity(ExecutionEntity.class, "selectSubProcessInstanceBySuperExecutionId", superExecutionId, new CachedEntityMatcher<ExecutionEntity>() {
return getEntity("selectSubProcessInstanceBySuperExecutionId", superExecutionId, new CachedEntityMatcher<ExecutionEntity>() {
public boolean isRetained(ExecutionEntity executionEntity) {
return executionEntity.getSuperExecutionId() != null && superExecutionId.equals(executionEntity.getSuperExecutionId());
......@@ -91,12 +91,7 @@ public class ExecutionEntityManagerImpl extends AbstractEntityManager<ExecutionE
@Override
public ExecutionEntity findExecutionById(final String executionId) {
return (ExecutionEntity) getEntity(ExecutionEntity.class, executionId, new CachedEntityMatcher<ExecutionEntity>() {
@Override
public boolean isRetained(ExecutionEntity entity) {
return entity.getId().equals(executionId);
}
});
return getEntity(executionId);
}
@Override
......
......@@ -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<? extends GroupEntity> clazz, String entityId, CachedEntityMatcher<GroupEntity> cachedEntityMatcher) {
throw new ActivitiException("Unsupported by LDAP group manager");
}
@Override
public GroupEntity getEntity(Class<? extends GroupEntity> clazz, String selectQuery, Object parameter, CachedEntityMatcher<GroupEntity> cachedEntityMatcher) {
public GroupEntity getEntity(String selectQuery, Object parameter, CachedEntityMatcher<GroupEntity> cachedEntityMatcher) {
throw new ActivitiException("Unsupported by LDAP group manager");
}
......
......@@ -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<? extends UserEntity> clazz, String entityId, CachedEntityMatcher<UserEntity> cachedEntityMatcher) {
throw new ActivitiException("Unsupported by LDAP user manager");
}
@Override
public UserEntity getEntity(Class<? extends UserEntity> clazz, String selectQuery, Object parameter, CachedEntityMatcher<UserEntity> cachedEntityMatcher) {
public UserEntity getEntity(String selectQuery, Object parameter, CachedEntityMatcher<UserEntity> cachedEntityMatcher) {
throw new ActivitiException("Unsupported by LDAP user manager");
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册