cmailleux 2005/12/14 12:22:04 CET
Modified files:
core/src/java/org/jahia/services/lock LockPrerequisites.java
Log:
Avoid duplicate key in results
Revision Changes Path
1.13 +25 -23
jahia/core/src/java/org/jahia/services/lock/LockPrerequisites.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/services/lock/LockPrerequisites.java.diff?r1=1.12&r2=1.13&f=h
Index: LockPrerequisites.java
===================================================================
RCS file:
/home/cvs/repository/jahia/core/src/java/org/jahia/services/lock/LockPrerequisites.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- LockPrerequisites.java 12 Dec 2005 15:13:53 -0000 1.12
+++ LockPrerequisites.java 14 Dec 2005 11:22:03 -0000 1.13
@@ -386,28 +386,30 @@
ContentObject object,
boolean justTesting,
LockPrerequisitesResult results) {
- LockKey workflowLockKey =
LockKey.composeLockKey(LockKey.WORKFLOW_TYPE, object.getID(), object.getID());
- putLockIfNotSameContext(workflowLockKey, owner, justTesting,
results);
- // Verify if the parent page in the specified language is not in
waiting
- // for approval mode.
- boolean hasPageAWaitingState = false;
- try {
- Map languagesStates =
ServicesRegistry.getInstance().getWorkflowService().getLanguagesStates(object);
- Iterator languageIt = languagesStates.values().iterator();
- hasPageAWaitingState = false;
- while (languageIt.hasNext()) {
- Integer languageState = (Integer)languageIt.next();
- if (languageState.intValue() ==
EntryLoadRequest.WAITING_WORKFLOW_STATE) {
- hasPageAWaitingState = true;
- break;
- }
- }
- } catch (JahiaException e) {
- logger.warn("Problem when getting languages states", e);
- }
- if (hasPageAWaitingState) {
- workflowLockKey =
LockKey.composeLockKey(LockKey.WAITING_FOR_APPROVAL_TYPE, object.getID(),
object.getID());
- results.put(workflowLockKey);
+ LockKey workflowLockKey =
LockKey.composeLockKey(LockKey.WORKFLOW_ACTION+"_"+object.getObjectKey().getType(),
object.getID(), object.getID());
+ if (!results.getResultsList().contains(workflowLockKey)) {
+ putLockIfNotSameContext(workflowLockKey, owner, justTesting,
results);
+ // Verify if the parent page in the specified language is not in
waiting
+ // for approval mode.
+ boolean hasPageAWaitingState = false;
+ try {
+ Map languagesStates =
ServicesRegistry.getInstance().getWorkflowService().getLanguagesStates(object);
+ Iterator languageIt = languagesStates.values().iterator();
+ hasPageAWaitingState = false;
+ while (languageIt.hasNext()) {
+ Integer languageState = (Integer) languageIt.next();
+ if (languageState.intValue() ==
EntryLoadRequest.WAITING_WORKFLOW_STATE) {
+ hasPageAWaitingState = true;
+ break;
+ }
+ }
+ } catch (JahiaException e) {
+ logger.warn("Problem when getting languages states", e);
+ }
+ if (hasPageAWaitingState) {
+ workflowLockKey =
LockKey.composeLockKey(LockKey.WAITING_FOR_APPROVAL_TYPE, object.getID(),
object.getID());
+ results.put(workflowLockKey);
+ }
}
}
@@ -598,7 +600,7 @@
}
// #endif
// From another context then no way to obtain it.
- if (lockRegistry.isAlreadyAcquired(lockKey)) {
+ if (lockRegistry.isAlreadyAcquired(lockKey)&& !
results.getResultsList().contains(lockKey)) {
if (justTesting) {
if (!wouldHaveReleased) {
results.put(lockKey);