Hi Florent,

It looks strange, but it's correct.
"getACLResponse" is for the Web Service binding and doesn't apply to the
AtomPub binding. For some (historic) reasons, the AtomPub getACL
response only consists of the "cmis:cmisAccessControlListType" element.
The exact flag is not transmitted. Section 3.3.5 defines that the root
tag is <acl> and not <ACL>.
I think the code is spec compliant, but the spec is a bit weird.


- Florian


> Ok your patch fixed the Browser Bindings issue I had, thanks.
> 
> Trying to write the patch for XMLConverter, I'm stumped by some apparent
> inconsistency in the spec/code, could you enlighten me?
> 
> The spec has on one hand, for the content of an object:
> 
>         <xs:complexType name="cmisObjectType">
> 
>                 <xs:sequence>
> 
>                         ...
> 
>                         <!--  ACL -->
> 
>                         <xs:element name="acl"
> type="cmis:cmisAccessControlListType"
> 
>                                 minOccurs="0" maxOccurs="1" />
> 
>                         <xs:element name="exactACL" type="xs:boolean"
> minOccurs="0"
> 
>                                 maxOccurs="1" />
> 
>                         ...
> 
>                 </xs:sequence>
> 
>                 <xs:attributeGroup ref="cmis:cmisUndefinedAttribute" />
> 
>         </xs:complexType>
> 
> 
> But on the other hand the getACL/applyACL method responses are:
> 
>         <xs:element name="getACLResponse">
> 
>                 <xs:complexType>
> 
>                         <xs:sequence>
> 
>                                 <xs:element name="ACL"
> type="cmism:cmisACLType"
> 
>                                         minOccurs="1" maxOccurs="1" />
> 
>                         </xs:sequence>
> 
>                 </xs:complexType>       
> 
>         </xs:element>
> 
> 
>         <xs:complexType name="cmisACLType">
> 
>                 <xs:sequence>
> 
>                         <xs:element name="ACL"
> type="cmis:cmisAccessControlListType"
> 
>                                 minOccurs="1" maxOccurs="1" />
> 
>                         <xs:element name="exact" type="xs:boolean" 
> 
>                                 minOccurs="0" maxOccurs="1"/>
> 
>                         ...
> 
>                 </xs:sequence>
> 
>                 <xs:attributeGroup ref="cmis:cmisUndefinedAttribute" />
> 
>         </xs:complexType>
> 
> 
> So a getACL response includes elements <ACL> and <exact>, which are
> named differently from the object's <acl> and <exactACL>. Historic I guess?
> 
> However the current code
> in org.apache.chemistry.opencmis.server.impl.atompub.AclService.GetAcl
> calls org.apache.chemistry.opencmis.commons.impl.XMLConverter.writeAcl
> which uses <acl> and not <ACL>.
> 
> Or have I overlooked something?
> 
> Florent
> 
> 
> On Mon, Sep 22, 2014 at 3:19 PM, Florent Guillaume <f...@nuxeo.com
> <mailto:f...@nuxeo.com>> wrote:
> 
>     Thanks Florian. I created the issues (CMIS-845 and CMIS-846 — late,
>     sorry, I was on vacation) and will add a link to your commit and close
>     them after I've done some tests, today or tomorrow.
> 
>     Florent
> 
>     On Mon, Sep 15, 2014 at 12:12 PM, Florian Müller <f...@apache.org
>     <mailto:f...@apache.org>> wrote:
>     > Hi Florent,
>     >
>     > I've corrected the ACL handling and added a TCK test for the exact
>     flag.
>     > It would be great if you could retest it.
>     >
>     > - Florian
>     >
>     >
>     >> And in the Browser Bindings client-side code,
>     >> org.apache.chemistry.opencmis.commons.impl.JSONConverter.convertAcl
>     >> doesn't read the JSON_ACL_IS_EXACT property and is always called with
>     >> a null isExact parameter.
>     >>
>     >> Is this an oversight or is there a deeper reason?
>     >>
>     >> Thanks,
>     >> Florent
>     >>
>     >> On Wed, Sep 10, 2014 at 3:01 PM, Florent Guillaume <f...@nuxeo.com
>     <mailto:f...@nuxeo.com>> wrote:
>     >> > Hi,
>     >> >
>     >> > org.apache.chemistry.opencmis.commons.impl.XMLConverter.writeAcl
>     >> > doesn't write the acl.isExact() flag. Is this on purpose?
>     >> >
>     >> > Btw, isn't ObjectData.isExactAcl() redundant with Acl.isExact()?
>     >> >
>     >> > Florent
>     >> >
>     >> > --
>     >> > Florent Guillaume, Director of R&D, Nuxeo
>     >> > Open Source Content Management Platform for Business Apps
>     >> > http://www.nuxeo.com   http://community.nuxeo.com
>     >>
>     >>
>     >>
>     >> --
>     >> Florent Guillaume, Director of R&D, Nuxeo
>     >> Open Source Content Management Platform for Business Apps
>     >> http://www.nuxeo.com   http://community.nuxeo.com
>     >>
> 
> 
> 
>     --
>     Florent Guillaume, Director of R&D, Nuxeo
>     Open Source Content Management Platform for Business Apps
>     http://www.nuxeo.com   http://community.nuxeo.com
> 
> 
> 
> 
> -- 
> Florent Guillaume, Director of R&D, Nuxeo
> Open Source Content Management Platform for Business Apps
> http://www.nuxeo.com   http://community.nuxeo.com

Reply via email to