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);
  

Reply via email to