Skip to content

Commit d0c2569

Browse files
author
cetra3
committed
Adjust callback to be more robust for multi-user
1 parent 9b31dbe commit d0c2569

1 file changed

Lines changed: 14 additions & 3 deletions

File tree

repo/src/main/java/com/parashift/onlyoffice/CallBack.java

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package com.parashift.onlyoffice;
22

33
import org.alfresco.model.ContentModel;
4+
import org.alfresco.repo.policy.BehaviourFilter;
45
import org.alfresco.service.cmr.lock.LockService;
6+
import org.alfresco.service.cmr.lock.LockStatus;
57
import org.alfresco.service.cmr.lock.LockType;
68
import org.alfresco.service.cmr.repository.ContentService;
79
import org.alfresco.service.cmr.repository.NodeRef;
@@ -16,6 +18,7 @@
1618
import org.springframework.extensions.webscripts.WebScriptResponse;
1719
import org.springframework.stereotype.Component;
1820

21+
import javax.annotation.Resource;
1922
import javax.servlet.http.HttpServletRequest;
2023
import java.io.IOException;
2124
import java.io.InputStream;
@@ -31,6 +34,9 @@ public class CallBack extends AbstractWebScript {
3134
@Autowired
3235
LockService lockService;
3336

37+
@Resource(name = "policyBehaviourFilter")
38+
BehaviourFilter behaviourFilter;
39+
3440
@Autowired
3541
ContentService contentService;
3642

@@ -55,13 +61,18 @@ public void execute(WebScriptRequest request, WebScriptResponse response) throws
5561
lockService.unlock(nodeRef);
5662
break;
5763
case 1:
58-
logger.debug("Document open for editing, locking document");
59-
lockService.lock(nodeRef, LockType.WRITE_LOCK);
64+
if(lockService.getLockStatus(nodeRef).equals(LockStatus.NO_LOCK)) {
65+
logger.debug("Document open for editing, locking document");
66+
behaviourFilter.disableBehaviour(nodeRef);
67+
lockService.lock(nodeRef, LockType.WRITE_LOCK);
68+
} else {
69+
logger.debug("Document already locked, another user has entered/exited");
70+
}
6071
break;
6172
case 2:
6273
logger.debug("Document Updated, changing content");
63-
updateNode(nodeRef, callBackJSon.getString("url"));
6474
lockService.unlock(nodeRef);
75+
updateNode(nodeRef, callBackJSon.getString("url"));
6576
break;
6677
case 3:
6778
logger.error("Onlyoffice has reported that saving the document has failed");

0 commit comments

Comments
 (0)