<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<title>AclServiceTest xref</title>
<link type="text/css" rel="stylesheet" href="../../../../../stylesheet.css" />
</head>
<body>
<div id="overview"><a href="../../../../../../testapidocs/org/apache/chemistry/opencmis/inmemory/AclServiceTest.html">View Javadoc</a></div><pre>

<a class="jxr_linenumber" name="1" href="#1">1</a>   <em class="jxr_comment">/*</em>
<a class="jxr_linenumber" name="2" href="#2">2</a>   <em class="jxr_comment"> * Licensed to the Apache Software Foundation (ASF) under one</em>
<a class="jxr_linenumber" name="3" href="#3">3</a>   <em class="jxr_comment"> * or more contributor license agreements.  See the NOTICE file</em>
<a class="jxr_linenumber" name="4" href="#4">4</a>   <em class="jxr_comment"> * distributed with this work for additional information</em>
<a class="jxr_linenumber" name="5" href="#5">5</a>   <em class="jxr_comment"> * regarding copyright ownership.  The ASF licenses this file</em>
<a class="jxr_linenumber" name="6" href="#6">6</a>   <em class="jxr_comment"> * to you under the Apache License, Version 2.0 (the</em>
<a class="jxr_linenumber" name="7" href="#7">7</a>   <em class="jxr_comment"> * "License"); you may not use this file except in compliance</em>
<a class="jxr_linenumber" name="8" href="#8">8</a>   <em class="jxr_comment"> * with the License.  You may obtain a copy of the License at</em>
<a class="jxr_linenumber" name="9" href="#9">9</a>   <em class="jxr_comment"> *</em>
<a class="jxr_linenumber" name="10" href="#10">10</a>  <em class="jxr_comment"> * <a href="http://www.apache.org/licenses/LICENSE-2.0" target="alexandria_uri">http://www.apache.org/licenses/LICENSE-2.0</a></em>
<a class="jxr_linenumber" name="11" href="#11">11</a>  <em class="jxr_comment"> *</em>
<a class="jxr_linenumber" name="12" href="#12">12</a>  <em class="jxr_comment"> * Unless required by applicable law or agreed to in writing,</em>
<a class="jxr_linenumber" name="13" href="#13">13</a>  <em class="jxr_comment"> * software distributed under the License is distributed on an</em>
<a class="jxr_linenumber" name="14" href="#14">14</a>  <em class="jxr_comment"> * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</em>
<a class="jxr_linenumber" name="15" href="#15">15</a>  <em class="jxr_comment"> * KIND, either express or implied.  See the License for the</em>
<a class="jxr_linenumber" name="16" href="#16">16</a>  <em class="jxr_comment"> * specific language governing permissions and limitations</em>
<a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_comment"> * under the License.</em>
<a class="jxr_linenumber" name="18" href="#18">18</a>  <em class="jxr_comment"> */</em>
<a class="jxr_linenumber" name="19" href="#19">19</a>  <strong class="jxr_keyword">package</strong> org.apache.chemistry.opencmis.inmemory;
<a class="jxr_linenumber" name="20" href="#20">20</a>  
<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.junit.Assert.assertEquals;
<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.junit.Assert.assertFalse;
<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.junit.Assert.assertNotNull;
<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.junit.Assert.assertTrue;
<a class="jxr_linenumber" name="25" href="#25">25</a>  
<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> java.util.ArrayList;
<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> java.util.Arrays;
<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> java.util.Collections;
<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> java.util.List;
<a class="jxr_linenumber" name="30" href="#30">30</a>  
<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.data.Ace;
<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.data.Acl;
<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.data.ObjectData;
<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.enums.AclPropagation;
<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.enums.IncludeRelationships;
<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.enums.VersioningState;
<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.impl.jaxb.EnumBasicPermissions;
<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.inmemory.ObjectServiceTest.ObjectTestTypeSystemCreator;
<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.inmemory.storedobj.impl.InMemoryAce;
<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.inmemory.types.DocumentTypeCreationHelper;
<a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> org.junit.After;
<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> org.junit.Before;
<a class="jxr_linenumber" name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> org.junit.Test;
<a class="jxr_linenumber" name="44" href="#44">44</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
<a class="jxr_linenumber" name="45" href="#45">45</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
<a class="jxr_linenumber" name="46" href="#46">46</a>  
<a class="jxr_linenumber" name="47" href="#47">47</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/chemistry/opencmis/inmemory/AclServiceTest.html">AclServiceTest</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../../org/apache/chemistry/opencmis/inmemory/AbstractServiceTest.html">AbstractServiceTest</a> {
<a class="jxr_linenumber" name="48" href="#48">48</a>  
<a class="jxr_linenumber" name="49" href="#49">49</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger LOG = LoggerFactory.getLogger(AclServiceTest.<strong class="jxr_keyword">class</strong>);
<a class="jxr_linenumber" name="50" href="#50">50</a>      <strong class="jxr_keyword">private</strong> <a href="../../../../../org/apache/chemistry/opencmis/inmemory/ObjectCreator.html">ObjectCreator</a> fCreator;
<a class="jxr_linenumber" name="51" href="#51">51</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String DOCUMENT_NAME = <span class="jxr_string">"DocumentWithAcl"</span>;
<a class="jxr_linenumber" name="52" href="#52">52</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String FOLDER_NAME = <span class="jxr_string">"FolderWithAcl"</span>;
<a class="jxr_linenumber" name="53" href="#53">53</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String DOCUMENT_TYPE_ID = DocumentTypeCreationHelper.getCmisDocumentType().getId();
<a class="jxr_linenumber" name="54" href="#54">54</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String FOLDER_TYPE_ID = DocumentTypeCreationHelper.getCmisFolderType().getId();
<a class="jxr_linenumber" name="55" href="#55">55</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String USER = <span class="jxr_string">"user"</span>;
<a class="jxr_linenumber" name="56" href="#56">56</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String ALICE = <span class="jxr_string">"alice"</span>;
<a class="jxr_linenumber" name="57" href="#57">57</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String BOB = <span class="jxr_string">"bob"</span>;
<a class="jxr_linenumber" name="58" href="#58">58</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String CHRIS = <span class="jxr_string">"chris"</span>;
<a class="jxr_linenumber" name="59" href="#59">59</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String DAN = <span class="jxr_string">"dan"</span>;
<a class="jxr_linenumber" name="60" href="#60">60</a>      <strong class="jxr_keyword">private</strong> Acl defaultAcl = <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="61" href="#61">61</a>  
<a class="jxr_linenumber" name="62" href="#62">62</a>      @Override
<a class="jxr_linenumber" name="63" href="#63">63</a>      @Before
<a class="jxr_linenumber" name="64" href="#64">64</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setUp() {
<a class="jxr_linenumber" name="65" href="#65">65</a>          <strong class="jxr_keyword">super</strong>.setTypeCreatorClass(ObjectTestTypeSystemCreator.<strong class="jxr_keyword">class</strong>.getName());
<a class="jxr_linenumber" name="66" href="#66">66</a>          <strong class="jxr_keyword">super</strong>.setUp();
<a class="jxr_linenumber" name="67" href="#67">67</a>          fCreator = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/chemistry/opencmis/inmemory/ObjectCreator.html">ObjectCreator</a>(fFactory, fObjSvc, fRepositoryId);
<a class="jxr_linenumber" name="68" href="#68">68</a>  
<a class="jxr_linenumber" name="69" href="#69">69</a>          List&lt;Ace&gt; defaultACEs = <strong class="jxr_keyword">new</strong> ArrayList&lt;Ace&gt;(1);
<a class="jxr_linenumber" name="70" href="#70">70</a>          defaultACEs.add(fFactory.createAccessControlEntry(InMemoryAce.getAnyoneUser(),
<a class="jxr_linenumber" name="71" href="#71">71</a>                  Collections.singletonList(EnumBasicPermissions.CMIS_ALL.value())));
<a class="jxr_linenumber" name="72" href="#72">72</a>          defaultAcl = fFactory.createAccessControlList(defaultACEs);
<a class="jxr_linenumber" name="73" href="#73">73</a>  
<a class="jxr_linenumber" name="74" href="#74">74</a>      }
<a class="jxr_linenumber" name="75" href="#75">75</a>  
<a class="jxr_linenumber" name="76" href="#76">76</a>      @Override
<a class="jxr_linenumber" name="77" href="#77">77</a>      @After
<a class="jxr_linenumber" name="78" href="#78">78</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> tearDown() {
<a class="jxr_linenumber" name="79" href="#79">79</a>          <strong class="jxr_keyword">super</strong>.tearDown();
<a class="jxr_linenumber" name="80" href="#80">80</a>      }
<a class="jxr_linenumber" name="81" href="#81">81</a>  
<a class="jxr_linenumber" name="82" href="#82">82</a>      @Test
<a class="jxr_linenumber" name="83" href="#83">83</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testCreateDocumentWithAcl() {
<a class="jxr_linenumber" name="84" href="#84">84</a>          LOG.info(<span class="jxr_string">"starting testCreateDocumentWithAcl() ..."</span>);
<a class="jxr_linenumber" name="85" href="#85">85</a>          Acl removeAces = defaultAcl;
<a class="jxr_linenumber" name="86" href="#86">86</a>          Acl acl = createSimpleTestAcl();
<a class="jxr_linenumber" name="87" href="#87">87</a>  
<a class="jxr_linenumber" name="88" href="#88">88</a>          String id = createDocument(fRootFolderId, acl, removeAces);
<a class="jxr_linenumber" name="89" href="#89">89</a>          LOG.debug(<span class="jxr_string">"created document with id: "</span> + id);
<a class="jxr_linenumber" name="90" href="#90">90</a>  
<a class="jxr_linenumber" name="91" href="#91">91</a>          <em class="jxr_comment">// get ACL using AclService</em>
<a class="jxr_linenumber" name="92" href="#92">92</a>          Acl aclReturn = fAclSvc.getAcl(fRepositoryId, id, <strong class="jxr_keyword">true</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="93" href="#93">93</a>          checkSimpleTestAcl(acl, aclReturn);
<a class="jxr_linenumber" name="94" href="#94">94</a>  
<a class="jxr_linenumber" name="95" href="#95">95</a>          <em class="jxr_comment">// get ACL using ObjectService getObject</em>
<a class="jxr_linenumber" name="96" href="#96">96</a>          ObjectData objData = fObjSvc.getObject(fRepositoryId, id, <span class="jxr_string">"*"</span>, false, IncludeRelationships.NONE, <strong class="jxr_keyword">null</strong>, false,
<a class="jxr_linenumber" name="97" href="#97">97</a>                  <strong class="jxr_keyword">true</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="98" href="#98">98</a>          checkSimpleTestAcl(acl, aclReturn);
<a class="jxr_linenumber" name="99" href="#99">99</a>  
<a class="jxr_linenumber" name="100" href="#100">100</a>         <em class="jxr_comment">// get ACL using ObjectService getObjectByPath</em>
<a class="jxr_linenumber" name="101" href="#101">101</a>         objData = fObjSvc.getObjectByPath(fRepositoryId, <span class="jxr_string">"/"</span> + DOCUMENT_NAME, <span class="jxr_string">"*"</span>, false, IncludeRelationships.NONE,
<a class="jxr_linenumber" name="102" href="#102">102</a>                 <strong class="jxr_keyword">null</strong>, false, <strong class="jxr_keyword">true</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="103" href="#103">103</a>         assertNotNull(objData);
<a class="jxr_linenumber" name="104" href="#104">104</a>         aclReturn = objData.getAcl();
<a class="jxr_linenumber" name="105" href="#105">105</a>         checkSimpleTestAcl(acl, aclReturn);
<a class="jxr_linenumber" name="106" href="#106">106</a> 
<a class="jxr_linenumber" name="107" href="#107">107</a>         LOG.info(<span class="jxr_string">"... testCreateDocumentWithAcl() finished."</span>);
<a class="jxr_linenumber" name="108" href="#108">108</a>     }
<a class="jxr_linenumber" name="109" href="#109">109</a> 
<a class="jxr_linenumber" name="110" href="#110">110</a>     @Test
<a class="jxr_linenumber" name="111" href="#111">111</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testCreateFolderWithAcl() {
<a class="jxr_linenumber" name="112" href="#112">112</a>         LOG.info(<span class="jxr_string">"starting testCreateFolderWithAcl() ..."</span>);
<a class="jxr_linenumber" name="113" href="#113">113</a>         Acl removeAces = defaultAcl;
<a class="jxr_linenumber" name="114" href="#114">114</a>         Acl acl = createSimpleTestAcl();
<a class="jxr_linenumber" name="115" href="#115">115</a> 
<a class="jxr_linenumber" name="116" href="#116">116</a>         String id = createFolder(fRootFolderId, acl, removeAces);
<a class="jxr_linenumber" name="117" href="#117">117</a>         LOG.debug(<span class="jxr_string">"created folder with id: "</span> + id);
<a class="jxr_linenumber" name="118" href="#118">118</a> 
<a class="jxr_linenumber" name="119" href="#119">119</a>         <em class="jxr_comment">// get ACL using AclService</em>
<a class="jxr_linenumber" name="120" href="#120">120</a>         Acl aclReturn = fAclSvc.getAcl(fRepositoryId, id, <strong class="jxr_keyword">true</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="121" href="#121">121</a>         checkSimpleTestAcl(acl, aclReturn);
<a class="jxr_linenumber" name="122" href="#122">122</a> 
<a class="jxr_linenumber" name="123" href="#123">123</a>         <em class="jxr_comment">// get ACL using ObjectService getObject</em>
<a class="jxr_linenumber" name="124" href="#124">124</a>         ObjectData objData = fObjSvc.getObject(fRepositoryId, id, <span class="jxr_string">"*"</span>, false, IncludeRelationships.NONE, <strong class="jxr_keyword">null</strong>, false,
<a class="jxr_linenumber" name="125" href="#125">125</a>                 <strong class="jxr_keyword">true</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="126" href="#126">126</a>         checkSimpleTestAcl(acl, aclReturn);
<a class="jxr_linenumber" name="127" href="#127">127</a> 
<a class="jxr_linenumber" name="128" href="#128">128</a>         <em class="jxr_comment">// get ACL using ObjectService getObjectByPath</em>
<a class="jxr_linenumber" name="129" href="#129">129</a>         objData = fObjSvc.getObjectByPath(fRepositoryId, <span class="jxr_string">"/"</span> + FOLDER_NAME, <span class="jxr_string">"*"</span>, false, IncludeRelationships.NONE,
<a class="jxr_linenumber" name="130" href="#130">130</a>                 <strong class="jxr_keyword">null</strong>, false, <strong class="jxr_keyword">true</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="131" href="#131">131</a>         assertNotNull(objData);
<a class="jxr_linenumber" name="132" href="#132">132</a>         aclReturn = objData.getAcl();
<a class="jxr_linenumber" name="133" href="#133">133</a>         checkSimpleTestAcl(acl, aclReturn);
<a class="jxr_linenumber" name="134" href="#134">134</a>         LOG.info(<span class="jxr_string">"... testCreateFolderWithAcl() finished."</span>);
<a class="jxr_linenumber" name="135" href="#135">135</a>     }
<a class="jxr_linenumber" name="136" href="#136">136</a> 
<a class="jxr_linenumber" name="137" href="#137">137</a>     @Test
<a class="jxr_linenumber" name="138" href="#138">138</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testApplyAcl() {
<a class="jxr_linenumber" name="139" href="#139">139</a>         LOG.info(<span class="jxr_string">"starting testApplyAcl() ..."</span>);
<a class="jxr_linenumber" name="140" href="#140">140</a>         Acl acl = createSimpleTestAcl();
<a class="jxr_linenumber" name="141" href="#141">141</a> 
<a class="jxr_linenumber" name="142" href="#142">142</a>         String id = createDocument(fRootFolderId, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="143" href="#143">143</a>         LOG.debug(<span class="jxr_string">"created document with id: "</span> + id);
<a class="jxr_linenumber" name="144" href="#144">144</a> 
<a class="jxr_linenumber" name="145" href="#145">145</a>         <em class="jxr_comment">// apply absolute ACL using AclService</em>
<a class="jxr_linenumber" name="146" href="#146">146</a>         Acl acl1 = fAclSvc.applyAcl(fRepositoryId, id, acl, defaultAcl, AclPropagation.OBJECTONLY, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="147" href="#147">147</a>         checkSimpleTestAcl(acl, acl1);
<a class="jxr_linenumber" name="148" href="#148">148</a> 
<a class="jxr_linenumber" name="149" href="#149">149</a>         <em class="jxr_comment">// get ACL using AclService</em>
<a class="jxr_linenumber" name="150" href="#150">150</a>         Acl aclReturn = fAclSvc.getAcl(fRepositoryId, id, <strong class="jxr_keyword">true</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="151" href="#151">151</a>         checkSimpleTestAcl(acl, aclReturn);
<a class="jxr_linenumber" name="152" href="#152">152</a> 
<a class="jxr_linenumber" name="153" href="#153">153</a>         LOG.info(<span class="jxr_string">"... testApplyAcl() finished."</span>);
<a class="jxr_linenumber" name="154" href="#154">154</a>     }
<a class="jxr_linenumber" name="155" href="#155">155</a> 
<a class="jxr_linenumber" name="156" href="#156">156</a>     @Test
<a class="jxr_linenumber" name="157" href="#157">157</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testAddRemoveAcl() {
<a class="jxr_linenumber" name="158" href="#158">158</a> 
<a class="jxr_linenumber" name="159" href="#159">159</a>         LOG.info(<span class="jxr_string">"starting testAddRemoveAcl() ..."</span>);
<a class="jxr_linenumber" name="160" href="#160">160</a>         Acl acl = createAdvancedTestAcl();
<a class="jxr_linenumber" name="161" href="#161">161</a> 
<a class="jxr_linenumber" name="162" href="#162">162</a>         String id = createDocument(fRootFolderId, acl, defaultAcl);
<a class="jxr_linenumber" name="163" href="#163">163</a>         LOG.debug(<span class="jxr_string">"created document with id: "</span> + id);
<a class="jxr_linenumber" name="164" href="#164">164</a> 
<a class="jxr_linenumber" name="165" href="#165">165</a>         Acl aclAdd = createAclAdd();
<a class="jxr_linenumber" name="166" href="#166">166</a>         Acl aclRemove = createAclRemove();
<a class="jxr_linenumber" name="167" href="#167">167</a>         <em class="jxr_comment">// apply absolute ACL using AclService</em>
<a class="jxr_linenumber" name="168" href="#168">168</a>         Acl aclReturn = fAclSvc.applyAcl(fRepositoryId, id, aclAdd, aclRemove, AclPropagation.OBJECTONLY, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="169" href="#169">169</a> 
<a class="jxr_linenumber" name="170" href="#170">170</a>         checkAclAfterAddRemove(aclReturn);
<a class="jxr_linenumber" name="171" href="#171">171</a> 
<a class="jxr_linenumber" name="172" href="#172">172</a>         LOG.info(<span class="jxr_string">"... testAddRemoveAcl() finished."</span>);
<a class="jxr_linenumber" name="173" href="#173">173</a>     }
<a class="jxr_linenumber" name="174" href="#174">174</a> 
<a class="jxr_linenumber" name="175" href="#175">175</a>     @Test
<a class="jxr_linenumber" name="176" href="#176">176</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testAddRemoveDuplicatedAcl() {
<a class="jxr_linenumber" name="177" href="#177">177</a>         <strong class="jxr_keyword">final</strong> String DOCUMENT_NAME_1 = <span class="jxr_string">"DocumentWithAcl-1"</span>;
<a class="jxr_linenumber" name="178" href="#178">178</a>         <strong class="jxr_keyword">final</strong> String DOCUMENT_NAME_2 = <span class="jxr_string">"DocumentWithAcl-2"</span>;
<a class="jxr_linenumber" name="179" href="#179">179</a> 
<a class="jxr_linenumber" name="180" href="#180">180</a>         LOG.info(<span class="jxr_string">"starting testAddRemoveDuplicatedAcl() ..."</span>);
<a class="jxr_linenumber" name="181" href="#181">181</a>         Acl acl = createAdvancedTestAcl();
<a class="jxr_linenumber" name="182" href="#182">182</a>         String id1 = createDocument(DOCUMENT_NAME_1, fRootFolderId, acl, defaultAcl);
<a class="jxr_linenumber" name="183" href="#183">183</a>         String id2 = createDocument(DOCUMENT_NAME_2, fRootFolderId, acl, defaultAcl);
<a class="jxr_linenumber" name="184" href="#184">184</a> 
<a class="jxr_linenumber" name="185" href="#185">185</a>         <em class="jxr_comment">// // modify ACL of first doc</em>
<a class="jxr_linenumber" name="186" href="#186">186</a>         <em class="jxr_comment">// List&lt;Ace&gt; acesRemove = Arrays.asList(new Ace[] {</em>
<a class="jxr_linenumber" name="187" href="#187">187</a>         <em class="jxr_comment">// createAce(BOB, EnumBasicPermissions.CMIS_WRITE.value()),</em>
<a class="jxr_linenumber" name="188" href="#188">188</a>         <em class="jxr_comment">// });</em>
<a class="jxr_linenumber" name="189" href="#189">189</a>         <em class="jxr_comment">// Acl aclRemove = new AccessControlListImpl(acesRemove);</em>
<a class="jxr_linenumber" name="190" href="#190">190</a>         <em class="jxr_comment">// List&lt;Ace&gt; acesAdd = Arrays.asList(new Ace[] {</em>
<a class="jxr_linenumber" name="191" href="#191">191</a>         <em class="jxr_comment">// createAce(DAN, EnumBasicPermissions.CMIS_WRITE.value()),</em>
<a class="jxr_linenumber" name="192" href="#192">192</a>         <em class="jxr_comment">// });</em>
<a class="jxr_linenumber" name="193" href="#193">193</a>         <em class="jxr_comment">// Acl aclAdd = new AccessControlListImpl(acesAdd);</em>
<a class="jxr_linenumber" name="194" href="#194">194</a>         Acl aclAdd = createAclAdd();
<a class="jxr_linenumber" name="195" href="#195">195</a>         Acl aclRemove = createAclRemove();
<a class="jxr_linenumber" name="196" href="#196">196</a>         Acl aclReturn = fAclSvc.applyAcl(fRepositoryId, id1, aclAdd, aclRemove, AclPropagation.OBJECTONLY, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="197" href="#197">197</a> 
<a class="jxr_linenumber" name="198" href="#198">198</a>         checkAclAfterAddRemove(aclReturn);
<a class="jxr_linenumber" name="199" href="#199">199</a> 
<a class="jxr_linenumber" name="200" href="#200">200</a>         <em class="jxr_comment">// Ensure that ACL of second doc is unchanged</em>
<a class="jxr_linenumber" name="201" href="#201">201</a>         aclReturn = fAclSvc.getAcl(fRepositoryId, id2, <strong class="jxr_keyword">true</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="202" href="#202">202</a>         checkAdvancedTestAcl(acl, aclReturn);
<a class="jxr_linenumber" name="203" href="#203">203</a>         LOG.info(<span class="jxr_string">"... testAddRemoveDuplicatedAcl() finished."</span>);
<a class="jxr_linenumber" name="204" href="#204">204</a>     }
<a class="jxr_linenumber" name="205" href="#205">205</a> 
<a class="jxr_linenumber" name="206" href="#206">206</a>     @Test
<a class="jxr_linenumber" name="207" href="#207">207</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testApplyAclRecursiveSimple() {
<a class="jxr_linenumber" name="208" href="#208">208</a>         LOG.info(<span class="jxr_string">"starting testApplyAclRecursiveSimple() ..."</span>);
<a class="jxr_linenumber" name="209" href="#209">209</a>         Acl acl = createSimpleTestAcl();
<a class="jxr_linenumber" name="210" href="#210">210</a>         String[] ids = createHierarchy(acl, defaultAcl);
<a class="jxr_linenumber" name="211" href="#211">211</a>         fAclSvc.applyAcl(fRepositoryId, ids[0], acl, <strong class="jxr_keyword">null</strong>, AclPropagation.PROPAGATE, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="212" href="#212">212</a>         checkAclRecursiveSimple(ids, acl);
<a class="jxr_linenumber" name="213" href="#213">213</a>         LOG.info(<span class="jxr_string">"... testApplyAclRecursiveSimple() finished."</span>);
<a class="jxr_linenumber" name="214" href="#214">214</a>     }
<a class="jxr_linenumber" name="215" href="#215">215</a> 
<a class="jxr_linenumber" name="216" href="#216">216</a>     @Test
<a class="jxr_linenumber" name="217" href="#217">217</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testApplyAclRecursiveIncremental() {
<a class="jxr_linenumber" name="218" href="#218">218</a>         LOG.info(<span class="jxr_string">"starting testApplyAclRecursiveIncremental() ..."</span>);
<a class="jxr_linenumber" name="219" href="#219">219</a>         Acl acl = createAdvancedTestAcl();
<a class="jxr_linenumber" name="220" href="#220">220</a>         String[] ids = createHierarchy(acl, defaultAcl);
<a class="jxr_linenumber" name="221" href="#221">221</a> 
<a class="jxr_linenumber" name="222" href="#222">222</a>         Acl aclRemove = createAclRemove();
<a class="jxr_linenumber" name="223" href="#223">223</a>         Acl aclAdd = createAclAdd();
<a class="jxr_linenumber" name="224" href="#224">224</a> 
<a class="jxr_linenumber" name="225" href="#225">225</a>         Acl aclReturn = fAclSvc.applyAcl(fRepositoryId, ids[0], aclAdd, aclRemove, AclPropagation.PROPAGATE, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="226" href="#226">226</a>         checkAclAfterAddRemove(aclReturn);
<a class="jxr_linenumber" name="227" href="#227">227</a>         <strong class="jxr_keyword">for</strong> (String id : ids) {
<a class="jxr_linenumber" name="228" href="#228">228</a>             aclReturn = fAclSvc.getAcl(fRepositoryId, id, <strong class="jxr_keyword">true</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="229" href="#229">229</a>             checkAclAfterAddRemove(aclReturn);
<a class="jxr_linenumber" name="230" href="#230">230</a>         }
<a class="jxr_linenumber" name="231" href="#231">231</a>         LOG.info(<span class="jxr_string">"... testApplyAclRecursiveIncremental() finished."</span>);
<a class="jxr_linenumber" name="232" href="#232">232</a>     }
<a class="jxr_linenumber" name="233" href="#233">233</a> 
<a class="jxr_linenumber" name="234" href="#234">234</a>     @Test
<a class="jxr_linenumber" name="235" href="#235">235</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testRemoveAllAcls() {
<a class="jxr_linenumber" name="236" href="#236">236</a>         LOG.info(<span class="jxr_string">"starting testRemoveAllAcls() ..."</span>);
<a class="jxr_linenumber" name="237" href="#237">237</a> 
<a class="jxr_linenumber" name="238" href="#238">238</a>         Acl acl = createAdvancedTestAcl();
<a class="jxr_linenumber" name="239" href="#239">239</a>         String id = createDocument(fRootFolderId, acl, defaultAcl);
<a class="jxr_linenumber" name="240" href="#240">240</a>         LOG.debug(<span class="jxr_string">"created document with id: "</span> + id);
<a class="jxr_linenumber" name="241" href="#241">241</a> 
<a class="jxr_linenumber" name="242" href="#242">242</a>         Acl aclReturn = fAclSvc.applyAcl(fRepositoryId, id, <strong class="jxr_keyword">null</strong>, acl, AclPropagation.OBJECTONLY, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="243" href="#243">243</a>         assertNotNull(aclReturn);
<a class="jxr_linenumber" name="244" href="#244">244</a>         assertEquals(1, aclReturn.getAces().size());
<a class="jxr_linenumber" name="245" href="#245">245</a>         assertTrue(aclHasPermission(aclReturn, <span class="jxr_string">"anyone"</span>, EnumBasicPermissions.CMIS_ALL.value()));
<a class="jxr_linenumber" name="246" href="#246">246</a> 
<a class="jxr_linenumber" name="247" href="#247">247</a>         LOG.info(<span class="jxr_string">"... testRemoveAllAcls() finished."</span>);
<a class="jxr_linenumber" name="248" href="#248">248</a>     }
<a class="jxr_linenumber" name="249" href="#249">249</a> 
<a class="jxr_linenumber" name="250" href="#250">250</a>     <strong class="jxr_keyword">private</strong> String createDocument(String name, String folderId, Acl addAces, Acl removeAces) {
<a class="jxr_linenumber" name="251" href="#251">251</a>         <strong class="jxr_keyword">return</strong> createDocumentNoCatch(name, folderId, DOCUMENT_TYPE_ID, VersioningState.NONE, false, addAces, removeAces);
<a class="jxr_linenumber" name="252" href="#252">252</a>     }
<a class="jxr_linenumber" name="253" href="#253">253</a> 
<a class="jxr_linenumber" name="254" href="#254">254</a>     <strong class="jxr_keyword">private</strong> String createDocument(String folderId, Acl addAces, Acl removeAces) {
<a class="jxr_linenumber" name="255" href="#255">255</a>         <strong class="jxr_keyword">return</strong> createDocumentNoCatch(DOCUMENT_NAME, folderId, DOCUMENT_TYPE_ID, VersioningState.NONE, false, addAces,
<a class="jxr_linenumber" name="256" href="#256">256</a>                 removeAces);
<a class="jxr_linenumber" name="257" href="#257">257</a>     }
<a class="jxr_linenumber" name="258" href="#258">258</a> 
<a class="jxr_linenumber" name="259" href="#259">259</a>     <strong class="jxr_keyword">private</strong> String createFolder(String folderId, Acl addAces, Acl removeAces) {
<a class="jxr_linenumber" name="260" href="#260">260</a>         <strong class="jxr_keyword">return</strong> createFolderNoCatch(FOLDER_NAME, folderId, FOLDER_TYPE_ID, addAces, removeAces);
<a class="jxr_linenumber" name="261" href="#261">261</a>     }
<a class="jxr_linenumber" name="262" href="#262">262</a> 
<a class="jxr_linenumber" name="263" href="#263">263</a>     <strong class="jxr_keyword">private</strong> String[] createHierarchy(Acl addAces, Acl removeAces) {
<a class="jxr_linenumber" name="264" href="#264">264</a>         String result[] = <strong class="jxr_keyword">new</strong> String[6];
<a class="jxr_linenumber" name="265" href="#265">265</a>         String rootFolderId = createFolderNoCatch(FOLDER_NAME, fRootFolderId, FOLDER_TYPE_ID, addAces, removeAces);
<a class="jxr_linenumber" name="266" href="#266">266</a>         result[0] = rootFolderId;
<a class="jxr_linenumber" name="267" href="#267">267</a>         result[1] = createDocument(DOCUMENT_NAME + <span class="jxr_string">"-1"</span>, rootFolderId, addAces, removeAces);
<a class="jxr_linenumber" name="268" href="#268">268</a>         result[2] = createDocument(DOCUMENT_NAME + <span class="jxr_string">"-2"</span>, rootFolderId, addAces, removeAces);
<a class="jxr_linenumber" name="269" href="#269">269</a>         String subFolderId = createFolderNoCatch(FOLDER_NAME, rootFolderId, FOLDER_TYPE_ID, addAces, removeAces);
<a class="jxr_linenumber" name="270" href="#270">270</a>         result[3] = subFolderId;
<a class="jxr_linenumber" name="271" href="#271">271</a>         result[4] = createDocument(DOCUMENT_NAME + <span class="jxr_string">"-1"</span>, subFolderId, addAces, removeAces);
<a class="jxr_linenumber" name="272" href="#272">272</a>         result[5] = createDocument(DOCUMENT_NAME + <span class="jxr_string">"-2"</span>, subFolderId, addAces, removeAces);
<a class="jxr_linenumber" name="273" href="#273">273</a>         <strong class="jxr_keyword">return</strong> result;
<a class="jxr_linenumber" name="274" href="#274">274</a>     }
<a class="jxr_linenumber" name="275" href="#275">275</a> 
<a class="jxr_linenumber" name="276" href="#276">276</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> checkAclRecursiveSimple(String[] ids, Acl acl) {
<a class="jxr_linenumber" name="277" href="#277">277</a>         <em class="jxr_comment">// get ACL using ObjectService getObject</em>
<a class="jxr_linenumber" name="278" href="#278">278</a>         <strong class="jxr_keyword">for</strong> (String id : ids) {
<a class="jxr_linenumber" name="279" href="#279">279</a>             ObjectData objData = fObjSvc.getObject(fRepositoryId, id, <span class="jxr_string">"*"</span>, false, IncludeRelationships.NONE, <strong class="jxr_keyword">null</strong>,
<a class="jxr_linenumber" name="280" href="#280">280</a>                     false, <strong class="jxr_keyword">true</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="281" href="#281">281</a>             checkSimpleTestAcl(acl, objData.getAcl());
<a class="jxr_linenumber" name="282" href="#282">282</a>         }
<a class="jxr_linenumber" name="283" href="#283">283</a>     }
<a class="jxr_linenumber" name="284" href="#284">284</a> 
<a class="jxr_linenumber" name="285" href="#285">285</a>     <strong class="jxr_keyword">private</strong> Acl createSimpleTestAcl() {
<a class="jxr_linenumber" name="286" href="#286">286</a>         List&lt;Ace&gt; aces = Arrays.asList(<strong class="jxr_keyword">new</strong> Ace[] { createAce(USER, EnumBasicPermissions.CMIS_READ.value()) });
<a class="jxr_linenumber" name="287" href="#287">287</a>         <strong class="jxr_keyword">return</strong> fFactory.createAccessControlList(aces);
<a class="jxr_linenumber" name="288" href="#288">288</a>     }
<a class="jxr_linenumber" name="289" href="#289">289</a> 
<a class="jxr_linenumber" name="290" href="#290">290</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> checkSimpleTestAcl(Acl acl, Acl aclReturn) {
<a class="jxr_linenumber" name="291" href="#291">291</a>         assertNotNull(aclReturn);
<a class="jxr_linenumber" name="292" href="#292">292</a>         assertEquals(acl.getAces().size(), aclReturn.getAces().size());
<a class="jxr_linenumber" name="293" href="#293">293</a>         assertTrue(aclHasPermission(aclReturn, USER, EnumBasicPermissions.CMIS_READ.value()));
<a class="jxr_linenumber" name="294" href="#294">294</a>     }
<a class="jxr_linenumber" name="295" href="#295">295</a> 
<a class="jxr_linenumber" name="296" href="#296">296</a>     <strong class="jxr_keyword">private</strong> Acl createAdvancedTestAcl() {
<a class="jxr_linenumber" name="297" href="#297">297</a>         List&lt;Ace&gt; aces = Arrays.asList(<strong class="jxr_keyword">new</strong> Ace[] { createAce(ALICE, EnumBasicPermissions.CMIS_READ.value()),
<a class="jxr_linenumber" name="298" href="#298">298</a>                 createAce(BOB, EnumBasicPermissions.CMIS_WRITE.value()),
<a class="jxr_linenumber" name="299" href="#299">299</a>                 createAce(CHRIS, EnumBasicPermissions.CMIS_ALL.value()), });
<a class="jxr_linenumber" name="300" href="#300">300</a>         <strong class="jxr_keyword">return</strong> fFactory.createAccessControlList(aces);
<a class="jxr_linenumber" name="301" href="#301">301</a>     }
<a class="jxr_linenumber" name="302" href="#302">302</a> 
<a class="jxr_linenumber" name="303" href="#303">303</a>     <strong class="jxr_keyword">private</strong> Acl createAclAdd() {
<a class="jxr_linenumber" name="304" href="#304">304</a>         List&lt;Ace&gt; acesAdd = Arrays.asList(<strong class="jxr_keyword">new</strong> Ace[] { createAce(DAN, EnumBasicPermissions.CMIS_WRITE.value()), });
<a class="jxr_linenumber" name="305" href="#305">305</a>         <strong class="jxr_keyword">return</strong> fFactory.createAccessControlList(acesAdd);
<a class="jxr_linenumber" name="306" href="#306">306</a>     }
<a class="jxr_linenumber" name="307" href="#307">307</a> 
<a class="jxr_linenumber" name="308" href="#308">308</a>     <strong class="jxr_keyword">private</strong> Acl createAclRemove() {
<a class="jxr_linenumber" name="309" href="#309">309</a>         List&lt;Ace&gt; acesRemove = Arrays.asList(<strong class="jxr_keyword">new</strong> Ace[] { createAce(BOB, EnumBasicPermissions.CMIS_WRITE.value()),
<a class="jxr_linenumber" name="310" href="#310">310</a>                 createAce(CHRIS, EnumBasicPermissions.CMIS_ALL.value()) });
<a class="jxr_linenumber" name="311" href="#311">311</a>         <strong class="jxr_keyword">return</strong> fFactory.createAccessControlList(acesRemove);
<a class="jxr_linenumber" name="312" href="#312">312</a>     }
<a class="jxr_linenumber" name="313" href="#313">313</a> 
<a class="jxr_linenumber" name="314" href="#314">314</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> checkAclAfterAddRemove(Acl aclReturn) {
<a class="jxr_linenumber" name="315" href="#315">315</a>         assertNotNull(aclReturn);
<a class="jxr_linenumber" name="316" href="#316">316</a>         assertEquals(2, aclReturn.getAces().size());
<a class="jxr_linenumber" name="317" href="#317">317</a>         assertTrue(aclHasPermission(aclReturn, ALICE, EnumBasicPermissions.CMIS_READ.value()));
<a class="jxr_linenumber" name="318" href="#318">318</a>         assertTrue(aclHasPermission(aclReturn, DAN, EnumBasicPermissions.CMIS_WRITE.value()));
<a class="jxr_linenumber" name="319" href="#319">319</a>         assertFalse(aclHasPermission(aclReturn, BOB, EnumBasicPermissions.CMIS_WRITE.value()));
<a class="jxr_linenumber" name="320" href="#320">320</a>         assertFalse(aclHasPermission(aclReturn, CHRIS, EnumBasicPermissions.CMIS_ALL.value()));
<a class="jxr_linenumber" name="321" href="#321">321</a>         assertTrue(aclHasNoPermission(aclReturn, BOB));
<a class="jxr_linenumber" name="322" href="#322">322</a>         assertTrue(aclHasNoPermission(aclReturn, CHRIS));
<a class="jxr_linenumber" name="323" href="#323">323</a>     }
<a class="jxr_linenumber" name="324" href="#324">324</a> 
<a class="jxr_linenumber" name="325" href="#325">325</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> checkAdvancedTestAcl(Acl acl, Acl aclReturn) {
<a class="jxr_linenumber" name="326" href="#326">326</a>         assertNotNull(aclReturn);
<a class="jxr_linenumber" name="327" href="#327">327</a>         assertEquals(acl.getAces().size(), aclReturn.getAces().size());
<a class="jxr_linenumber" name="328" href="#328">328</a>         assertTrue(aclHasPermission(aclReturn, ALICE, EnumBasicPermissions.CMIS_READ.value()));
<a class="jxr_linenumber" name="329" href="#329">329</a>         assertTrue(aclHasPermission(aclReturn, BOB, EnumBasicPermissions.CMIS_WRITE.value()));
<a class="jxr_linenumber" name="330" href="#330">330</a>         assertTrue(aclHasPermission(aclReturn, CHRIS, EnumBasicPermissions.CMIS_ALL.value()));
<a class="jxr_linenumber" name="331" href="#331">331</a>     }
<a class="jxr_linenumber" name="332" href="#332">332</a> 
<a class="jxr_linenumber" name="333" href="#333">333</a>     <strong class="jxr_keyword">private</strong> Ace createAce(String principalId, String permission) {
<a class="jxr_linenumber" name="334" href="#334">334</a>         <strong class="jxr_keyword">return</strong> fFactory.createAccessControlEntry(principalId, Collections.singletonList(permission));
<a class="jxr_linenumber" name="335" href="#335">335</a>     }
<a class="jxr_linenumber" name="336" href="#336">336</a> 
<a class="jxr_linenumber" name="337" href="#337">337</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> aclHasPermission(Acl acl, String principalId, String permission) {
<a class="jxr_linenumber" name="338" href="#338">338</a>         <strong class="jxr_keyword">for</strong> (Ace ace : acl.getAces()) {
<a class="jxr_linenumber" name="339" href="#339">339</a>             <strong class="jxr_keyword">if</strong> (ace.getPrincipalId().equals(principalId) &amp;&amp; aceContainsPermission(ace, permission)) {
<a class="jxr_linenumber" name="340" href="#340">340</a>                 <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">true</strong>;
<a class="jxr_linenumber" name="341" href="#341">341</a>             }
<a class="jxr_linenumber" name="342" href="#342">342</a>         }
<a class="jxr_linenumber" name="343" href="#343">343</a>         <strong class="jxr_keyword">return</strong> false;
<a class="jxr_linenumber" name="344" href="#344">344</a>     }
<a class="jxr_linenumber" name="345" href="#345">345</a> 
<a class="jxr_linenumber" name="346" href="#346">346</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> aclHasNoPermission(Acl acl, String principalId) {
<a class="jxr_linenumber" name="347" href="#347">347</a>         <strong class="jxr_keyword">if</strong> (<strong class="jxr_keyword">null</strong> == acl) {
<a class="jxr_linenumber" name="348" href="#348">348</a>             <strong class="jxr_keyword">return</strong> false;
<a class="jxr_linenumber" name="349" href="#349">349</a>         }
<a class="jxr_linenumber" name="350" href="#350">350</a> 
<a class="jxr_linenumber" name="351" href="#351">351</a>         <strong class="jxr_keyword">for</strong> (Ace ace : acl.getAces()) {
<a class="jxr_linenumber" name="352" href="#352">352</a>             <strong class="jxr_keyword">if</strong> (ace.getPrincipalId().equals(principalId)) {
<a class="jxr_linenumber" name="353" href="#353">353</a>                 <strong class="jxr_keyword">return</strong> false;
<a class="jxr_linenumber" name="354" href="#354">354</a>             }
<a class="jxr_linenumber" name="355" href="#355">355</a>         }
<a class="jxr_linenumber" name="356" href="#356">356</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">true</strong>;
<a class="jxr_linenumber" name="357" href="#357">357</a>     }
<a class="jxr_linenumber" name="358" href="#358">358</a> 
<a class="jxr_linenumber" name="359" href="#359">359</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> aceContainsPermission(Ace ace, String permission) {
<a class="jxr_linenumber" name="360" href="#360">360</a>         <strong class="jxr_keyword">for</strong> (String acePerm : ace.getPermissions()) {
<a class="jxr_linenumber" name="361" href="#361">361</a>             <strong class="jxr_keyword">if</strong> (permission.equals(acePerm)) {
<a class="jxr_linenumber" name="362" href="#362">362</a>                 <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">true</strong>;
<a class="jxr_linenumber" name="363" href="#363">363</a>             }
<a class="jxr_linenumber" name="364" href="#364">364</a>         }
<a class="jxr_linenumber" name="365" href="#365">365</a>         <strong class="jxr_keyword">return</strong> false;
<a class="jxr_linenumber" name="366" href="#366">366</a>     }
<a class="jxr_linenumber" name="367" href="#367">367</a> }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

