11package com .parashift .onlyoffice ;
22
33import org .alfresco .model .ContentModel ;
4+ import org .alfresco .repo .policy .BehaviourFilter ;
45import org .alfresco .service .cmr .lock .LockService ;
6+ import org .alfresco .service .cmr .lock .LockStatus ;
57import org .alfresco .service .cmr .lock .LockType ;
68import org .alfresco .service .cmr .repository .ContentService ;
79import org .alfresco .service .cmr .repository .NodeRef ;
1618import org .springframework .extensions .webscripts .WebScriptResponse ;
1719import org .springframework .stereotype .Component ;
1820
21+ import javax .annotation .Resource ;
1922import javax .servlet .http .HttpServletRequest ;
2023import java .io .IOException ;
2124import 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