Jazz Forum Welcome to the Jazz Community Forum Connect and collaborate with IBM Engineering experts and users

Investigate file locking in server API

 Hi


I have a need for investigating if files in a changeset are locked on delivery. In an operation advisor, that is triggered on delivery, i shall find out, if any of the files in the delivering changeset are locked on the receiving stream. 

My next need is to be able to lock files, that are delivered. I figure it done in an operation participant also triggered on delivery.

It's not easy to find anything about how to lock/unlock files by the serverside API.

Regards 

Erling

0 votes


Accepted answer

Permanent link
The client side API is outlined in another forum post: SCM Locking API.

It would probably be useful to look at that, <tt>IWorkspaceManager.applyLockOperations</tt> will call the server side <tt>IScmService.updateLocks</tt> and <tt>IWorkspaceManager.findLocks</tt> calls the server side <tt>IScmQueryService.findLocks</tt>
David Lafreniere selected this answer as the correct answer

1 vote

Comments

Thanks. This answer, and the referred forum post has really been helpfull!

I'm still having trouble making this work. My code is:

IScmService scmService = getService(IScmService.class);

    LockParameter lockParameter = ScmDtoFactory.eINSTANCE.createLockParameter();

    WorkspaceLocks wLocks = ScmDtoFactory.eINSTANCE.createWorkspaceLocks();
    wLocks.setWorkspace((IWorkspaceHandle) deliverData.getDestWorkspace().getItemHandle());

    ComponentLocks cLocks = ScmDtoFactory.eINSTANCE.createComponentLocks();
    cLocks.setComponent(changeSet.getComponent());

    ContributorLocks contLocks = ScmDtoFactory.eINSTANCE.createContributorLocks();
    contLocks.setContributor(changeSet.getAuthor());
    List<IChange> changes =  changeSet.changes();
    for (IChange iChange : changes) {
        IVersionableHandle versionableHandle = iChange.afterState(); //tried getting afterstate(), no difference
        if (versionableHandle.getItemType().getName().equals("FileItem")){
            contLocks.getVersionables().add(iChange.afterState());
        }
    }

    cLocks.getContributorLocks().add(contLocks);
    wLocks.getComponentLocks().add(cLocks);     
    lockParameter.getToAcquire().add(wLocks);

    scmService.updateLocks(lockParameter, null);

I don't get stacktraces, just an error.

Erling

 Hello Erling, did you find a solution for this?

Note: Andrew answered the original question, so I am marking this as the accepted answer. It was mentioned that there was "an error". If there are still issues, please provide more details here or in a separate forum question.

Your answer

Register or log in to post your answer.

Dashboards and work items are no longer publicly available, so some links may be invalid. We now provide similar information through other means. Learn more here.

Search context
Follow this question

By Email: 

Once you sign in you will be able to subscribe for any updates here.

By RSS:

Answers
Answers and Comments
Question details
× 10,938
× 1,202
× 67
× 56

Question asked: Jul 27 '12, 5:19 a.m.

Question was seen: 5,391 times

Last updated: Oct 10 '17, 2:43 p.m.

Confirmation Cancel Confirm