chemistry-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Florian Müller <f...@apache.org>
Subject Re: Alfresco - DotCmis - GetAcl issue
Date Thu, 26 Dec 2013 11:01:37 GMT
Hi Denis,

Alfresco document IDs without a version number are not valid CMIS object
IDs. Alfresco accepts them in some places for convenience but you
shouldn't rely on it. That is, DotCMIS behaves as excepted. (See also [1].)


Regards,

Florian


[1]
http://stackoverflow.com/questions/19364811/client-cache-enabled-but-ignored-on-alfresco/19367870#19367870


Denis Andreev schrieb:
> Hi Everyone
> 
> There is an issue with getting ACL for a document. The method Session.GetAcl
> throws DotCMIS.Exceptions.CmisObjectNotFoundException : Unknown object!
> 
>  
> 
> Exception stack:
> 
> at DotCMIS.Binding.AtomPub.AbstractAtomPubService.ThrowLinkException(String
> repositoryId, String id, String rel, String type) in atompub.cs: line 394   
> 
> at DotCMIS.Binding.AtomPub.AbstractAtomPubService.GetAclInternal(String
> repositoryId, String objectId, Nullable`1 onlyBasicPermissions,
> IExtensionsData extension) in atompub.cs: line 645   
> 
> at DotCMIS.Binding.AtomPub.AclService.GetAcl(String repositoryId, String
> objectId, Nullable`1 onlyBasicPermissions, IExtensionsData extension) in
> atompub.cs: line 2760   
> 
> at DotCMIS.Client.Impl.Session.GetAcl(IObjectId objectId, Boolean
> onlyBasicPermissions) in client-impl.cs: line 869
> 
>  
> 
> It happens when ObjectId passed to the Session.GetAcl does not have document
> version.
> 
> For example
> 
> There is a document id -
> workspace://SpacesStore/96f5a5ae-aea2-497b-80db-d3f646adb293
> 
>  
> 
> If the ID is passed to Session.GetAcl() as
> "workspace://SpacesStore/96f5a5ae-aea2-497b-80db-d3f646adb293;1.0" the it
> works. 
> 
> If workspace://SpacesStore/96f5a5ae-aea2-497b-80db-d3f646adb293 then it
> doesn't work
> 
>  
> 
> I looked into the code and found out that the problem can be in the method
> AbstractAtomPubService.GetObjectInternal
> 
> The object is requested from Alfresco
> 
>  
> 
> HttpUtils.Response resp = Read(url);
> 
> AtomEntry entry = Parse<AtomEntry>(resp.Stream);
> 
>  
> 
> That is the parameter "url" contains the object id without version number
> but response contains ID with version. 
> 
> In the issue further in GetObjectInternal
> 
> AddLink(repositoryId, entry.Id, (AtomLink)element.Object)
> 
> Adds the object link with version number but then in the method LoadLink
> 
> GetObjectInternal(repositoryId, IdentifierType.Id, id, ReturnVersion.This,
> null, null, null, null, null, null, null);
> 
>        link = GetLink(repositoryId, id, rel, type);
> 
> link is null
> 
>  
> 
> I think the method should work in spite of the version number is available
> or not.
> 
> Would you please have a look at the code and do something with it.
> 
>  
> 
> Best regards,
> 
> Denis Andreev
> 
>  
> 
> 

Mime
View raw message