Hi Nathan,

Thanks for your report!

I can't really comment on the EMC Documentum CMIS implementation because I 
haven't had a chance to test it extensively.


Could you describe how you get the PWC id in the first place? 
Did you do something like this:   ObjectId pwcId = document.checkOut();

If so, EMC does not return the PWC entry but the document entry, which would be 
a bug on their end.


Using the working-copy relation would be a valid workaround. Let me play with 
that a bit and if it works with other repositories, I'll open an issue and 
change it.


Thanks,

Florian



On 10/06/2011 16:22, Degroff, Nathan wrote:
> To whom it may concern,
> 
> Topic:      VersioningService.cancelCheckOut()
> Binding:    AtomPub
> Issue:      Deletion of object rather than cancelling checkout
> Repository: EMC Documentum
> 
> We encountered an issue with utilizing the OpenCMIS client where depending on 
> how you retrieve the Document, the system would send a DELETE for the actual 
> object:
> 
> DELETE 
> http://<host>:<port>/<app>/resources/repositories/<repository>/objects/<roid>
> 
> instead of the working copy:
> 
> DELETE 
> http://<host>:<port>/<app>/resources/repositories/<repository>/checkedout/<roid>
> 
> There are many ways around it by retrieving the doc using the 
> Session.getCheckedOutDocs() and then calling cancelCheckOut() from that 
> object or just calling the SOAP version (which calls the checkout operation 
> directly), but I was wondering if this is a culmination of:
> 
>      -) CMIS 1.0 Spec specifying the "self" relationship while calling 
> cancelCheckOut() instead of using the "working-copy" relationship link
>      -) EMC CMIS implementation not supporting a PWC
> 
> 
> After tracing and inspecting to the LinkCache, I can see that if (atompub 
> package) VersioningServiceImpl used Constants.REL_WORKINGCOPY it would work 
> in all instances whether you checked the doc out in the same "OpenCMIS" 
> session or if you are pulling it back from a new session.
> 
>      public void cancelCheckOut(String repositoryId, String objectId, 
> ExtensionsData extension) {
>          // find the link
>          String link = loadLink(repositoryId, objectId, 
> Constants.REL_WORKINGCOPY, Constants.MEDIATYPE_ENTRY);
> 
>          if (link == null) {
>              throwLinkException(repositoryId, objectId, 
> Constants.REL_WORKINGCOPY, Constants.MEDIATYPE_ENTRY);
>          }
> 
>          delete(new UrlBuilder(link));
>      }
> 
> We were able to pull back many different ways to deal with it especially 
> pulling back the "checkedOutDocs" collection, but any thoughts would be 
> appreciated.  Pulling the doc directly without having to iterate through a 
> collection to find the doc one needs.

Reply via email to