cancel
Showing results for 
Search instead for 
Did you mean: 

How can i lock a file?

xinyieric
Champ in-the-making
Champ in-the-making
Hi everyone

I just want to lock a file(someone cant edit it),
but I dont want to use the check out methord,
because if i check it out, then it will copy a new file (I dont want to copy it).

Thanks!
7 REPLIES 7

mrogers
Star Contributor
Star Contributor
Then use the LockService.

xinyieric
Champ in-the-making
Champ in-the-making
thanks mrogers

but how can i use the LockService in WebService?
i cant found the method in JavaScript Api:
http://wiki.alfresco.com/wiki/3.3_JavaScript_API#JavaScript_API_for_Web_Scripts

thanks!

mrogers
Star Contributor
Star Contributor
There's no "WebService" for the Lock Service that I know of.

What I suggest is that you write a Java Backed Web Script.

xinyieric
Champ in-the-making
Champ in-the-making
Hi mrogers
thanks for you suggest.

Now i write a Java Backed, but some error to occur for the reason i dont know.
Could you give me some suggest again.
Thank you!

The Java Backed code is:

import org.alfresco.repo.jscript.BaseScopableProcessorExtension;
import org.alfresco.repo.jscript.ScriptNode;
import org.alfresco.service.ServiceRegistry;
import org.alfresco.service.cmr.lock.LockService;
import org.alfresco.service.cmr.lock.LockType;
import org.alfresco.service.cmr.repository.NodeRef;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
* Script object representing the site service.
*
* @author Roy Wetherall
*/
public class DsLockNode extends BaseScopableProcessorExtension
{
   private static Log logger = LogFactory.getLog(DsLockNode.class);
   
   /** Service Registry */
   private ServiceRegistry serviceRegistry;
   
    /**
     * Sets the Service Registry
     *
     * @param serviceRegistry
     */
    public void setServiceRegistry(ServiceRegistry serviceRegistry)
    {
       this.serviceRegistry = serviceRegistry;
    }
   
    /**
     * Lock the node.
     * <p>
     *
     * @param noderef       Noderef
     */
    public ScriptNode lockNode(NodeRef nodeRef) {
      
      // Get the lock service
        LockService lockService = this.serviceRegistry.getLockService();
         
        LockType erictest = lockService.getLockType(nodeRef);
      
      System.out.print(">>>>>>>>>erictest" + erictest.toString());
         

      NodeRef result = nodeRef;
        if (result != null)
        {
            return new ScriptNode(result, this.serviceRegistry);
        }
        return null;
      
   }
}

The error message is:

18:03:27,168 User:creater DEBUG [extensions.webscripts.DeclarativeWebScript] Caught exception; decorating with appropriate status template : org.alfresco.scripts.ScriptException: 02020008 Failed to execute script 'classpath*:alfresco/extension/templates/webscripts/org/alfresco/slingshot/lock/dslock.post.json.js': null
   at org.alfresco.repo.jscript.RhinoScriptProcessor.execute(RhinoScriptProcessor.java:194)
   at org.alfresco.repo.processor.ScriptServiceImpl.executeScript(ScriptServiceImpl.java:282)
   at org.alfresco.repo.web.scripts.RepositoryScriptProcessor.executeScript(RepositoryScriptProcessor.java:102)
   at org.springframework.extensions.webscripts.AbstractWebScript.executeScript(AbstractWebScript.java:982)
   at org.springframework.extensions.webscripts.DeclarativeWebScript.execute(DeclarativeWebScript.java:86)
   at org.alfresco.repo.web.scripts.RepositoryContainer$2.execute(RepositoryContainer.java:377)
   at org.alfresco.repo.transaction.RetryingTransactionHelper.doInTransaction(RetryingTransactionHelper.java:381)
   at org.alfresco.repo.web.scripts.RepositoryContainer.transactionedExecute(RepositoryContainer.java:436)
   at org.alfresco.repo.web.scripts.RepositoryContainer.transactionedExecuteAs(RepositoryContainer.java:466)
   at org.alfresco.repo.web.scripts.RepositoryContainer.executeScript(RepositoryContainer.java:304)
   at org.springframework.extensions.webscripts.AbstractRuntime.executeScript(AbstractRuntime.java:333)
   at org.springframework.extensions.webscripts.AbstractRuntime.executeScript(AbstractRuntime.java:189)
   at org.springframework.extensions.webscripts.servlet.WebScriptServlet.service(WebScriptServlet.java:118)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
   at org.alfresco.web.app.servlet.GlobalLocalizationFilter.doFilter(GlobalLocalizationFilter.java:58)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
   at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
   at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
   at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
   at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException
   at jp.co.yamaha_motor.aegis.common.DsLockNode.lockNode(DsLockNode.java:67)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
   at java.lang.reflect.Method.invoke(Unknown Source)
   at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:155)
   at org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:243)
   at org.mozilla.javascript.optimizer.OptRuntime.call1(OptRuntime.java:66)
   at org.mozilla.javascript.gen.c14._c1(file:/G:/YMSLX/DesignSheet/DesignSheet/tomcat/shared/classes/alfresco/extension/templates/webscripts/org/alfresco/slingshot/lock/dslock.post.json.js:31)
   at org.mozilla.javascript.gen.c14.call(file:/G:/YMSLX/DesignSheet/DesignSheet/tomcat/shared/classes/alfresco/extension/templates/webscripts/org/alfresco/slingshot/lock/dslock.post.json.js)
   at org.mozilla.javascript.optimizer.OptRuntime.callName0(OptRuntime.java:108)
   at org.mozilla.javascript.gen.c14._c0(file:/G:/YMSLX/DesignSheet/DesignSheet/tomcat/shared/classes/alfresco/extension/templates/webscripts/org/alfresco/slingshot/lock/dslock.post.json.js:37)
   at org.mozilla.javascript.gen.c14.call(file:/G:/YMSLX/DesignSheet/DesignSheet/tomcat/shared/classes/alfresco/extension/templates/webscripts/org/alfresco/slingshot/lock/dslock.post.json.js)
   at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:393)
   at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:2834)
   at org.mozilla.javascript.gen.c14.call(file:/G:/YMSLX/DesignSheet/DesignSheet/tomcat/shared/classes/alfresco/extension/templates/webscripts/org/alfresco/slingshot/lock/dslock.post.json.js)
   at org.mozilla.javascript.gen.c14.exec(file:/G:/YMSLX/DesignSheet/DesignSheet/tomcat/shared/classes/alfresco/extension/templates/webscripts/org/alfresco/slingshot/lock/dslock.post.json.js)
   at org.alfresco.repo.jscript.RhinoScriptProcessor.executeScriptImpl(RhinoScriptProcessor.java:472)
   at org.alfresco.repo.jscript.RhinoScriptProcessor.execute(RhinoScriptProcessor.java:190)
   … 28 more

18:03:27,168 User:creater DEBUG [web.scripts.RepositoryContainer] Transaction exception: required: 02020002 Wrapped Exception (with status template): 02020008 Failed to execute script 'classpath*:alfresco/extension/templates/webscripts/org/alfresco/slingshot/lock/dslock.post.json.js': null
18:03:27,168 User:creater DEBUG [web.scripts.RepositoryContainer] Transaction status: 0
18:03:27,168 User:creater DEBUG [web.scripts.RepositoryContainer] Marking web script transaction for rollback
18:03:27,168 User:creater DEBUG [web.scripts.RepositoryContainer] End retry transaction block: required,readwrite
18:03:27,183  DEBUG [web.scripts.RepositoryContainer] Authentication reset: unauthenticated
18:03:27,183  DEBUG [extensions.webscripts.AbstractRuntime] Web Script org/alfresco/slingshot/lock/dslock.post executed in 1806.5135ms
18:03:27,183  ERROR [extensions.webscripts.AbstractRuntime] Exception from executeScript - redirecting to status template error: 02020002 Wrapped Exception (with status template): 02020008 Failed to execute script 'classpath*:alfresco/extension/templates/webscripts/org/alfresco/slingshot/lock/dslock.post.json.js': null
org.springframework.extensions.webscripts.WebScriptException: 02020002 Wrapped Exception (with status template): 02020008 Failed to execute script 'classpath*:alfresco/extension/templates/webscripts/org/alfresco/slingshot/lock/dslock.post.json.js': null
   at org.springframework.extensions.webscripts.AbstractWebScript.createStatusException(AbstractWebScript.java:749)
   at org.springframework.extensions.webscripts.DeclarativeWebScript.execute(DeclarativeWebScript.java:171)
   at org.alfresco.repo.web.scripts.RepositoryContainer$2.execute(RepositoryContainer.java:377)
   at org.alfresco.repo.transaction.RetryingTransactionHelper.doInTransaction(RetryingTransactionHelper.java:381)
   at org.alfresco.repo.web.scripts.RepositoryContainer.transactionedExecute(RepositoryContainer.java:436)
   at org.alfresco.repo.web.scripts.RepositoryContainer.transactionedExecuteAs(RepositoryContainer.java:466)
   at org.alfresco.repo.web.scripts.RepositoryContainer.executeScript(RepositoryContainer.java:304)
   at org.springframework.extensions.webscripts.AbstractRuntime.executeScript(AbstractRuntime.java:333)
   at org.springframework.extensions.webscripts.AbstractRuntime.executeScript(AbstractRuntime.java:189)
   at org.springframework.extensions.webscripts.servlet.WebScriptServlet.service(WebScriptServlet.java:118)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
   at org.alfresco.web.app.servlet.GlobalLocalizationFilter.doFilter(GlobalLocalizationFilter.java:58)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
   at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
   at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
   at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
   at java.lang.Thread.run(Unknown Source)
Caused by: org.alfresco.scripts.ScriptException: 02020008 Failed to execute script 'classpath*:alfresco/extension/templates/webscripts/org/alfresco/slingshot/lock/dslock.post.json.js': null
   at org.alfresco.repo.jscript.RhinoScriptProcessor.execute(RhinoScriptProcessor.java:194)
   at org.alfresco.repo.processor.ScriptServiceImpl.executeScript(ScriptServiceImpl.java:282)
   at org.alfresco.repo.web.scripts.RepositoryScriptProcessor.executeScript(RepositoryScriptProcessor.java:102)
   at org.springframework.extensions.webscripts.AbstractWebScript.executeScript(AbstractWebScript.java:982)
   at org.springframework.extensions.webscripts.DeclarativeWebScript.execute(DeclarativeWebScript.java:86)
   … 24 more
Caused by: java.lang.NullPointerException
   at jp.co.yamaha_motor.aegis.common.DsLockNode.lockNode(DsLockNode.java:67)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
   at java.lang.reflect.Method.invoke(Unknown Source)
   at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:155)
   at org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:243)
   at org.mozilla.javascript.optimizer.OptRuntime.call1(OptRuntime.java:66)
   at org.mozilla.javascript.gen.c14._c1(file:/G:/YMSLX/DesignSheet/DesignSheet/tomcat/shared/classes/alfresco/extension/templates/webscripts/org/alfresco/slingshot/lock/dslock.post.json.js:31)
   at org.mozilla.javascript.gen.c14.call(file:/G:/YMSLX/DesignSheet/DesignSheet/tomcat/shared/classes/alfresco/extension/templates/webscripts/org/alfresco/slingshot/lock/dslock.post.json.js)
   at org.mozilla.javascript.optimizer.OptRuntime.callName0(OptRuntime.java:108)
   at org.mozilla.javascript.gen.c14._c0(file:/G:/YMSLX/DesignSheet/DesignSheet/tomcat/shared/classes/alfresco/extension/templates/webscripts/org/alfresco/slingshot/lock/dslock.post.json.js:37)
   at org.mozilla.javascript.gen.c14.call(file:/G:/YMSLX/DesignSheet/DesignSheet/tomcat/shared/classes/alfresco/extension/templates/webscripts/org/alfresco/slingshot/lock/dslock.post.json.js)
   at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:393)
   at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:2834)
   at org.mozilla.javascript.gen.c14.call(file:/G:/YMSLX/DesignSheet/DesignSheet/tomcat/shared/classes/alfresco/extension/templates/webscripts/org/alfresco/slingshot/lock/dslock.post.json.js)
   at org.mozilla.javascript.gen.c14.exec(file:/G:/YMSLX/DesignSheet/DesignSheet/tomcat/shared/classes/alfresco/extension/templates/webscripts/org/alfresco/slingshot/lock/dslock.post.json.js)
   at org.alfresco.repo.jscript.RhinoScriptProcessor.executeScriptImpl(RhinoScriptProcessor.java:472)
   at org.alfresco.repo.jscript.RhinoScriptProcessor.execute(RhinoScriptProcessor.java:190)
   … 28 more

mrogers
Star Contributor
Star Contributor
I think you are trying to use the lock service from slingshot (Share).   You need to add your script to alfresco and proxy to it from Share.

xinyieric
Champ in-the-making
Champ in-the-making
Thanks mrogers

I haved resolved my problem.
It's because my Java Backed code's bug.
if the node is not locked,when i getLockType, it return null,
then i use toString(), the error occur!

thank you for you help.

cool123
Champ in-the-making
Champ in-the-making
I also want to lock the file ,can you tell the steps and code.


Please send me the code on kumardocs44@gmail.com or paste it here