<!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>AbstractSessionTest xref</title>
<link type="text/css" rel="stylesheet" href="../../../../../../stylesheet.css" />
</head>
<body>
<div id="overview"><a href="../../../../../../../apidocs/org/apache/chemistry/opencmis/tck/impl/AbstractSessionTest.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.tck.impl;
<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.apache.chemistry.opencmis.commons.impl.CollectionsHelper.isNotEmpty;
<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.chemistry.opencmis.commons.impl.CollectionsHelper.isNullOrEmpty;
<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.chemistry.opencmis.tck.CmisTestResultStatus.FAILURE;
<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.chemistry.opencmis.tck.CmisTestResultStatus.INFO;
<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.chemistry.opencmis.tck.CmisTestResultStatus.OK;
<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.chemistry.opencmis.tck.CmisTestResultStatus.SKIPPED;
<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.chemistry.opencmis.tck.CmisTestResultStatus.UNEXPECTED_EXCEPTION;
<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.chemistry.opencmis.tck.CmisTestResultStatus.WARNING;
<a class="jxr_linenumber" name="29" href="#29">29</a>  
<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> java.io.BufferedInputStream;
<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> java.io.ByteArrayInputStream;
<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> java.io.InputStream;
<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> java.io.InputStreamReader;
<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> java.io.Reader;
<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> java.math.BigInteger;
<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> java.security.MessageDigest;
<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> java.security.NoSuchAlgorithmException;
<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> java.util.ArrayList;
<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> java.util.Arrays;
<a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> java.util.Collections;
<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> java.util.GregorianCalendar;
<a class="jxr_linenumber" name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> java.util.HashMap;
<a class="jxr_linenumber" name="44" href="#44">44</a>  <strong class="jxr_keyword">import</strong> java.util.HashSet;
<a class="jxr_linenumber" name="45" href="#45">45</a>  <strong class="jxr_keyword">import</strong> java.util.List;
<a class="jxr_linenumber" name="46" href="#46">46</a>  <strong class="jxr_keyword">import</strong> java.util.Map;
<a class="jxr_linenumber" name="47" href="#47">47</a>  <strong class="jxr_keyword">import</strong> java.util.Set;
<a class="jxr_linenumber" name="48" href="#48">48</a>  
<a class="jxr_linenumber" name="49" href="#49">49</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.client.SessionParameterMap;
<a class="jxr_linenumber" name="50" href="#50">50</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.client.api.CmisObject;
<a class="jxr_linenumber" name="51" href="#51">51</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.client.api.Document;
<a class="jxr_linenumber" name="52" href="#52">52</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.client.api.FileableCmisObject;
<a class="jxr_linenumber" name="53" href="#53">53</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.client.api.Folder;
<a class="jxr_linenumber" name="54" href="#54">54</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.client.api.Item;
<a class="jxr_linenumber" name="55" href="#55">55</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.client.api.ItemIterable;
<a class="jxr_linenumber" name="56" href="#56">56</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.client.api.ObjectId;
<a class="jxr_linenumber" name="57" href="#57">57</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.client.api.ObjectType;
<a class="jxr_linenumber" name="58" href="#58">58</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.client.api.OperationContext;
<a class="jxr_linenumber" name="59" href="#59">59</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.client.api.Policy;
<a class="jxr_linenumber" name="60" href="#60">60</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.client.api.Property;
<a class="jxr_linenumber" name="61" href="#61">61</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.client.api.Relationship;
<a class="jxr_linenumber" name="62" href="#62">62</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.client.api.Rendition;
<a class="jxr_linenumber" name="63" href="#63">63</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.client.api.Session;
<a class="jxr_linenumber" name="64" href="#64">64</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.client.api.SessionFactory;
<a class="jxr_linenumber" name="65" href="#65">65</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.client.api.Tree;
<a class="jxr_linenumber" name="66" href="#66">66</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.client.bindings.impl.ClientVersion;
<a class="jxr_linenumber" name="67" href="#67">67</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.client.runtime.OperationContextImpl;
<a class="jxr_linenumber" name="68" href="#68">68</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.client.runtime.SessionFactoryImpl;
<a class="jxr_linenumber" name="69" href="#69">69</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.PropertyIds;
<a class="jxr_linenumber" name="70" href="#70">70</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.SessionParameter;
<a class="jxr_linenumber" name="71" href="#71">71</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.data.Ace;
<a class="jxr_linenumber" name="72" href="#72">72</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.data.Acl;
<a class="jxr_linenumber" name="73" href="#73">73</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.data.AllowableActions;
<a class="jxr_linenumber" name="74" href="#74">74</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.data.ContentStream;
<a class="jxr_linenumber" name="75" href="#75">75</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.data.ContentStreamHash;
<a class="jxr_linenumber" name="76" href="#76">76</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.data.NewTypeSettableAttributes;
<a class="jxr_linenumber" name="77" href="#77">77</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.data.ObjectData;
<a class="jxr_linenumber" name="78" href="#78">78</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.data.ObjectInFolderData;
<a class="jxr_linenumber" name="79" href="#79">79</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.data.ObjectInFolderList;
<a class="jxr_linenumber" name="80" href="#80">80</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.data.RepositoryCapabilities;
<a class="jxr_linenumber" name="81" href="#81">81</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.data.RepositoryInfo;
<a class="jxr_linenumber" name="82" href="#82">82</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.definitions.DocumentTypeDefinition;
<a class="jxr_linenumber" name="83" href="#83">83</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.definitions.PropertyDecimalDefinition;
<a class="jxr_linenumber" name="84" href="#84">84</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.definitions.PropertyDefinition;
<a class="jxr_linenumber" name="85" href="#85">85</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.definitions.PropertyIntegerDefinition;
<a class="jxr_linenumber" name="86" href="#86">86</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.definitions.PropertyStringDefinition;
<a class="jxr_linenumber" name="87" href="#87">87</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.definitions.RelationshipTypeDefinition;
<a class="jxr_linenumber" name="88" href="#88">88</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.definitions.TypeDefinition;
<a class="jxr_linenumber" name="89" href="#89">89</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.enums.Action;
<a class="jxr_linenumber" name="90" href="#90">90</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.enums.BaseTypeId;
<a class="jxr_linenumber" name="91" href="#91">91</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.enums.BindingType;
<a class="jxr_linenumber" name="92" href="#92">92</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.enums.CapabilityOrderBy;
<a class="jxr_linenumber" name="93" href="#93">93</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.enums.Cardinality;
<a class="jxr_linenumber" name="94" href="#94">94</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.enums.CmisVersion;
<a class="jxr_linenumber" name="95" href="#95">95</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.enums.ContentStreamAllowed;
<a class="jxr_linenumber" name="96" href="#96">96</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.enums.IncludeRelationships;
<a class="jxr_linenumber" name="97" href="#97">97</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.enums.PropertyType;
<a class="jxr_linenumber" name="98" href="#98">98</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.enums.Updatability;
<a class="jxr_linenumber" name="99" href="#99">99</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.enums.VersioningState;
<a class="jxr_linenumber" name="100" href="#100">100</a> <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.exceptions.CmisBaseException;
<a class="jxr_linenumber" name="101" href="#101">101</a> <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.exceptions.CmisInvalidArgumentException;
<a class="jxr_linenumber" name="102" href="#102">102</a> <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.exceptions.CmisNotSupportedException;
<a class="jxr_linenumber" name="103" href="#103">103</a> <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.exceptions.CmisObjectNotFoundException;
<a class="jxr_linenumber" name="104" href="#104">104</a> <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.impl.IOUtils;
<a class="jxr_linenumber" name="105" href="#105">105</a> <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.impl.dataobjects.ContentStreamHashImpl;
<a class="jxr_linenumber" name="106" href="#106">106</a> <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.impl.dataobjects.ContentStreamImpl;
<a class="jxr_linenumber" name="107" href="#107">107</a> <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.tck.CmisTestResult;
<a class="jxr_linenumber" name="108" href="#108">108</a> <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.tck.CmisTestResultStatus;
<a class="jxr_linenumber" name="109" href="#109">109</a> 
<a class="jxr_linenumber" name="110" href="#110">110</a> <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="111" href="#111">111</a> <em class="jxr_javadoccomment"> * Base class for tests that require an OpenCMIS session.</em>
<a class="jxr_linenumber" name="112" href="#112">112</a> <em class="jxr_javadoccomment"> */</em>
<a class="jxr_linenumber" name="113" href="#113">113</a> <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">abstract</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/impl/AbstractSessionTest.html">AbstractSessionTest</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/impl/AbstractCmisTest.html">AbstractCmisTest</a> {
<a class="jxr_linenumber" name="114" href="#114">114</a> 
<a class="jxr_linenumber" name="115" href="#115">115</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> OperationContext SELECT_ALL_NO_CACHE_OC = <strong class="jxr_keyword">new</strong> OperationContextImpl();
<a class="jxr_linenumber" name="116" href="#116">116</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> OperationContext SELECT_ALL_NO_CACHE_OC_ORDER_BY_NAME;
<a class="jxr_linenumber" name="117" href="#117">117</a>     <strong class="jxr_keyword">static</strong> {
<a class="jxr_linenumber" name="118" href="#118">118</a>         SELECT_ALL_NO_CACHE_OC.setFilterString(<span class="jxr_string">"*"</span>);
<a class="jxr_linenumber" name="119" href="#119">119</a>         SELECT_ALL_NO_CACHE_OC.setCacheEnabled(false);
<a class="jxr_linenumber" name="120" href="#120">120</a>         SELECT_ALL_NO_CACHE_OC.setIncludeAllowableActions(<strong class="jxr_keyword">true</strong>);
<a class="jxr_linenumber" name="121" href="#121">121</a>         SELECT_ALL_NO_CACHE_OC.setIncludeAcls(<strong class="jxr_keyword">true</strong>);
<a class="jxr_linenumber" name="122" href="#122">122</a>         SELECT_ALL_NO_CACHE_OC.setIncludePathSegments(<strong class="jxr_keyword">true</strong>);
<a class="jxr_linenumber" name="123" href="#123">123</a>         SELECT_ALL_NO_CACHE_OC.setIncludePolicies(<strong class="jxr_keyword">true</strong>);
<a class="jxr_linenumber" name="124" href="#124">124</a>         SELECT_ALL_NO_CACHE_OC.setIncludeRelationships(IncludeRelationships.BOTH);
<a class="jxr_linenumber" name="125" href="#125">125</a>         SELECT_ALL_NO_CACHE_OC.setRenditionFilterString(<span class="jxr_string">"*"</span>);
<a class="jxr_linenumber" name="126" href="#126">126</a>         SELECT_ALL_NO_CACHE_OC.setOrderBy(<strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="127" href="#127">127</a> 
<a class="jxr_linenumber" name="128" href="#128">128</a>         SELECT_ALL_NO_CACHE_OC_ORDER_BY_NAME = <strong class="jxr_keyword">new</strong> OperationContextImpl(SELECT_ALL_NO_CACHE_OC);
<a class="jxr_linenumber" name="129" href="#129">129</a>         SELECT_ALL_NO_CACHE_OC_ORDER_BY_NAME.setOrderBy(<span class="jxr_string">"cmis:name"</span>);
<a class="jxr_linenumber" name="130" href="#130">130</a>     }
<a class="jxr_linenumber" name="131" href="#131">131</a> 
<a class="jxr_linenumber" name="132" href="#132">132</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TCK_USER_AGENT = <span class="jxr_string">"OpenCMIS-TCK/"</span>
<a class="jxr_linenumber" name="133" href="#133">133</a>             + (ClientVersion.OPENCMIS_VERSION == <strong class="jxr_keyword">null</strong> ? <span class="jxr_string">"?"</span> : ClientVersion.OPENCMIS_VERSION) + <span class="jxr_string">" "</span>
<a class="jxr_linenumber" name="134" href="#134">134</a>             + ClientVersion.OPENCMIS_USER_AGENT;
<a class="jxr_linenumber" name="135" href="#135">135</a> 
<a class="jxr_linenumber" name="136" href="#136">136</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> SessionFactory factory = SessionFactoryImpl.newInstance();
<a class="jxr_linenumber" name="137" href="#137">137</a>     <strong class="jxr_keyword">private</strong> Folder testFolder;
<a class="jxr_linenumber" name="138" href="#138">138</a> 
<a class="jxr_linenumber" name="139" href="#139">139</a>     <strong class="jxr_keyword">private</strong> Boolean supportsRelationships;
<a class="jxr_linenumber" name="140" href="#140">140</a>     <strong class="jxr_keyword">private</strong> Boolean supportsPolicies;
<a class="jxr_linenumber" name="141" href="#141">141</a>     <strong class="jxr_keyword">private</strong> Boolean supportsItems;
<a class="jxr_linenumber" name="142" href="#142">142</a>     <strong class="jxr_keyword">private</strong> Boolean supportsSecondaries;
<a class="jxr_linenumber" name="143" href="#143">143</a> 
<a class="jxr_linenumber" name="144" href="#144">144</a>     <strong class="jxr_keyword">public</strong> BindingType getBinding() {
<a class="jxr_linenumber" name="145" href="#145">145</a>         <strong class="jxr_keyword">if</strong> (getParameters() == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="146" href="#146">146</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="147" href="#147">147</a>         }
<a class="jxr_linenumber" name="148" href="#148">148</a> 
<a class="jxr_linenumber" name="149" href="#149">149</a>         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="150" href="#150">150</a>             <strong class="jxr_keyword">return</strong> BindingType.fromValue(getParameters().get(SessionParameter.BINDING_TYPE));
<a class="jxr_linenumber" name="151" href="#151">151</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a class="jxr_linenumber" name="152" href="#152">152</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="153" href="#153">153</a>         }
<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>     @Override
<a class="jxr_linenumber" name="157" href="#157">157</a>     <strong class="jxr_keyword">public</strong> String getName() {
<a class="jxr_linenumber" name="158" href="#158">158</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">super</strong>.getName() + <span class="jxr_string">" ("</span> + getBinding() + <span class="jxr_string">")"</span>;
<a class="jxr_linenumber" name="159" href="#159">159</a>     }
<a class="jxr_linenumber" name="160" href="#160">160</a> 
<a class="jxr_linenumber" name="161" href="#161">161</a>     @Override
<a class="jxr_linenumber" name="162" href="#162">162</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> run() <strong class="jxr_keyword">throws</strong> Exception {
<a class="jxr_linenumber" name="163" href="#163">163</a>         Session session;
<a class="jxr_linenumber" name="164" href="#164">164</a> 
<a class="jxr_linenumber" name="165" href="#165">165</a>         SessionParameterMap parameters = <strong class="jxr_keyword">new</strong> SessionParameterMap(getParameters());
<a class="jxr_linenumber" name="166" href="#166">166</a>         <strong class="jxr_keyword">if</strong> (!parameters.containsKey(SessionParameter.USER_AGENT)) {
<a class="jxr_linenumber" name="167" href="#167">167</a>             parameters.setUserAgent(TCK_USER_AGENT);
<a class="jxr_linenumber" name="168" href="#168">168</a>         }
<a class="jxr_linenumber" name="169" href="#169">169</a> 
<a class="jxr_linenumber" name="170" href="#170">170</a>         String repId = parameters.get(SessionParameter.REPOSITORY_ID);
<a class="jxr_linenumber" name="171" href="#171">171</a>         <strong class="jxr_keyword">if</strong> (repId != <strong class="jxr_keyword">null</strong> &amp;&amp; repId.length() &gt; 0) {
<a class="jxr_linenumber" name="172" href="#172">172</a>             session = factory.createSession(parameters);
<a class="jxr_linenumber" name="173" href="#173">173</a>         } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="174" href="#174">174</a>             session = factory.getRepositories(parameters).get(0).createSession();
<a class="jxr_linenumber" name="175" href="#175">175</a>         }
<a class="jxr_linenumber" name="176" href="#176">176</a> 
<a class="jxr_linenumber" name="177" href="#177">177</a>         <em class="jxr_comment">// switch off the cache</em>
<a class="jxr_linenumber" name="178" href="#178">178</a>         session.getDefaultContext().setCacheEnabled(false);
<a class="jxr_linenumber" name="179" href="#179">179</a> 
<a class="jxr_linenumber" name="180" href="#180">180</a>         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="181" href="#181">181</a>             run(session);
<a class="jxr_linenumber" name="182" href="#182">182</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a class="jxr_linenumber" name="183" href="#183">183</a>             <strong class="jxr_keyword">if</strong> (!(e instanceof FatalTestException)) {
<a class="jxr_linenumber" name="184" href="#184">184</a>                 addResult(createResult(UNEXPECTED_EXCEPTION, <span class="jxr_string">"Exception: "</span> + e, e, <strong class="jxr_keyword">true</strong>));
<a class="jxr_linenumber" name="185" href="#185">185</a>             }
<a class="jxr_linenumber" name="186" href="#186">186</a>         } <strong class="jxr_keyword">catch</strong> (Error err) {
<a class="jxr_linenumber" name="187" href="#187">187</a>             addResult(createResult(UNEXPECTED_EXCEPTION, <span class="jxr_string">"Error: "</span> + err, err, <strong class="jxr_keyword">true</strong>));
<a class="jxr_linenumber" name="188" href="#188">188</a>         } <strong class="jxr_keyword">finally</strong> {
<a class="jxr_linenumber" name="189" href="#189">189</a>             testFolder = <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="190" href="#190">190</a>         }
<a class="jxr_linenumber" name="191" href="#191">191</a>     }
<a class="jxr_linenumber" name="192" href="#192">192</a> 
<a class="jxr_linenumber" name="193" href="#193">193</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">abstract</strong> <strong class="jxr_keyword">void</strong> run(Session session) <strong class="jxr_keyword">throws</strong> Exception;
<a class="jxr_linenumber" name="194" href="#194">194</a> 
<a class="jxr_linenumber" name="195" href="#195">195</a>     <strong class="jxr_keyword">protected</strong> RepositoryInfo getRepositoryInfo(Session session) {
<a class="jxr_linenumber" name="196" href="#196">196</a>         RepositoryInfo ri = session.getRepositoryInfo();
<a class="jxr_linenumber" name="197" href="#197">197</a> 
<a class="jxr_linenumber" name="198" href="#198">198</a>         <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> failure = createResult(FAILURE, <span class="jxr_string">"Repository info is null!"</span>, <strong class="jxr_keyword">true</strong>);
<a class="jxr_linenumber" name="199" href="#199">199</a>         addResult(assertNotNull(ri, <strong class="jxr_keyword">null</strong>, failure));
<a class="jxr_linenumber" name="200" href="#200">200</a> 
<a class="jxr_linenumber" name="201" href="#201">201</a>         <strong class="jxr_keyword">return</strong> ri;
<a class="jxr_linenumber" name="202" href="#202">202</a>     }
<a class="jxr_linenumber" name="203" href="#203">203</a> 
<a class="jxr_linenumber" name="204" href="#204">204</a>     <strong class="jxr_keyword">protected</strong> String getFolderTestTypeId() {
<a class="jxr_linenumber" name="205" href="#205">205</a>         String objectTypeId = getParameters().get(TestParameters.DEFAULT_FOLDER_TYPE);
<a class="jxr_linenumber" name="206" href="#206">206</a>         <strong class="jxr_keyword">if</strong> (objectTypeId == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="207" href="#207">207</a>             objectTypeId = TestParameters.DEFAULT_FOLDER_TYPE_VALUE;
<a class="jxr_linenumber" name="208" href="#208">208</a>         }
<a class="jxr_linenumber" name="209" href="#209">209</a> 
<a class="jxr_linenumber" name="210" href="#210">210</a>         <strong class="jxr_keyword">return</strong> objectTypeId;
<a class="jxr_linenumber" name="211" href="#211">211</a>     }
<a class="jxr_linenumber" name="212" href="#212">212</a> 
<a class="jxr_linenumber" name="213" href="#213">213</a>     <strong class="jxr_keyword">protected</strong> String getDocumentTestTypeId() {
<a class="jxr_linenumber" name="214" href="#214">214</a>         String objectTypeId = getParameters().get(TestParameters.DEFAULT_DOCUMENT_TYPE);
<a class="jxr_linenumber" name="215" href="#215">215</a>         <strong class="jxr_keyword">if</strong> (objectTypeId == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="216" href="#216">216</a>             objectTypeId = TestParameters.DEFAULT_DOCUMENT_TYPE_VALUE;
<a class="jxr_linenumber" name="217" href="#217">217</a>         }
<a class="jxr_linenumber" name="218" href="#218">218</a> 
<a class="jxr_linenumber" name="219" href="#219">219</a>         <strong class="jxr_keyword">return</strong> objectTypeId;
<a class="jxr_linenumber" name="220" href="#220">220</a>     }
<a class="jxr_linenumber" name="221" href="#221">221</a> 
<a class="jxr_linenumber" name="222" href="#222">222</a>     <strong class="jxr_keyword">protected</strong> String getRelationshipTestTypeId() {
<a class="jxr_linenumber" name="223" href="#223">223</a>         String objectTypeId = getParameters().get(TestParameters.DEFAULT_RELATIONSHIP_TYPE);
<a class="jxr_linenumber" name="224" href="#224">224</a>         <strong class="jxr_keyword">if</strong> (objectTypeId == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="225" href="#225">225</a>             objectTypeId = TestParameters.DEFAULT_RELATIONSHIP_TYPE_VALUE;
<a class="jxr_linenumber" name="226" href="#226">226</a>         }
<a class="jxr_linenumber" name="227" href="#227">227</a> 
<a class="jxr_linenumber" name="228" href="#228">228</a>         <strong class="jxr_keyword">return</strong> objectTypeId;
<a class="jxr_linenumber" name="229" href="#229">229</a>     }
<a class="jxr_linenumber" name="230" href="#230">230</a> 
<a class="jxr_linenumber" name="231" href="#231">231</a>     <strong class="jxr_keyword">protected</strong> String getPolicyTestTypeId() {
<a class="jxr_linenumber" name="232" href="#232">232</a>         String objectTypeId = getParameters().get(TestParameters.DEFAULT_POLICY_TYPE);
<a class="jxr_linenumber" name="233" href="#233">233</a>         <strong class="jxr_keyword">if</strong> (objectTypeId == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="234" href="#234">234</a>             objectTypeId = TestParameters.DEFAULT_POLICY_TYPE_VALUE;
<a class="jxr_linenumber" name="235" href="#235">235</a>         }
<a class="jxr_linenumber" name="236" href="#236">236</a> 
<a class="jxr_linenumber" name="237" href="#237">237</a>         <strong class="jxr_keyword">return</strong> objectTypeId;
<a class="jxr_linenumber" name="238" href="#238">238</a>     }
<a class="jxr_linenumber" name="239" href="#239">239</a> 
<a class="jxr_linenumber" name="240" href="#240">240</a>     <strong class="jxr_keyword">protected</strong> String getItemTestTypeId() {
<a class="jxr_linenumber" name="241" href="#241">241</a>         String objectTypeId = getParameters().get(TestParameters.DEFAULT_ITEM_TYPE);
<a class="jxr_linenumber" name="242" href="#242">242</a>         <strong class="jxr_keyword">if</strong> (objectTypeId == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="243" href="#243">243</a>             objectTypeId = TestParameters.DEFAULT_ITEM_TYPE_VALUE;
<a class="jxr_linenumber" name="244" href="#244">244</a>         }
<a class="jxr_linenumber" name="245" href="#245">245</a> 
<a class="jxr_linenumber" name="246" href="#246">246</a>         <strong class="jxr_keyword">return</strong> objectTypeId;
<a class="jxr_linenumber" name="247" href="#247">247</a>     }
<a class="jxr_linenumber" name="248" href="#248">248</a> 
<a class="jxr_linenumber" name="249" href="#249">249</a>     <strong class="jxr_keyword">protected</strong> String getSecondaryTestTypeId() {
<a class="jxr_linenumber" name="250" href="#250">250</a>         String objectTypeId = getParameters().get(TestParameters.DEFAULT_SECONDARY_TYPE);
<a class="jxr_linenumber" name="251" href="#251">251</a>         <strong class="jxr_keyword">if</strong> (objectTypeId == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="252" href="#252">252</a>             objectTypeId = TestParameters.DEFAULT_SECONDARY_TYPE_VALUE;
<a class="jxr_linenumber" name="253" href="#253">253</a>         }
<a class="jxr_linenumber" name="254" href="#254">254</a> 
<a class="jxr_linenumber" name="255" href="#255">255</a>         <strong class="jxr_keyword">return</strong> objectTypeId;
<a class="jxr_linenumber" name="256" href="#256">256</a>     }
<a class="jxr_linenumber" name="257" href="#257">257</a> 
<a class="jxr_linenumber" name="258" href="#258">258</a>     <em class="jxr_comment">// --- helpers ---</em>
<a class="jxr_linenumber" name="259" href="#259">259</a> 
<a class="jxr_linenumber" name="260" href="#260">260</a>     <strong class="jxr_keyword">protected</strong> String[] getAllProperties(CmisObject object) {
<a class="jxr_linenumber" name="261" href="#261">261</a>         String[] propertiesk = <strong class="jxr_keyword">new</strong> String[object.getType().getPropertyDefinitions().size()];
<a class="jxr_linenumber" name="262" href="#262">262</a> 
<a class="jxr_linenumber" name="263" href="#263">263</a>         <strong class="jxr_keyword">int</strong> i = 0;
<a class="jxr_linenumber" name="264" href="#264">264</a>         <strong class="jxr_keyword">for</strong> (String propId : object.getType().getPropertyDefinitions().keySet()) {
<a class="jxr_linenumber" name="265" href="#265">265</a>             propertiesk[i++] = propId;
<a class="jxr_linenumber" name="266" href="#266">266</a>         }
<a class="jxr_linenumber" name="267" href="#267">267</a> 
<a class="jxr_linenumber" name="268" href="#268">268</a>         <strong class="jxr_keyword">return</strong> propertiesk;
<a class="jxr_linenumber" name="269" href="#269">269</a>     }
<a class="jxr_linenumber" name="270" href="#270">270</a> 
<a class="jxr_linenumber" name="271" href="#271">271</a>     <strong class="jxr_keyword">protected</strong> String getStringFromContentStream(ContentStream contentStream) <strong class="jxr_keyword">throws</strong> IOException {
<a class="jxr_linenumber" name="272" href="#272">272</a>         <strong class="jxr_keyword">if</strong> (contentStream == <strong class="jxr_keyword">null</strong> || contentStream.getStream() == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="273" href="#273">273</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
<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>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(4096);
<a class="jxr_linenumber" name="277" href="#277">277</a>         Reader reader = <strong class="jxr_keyword">new</strong> InputStreamReader(contentStream.getStream(), IOUtils.UTF8);
<a class="jxr_linenumber" name="278" href="#278">278</a> 
<a class="jxr_linenumber" name="279" href="#279">279</a>         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="280" href="#280">280</a>             <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">char</strong>[] buffer = <strong class="jxr_keyword">new</strong> <strong class="jxr_keyword">char</strong>[64 * 1024];
<a class="jxr_linenumber" name="281" href="#281">281</a>             <strong class="jxr_keyword">int</strong> b;
<a class="jxr_linenumber" name="282" href="#282">282</a>             <strong class="jxr_keyword">while</strong> (<strong class="jxr_keyword">true</strong>) {
<a class="jxr_linenumber" name="283" href="#283">283</a>                 b = reader.read(buffer, 0, buffer.length);
<a class="jxr_linenumber" name="284" href="#284">284</a>                 <strong class="jxr_keyword">if</strong> (b &gt; 0) {
<a class="jxr_linenumber" name="285" href="#285">285</a>                     <strong class="jxr_keyword">if</strong> (sb.length() + b &gt; 10 * 1024 * 1024) {
<a class="jxr_linenumber" name="286" href="#286">286</a>                         <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IOException(<span class="jxr_string">"File too large!"</span>);
<a class="jxr_linenumber" name="287" href="#287">287</a>                     }
<a class="jxr_linenumber" name="288" href="#288">288</a> 
<a class="jxr_linenumber" name="289" href="#289">289</a>                     sb.append(buffer, 0, b);
<a class="jxr_linenumber" name="290" href="#290">290</a>                 } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (b == -1) {
<a class="jxr_linenumber" name="291" href="#291">291</a>                     <strong class="jxr_keyword">break</strong>;
<a class="jxr_linenumber" name="292" href="#292">292</a>                 }
<a class="jxr_linenumber" name="293" href="#293">293</a>             }
<a class="jxr_linenumber" name="294" href="#294">294</a>         } <strong class="jxr_keyword">finally</strong> {
<a class="jxr_linenumber" name="295" href="#295">295</a>             IOUtils.closeQuietly(reader);
<a class="jxr_linenumber" name="296" href="#296">296</a>         }
<a class="jxr_linenumber" name="297" href="#297">297</a> 
<a class="jxr_linenumber" name="298" href="#298">298</a>         <strong class="jxr_keyword">return</strong> sb.toString();
<a class="jxr_linenumber" name="299" href="#299">299</a>     }
<a class="jxr_linenumber" name="300" href="#300">300</a> 
<a class="jxr_linenumber" name="301" href="#301">301</a>     <em class="jxr_comment">// --- handy create and delete methods ---</em>
<a class="jxr_linenumber" name="302" href="#302">302</a> 
<a class="jxr_linenumber" name="303" href="#303">303</a>     <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="304" href="#304">304</a> <em class="jxr_javadoccomment">     * Creates a folder.</em>
<a class="jxr_linenumber" name="305" href="#305">305</a> <em class="jxr_javadoccomment">     */</em>
<a class="jxr_linenumber" name="306" href="#306">306</a>     <strong class="jxr_keyword">protected</strong> Folder createFolder(Session session, Folder parent, String name) {
<a class="jxr_linenumber" name="307" href="#307">307</a>         <strong class="jxr_keyword">return</strong> createFolder(session, parent, name, getFolderTestTypeId());
<a class="jxr_linenumber" name="308" href="#308">308</a>     }
<a class="jxr_linenumber" name="309" href="#309">309</a> 
<a class="jxr_linenumber" name="310" href="#310">310</a>     <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="311" href="#311">311</a> <em class="jxr_javadoccomment">     * Creates a folder.</em>
<a class="jxr_linenumber" name="312" href="#312">312</a> <em class="jxr_javadoccomment">     */</em>
<a class="jxr_linenumber" name="313" href="#313">313</a>     <strong class="jxr_keyword">protected</strong> Folder createFolder(Session session, Folder parent, String name, String objectTypeId) {
<a class="jxr_linenumber" name="314" href="#314">314</a>         <strong class="jxr_keyword">if</strong> (parent == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="315" href="#315">315</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IllegalArgumentException(<span class="jxr_string">"Parent is not set!"</span>);
<a class="jxr_linenumber" name="316" href="#316">316</a>         }
<a class="jxr_linenumber" name="317" href="#317">317</a>         <strong class="jxr_keyword">if</strong> (name == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="318" href="#318">318</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IllegalArgumentException(<span class="jxr_string">"Name is not set!"</span>);
<a class="jxr_linenumber" name="319" href="#319">319</a>         }
<a class="jxr_linenumber" name="320" href="#320">320</a>         <strong class="jxr_keyword">if</strong> (objectTypeId == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="321" href="#321">321</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IllegalArgumentException(<span class="jxr_string">"Object Type ID is not set!"</span>);
<a class="jxr_linenumber" name="322" href="#322">322</a>         }
<a class="jxr_linenumber" name="323" href="#323">323</a> 
<a class="jxr_linenumber" name="324" href="#324">324</a>         <em class="jxr_comment">// check type</em>
<a class="jxr_linenumber" name="325" href="#325">325</a>         ObjectType type;
<a class="jxr_linenumber" name="326" href="#326">326</a>         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="327" href="#327">327</a>             type = session.getTypeDefinition(objectTypeId);
<a class="jxr_linenumber" name="328" href="#328">328</a>         } <strong class="jxr_keyword">catch</strong> (CmisObjectNotFoundException e) {
<a class="jxr_linenumber" name="329" href="#329">329</a>             addResult(createResult(UNEXPECTED_EXCEPTION,
<a class="jxr_linenumber" name="330" href="#330">330</a>                     <span class="jxr_string">"Folder type '"</span> + objectTypeId + <span class="jxr_string">"' is not available: "</span> + e.getMessage(), e, <strong class="jxr_keyword">true</strong>));
<a class="jxr_linenumber" name="331" href="#331">331</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="332" href="#332">332</a>         }
<a class="jxr_linenumber" name="333" href="#333">333</a> 
<a class="jxr_linenumber" name="334" href="#334">334</a>         <strong class="jxr_keyword">if</strong> (Boolean.FALSE.equals(type.isCreatable())) {
<a class="jxr_linenumber" name="335" href="#335">335</a>             addResult(createResult(SKIPPED, <span class="jxr_string">"Folder type '"</span> + objectTypeId + <span class="jxr_string">"' is not creatable!"</span>, <strong class="jxr_keyword">true</strong>));
<a class="jxr_linenumber" name="336" href="#336">336</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="337" href="#337">337</a>         }
<a class="jxr_linenumber" name="338" href="#338">338</a> 
<a class="jxr_linenumber" name="339" href="#339">339</a>         <em class="jxr_comment">// create</em>
<a class="jxr_linenumber" name="340" href="#340">340</a>         Map&lt;String, Object&gt; properties = <strong class="jxr_keyword">new</strong> HashMap&lt;String, Object&gt;();
<a class="jxr_linenumber" name="341" href="#341">341</a>         properties.put(PropertyIds.NAME, name);
<a class="jxr_linenumber" name="342" href="#342">342</a>         properties.put(PropertyIds.OBJECT_TYPE_ID, objectTypeId);
<a class="jxr_linenumber" name="343" href="#343">343</a> 
<a class="jxr_linenumber" name="344" href="#344">344</a>         Folder result = <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="345" href="#345">345</a>         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="346" href="#346">346</a>             <em class="jxr_comment">// create the folder</em>
<a class="jxr_linenumber" name="347" href="#347">347</a>             result = parent.createFolder(properties, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, SELECT_ALL_NO_CACHE_OC);
<a class="jxr_linenumber" name="348" href="#348">348</a>         } <strong class="jxr_keyword">catch</strong> (CmisBaseException e) {
<a class="jxr_linenumber" name="349" href="#349">349</a>             addResult(createResult(UNEXPECTED_EXCEPTION, <span class="jxr_string">"Folder could not be created! Exception: "</span> + e.getMessage(), e,
<a class="jxr_linenumber" name="350" href="#350">350</a>                     <strong class="jxr_keyword">true</strong>));
<a class="jxr_linenumber" name="351" href="#351">351</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="352" href="#352">352</a>         }
<a class="jxr_linenumber" name="353" href="#353">353</a> 
<a class="jxr_linenumber" name="354" href="#354">354</a>         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="355" href="#355">355</a>             <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> f;
<a class="jxr_linenumber" name="356" href="#356">356</a> 
<a class="jxr_linenumber" name="357" href="#357">357</a>             <em class="jxr_comment">// check folder name</em>
<a class="jxr_linenumber" name="358" href="#358">358</a>             f = createResult(FAILURE, <span class="jxr_string">"Folder name does not match!"</span>, false);
<a class="jxr_linenumber" name="359" href="#359">359</a>             addResult(assertEquals(name, result.getName(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="360" href="#360">360</a> 
<a class="jxr_linenumber" name="361" href="#361">361</a>             <em class="jxr_comment">// check the new folder</em>
<a class="jxr_linenumber" name="362" href="#362">362</a>             String[] propertiesToCheck = <strong class="jxr_keyword">new</strong> String[result.getType().getPropertyDefinitions().size()];
<a class="jxr_linenumber" name="363" href="#363">363</a> 
<a class="jxr_linenumber" name="364" href="#364">364</a>             <strong class="jxr_keyword">int</strong> i = 0;
<a class="jxr_linenumber" name="365" href="#365">365</a>             <strong class="jxr_keyword">for</strong> (String propId : result.getType().getPropertyDefinitions().keySet()) {
<a class="jxr_linenumber" name="366" href="#366">366</a>                 propertiesToCheck[i++] = propId;
<a class="jxr_linenumber" name="367" href="#367">367</a>             }
<a class="jxr_linenumber" name="368" href="#368">368</a> 
<a class="jxr_linenumber" name="369" href="#369">369</a>             addResult(checkObject(session, result, propertiesToCheck, <span class="jxr_string">"New folder object spec compliance"</span>));
<a class="jxr_linenumber" name="370" href="#370">370</a> 
<a class="jxr_linenumber" name="371" href="#371">371</a>             <em class="jxr_comment">// check object parents</em>
<a class="jxr_linenumber" name="372" href="#372">372</a>             List&lt;Folder&gt; objectParents = result.getParents();
<a class="jxr_linenumber" name="373" href="#373">373</a> 
<a class="jxr_linenumber" name="374" href="#374">374</a>             f = createResult(FAILURE, <span class="jxr_string">"Newly created folder has no or more than one parent! ID: "</span> + result.getId(),
<a class="jxr_linenumber" name="375" href="#375">375</a>                     <strong class="jxr_keyword">true</strong>);
<a class="jxr_linenumber" name="376" href="#376">376</a>             addResult(assertEquals(1, objectParents.size(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="377" href="#377">377</a> 
<a class="jxr_linenumber" name="378" href="#378">378</a>             f = createResult(FAILURE,
<a class="jxr_linenumber" name="379" href="#379">379</a>                     <span class="jxr_string">"First object parent of the newly created folder does not match parent! ID: "</span> + result.getId(),
<a class="jxr_linenumber" name="380" href="#380">380</a>                     <strong class="jxr_keyword">true</strong>);
<a class="jxr_linenumber" name="381" href="#381">381</a>             assertShallowEquals(parent, objectParents.get(0), <strong class="jxr_keyword">null</strong>, f);
<a class="jxr_linenumber" name="382" href="#382">382</a> 
<a class="jxr_linenumber" name="383" href="#383">383</a>             <em class="jxr_comment">// check folder parent</em>
<a class="jxr_linenumber" name="384" href="#384">384</a>             Folder folderParent = result.getFolderParent();
<a class="jxr_linenumber" name="385" href="#385">385</a>             f = createResult(FAILURE, <span class="jxr_string">"Newly created folder has no folder parent! ID: "</span> + result.getId(), <strong class="jxr_keyword">true</strong>);
<a class="jxr_linenumber" name="386" href="#386">386</a>             addResult(assertNotNull(folderParent, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="387" href="#387">387</a> 
<a class="jxr_linenumber" name="388" href="#388">388</a>             f = createResult(FAILURE,
<a class="jxr_linenumber" name="389" href="#389">389</a>                     <span class="jxr_string">"Folder parent of the newly created folder does not match parent! ID: "</span> + result.getId(), <strong class="jxr_keyword">true</strong>);
<a class="jxr_linenumber" name="390" href="#390">390</a>             assertShallowEquals(parent, folderParent, <strong class="jxr_keyword">null</strong>, f);
<a class="jxr_linenumber" name="391" href="#391">391</a> 
<a class="jxr_linenumber" name="392" href="#392">392</a>             <em class="jxr_comment">// check children of parent</em>
<a class="jxr_linenumber" name="393" href="#393">393</a>             <strong class="jxr_keyword">boolean</strong> found = false;
<a class="jxr_linenumber" name="394" href="#394">394</a>             <strong class="jxr_keyword">for</strong> (CmisObject child : parent.getChildren(SELECT_ALL_NO_CACHE_OC)) {
<a class="jxr_linenumber" name="395" href="#395">395</a>                 <strong class="jxr_keyword">if</strong> (child == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="396" href="#396">396</a>                     addResult(createResult(FAILURE, <span class="jxr_string">"Parent folder contains a null child!"</span>, <strong class="jxr_keyword">true</strong>));
<a class="jxr_linenumber" name="397" href="#397">397</a>                 } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="398" href="#398">398</a>                     <strong class="jxr_keyword">if</strong> (result.getId().equals(child.getId())) {
<a class="jxr_linenumber" name="399" href="#399">399</a>                         found = <strong class="jxr_keyword">true</strong>;
<a class="jxr_linenumber" name="400" href="#400">400</a> 
<a class="jxr_linenumber" name="401" href="#401">401</a>                         f = createResult(FAILURE, <span class="jxr_string">"Folder and parent child don't match! ID: "</span> + result.getId(), <strong class="jxr_keyword">true</strong>);
<a class="jxr_linenumber" name="402" href="#402">402</a>                         assertShallowEquals(result, child, <strong class="jxr_keyword">null</strong>, f);
<a class="jxr_linenumber" name="403" href="#403">403</a>                         <strong class="jxr_keyword">break</strong>;
<a class="jxr_linenumber" name="404" href="#404">404</a>                     }
<a class="jxr_linenumber" name="405" href="#405">405</a>                 }
<a class="jxr_linenumber" name="406" href="#406">406</a>             }
<a class="jxr_linenumber" name="407" href="#407">407</a> 
<a class="jxr_linenumber" name="408" href="#408">408</a>             <strong class="jxr_keyword">if</strong> (!found) {
<a class="jxr_linenumber" name="409" href="#409">409</a>                 addResult(createResult(FAILURE, <span class="jxr_string">"Folder is not a child of the parent folder! ID: "</span> + result.getId(),
<a class="jxr_linenumber" name="410" href="#410">410</a>                         <strong class="jxr_keyword">true</strong>));
<a class="jxr_linenumber" name="411" href="#411">411</a>             }
<a class="jxr_linenumber" name="412" href="#412">412</a>         } <strong class="jxr_keyword">catch</strong> (CmisBaseException e) {
<a class="jxr_linenumber" name="413" href="#413">413</a>             addResult(createResult(UNEXPECTED_EXCEPTION,
<a class="jxr_linenumber" name="414" href="#414">414</a>                     <span class="jxr_string">"Newly created folder is invalid! Exception: "</span> + e.getMessage(), e, <strong class="jxr_keyword">true</strong>));
<a class="jxr_linenumber" name="415" href="#415">415</a>         }
<a class="jxr_linenumber" name="416" href="#416">416</a> 
<a class="jxr_linenumber" name="417" href="#417">417</a>         <strong class="jxr_keyword">return</strong> result;
<a class="jxr_linenumber" name="418" href="#418">418</a>     }
<a class="jxr_linenumber" name="419" href="#419">419</a> 
<a class="jxr_linenumber" name="420" href="#420">420</a>     <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="421" href="#421">421</a> <em class="jxr_javadoccomment">     * Counts the children in a folder.</em>
<a class="jxr_linenumber" name="422" href="#422">422</a> <em class="jxr_javadoccomment">     */</em>
<a class="jxr_linenumber" name="423" href="#423">423</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">int</strong> countFolderChildren(Folder folder) {
<a class="jxr_linenumber" name="424" href="#424">424</a>         <strong class="jxr_keyword">int</strong> count = 0;
<a class="jxr_linenumber" name="425" href="#425">425</a> 
<a class="jxr_linenumber" name="426" href="#426">426</a>         <strong class="jxr_keyword">for</strong> (@SuppressWarnings(<span class="jxr_string">"unused"</span>)
<a class="jxr_linenumber" name="427" href="#427">427</a>         CmisObject object : folder.getChildren()) {
<a class="jxr_linenumber" name="428" href="#428">428</a>             count++;
<a class="jxr_linenumber" name="429" href="#429">429</a>         }
<a class="jxr_linenumber" name="430" href="#430">430</a> 
<a class="jxr_linenumber" name="431" href="#431">431</a>         <strong class="jxr_keyword">return</strong> count;
<a class="jxr_linenumber" name="432" href="#432">432</a>     }
<a class="jxr_linenumber" name="433" href="#433">433</a> 
<a class="jxr_linenumber" name="434" href="#434">434</a>     <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="435" href="#435">435</a> <em class="jxr_javadoccomment">     * Creates a document.</em>
<a class="jxr_linenumber" name="436" href="#436">436</a> <em class="jxr_javadoccomment">     */</em>
<a class="jxr_linenumber" name="437" href="#437">437</a>     <strong class="jxr_keyword">protected</strong> Document createDocument(Session session, Folder parent, String name, String content) {
<a class="jxr_linenumber" name="438" href="#438">438</a>         <strong class="jxr_keyword">return</strong> createDocument(session, parent, name, getDocumentTestTypeId(), <strong class="jxr_keyword">null</strong>, content);
<a class="jxr_linenumber" name="439" href="#439">439</a>     }
<a class="jxr_linenumber" name="440" href="#440">440</a> 
<a class="jxr_linenumber" name="441" href="#441">441</a>     <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="442" href="#442">442</a> <em class="jxr_javadoccomment">     * Creates a document.</em>
<a class="jxr_linenumber" name="443" href="#443">443</a> <em class="jxr_javadoccomment">     */</em>
<a class="jxr_linenumber" name="444" href="#444">444</a>     <strong class="jxr_keyword">protected</strong> Document createDocument(Session session, Folder parent, String name, String objectTypeId,
<a class="jxr_linenumber" name="445" href="#445">445</a>             String[] secondaryTypeIds, String content) {
<a class="jxr_linenumber" name="446" href="#446">446</a>         <strong class="jxr_keyword">if</strong> (parent == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="447" href="#447">447</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IllegalArgumentException(<span class="jxr_string">"Parent is not set!"</span>);
<a class="jxr_linenumber" name="448" href="#448">448</a>         }
<a class="jxr_linenumber" name="449" href="#449">449</a>         <strong class="jxr_keyword">if</strong> (name == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="450" href="#450">450</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IllegalArgumentException(<span class="jxr_string">"Name is not set!"</span>);
<a class="jxr_linenumber" name="451" href="#451">451</a>         }
<a class="jxr_linenumber" name="452" href="#452">452</a>         <strong class="jxr_keyword">if</strong> (objectTypeId == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="453" href="#453">453</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IllegalArgumentException(<span class="jxr_string">"Object Type ID is not set!"</span>);
<a class="jxr_linenumber" name="454" href="#454">454</a>         }
<a class="jxr_linenumber" name="455" href="#455">455</a> 
<a class="jxr_linenumber" name="456" href="#456">456</a>         <strong class="jxr_keyword">if</strong> (content == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="457" href="#457">457</a>             content = <span class="jxr_string">""</span>;
<a class="jxr_linenumber" name="458" href="#458">458</a>         }
<a class="jxr_linenumber" name="459" href="#459">459</a> 
<a class="jxr_linenumber" name="460" href="#460">460</a>         <em class="jxr_comment">// check type</em>
<a class="jxr_linenumber" name="461" href="#461">461</a>         ObjectType type;
<a class="jxr_linenumber" name="462" href="#462">462</a>         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="463" href="#463">463</a>             type = session.getTypeDefinition(objectTypeId);
<a class="jxr_linenumber" name="464" href="#464">464</a>         } <strong class="jxr_keyword">catch</strong> (CmisObjectNotFoundException e) {
<a class="jxr_linenumber" name="465" href="#465">465</a>             addResult(createResult(UNEXPECTED_EXCEPTION,
<a class="jxr_linenumber" name="466" href="#466">466</a>                     <span class="jxr_string">"Document type '"</span> + objectTypeId + <span class="jxr_string">"' is not available: "</span> + e.getMessage(), e, <strong class="jxr_keyword">true</strong>));
<a class="jxr_linenumber" name="467" href="#467">467</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="468" href="#468">468</a>         }
<a class="jxr_linenumber" name="469" href="#469">469</a> 
<a class="jxr_linenumber" name="470" href="#470">470</a>         <strong class="jxr_keyword">if</strong> (Boolean.FALSE.equals(type.isCreatable())) {
<a class="jxr_linenumber" name="471" href="#471">471</a>             addResult(createResult(SKIPPED, <span class="jxr_string">"Document type '"</span> + objectTypeId + <span class="jxr_string">"' is not creatable!"</span>, <strong class="jxr_keyword">true</strong>));
<a class="jxr_linenumber" name="472" href="#472">472</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="473" href="#473">473</a>         }
<a class="jxr_linenumber" name="474" href="#474">474</a> 
<a class="jxr_linenumber" name="475" href="#475">475</a>         <em class="jxr_comment">// create</em>
<a class="jxr_linenumber" name="476" href="#476">476</a>         Map&lt;String, Object&gt; properties = <strong class="jxr_keyword">new</strong> HashMap&lt;String, Object&gt;();
<a class="jxr_linenumber" name="477" href="#477">477</a>         properties.put(PropertyIds.NAME, name);
<a class="jxr_linenumber" name="478" href="#478">478</a>         properties.put(PropertyIds.OBJECT_TYPE_ID, objectTypeId);
<a class="jxr_linenumber" name="479" href="#479">479</a> 
<a class="jxr_linenumber" name="480" href="#480">480</a>         <strong class="jxr_keyword">if</strong> (secondaryTypeIds != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="481" href="#481">481</a>             properties.put(PropertyIds.SECONDARY_OBJECT_TYPE_IDS, Arrays.asList(secondaryTypeIds));
<a class="jxr_linenumber" name="482" href="#482">482</a>         }
<a class="jxr_linenumber" name="483" href="#483">483</a> 
<a class="jxr_linenumber" name="484" href="#484">484</a>         type = session.getTypeDefinition(objectTypeId);
<a class="jxr_linenumber" name="485" href="#485">485</a>         <strong class="jxr_keyword">if</strong> (!(type instanceof DocumentTypeDefinition)) {
<a class="jxr_linenumber" name="486" href="#486">486</a>             addResult(createResult(FAILURE, <span class="jxr_string">"Type is not a document type! Type: "</span> + objectTypeId, <strong class="jxr_keyword">true</strong>));
<a class="jxr_linenumber" name="487" href="#487">487</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="488" href="#488">488</a>         }
<a class="jxr_linenumber" name="489" href="#489">489</a> 
<a class="jxr_linenumber" name="490" href="#490">490</a>         DocumentTypeDefinition docType = (DocumentTypeDefinition) type;
<a class="jxr_linenumber" name="491" href="#491">491</a>         VersioningState versioningState = (Boolean.TRUE.equals(docType.isVersionable()) ? VersioningState.MAJOR
<a class="jxr_linenumber" name="492" href="#492">492</a>                 : VersioningState.NONE);
<a class="jxr_linenumber" name="493" href="#493">493</a> 
<a class="jxr_linenumber" name="494" href="#494">494</a>         byte[] contentBytes = <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="495" href="#495">495</a>         Document result = <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="496" href="#496">496</a>         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="497" href="#497">497</a>             contentBytes = IOUtils.toUTF8Bytes(content);
<a class="jxr_linenumber" name="498" href="#498">498</a>             ContentStream contentStream = <strong class="jxr_keyword">new</strong> ContentStreamImpl(name, BigInteger.valueOf(contentBytes.length),
<a class="jxr_linenumber" name="499" href="#499">499</a>                     <span class="jxr_string">"text/plain"</span>, <strong class="jxr_keyword">new</strong> ByteArrayInputStream(contentBytes));
<a class="jxr_linenumber" name="500" href="#500">500</a> 
<a class="jxr_linenumber" name="501" href="#501">501</a>             <em class="jxr_comment">// create the document</em>
<a class="jxr_linenumber" name="502" href="#502">502</a>             result = parent.createDocument(properties, contentStream, versioningState, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>,
<a class="jxr_linenumber" name="503" href="#503">503</a>                     SELECT_ALL_NO_CACHE_OC);
<a class="jxr_linenumber" name="504" href="#504">504</a> 
<a class="jxr_linenumber" name="505" href="#505">505</a>             contentStream.getStream().close();
<a class="jxr_linenumber" name="506" href="#506">506</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a class="jxr_linenumber" name="507" href="#507">507</a>             addResult(createResult(UNEXPECTED_EXCEPTION, <span class="jxr_string">"Document could not be created! Exception: "</span> + e.getMessage(),
<a class="jxr_linenumber" name="508" href="#508">508</a>                     e, <strong class="jxr_keyword">true</strong>));
<a class="jxr_linenumber" name="509" href="#509">509</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="510" href="#510">510</a>         }
<a class="jxr_linenumber" name="511" href="#511">511</a> 
<a class="jxr_linenumber" name="512" href="#512">512</a>         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="513" href="#513">513</a>             <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> f;
<a class="jxr_linenumber" name="514" href="#514">514</a> 
<a class="jxr_linenumber" name="515" href="#515">515</a>             <em class="jxr_comment">// check document name</em>
<a class="jxr_linenumber" name="516" href="#516">516</a>             f = createResult(FAILURE, <span class="jxr_string">"Document name does not match!"</span>);
<a class="jxr_linenumber" name="517" href="#517">517</a>             addResult(assertEquals(name, result.getName(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="518" href="#518">518</a> 
<a class="jxr_linenumber" name="519" href="#519">519</a>             <em class="jxr_comment">// check content length</em>
<a class="jxr_linenumber" name="520" href="#520">520</a>             f = createResult(WARNING, <span class="jxr_string">"Content length does not match!"</span>);
<a class="jxr_linenumber" name="521" href="#521">521</a>             addResult(assertEquals((<strong class="jxr_keyword">long</strong>) contentBytes.length, result.getContentStreamLength(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="522" href="#522">522</a> 
<a class="jxr_linenumber" name="523" href="#523">523</a>             <em class="jxr_comment">// check hash property</em>
<a class="jxr_linenumber" name="524" href="#524">524</a>             List&lt;ContentStreamHash&gt; hashes = result.getContentStreamHashes();
<a class="jxr_linenumber" name="525" href="#525">525</a>             <strong class="jxr_keyword">if</strong> (docType.getPropertyDefinitions() != <strong class="jxr_keyword">null</strong>
<a class="jxr_linenumber" name="526" href="#526">526</a>                     &amp;&amp; docType.getPropertyDefinitions().containsKey(PropertyIds.CONTENT_STREAM_HASH)) {
<a class="jxr_linenumber" name="527" href="#527">527</a>                 f = createResult(WARNING,
<a class="jxr_linenumber" name="528" href="#528">528</a>                         <span class="jxr_string">"Document type provides the cmis:contentStreamHash property, but there is no value for the test document."</span>);
<a class="jxr_linenumber" name="529" href="#529">529</a>                 addResult(assertNotNull(hashes, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="530" href="#530">530</a>             }
<a class="jxr_linenumber" name="531" href="#531">531</a> 
<a class="jxr_linenumber" name="532" href="#532">532</a>             <em class="jxr_comment">// check the new document</em>
<a class="jxr_linenumber" name="533" href="#533">533</a>             addResult(checkObject(session, result, getAllProperties(result), <span class="jxr_string">"New document object spec compliance"</span>));
<a class="jxr_linenumber" name="534" href="#534">534</a> 
<a class="jxr_linenumber" name="535" href="#535">535</a>             <em class="jxr_comment">// check content</em>
<a class="jxr_linenumber" name="536" href="#536">536</a>             <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="537" href="#537">537</a>                 ContentStream contentStream = result.getContentStream();
<a class="jxr_linenumber" name="538" href="#538">538</a> 
<a class="jxr_linenumber" name="539" href="#539">539</a>                 f = createResult(WARNING, <span class="jxr_string">"Document filename and the filename of the content stream do not match!"</span>);
<a class="jxr_linenumber" name="540" href="#540">540</a>                 addResult(assertEquals(name, contentStream.getFileName(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="541" href="#541">541</a> 
<a class="jxr_linenumber" name="542" href="#542">542</a>                 f = createResult(WARNING,
<a class="jxr_linenumber" name="543" href="#543">543</a>                         <span class="jxr_string">"cmis:contentStreamFileName and the filename of the content stream do not match!"</span>);
<a class="jxr_linenumber" name="544" href="#544">544</a>                 addResult(assertEquals(result.getContentStreamFileName(), contentStream.getFileName(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="545" href="#545">545</a> 
<a class="jxr_linenumber" name="546" href="#546">546</a>                 String fetchedContent = getStringFromContentStream(result.getContentStream());
<a class="jxr_linenumber" name="547" href="#547">547</a>                 <strong class="jxr_keyword">if</strong> (!content.equals(fetchedContent)) {
<a class="jxr_linenumber" name="548" href="#548">548</a>                     addResult(createResult(FAILURE,
<a class="jxr_linenumber" name="549" href="#549">549</a>                             <span class="jxr_string">"Content of newly created document doesn't match the orign content!"</span>));
<a class="jxr_linenumber" name="550" href="#550">550</a>                 }
<a class="jxr_linenumber" name="551" href="#551">551</a> 
<a class="jxr_linenumber" name="552" href="#552">552</a>                 <em class="jxr_comment">// check hashes</em>
<a class="jxr_linenumber" name="553" href="#553">553</a>                 <strong class="jxr_keyword">if</strong> (hashes != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="554" href="#554">554</a>                     <strong class="jxr_keyword">for</strong> (ContentStreamHash hash : hashes) {
<a class="jxr_linenumber" name="555" href="#555">555</a>                         <strong class="jxr_keyword">if</strong> (hash.getAlgorithm() == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="556" href="#556">556</a>                             addResult(createResult(FAILURE,
<a class="jxr_linenumber" name="557" href="#557">557</a>                                     <span class="jxr_string">"This content stream hash is invalid: "</span> + hash.getPropertyValue()));
<a class="jxr_linenumber" name="558" href="#558">558</a>                         } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="559" href="#559">559</a>                             InputStream stream = <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="560" href="#560">560</a>                             <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="561" href="#561">561</a>                                 stream = <strong class="jxr_keyword">new</strong> ByteArrayInputStream(IOUtils.toUTF8Bytes(content));
<a class="jxr_linenumber" name="562" href="#562">562</a>                                 List&lt;ContentStreamHash&gt; testHash = ContentStreamHashImpl
<a class="jxr_linenumber" name="563" href="#563">563</a>                                         .createContentStreamHashes(stream, hash.getAlgorithm());
<a class="jxr_linenumber" name="564" href="#564">564</a> 
<a class="jxr_linenumber" name="565" href="#565">565</a>                                 f = createResult(CmisTestResultStatus.FAILURE,
<a class="jxr_linenumber" name="566" href="#566">566</a>                                         <span class="jxr_string">"This content stream hash is wrong: "</span> + hash.getPropertyValue());
<a class="jxr_linenumber" name="567" href="#567">567</a>                                 addResult(assertEquals(testHash.get(0).getHash(), hash.getHash(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="568" href="#568">568</a>                             } <strong class="jxr_keyword">catch</strong> (NoSuchAlgorithmException e) {
<a class="jxr_linenumber" name="569" href="#569">569</a>                                 <em class="jxr_comment">// we don't know this algorithm - that's ok</em>
<a class="jxr_linenumber" name="570" href="#570">570</a>                             } <strong class="jxr_keyword">finally</strong> {
<a class="jxr_linenumber" name="571" href="#571">571</a>                                 IOUtils.closeQuietly(stream);
<a class="jxr_linenumber" name="572" href="#572">572</a>                             }
<a class="jxr_linenumber" name="573" href="#573">573</a>                         }
<a class="jxr_linenumber" name="574" href="#574">574</a>                     }
<a class="jxr_linenumber" name="575" href="#575">575</a>                 }
<a class="jxr_linenumber" name="576" href="#576">576</a>             } <strong class="jxr_keyword">catch</strong> (IOException e) {
<a class="jxr_linenumber" name="577" href="#577">577</a>                 addResult(createResult(UNEXPECTED_EXCEPTION,
<a class="jxr_linenumber" name="578" href="#578">578</a>                         <span class="jxr_string">"Content of newly created document couldn't be read! Exception: "</span> + e.getMessage(), e, <strong class="jxr_keyword">true</strong>));
<a class="jxr_linenumber" name="579" href="#579">579</a>             }
<a class="jxr_linenumber" name="580" href="#580">580</a>         } <strong class="jxr_keyword">catch</strong> (CmisBaseException e) {
<a class="jxr_linenumber" name="581" href="#581">581</a>             addResult(createResult(UNEXPECTED_EXCEPTION,
<a class="jxr_linenumber" name="582" href="#582">582</a>                     <span class="jxr_string">"Newly created document is invalid! Exception: "</span> + e.getMessage(), e, <strong class="jxr_keyword">true</strong>));
<a class="jxr_linenumber" name="583" href="#583">583</a>         }
<a class="jxr_linenumber" name="584" href="#584">584</a> 
<a class="jxr_linenumber" name="585" href="#585">585</a>         <em class="jxr_comment">// check parents</em>
<a class="jxr_linenumber" name="586" href="#586">586</a>         List&lt;Folder&gt; parents = result.getParents(SELECT_ALL_NO_CACHE_OC);
<a class="jxr_linenumber" name="587" href="#587">587</a>         <strong class="jxr_keyword">boolean</strong> found = false;
<a class="jxr_linenumber" name="588" href="#588">588</a>         <strong class="jxr_keyword">for</strong> (Folder folder : parents) {
<a class="jxr_linenumber" name="589" href="#589">589</a>             <strong class="jxr_keyword">if</strong> (parent.getId().equals(folder.getId())) {
<a class="jxr_linenumber" name="590" href="#590">590</a>                 found = <strong class="jxr_keyword">true</strong>;
<a class="jxr_linenumber" name="591" href="#591">591</a>                 <strong class="jxr_keyword">break</strong>;
<a class="jxr_linenumber" name="592" href="#592">592</a>             }
<a class="jxr_linenumber" name="593" href="#593">593</a>         }
<a class="jxr_linenumber" name="594" href="#594">594</a> 
<a class="jxr_linenumber" name="595" href="#595">595</a>         <strong class="jxr_keyword">if</strong> (!found) {
<a class="jxr_linenumber" name="596" href="#596">596</a>             addResult(createResult(FAILURE,
<a class="jxr_linenumber" name="597" href="#597">597</a>                     <span class="jxr_string">"The folder the document has been created in is not in the list of the document parents!"</span>));
<a class="jxr_linenumber" name="598" href="#598">598</a>         }
<a class="jxr_linenumber" name="599" href="#599">599</a> 
<a class="jxr_linenumber" name="600" href="#600">600</a>         <strong class="jxr_keyword">return</strong> result;
<a class="jxr_linenumber" name="601" href="#601">601</a>     }
<a class="jxr_linenumber" name="602" href="#602">602</a> 
<a class="jxr_linenumber" name="603" href="#603">603</a>     <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="604" href="#604">604</a> <em class="jxr_javadoccomment">     * Creates a relationship.</em>
<a class="jxr_linenumber" name="605" href="#605">605</a> <em class="jxr_javadoccomment">     */</em>
<a class="jxr_linenumber" name="606" href="#606">606</a>     <strong class="jxr_keyword">protected</strong> Relationship createRelationship(Session session, String name, ObjectId source, ObjectId target) {
<a class="jxr_linenumber" name="607" href="#607">607</a>         String objectTypeId = getRelationshipTestTypeId();
<a class="jxr_linenumber" name="608" href="#608">608</a>         <strong class="jxr_keyword">return</strong> createRelationship(session, name, source, target, objectTypeId);
<a class="jxr_linenumber" name="609" href="#609">609</a>     }
<a class="jxr_linenumber" name="610" href="#610">610</a> 
<a class="jxr_linenumber" name="611" href="#611">611</a>     <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="612" href="#612">612</a> <em class="jxr_javadoccomment">     * Creates a relationship.</em>
<a class="jxr_linenumber" name="613" href="#613">613</a> <em class="jxr_javadoccomment">     */</em>
<a class="jxr_linenumber" name="614" href="#614">614</a>     <strong class="jxr_keyword">protected</strong> Relationship createRelationship(Session session, String name, ObjectId source, ObjectId target,
<a class="jxr_linenumber" name="615" href="#615">615</a>             String objectTypeId) {
<a class="jxr_linenumber" name="616" href="#616">616</a>         <strong class="jxr_keyword">if</strong> (name == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="617" href="#617">617</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IllegalArgumentException(<span class="jxr_string">"Name is not set!"</span>);
<a class="jxr_linenumber" name="618" href="#618">618</a>         }
<a class="jxr_linenumber" name="619" href="#619">619</a>         <strong class="jxr_keyword">if</strong> (objectTypeId == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="620" href="#620">620</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IllegalArgumentException(<span class="jxr_string">"Object Type ID is not set!"</span>);
<a class="jxr_linenumber" name="621" href="#621">621</a>         }
<a class="jxr_linenumber" name="622" href="#622">622</a> 
<a class="jxr_linenumber" name="623" href="#623">623</a>         <em class="jxr_comment">// check type</em>
<a class="jxr_linenumber" name="624" href="#624">624</a>         ObjectType type;
<a class="jxr_linenumber" name="625" href="#625">625</a>         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="626" href="#626">626</a>             type = session.getTypeDefinition(objectTypeId);
<a class="jxr_linenumber" name="627" href="#627">627</a>         } <strong class="jxr_keyword">catch</strong> (CmisObjectNotFoundException e) {
<a class="jxr_linenumber" name="628" href="#628">628</a>             addResult(createResult(UNEXPECTED_EXCEPTION,
<a class="jxr_linenumber" name="629" href="#629">629</a>                     <span class="jxr_string">"Relationship type '"</span> + objectTypeId + <span class="jxr_string">"' is not available: "</span> + e.getMessage(), e, <strong class="jxr_keyword">true</strong>));
<a class="jxr_linenumber" name="630" href="#630">630</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="631" href="#631">631</a>         }
<a class="jxr_linenumber" name="632" href="#632">632</a> 
<a class="jxr_linenumber" name="633" href="#633">633</a>         <strong class="jxr_keyword">if</strong> (Boolean.FALSE.equals(type.isCreatable())) {
<a class="jxr_linenumber" name="634" href="#634">634</a>             addResult(createResult(SKIPPED, <span class="jxr_string">"Relationship type '"</span> + objectTypeId + <span class="jxr_string">"' is not creatable!"</span>, <strong class="jxr_keyword">true</strong>));
<a class="jxr_linenumber" name="635" href="#635">635</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="636" href="#636">636</a>         }
<a class="jxr_linenumber" name="637" href="#637">637</a> 
<a class="jxr_linenumber" name="638" href="#638">638</a>         <em class="jxr_comment">// create</em>
<a class="jxr_linenumber" name="639" href="#639">639</a>         Map&lt;String, Object&gt; properties = <strong class="jxr_keyword">new</strong> HashMap&lt;String, Object&gt;();
<a class="jxr_linenumber" name="640" href="#640">640</a>         properties.put(PropertyIds.NAME, name);
<a class="jxr_linenumber" name="641" href="#641">641</a>         properties.put(PropertyIds.OBJECT_TYPE_ID, objectTypeId);
<a class="jxr_linenumber" name="642" href="#642">642</a>         properties.put(PropertyIds.SOURCE_ID, source.getId());
<a class="jxr_linenumber" name="643" href="#643">643</a>         properties.put(PropertyIds.TARGET_ID, target.getId());
<a class="jxr_linenumber" name="644" href="#644">644</a> 
<a class="jxr_linenumber" name="645" href="#645">645</a>         ObjectId relId;
<a class="jxr_linenumber" name="646" href="#646">646</a>         Relationship result = <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="647" href="#647">647</a> 
<a class="jxr_linenumber" name="648" href="#648">648</a>         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="649" href="#649">649</a>             relId = session.createRelationship(properties);
<a class="jxr_linenumber" name="650" href="#650">650</a>             result = (Relationship) session.getObject(relId, SELECT_ALL_NO_CACHE_OC);
<a class="jxr_linenumber" name="651" href="#651">651</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a class="jxr_linenumber" name="652" href="#652">652</a>             addResult(createResult(UNEXPECTED_EXCEPTION,
<a class="jxr_linenumber" name="653" href="#653">653</a>                     <span class="jxr_string">"Relationship could not be created! Exception: "</span> + e.getMessage(), e, <strong class="jxr_keyword">true</strong>));
<a class="jxr_linenumber" name="654" href="#654">654</a>         }
<a class="jxr_linenumber" name="655" href="#655">655</a> 
<a class="jxr_linenumber" name="656" href="#656">656</a>         <strong class="jxr_keyword">if</strong> (result != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="657" href="#657">657</a>             <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="658" href="#658">658</a>                 <em class="jxr_comment">// check the new relationship</em>
<a class="jxr_linenumber" name="659" href="#659">659</a>                 addResult(
<a class="jxr_linenumber" name="660" href="#660">660</a>                         checkObject(session, result, getAllProperties(result), <span class="jxr_string">"New document object spec compliance"</span>));
<a class="jxr_linenumber" name="661" href="#661">661</a>             } <strong class="jxr_keyword">catch</strong> (CmisBaseException e) {
<a class="jxr_linenumber" name="662" href="#662">662</a>                 addResult(createResult(UNEXPECTED_EXCEPTION,
<a class="jxr_linenumber" name="663" href="#663">663</a>                         <span class="jxr_string">"Newly created document is invalid! Exception: "</span> + e.getMessage(), e, <strong class="jxr_keyword">true</strong>));
<a class="jxr_linenumber" name="664" href="#664">664</a>             }
<a class="jxr_linenumber" name="665" href="#665">665</a>         }
<a class="jxr_linenumber" name="666" href="#666">666</a> 
<a class="jxr_linenumber" name="667" href="#667">667</a>         <strong class="jxr_keyword">return</strong> result;
<a class="jxr_linenumber" name="668" href="#668">668</a>     }
<a class="jxr_linenumber" name="669" href="#669">669</a> 
<a class="jxr_linenumber" name="670" href="#670">670</a>     <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="671" href="#671">671</a> <em class="jxr_javadoccomment">     * Creates a policy.</em>
<a class="jxr_linenumber" name="672" href="#672">672</a> <em class="jxr_javadoccomment">     */</em>
<a class="jxr_linenumber" name="673" href="#673">673</a>     <strong class="jxr_keyword">protected</strong> Policy createPolicy(Session session, Folder parent, String name, String policyText) {
<a class="jxr_linenumber" name="674" href="#674">674</a>         <strong class="jxr_keyword">return</strong> createPolicy(session, parent, name, policyText, getPolicyTestTypeId());
<a class="jxr_linenumber" name="675" href="#675">675</a>     }
<a class="jxr_linenumber" name="676" href="#676">676</a> 
<a class="jxr_linenumber" name="677" href="#677">677</a>     <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="678" href="#678">678</a> <em class="jxr_javadoccomment">     * Creates a policy.</em>
<a class="jxr_linenumber" name="679" href="#679">679</a> <em class="jxr_javadoccomment">     */</em>
<a class="jxr_linenumber" name="680" href="#680">680</a>     <strong class="jxr_keyword">protected</strong> Policy createPolicy(Session session, Folder parent, String name, String policyText, String objectTypeId) {
<a class="jxr_linenumber" name="681" href="#681">681</a>         <strong class="jxr_keyword">if</strong> (parent == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="682" href="#682">682</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IllegalArgumentException(<span class="jxr_string">"Parent is not set!"</span>);
<a class="jxr_linenumber" name="683" href="#683">683</a>         }
<a class="jxr_linenumber" name="684" href="#684">684</a>         <strong class="jxr_keyword">if</strong> (name == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="685" href="#685">685</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IllegalArgumentException(<span class="jxr_string">"Name is not set!"</span>);
<a class="jxr_linenumber" name="686" href="#686">686</a>         }
<a class="jxr_linenumber" name="687" href="#687">687</a>         <strong class="jxr_keyword">if</strong> (objectTypeId == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="688" href="#688">688</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IllegalArgumentException(<span class="jxr_string">"Object Type ID is not set!"</span>);
<a class="jxr_linenumber" name="689" href="#689">689</a>         }
<a class="jxr_linenumber" name="690" href="#690">690</a> 
<a class="jxr_linenumber" name="691" href="#691">691</a>         <em class="jxr_comment">// check type</em>
<a class="jxr_linenumber" name="692" href="#692">692</a>         ObjectType type;
<a class="jxr_linenumber" name="693" href="#693">693</a>         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="694" href="#694">694</a>             type = session.getTypeDefinition(objectTypeId);
<a class="jxr_linenumber" name="695" href="#695">695</a>         } <strong class="jxr_keyword">catch</strong> (CmisObjectNotFoundException e) {
<a class="jxr_linenumber" name="696" href="#696">696</a>             addResult(createResult(UNEXPECTED_EXCEPTION,
<a class="jxr_linenumber" name="697" href="#697">697</a>                     <span class="jxr_string">"Policy type '"</span> + objectTypeId + <span class="jxr_string">"' is not available: "</span> + e.getMessage(), e, <strong class="jxr_keyword">true</strong>));
<a class="jxr_linenumber" name="698" href="#698">698</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="699" href="#699">699</a>         }
<a class="jxr_linenumber" name="700" href="#700">700</a> 
<a class="jxr_linenumber" name="701" href="#701">701</a>         <strong class="jxr_keyword">if</strong> (Boolean.FALSE.equals(type.isCreatable())) {
<a class="jxr_linenumber" name="702" href="#702">702</a>             addResult(createResult(SKIPPED, <span class="jxr_string">"Policy type '"</span> + objectTypeId + <span class="jxr_string">"' is not creatable!"</span>, <strong class="jxr_keyword">true</strong>));
<a class="jxr_linenumber" name="703" href="#703">703</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="704" href="#704">704</a>         }
<a class="jxr_linenumber" name="705" href="#705">705</a> 
<a class="jxr_linenumber" name="706" href="#706">706</a>         <strong class="jxr_keyword">boolean</strong> isFilable = Boolean.TRUE.equals(type.isFileable());
<a class="jxr_linenumber" name="707" href="#707">707</a> 
<a class="jxr_linenumber" name="708" href="#708">708</a>         addResult(
<a class="jxr_linenumber" name="709" href="#709">709</a>                 createResult(INFO, <span class="jxr_string">"Policy type '"</span> + objectTypeId + <span class="jxr_string">"' is "</span> + (isFilable ? <span class="jxr_string">""</span> : <span class="jxr_string">"not "</span>) + <span class="jxr_string">"filable."</span>));
<a class="jxr_linenumber" name="710" href="#710">710</a> 
<a class="jxr_linenumber" name="711" href="#711">711</a>         <em class="jxr_comment">// create</em>
<a class="jxr_linenumber" name="712" href="#712">712</a>         Map&lt;String, Object&gt; properties = <strong class="jxr_keyword">new</strong> HashMap&lt;String, Object&gt;();
<a class="jxr_linenumber" name="713" href="#713">713</a>         properties.put(PropertyIds.NAME, name);
<a class="jxr_linenumber" name="714" href="#714">714</a>         properties.put(PropertyIds.OBJECT_TYPE_ID, objectTypeId);
<a class="jxr_linenumber" name="715" href="#715">715</a>         <strong class="jxr_keyword">if</strong> (policyText != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="716" href="#716">716</a>             properties.put(PropertyIds.POLICY_TEXT, policyText);
<a class="jxr_linenumber" name="717" href="#717">717</a>         }
<a class="jxr_linenumber" name="718" href="#718">718</a> 
<a class="jxr_linenumber" name="719" href="#719">719</a>         Policy result = <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="720" href="#720">720</a>         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="721" href="#721">721</a>             <em class="jxr_comment">// create the item</em>
<a class="jxr_linenumber" name="722" href="#722">722</a>             <strong class="jxr_keyword">if</strong> (isFilable) {
<a class="jxr_linenumber" name="723" href="#723">723</a>                 result = parent.createPolicy(properties, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, SELECT_ALL_NO_CACHE_OC);
<a class="jxr_linenumber" name="724" href="#724">724</a>             } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="725" href="#725">725</a>                 ObjectId policyId = session.createPolicy(properties, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="726" href="#726">726</a>                 result = (Policy) session.getObject(policyId, SELECT_ALL_NO_CACHE_OC);
<a class="jxr_linenumber" name="727" href="#727">727</a>             }
<a class="jxr_linenumber" name="728" href="#728">728</a>         } <strong class="jxr_keyword">catch</strong> (CmisBaseException e) {
<a class="jxr_linenumber" name="729" href="#729">729</a>             addResult(createResult(UNEXPECTED_EXCEPTION, <span class="jxr_string">"Policy could not be created! Exception: "</span> + e.getMessage(), e,
<a class="jxr_linenumber" name="730" href="#730">730</a>                     <strong class="jxr_keyword">true</strong>));
<a class="jxr_linenumber" name="731" href="#731">731</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="732" href="#732">732</a>         }
<a class="jxr_linenumber" name="733" href="#733">733</a> 
<a class="jxr_linenumber" name="734" href="#734">734</a>         <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> f;
<a class="jxr_linenumber" name="735" href="#735">735</a>         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="736" href="#736">736</a>             <em class="jxr_comment">// check item name</em>
<a class="jxr_linenumber" name="737" href="#737">737</a>             f = createResult(FAILURE, <span class="jxr_string">"Policy name does not match!"</span>, false);
<a class="jxr_linenumber" name="738" href="#738">738</a>             addResult(assertEquals(name, result.getName(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="739" href="#739">739</a> 
<a class="jxr_linenumber" name="740" href="#740">740</a>             addResult(checkObject(session, result, getAllProperties(result), <span class="jxr_string">"New policy object spec compliance"</span>));
<a class="jxr_linenumber" name="741" href="#741">741</a>         } <strong class="jxr_keyword">catch</strong> (CmisBaseException e) {
<a class="jxr_linenumber" name="742" href="#742">742</a>             addResult(createResult(UNEXPECTED_EXCEPTION,
<a class="jxr_linenumber" name="743" href="#743">743</a>                     <span class="jxr_string">"Newly created policy is invalid! Exception: "</span> + e.getMessage(), e, <strong class="jxr_keyword">true</strong>));
<a class="jxr_linenumber" name="744" href="#744">744</a>         }
<a class="jxr_linenumber" name="745" href="#745">745</a> 
<a class="jxr_linenumber" name="746" href="#746">746</a>         <em class="jxr_comment">// check parents</em>
<a class="jxr_linenumber" name="747" href="#747">747</a>         List&lt;Folder&gt; parents = result.getParents(SELECT_ALL_NO_CACHE_OC);
<a class="jxr_linenumber" name="748" href="#748">748</a> 
<a class="jxr_linenumber" name="749" href="#749">749</a>         <strong class="jxr_keyword">if</strong> (isFilable) {
<a class="jxr_linenumber" name="750" href="#750">750</a>             <strong class="jxr_keyword">boolean</strong> found = false;
<a class="jxr_linenumber" name="751" href="#751">751</a>             <strong class="jxr_keyword">for</strong> (Folder folder : parents) {
<a class="jxr_linenumber" name="752" href="#752">752</a>                 <strong class="jxr_keyword">if</strong> (parent.getId().equals(folder.getId())) {
<a class="jxr_linenumber" name="753" href="#753">753</a>                     found = <strong class="jxr_keyword">true</strong>;
<a class="jxr_linenumber" name="754" href="#754">754</a>                     <strong class="jxr_keyword">break</strong>;
<a class="jxr_linenumber" name="755" href="#755">755</a>                 }
<a class="jxr_linenumber" name="756" href="#756">756</a>             }
<a class="jxr_linenumber" name="757" href="#757">757</a> 
<a class="jxr_linenumber" name="758" href="#758">758</a>             <strong class="jxr_keyword">if</strong> (!found) {
<a class="jxr_linenumber" name="759" href="#759">759</a>                 addResult(createResult(FAILURE,
<a class="jxr_linenumber" name="760" href="#760">760</a>                         <span class="jxr_string">"The folder the item has been created in is not in the list of the item parents!"</span>));
<a class="jxr_linenumber" name="761" href="#761">761</a>             }
<a class="jxr_linenumber" name="762" href="#762">762</a>         } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="763" href="#763">763</a>             f = createResult(FAILURE, <span class="jxr_string">"Policy is not filable but has a parent!"</span>, false);
<a class="jxr_linenumber" name="764" href="#764">764</a>             addResult(assertIsTrue(parents.isEmpty(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="765" href="#765">765</a>         }
<a class="jxr_linenumber" name="766" href="#766">766</a> 
<a class="jxr_linenumber" name="767" href="#767">767</a>         <strong class="jxr_keyword">return</strong> result;
<a class="jxr_linenumber" name="768" href="#768">768</a>     }
<a class="jxr_linenumber" name="769" href="#769">769</a> 
<a class="jxr_linenumber" name="770" href="#770">770</a>     <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="771" href="#771">771</a> <em class="jxr_javadoccomment">     * Creates a item.</em>
<a class="jxr_linenumber" name="772" href="#772">772</a> <em class="jxr_javadoccomment">     */</em>
<a class="jxr_linenumber" name="773" href="#773">773</a>     <strong class="jxr_keyword">protected</strong> Item createItem(Session session, Folder parent, String name) {
<a class="jxr_linenumber" name="774" href="#774">774</a>         <strong class="jxr_keyword">return</strong> createItem(session, parent, name, getItemTestTypeId());
<a class="jxr_linenumber" name="775" href="#775">775</a>     }
<a class="jxr_linenumber" name="776" href="#776">776</a> 
<a class="jxr_linenumber" name="777" href="#777">777</a>     <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="778" href="#778">778</a> <em class="jxr_javadoccomment">     * Creates a item.</em>
<a class="jxr_linenumber" name="779" href="#779">779</a> <em class="jxr_javadoccomment">     */</em>
<a class="jxr_linenumber" name="780" href="#780">780</a>     <strong class="jxr_keyword">protected</strong> Item createItem(Session session, Folder parent, String name, String objectTypeId) {
<a class="jxr_linenumber" name="781" href="#781">781</a>         <strong class="jxr_keyword">if</strong> (parent == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="782" href="#782">782</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IllegalArgumentException(<span class="jxr_string">"Parent is not set!"</span>);
<a class="jxr_linenumber" name="783" href="#783">783</a>         }
<a class="jxr_linenumber" name="784" href="#784">784</a>         <strong class="jxr_keyword">if</strong> (name == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="785" href="#785">785</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IllegalArgumentException(<span class="jxr_string">"Name is not set!"</span>);
<a class="jxr_linenumber" name="786" href="#786">786</a>         }
<a class="jxr_linenumber" name="787" href="#787">787</a>         <strong class="jxr_keyword">if</strong> (objectTypeId == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="788" href="#788">788</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IllegalArgumentException(<span class="jxr_string">"Object Type ID is not set!"</span>);
<a class="jxr_linenumber" name="789" href="#789">789</a>         }
<a class="jxr_linenumber" name="790" href="#790">790</a> 
<a class="jxr_linenumber" name="791" href="#791">791</a>         <em class="jxr_comment">// check type</em>
<a class="jxr_linenumber" name="792" href="#792">792</a>         ObjectType type;
<a class="jxr_linenumber" name="793" href="#793">793</a>         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="794" href="#794">794</a>             type = session.getTypeDefinition(objectTypeId);
<a class="jxr_linenumber" name="795" href="#795">795</a>         } <strong class="jxr_keyword">catch</strong> (CmisObjectNotFoundException e) {
<a class="jxr_linenumber" name="796" href="#796">796</a>             addResult(createResult(UNEXPECTED_EXCEPTION,
<a class="jxr_linenumber" name="797" href="#797">797</a>                     <span class="jxr_string">"Item type '"</span> + objectTypeId + <span class="jxr_string">"' is not available: "</span> + e.getMessage(), e, <strong class="jxr_keyword">true</strong>));
<a class="jxr_linenumber" name="798" href="#798">798</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="799" href="#799">799</a>         }
<a class="jxr_linenumber" name="800" href="#800">800</a> 
<a class="jxr_linenumber" name="801" href="#801">801</a>         <strong class="jxr_keyword">if</strong> (Boolean.FALSE.equals(type.isCreatable())) {
<a class="jxr_linenumber" name="802" href="#802">802</a>             addResult(createResult(SKIPPED, <span class="jxr_string">"Item type '"</span> + objectTypeId + <span class="jxr_string">"' is not creatable!"</span>, <strong class="jxr_keyword">true</strong>));
<a class="jxr_linenumber" name="803" href="#803">803</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="804" href="#804">804</a>         }
<a class="jxr_linenumber" name="805" href="#805">805</a> 
<a class="jxr_linenumber" name="806" href="#806">806</a>         <em class="jxr_comment">// create</em>
<a class="jxr_linenumber" name="807" href="#807">807</a>         Map&lt;String, Object&gt; properties = <strong class="jxr_keyword">new</strong> HashMap&lt;String, Object&gt;();
<a class="jxr_linenumber" name="808" href="#808">808</a>         properties.put(PropertyIds.NAME, name);
<a class="jxr_linenumber" name="809" href="#809">809</a>         properties.put(PropertyIds.OBJECT_TYPE_ID, objectTypeId);
<a class="jxr_linenumber" name="810" href="#810">810</a> 
<a class="jxr_linenumber" name="811" href="#811">811</a>         Item result = <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="812" href="#812">812</a>         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="813" href="#813">813</a>             <em class="jxr_comment">// create the item</em>
<a class="jxr_linenumber" name="814" href="#814">814</a>             result = parent.createItem(properties, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, SELECT_ALL_NO_CACHE_OC);
<a class="jxr_linenumber" name="815" href="#815">815</a>         } <strong class="jxr_keyword">catch</strong> (CmisBaseException e) {
<a class="jxr_linenumber" name="816" href="#816">816</a>             addResult(createResult(UNEXPECTED_EXCEPTION, <span class="jxr_string">"Item could not be created! Exception: "</span> + e.getMessage(), e,
<a class="jxr_linenumber" name="817" href="#817">817</a>                     <strong class="jxr_keyword">true</strong>));
<a class="jxr_linenumber" name="818" href="#818">818</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="819" href="#819">819</a>         }
<a class="jxr_linenumber" name="820" href="#820">820</a> 
<a class="jxr_linenumber" name="821" href="#821">821</a>         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="822" href="#822">822</a>             <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> f;
<a class="jxr_linenumber" name="823" href="#823">823</a> 
<a class="jxr_linenumber" name="824" href="#824">824</a>             <em class="jxr_comment">// check item name</em>
<a class="jxr_linenumber" name="825" href="#825">825</a>             f = createResult(FAILURE, <span class="jxr_string">"Item name does not match!"</span>, false);
<a class="jxr_linenumber" name="826" href="#826">826</a>             addResult(assertEquals(name, result.getName(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="827" href="#827">827</a> 
<a class="jxr_linenumber" name="828" href="#828">828</a>             addResult(checkObject(session, result, getAllProperties(result), <span class="jxr_string">"New item object spec compliance"</span>));
<a class="jxr_linenumber" name="829" href="#829">829</a>         } <strong class="jxr_keyword">catch</strong> (CmisBaseException e) {
<a class="jxr_linenumber" name="830" href="#830">830</a>             addResult(createResult(UNEXPECTED_EXCEPTION, <span class="jxr_string">"Newly created item is invalid! Exception: "</span> + e.getMessage(),
<a class="jxr_linenumber" name="831" href="#831">831</a>                     e, <strong class="jxr_keyword">true</strong>));
<a class="jxr_linenumber" name="832" href="#832">832</a>         }
<a class="jxr_linenumber" name="833" href="#833">833</a> 
<a class="jxr_linenumber" name="834" href="#834">834</a>         <em class="jxr_comment">// check parents</em>
<a class="jxr_linenumber" name="835" href="#835">835</a>         List&lt;Folder&gt; parents = result.getParents(SELECT_ALL_NO_CACHE_OC);
<a class="jxr_linenumber" name="836" href="#836">836</a>         <strong class="jxr_keyword">boolean</strong> found = false;
<a class="jxr_linenumber" name="837" href="#837">837</a>         <strong class="jxr_keyword">for</strong> (Folder folder : parents) {
<a class="jxr_linenumber" name="838" href="#838">838</a>             <strong class="jxr_keyword">if</strong> (parent.getId().equals(folder.getId())) {
<a class="jxr_linenumber" name="839" href="#839">839</a>                 found = <strong class="jxr_keyword">true</strong>;
<a class="jxr_linenumber" name="840" href="#840">840</a>                 <strong class="jxr_keyword">break</strong>;
<a class="jxr_linenumber" name="841" href="#841">841</a>             }
<a class="jxr_linenumber" name="842" href="#842">842</a>         }
<a class="jxr_linenumber" name="843" href="#843">843</a> 
<a class="jxr_linenumber" name="844" href="#844">844</a>         <strong class="jxr_keyword">if</strong> (!found) {
<a class="jxr_linenumber" name="845" href="#845">845</a>             addResult(createResult(FAILURE,
<a class="jxr_linenumber" name="846" href="#846">846</a>                     <span class="jxr_string">"The folder the item has been created in is not in the list of the item parents!"</span>));
<a class="jxr_linenumber" name="847" href="#847">847</a>         }
<a class="jxr_linenumber" name="848" href="#848">848</a> 
<a class="jxr_linenumber" name="849" href="#849">849</a>         <strong class="jxr_keyword">return</strong> result;
<a class="jxr_linenumber" name="850" href="#850">850</a>     }
<a class="jxr_linenumber" name="851" href="#851">851</a> 
<a class="jxr_linenumber" name="852" href="#852">852</a>     <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="853" href="#853">853</a> <em class="jxr_javadoccomment">     * Deletes an object and checks if it is deleted.</em>
<a class="jxr_linenumber" name="854" href="#854">854</a> <em class="jxr_javadoccomment">     */</em>
<a class="jxr_linenumber" name="855" href="#855">855</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> deleteObject(CmisObject object) {
<a class="jxr_linenumber" name="856" href="#856">856</a>         <strong class="jxr_keyword">if</strong> (object != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="857" href="#857">857</a>             <strong class="jxr_keyword">if</strong> (object instanceof Folder) {
<a class="jxr_linenumber" name="858" href="#858">858</a>                 <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="859" href="#859">859</a>                     ((Folder) object).deleteTree(<strong class="jxr_keyword">true</strong>, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">true</strong>);
<a class="jxr_linenumber" name="860" href="#860">860</a>                 } <strong class="jxr_keyword">catch</strong> (CmisBaseException e) {
<a class="jxr_linenumber" name="861" href="#861">861</a>                     addResult(createResult(UNEXPECTED_EXCEPTION,
<a class="jxr_linenumber" name="862" href="#862">862</a>                             <span class="jxr_string">"Folder could not be deleted! Exception: "</span> + e.getMessage(), e, <strong class="jxr_keyword">true</strong>));
<a class="jxr_linenumber" name="863" href="#863">863</a>                 }
<a class="jxr_linenumber" name="864" href="#864">864</a>             } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="865" href="#865">865</a>                 <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="866" href="#866">866</a>                     object.delete(<strong class="jxr_keyword">true</strong>);
<a class="jxr_linenumber" name="867" href="#867">867</a>                 } <strong class="jxr_keyword">catch</strong> (CmisBaseException e) {
<a class="jxr_linenumber" name="868" href="#868">868</a>                     addResult(createResult(UNEXPECTED_EXCEPTION,
<a class="jxr_linenumber" name="869" href="#869">869</a>                             <span class="jxr_string">"Object could not be deleted! Exception: "</span> + e.getMessage(), e, <strong class="jxr_keyword">true</strong>));
<a class="jxr_linenumber" name="870" href="#870">870</a>                 }
<a class="jxr_linenumber" name="871" href="#871">871</a>             }
<a class="jxr_linenumber" name="872" href="#872">872</a> 
<a class="jxr_linenumber" name="873" href="#873">873</a>             <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> f = createResult(FAILURE,
<a class="jxr_linenumber" name="874" href="#874">874</a>                     <span class="jxr_string">"Object should not exist anymore but it is still there! ID: "</span> + object.getId(), <strong class="jxr_keyword">true</strong>);
<a class="jxr_linenumber" name="875" href="#875">875</a>             addResult(assertIsFalse(exists(object), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="876" href="#876">876</a>         }
<a class="jxr_linenumber" name="877" href="#877">877</a>     }
<a class="jxr_linenumber" name="878" href="#878">878</a> 
<a class="jxr_linenumber" name="879" href="#879">879</a>     <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="880" href="#880">880</a> <em class="jxr_javadoccomment">     * Tests if an object exists by refreshing it.</em>
<a class="jxr_linenumber" name="881" href="#881">881</a> <em class="jxr_javadoccomment">     */</em>
<a class="jxr_linenumber" name="882" href="#882">882</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">boolean</strong> exists(CmisObject object) {
<a class="jxr_linenumber" name="883" href="#883">883</a>         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="884" href="#884">884</a>             object.refresh();
<a class="jxr_linenumber" name="885" href="#885">885</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">true</strong>;
<a class="jxr_linenumber" name="886" href="#886">886</a>         } <strong class="jxr_keyword">catch</strong> (CmisObjectNotFoundException e) {
<a class="jxr_linenumber" name="887" href="#887">887</a>             <strong class="jxr_keyword">return</strong> false;
<a class="jxr_linenumber" name="888" href="#888">888</a>         }
<a class="jxr_linenumber" name="889" href="#889">889</a>     }
<a class="jxr_linenumber" name="890" href="#890">890</a> 
<a class="jxr_linenumber" name="891" href="#891">891</a>     <em class="jxr_comment">// --- type helpers ---</em>
<a class="jxr_linenumber" name="892" href="#892">892</a> 
<a class="jxr_linenumber" name="893" href="#893">893</a>     <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="894" href="#894">894</a> <em class="jxr_javadoccomment">     * Creates a new type.</em>
<a class="jxr_linenumber" name="895" href="#895">895</a> <em class="jxr_javadoccomment">     */</em>
<a class="jxr_linenumber" name="896" href="#896">896</a>     <strong class="jxr_keyword">protected</strong> ObjectType createType(Session session, TypeDefinition typeDef) {
<a class="jxr_linenumber" name="897" href="#897">897</a> 
<a class="jxr_linenumber" name="898" href="#898">898</a>         NewTypeSettableAttributes settableAttributes = session.getRepositoryInfo().getCapabilities()
<a class="jxr_linenumber" name="899" href="#899">899</a>                 .getNewTypeSettableAttributes();
<a class="jxr_linenumber" name="900" href="#900">900</a>         <strong class="jxr_keyword">if</strong> (settableAttributes == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="901" href="#901">901</a>             addResult(createResult(WARNING, <span class="jxr_string">"Repository Info does not indicate, which type attributes can be set!"</span>));
<a class="jxr_linenumber" name="902" href="#902">902</a>         } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="903" href="#903">903</a>             <em class="jxr_comment">// TODO: add more tests</em>
<a class="jxr_linenumber" name="904" href="#904">904</a>         }
<a class="jxr_linenumber" name="905" href="#905">905</a> 
<a class="jxr_linenumber" name="906" href="#906">906</a>         ObjectType newType = <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="907" href="#907">907</a>         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="908" href="#908">908</a>             newType = session.createType(typeDef);
<a class="jxr_linenumber" name="909" href="#909">909</a>             addResult(createInfoResult(<span class="jxr_string">"Created type '"</span> + typeDef.getId()
<a class="jxr_linenumber" name="910" href="#910">910</a>                     + <span class="jxr_string">"'. Repository assigned the following type ID: "</span> + newType.getId()));
<a class="jxr_linenumber" name="911" href="#911">911</a>         } <strong class="jxr_keyword">catch</strong> (CmisBaseException e) {
<a class="jxr_linenumber" name="912" href="#912">912</a>             addResult(createResult(FAILURE, <span class="jxr_string">"Creating type '"</span> + typeDef.getId() + <span class="jxr_string">"' failed: "</span> + e.getMessage(), e,
<a class="jxr_linenumber" name="913" href="#913">913</a>                     false));
<a class="jxr_linenumber" name="914" href="#914">914</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="915" href="#915">915</a>         }
<a class="jxr_linenumber" name="916" href="#916">916</a> 
<a class="jxr_linenumber" name="917" href="#917">917</a>         addResult(checkTypeDefinition(session, newType, <span class="jxr_string">"Newly created type spec compliance."</span>));
<a class="jxr_linenumber" name="918" href="#918">918</a> 
<a class="jxr_linenumber" name="919" href="#919">919</a>         <strong class="jxr_keyword">if</strong> (newType.getTypeMutability() == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="920" href="#920">920</a>             addResult(createResult(FAILURE,
<a class="jxr_linenumber" name="921" href="#921">921</a>                     <span class="jxr_string">"Newly created type does not provide type mutability data! ID: "</span> + newType.getId()));
<a class="jxr_linenumber" name="922" href="#922">922</a>         }
<a class="jxr_linenumber" name="923" href="#923">923</a> 
<a class="jxr_linenumber" name="924" href="#924">924</a>         <strong class="jxr_keyword">return</strong> newType;
<a class="jxr_linenumber" name="925" href="#925">925</a>     }
<a class="jxr_linenumber" name="926" href="#926">926</a> 
<a class="jxr_linenumber" name="927" href="#927">927</a>     <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="928" href="#928">928</a> <em class="jxr_javadoccomment">     * Deletes a type.</em>
<a class="jxr_linenumber" name="929" href="#929">929</a> <em class="jxr_javadoccomment">     */</em>
<a class="jxr_linenumber" name="930" href="#930">930</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> deleteType(Session session, String typeId) {
<a class="jxr_linenumber" name="931" href="#931">931</a>         ObjectType type = session.getTypeDefinition(typeId);
<a class="jxr_linenumber" name="932" href="#932">932</a> 
<a class="jxr_linenumber" name="933" href="#933">933</a>         <strong class="jxr_keyword">if</strong> (type == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="934" href="#934">934</a>             addResult(createResult(FAILURE, <span class="jxr_string">"Type does not exist and therefore cannot be deleted! ID: "</span> + typeId));
<a class="jxr_linenumber" name="935" href="#935">935</a>             <strong class="jxr_keyword">return</strong>;
<a class="jxr_linenumber" name="936" href="#936">936</a>         }
<a class="jxr_linenumber" name="937" href="#937">937</a> 
<a class="jxr_linenumber" name="938" href="#938">938</a>         <em class="jxr_comment">// check if type can be deleted</em>
<a class="jxr_linenumber" name="939" href="#939">939</a>         <strong class="jxr_keyword">if</strong> (type.getTypeMutability() == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="940" href="#940">940</a>             addResult(createResult(FAILURE, <span class="jxr_string">"Type does not provide type mutability data! ID: "</span> + typeId));
<a class="jxr_linenumber" name="941" href="#941">941</a>         } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="942" href="#942">942</a>             <strong class="jxr_keyword">if</strong> (!Boolean.TRUE.equals(type.getTypeMutability().canDelete())) {
<a class="jxr_linenumber" name="943" href="#943">943</a>                 addResult(createResult(WARNING,
<a class="jxr_linenumber" name="944" href="#944">944</a>                         <span class="jxr_string">"Type indicates that it cannot be deleted. Trying it anyway. ID: "</span> + typeId));
<a class="jxr_linenumber" name="945" href="#945">945</a>             }
<a class="jxr_linenumber" name="946" href="#946">946</a>         }
<a class="jxr_linenumber" name="947" href="#947">947</a> 
<a class="jxr_linenumber" name="948" href="#948">948</a>         <em class="jxr_comment">// delete it</em>
<a class="jxr_linenumber" name="949" href="#949">949</a>         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="950" href="#950">950</a>             session.deleteType(typeId);
<a class="jxr_linenumber" name="951" href="#951">951</a>         } <strong class="jxr_keyword">catch</strong> (CmisBaseException e) {
<a class="jxr_linenumber" name="952" href="#952">952</a>             addResult(createResult(FAILURE, <span class="jxr_string">"Deleting type '"</span> + typeId + <span class="jxr_string">"' failed: "</span> + e.getMessage(), e, false));
<a class="jxr_linenumber" name="953" href="#953">953</a>             <strong class="jxr_keyword">return</strong>;
<a class="jxr_linenumber" name="954" href="#954">954</a>         }
<a class="jxr_linenumber" name="955" href="#955">955</a> 
<a class="jxr_linenumber" name="956" href="#956">956</a>         <em class="jxr_comment">// check if the type still exists</em>
<a class="jxr_linenumber" name="957" href="#957">957</a>         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="958" href="#958">958</a>             session.getTypeDefinition(typeId);
<a class="jxr_linenumber" name="959" href="#959">959</a>             addResult(
<a class="jxr_linenumber" name="960" href="#960">960</a>                     createResult(FAILURE, <span class="jxr_string">"Type should not exist anymore but it is still there! ID: "</span> + typeId, <strong class="jxr_keyword">true</strong>));
<a class="jxr_linenumber" name="961" href="#961">961</a>         } <strong class="jxr_keyword">catch</strong> (CmisObjectNotFoundException e) {
<a class="jxr_linenumber" name="962" href="#962">962</a>             <em class="jxr_comment">// expected result</em>
<a class="jxr_linenumber" name="963" href="#963">963</a>         }
<a class="jxr_linenumber" name="964" href="#964">964</a>     }
<a class="jxr_linenumber" name="965" href="#965">965</a> 
<a class="jxr_linenumber" name="966" href="#966">966</a>     <em class="jxr_comment">// --- test folder methods ---</em>
<a class="jxr_linenumber" name="967" href="#967">967</a> 
<a class="jxr_linenumber" name="968" href="#968">968</a>     <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="969" href="#969">969</a> <em class="jxr_javadoccomment">     * Creates a test folder.</em>
<a class="jxr_linenumber" name="970" href="#970">970</a> <em class="jxr_javadoccomment">     */</em>
<a class="jxr_linenumber" name="971" href="#971">971</a>     <strong class="jxr_keyword">protected</strong> Folder createTestFolder(Session session) {
<a class="jxr_linenumber" name="972" href="#972">972</a> 
<a class="jxr_linenumber" name="973" href="#973">973</a>         String testFolderParentPath = getParameters().get(TestParameters.DEFAULT_TEST_FOLDER_PARENT);
<a class="jxr_linenumber" name="974" href="#974">974</a>         <strong class="jxr_keyword">if</strong> (testFolderParentPath == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="975" href="#975">975</a>             testFolderParentPath = TestParameters.DEFAULT_TEST_FOLDER_PARENT_VALUE;
<a class="jxr_linenumber" name="976" href="#976">976</a>         }
<a class="jxr_linenumber" name="977" href="#977">977</a> 
<a class="jxr_linenumber" name="978" href="#978">978</a>         String name = <span class="jxr_string">"cmistck"</span> + System.currentTimeMillis() + session.getRepositoryInfo().hashCode();
<a class="jxr_linenumber" name="979" href="#979">979</a> 
<a class="jxr_linenumber" name="980" href="#980">980</a>         Folder parent = <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="981" href="#981">981</a>         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="982" href="#982">982</a>             CmisObject parentObject = session.getObjectByPath(testFolderParentPath, SELECT_ALL_NO_CACHE_OC);
<a class="jxr_linenumber" name="983" href="#983">983</a>             <strong class="jxr_keyword">if</strong> (!(parentObject instanceof Folder)) {
<a class="jxr_linenumber" name="984" href="#984">984</a>                 addResult(createResult(FAILURE,
<a class="jxr_linenumber" name="985" href="#985">985</a>                         <span class="jxr_string">"Parent folder of the test folder is actually not a folder! Path: "</span> + testFolderParentPath,
<a class="jxr_linenumber" name="986" href="#986">986</a>                         <strong class="jxr_keyword">true</strong>));
<a class="jxr_linenumber" name="987" href="#987">987</a>             }
<a class="jxr_linenumber" name="988" href="#988">988</a> 
<a class="jxr_linenumber" name="989" href="#989">989</a>             parent = (Folder) parentObject;
<a class="jxr_linenumber" name="990" href="#990">990</a>         } <strong class="jxr_keyword">catch</strong> (CmisBaseException e) {
<a class="jxr_linenumber" name="991" href="#991">991</a>             addResult(createResult(UNEXPECTED_EXCEPTION,
<a class="jxr_linenumber" name="992" href="#992">992</a>                     <span class="jxr_string">"Test folder could not be created! Exception: "</span> + e.getMessage(), e, <strong class="jxr_keyword">true</strong>));
<a class="jxr_linenumber" name="993" href="#993">993</a>         }
<a class="jxr_linenumber" name="994" href="#994">994</a> 
<a class="jxr_linenumber" name="995" href="#995">995</a>         <strong class="jxr_keyword">if</strong> (parent != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="996" href="#996">996</a>             testFolder = createFolder(session, parent, name);
<a class="jxr_linenumber" name="997" href="#997">997</a>         }
<a class="jxr_linenumber" name="998" href="#998">998</a> 
<a class="jxr_linenumber" name="999" href="#999">999</a>         <strong class="jxr_keyword">return</strong> testFolder;
<a class="jxr_linenumber" name="1000" href="#1000">1000</a>     }
<a class="jxr_linenumber" name="1001" href="#1001">1001</a> 
<a class="jxr_linenumber" name="1002" href="#1002">1002</a>     <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="1003" href="#1003">1003</a> <em class="jxr_javadoccomment">     * Get the test folder.</em>
<a class="jxr_linenumber" name="1004" href="#1004">1004</a> <em class="jxr_javadoccomment">     */</em>
<a class="jxr_linenumber" name="1005" href="#1005">1005</a>     <strong class="jxr_keyword">protected</strong> Folder getTestFolder() {
<a class="jxr_linenumber" name="1006" href="#1006">1006</a>         <strong class="jxr_keyword">return</strong> testFolder;
<a class="jxr_linenumber" name="1007" href="#1007">1007</a>     }
<a class="jxr_linenumber" name="1008" href="#1008">1008</a> 
<a class="jxr_linenumber" name="1009" href="#1009">1009</a>     <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="1010" href="#1010">1010</a> <em class="jxr_javadoccomment">     * Delete the test folder.</em>
<a class="jxr_linenumber" name="1011" href="#1011">1011</a> <em class="jxr_javadoccomment">     */</em>
<a class="jxr_linenumber" name="1012" href="#1012">1012</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> deleteTestFolder() {
<a class="jxr_linenumber" name="1013" href="#1013">1013</a>         deleteObject(testFolder);
<a class="jxr_linenumber" name="1014" href="#1014">1014</a>     }
<a class="jxr_linenumber" name="1015" href="#1015">1015</a> 
<a class="jxr_linenumber" name="1016" href="#1016">1016</a>     <em class="jxr_comment">// --- reusable checks ----</em>
<a class="jxr_linenumber" name="1017" href="#1017">1017</a> 
<a class="jxr_linenumber" name="1018" href="#1018">1018</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">boolean</strong> isGetDescendantsSupported(Session session) {
<a class="jxr_linenumber" name="1019" href="#1019">1019</a>         RepositoryCapabilities cap = session.getRepositoryInfo().getCapabilities();
<a class="jxr_linenumber" name="1020" href="#1020">1020</a> 
<a class="jxr_linenumber" name="1021" href="#1021">1021</a>         <strong class="jxr_keyword">if</strong> (cap == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="1022" href="#1022">1022</a>             <strong class="jxr_keyword">return</strong> false;
<a class="jxr_linenumber" name="1023" href="#1023">1023</a>         }
<a class="jxr_linenumber" name="1024" href="#1024">1024</a> 
<a class="jxr_linenumber" name="1025" href="#1025">1025</a>         <strong class="jxr_keyword">if</strong> (cap.isGetDescendantsSupported() == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="1026" href="#1026">1026</a>             <strong class="jxr_keyword">return</strong> false;
<a class="jxr_linenumber" name="1027" href="#1027">1027</a>         }
<a class="jxr_linenumber" name="1028" href="#1028">1028</a> 
<a class="jxr_linenumber" name="1029" href="#1029">1029</a>         <strong class="jxr_keyword">return</strong> cap.isGetDescendantsSupported().booleanValue();
<a class="jxr_linenumber" name="1030" href="#1030">1030</a>     }
<a class="jxr_linenumber" name="1031" href="#1031">1031</a> 
<a class="jxr_linenumber" name="1032" href="#1032">1032</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">boolean</strong> isGetFolderTreeSupported(Session session) {
<a class="jxr_linenumber" name="1033" href="#1033">1033</a>         RepositoryCapabilities cap = session.getRepositoryInfo().getCapabilities();
<a class="jxr_linenumber" name="1034" href="#1034">1034</a> 
<a class="jxr_linenumber" name="1035" href="#1035">1035</a>         <strong class="jxr_keyword">if</strong> (cap == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="1036" href="#1036">1036</a>             <strong class="jxr_keyword">return</strong> false;
<a class="jxr_linenumber" name="1037" href="#1037">1037</a>         }
<a class="jxr_linenumber" name="1038" href="#1038">1038</a> 
<a class="jxr_linenumber" name="1039" href="#1039">1039</a>         <strong class="jxr_keyword">if</strong> (cap.isGetFolderTreeSupported() == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="1040" href="#1040">1040</a>             <strong class="jxr_keyword">return</strong> false;
<a class="jxr_linenumber" name="1041" href="#1041">1041</a>         }
<a class="jxr_linenumber" name="1042" href="#1042">1042</a> 
<a class="jxr_linenumber" name="1043" href="#1043">1043</a>         <strong class="jxr_keyword">return</strong> cap.isGetFolderTreeSupported().booleanValue();
<a class="jxr_linenumber" name="1044" href="#1044">1044</a>     }
<a class="jxr_linenumber" name="1045" href="#1045">1045</a> 
<a class="jxr_linenumber" name="1046" href="#1046">1046</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">boolean</strong> isOrderByNameSupported(Session session) {
<a class="jxr_linenumber" name="1047" href="#1047">1047</a>         <strong class="jxr_keyword">if</strong> (session.getRepositoryInfo().getCapabilities().getOrderByCapability() == CapabilityOrderBy.NONE) {
<a class="jxr_linenumber" name="1048" href="#1048">1048</a>             <strong class="jxr_keyword">return</strong> false;
<a class="jxr_linenumber" name="1049" href="#1049">1049</a>         }
<a class="jxr_linenumber" name="1050" href="#1050">1050</a> 
<a class="jxr_linenumber" name="1051" href="#1051">1051</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">true</strong>;
<a class="jxr_linenumber" name="1052" href="#1052">1052</a>     }
<a class="jxr_linenumber" name="1053" href="#1053">1053</a> 
<a class="jxr_linenumber" name="1054" href="#1054">1054</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">boolean</strong> hasRelationships(Session session) {
<a class="jxr_linenumber" name="1055" href="#1055">1055</a>         <strong class="jxr_keyword">if</strong> (supportsRelationships == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="1056" href="#1056">1056</a>             supportsRelationships = Boolean.FALSE;
<a class="jxr_linenumber" name="1057" href="#1057">1057</a>             <strong class="jxr_keyword">for</strong> (ObjectType type : session.getTypeChildren(<strong class="jxr_keyword">null</strong>, false)) {
<a class="jxr_linenumber" name="1058" href="#1058">1058</a>                 <strong class="jxr_keyword">if</strong> (BaseTypeId.CMIS_RELATIONSHIP.value().equals(type.getId())) {
<a class="jxr_linenumber" name="1059" href="#1059">1059</a>                     supportsRelationships = Boolean.TRUE;
<a class="jxr_linenumber" name="1060" href="#1060">1060</a>                     <strong class="jxr_keyword">break</strong>;
<a class="jxr_linenumber" name="1061" href="#1061">1061</a>                 }
<a class="jxr_linenumber" name="1062" href="#1062">1062</a>             }
<a class="jxr_linenumber" name="1063" href="#1063">1063</a>         }
<a class="jxr_linenumber" name="1064" href="#1064">1064</a> 
<a class="jxr_linenumber" name="1065" href="#1065">1065</a>         <strong class="jxr_keyword">return</strong> supportsRelationships.booleanValue();
<a class="jxr_linenumber" name="1066" href="#1066">1066</a>     }
<a class="jxr_linenumber" name="1067" href="#1067">1067</a> 
<a class="jxr_linenumber" name="1068" href="#1068">1068</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">boolean</strong> hasPolicies(Session session) {
<a class="jxr_linenumber" name="1069" href="#1069">1069</a>         <strong class="jxr_keyword">if</strong> (supportsPolicies == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="1070" href="#1070">1070</a>             supportsPolicies = Boolean.FALSE;
<a class="jxr_linenumber" name="1071" href="#1071">1071</a>             <strong class="jxr_keyword">for</strong> (ObjectType type : session.getTypeChildren(<strong class="jxr_keyword">null</strong>, false)) {
<a class="jxr_linenumber" name="1072" href="#1072">1072</a>                 <strong class="jxr_keyword">if</strong> (BaseTypeId.CMIS_POLICY.value().equals(type.getId())) {
<a class="jxr_linenumber" name="1073" href="#1073">1073</a>                     supportsPolicies = Boolean.TRUE;
<a class="jxr_linenumber" name="1074" href="#1074">1074</a>                     <strong class="jxr_keyword">break</strong>;
<a class="jxr_linenumber" name="1075" href="#1075">1075</a>                 }
<a class="jxr_linenumber" name="1076" href="#1076">1076</a>             }
<a class="jxr_linenumber" name="1077" href="#1077">1077</a>         }
<a class="jxr_linenumber" name="1078" href="#1078">1078</a> 
<a class="jxr_linenumber" name="1079" href="#1079">1079</a>         <strong class="jxr_keyword">return</strong> supportsPolicies.booleanValue();
<a class="jxr_linenumber" name="1080" href="#1080">1080</a>     }
<a class="jxr_linenumber" name="1081" href="#1081">1081</a> 
<a class="jxr_linenumber" name="1082" href="#1082">1082</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">boolean</strong> hasItems(Session session) {
<a class="jxr_linenumber" name="1083" href="#1083">1083</a>         <strong class="jxr_keyword">if</strong> (supportsItems == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="1084" href="#1084">1084</a>             supportsItems = Boolean.FALSE;
<a class="jxr_linenumber" name="1085" href="#1085">1085</a>             <strong class="jxr_keyword">for</strong> (ObjectType type : session.getTypeChildren(<strong class="jxr_keyword">null</strong>, false)) {
<a class="jxr_linenumber" name="1086" href="#1086">1086</a>                 <strong class="jxr_keyword">if</strong> (BaseTypeId.CMIS_ITEM.value().equals(type.getId())) {
<a class="jxr_linenumber" name="1087" href="#1087">1087</a>                     supportsItems = Boolean.TRUE;
<a class="jxr_linenumber" name="1088" href="#1088">1088</a>                     <strong class="jxr_keyword">break</strong>;
<a class="jxr_linenumber" name="1089" href="#1089">1089</a>                 }
<a class="jxr_linenumber" name="1090" href="#1090">1090</a>             }
<a class="jxr_linenumber" name="1091" href="#1091">1091</a>         }
<a class="jxr_linenumber" name="1092" href="#1092">1092</a> 
<a class="jxr_linenumber" name="1093" href="#1093">1093</a>         <strong class="jxr_keyword">return</strong> supportsItems.booleanValue();
<a class="jxr_linenumber" name="1094" href="#1094">1094</a>     }
<a class="jxr_linenumber" name="1095" href="#1095">1095</a> 
<a class="jxr_linenumber" name="1096" href="#1096">1096</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">boolean</strong> hasSecondaries(Session session) {
<a class="jxr_linenumber" name="1097" href="#1097">1097</a>         <strong class="jxr_keyword">if</strong> (supportsSecondaries == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="1098" href="#1098">1098</a>             supportsSecondaries = Boolean.FALSE;
<a class="jxr_linenumber" name="1099" href="#1099">1099</a>             <strong class="jxr_keyword">for</strong> (ObjectType type : session.getTypeChildren(<strong class="jxr_keyword">null</strong>, false)) {
<a class="jxr_linenumber" name="1100" href="#1100">1100</a>                 <strong class="jxr_keyword">if</strong> (BaseTypeId.CMIS_SECONDARY.value().equals(type.getId())) {
<a class="jxr_linenumber" name="1101" href="#1101">1101</a>                     supportsSecondaries = Boolean.TRUE;
<a class="jxr_linenumber" name="1102" href="#1102">1102</a>                     <strong class="jxr_keyword">break</strong>;
<a class="jxr_linenumber" name="1103" href="#1103">1103</a>                 }
<a class="jxr_linenumber" name="1104" href="#1104">1104</a>             }
<a class="jxr_linenumber" name="1105" href="#1105">1105</a>         }
<a class="jxr_linenumber" name="1106" href="#1106">1106</a> 
<a class="jxr_linenumber" name="1107" href="#1107">1107</a>         <strong class="jxr_keyword">return</strong> supportsSecondaries.booleanValue();
<a class="jxr_linenumber" name="1108" href="#1108">1108</a>     }
<a class="jxr_linenumber" name="1109" href="#1109">1109</a> 
<a class="jxr_linenumber" name="1110" href="#1110">1110</a>     <strong class="jxr_keyword">protected</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> checkObject(Session session, CmisObject object, String[] properties, String message) {
<a class="jxr_linenumber" name="1111" href="#1111">1111</a>         List&lt;CmisTestResult&gt; results = <strong class="jxr_keyword">new</strong> ArrayList&lt;CmisTestResult&gt;();
<a class="jxr_linenumber" name="1112" href="#1112">1112</a> 
<a class="jxr_linenumber" name="1113" href="#1113">1113</a>         <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> f;
<a class="jxr_linenumber" name="1114" href="#1114">1114</a> 
<a class="jxr_linenumber" name="1115" href="#1115">1115</a>         f = createResult(FAILURE, <span class="jxr_string">"Object is null!"</span>, <strong class="jxr_keyword">true</strong>);
<a class="jxr_linenumber" name="1116" href="#1116">1116</a>         addResult(results, assertNotNull(object, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1117" href="#1117">1117</a> 
<a class="jxr_linenumber" name="1118" href="#1118">1118</a>         <strong class="jxr_keyword">if</strong> (object != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="1119" href="#1119">1119</a>             f = createResult(FAILURE, <span class="jxr_string">"Object ID is not set!"</span>);
<a class="jxr_linenumber" name="1120" href="#1120">1120</a>             addResult(results, assertStringNotEmpty(object.getId(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1121" href="#1121">1121</a> 
<a class="jxr_linenumber" name="1122" href="#1122">1122</a>             GregorianCalendar creationDate = <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="1123" href="#1123">1123</a>             GregorianCalendar lastModificationDate = <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="1124" href="#1124">1124</a> 
<a class="jxr_linenumber" name="1125" href="#1125">1125</a>             <em class="jxr_comment">// properties</em>
<a class="jxr_linenumber" name="1126" href="#1126">1126</a>             <strong class="jxr_keyword">for</strong> (String propId : properties) {
<a class="jxr_linenumber" name="1127" href="#1127">1127</a>                 Property&lt;?&gt; prop = object.getProperty(propId);
<a class="jxr_linenumber" name="1128" href="#1128">1128</a> 
<a class="jxr_linenumber" name="1129" href="#1129">1129</a>                 <em class="jxr_comment">// values of non-spec properties are not checked here</em>
<a class="jxr_linenumber" name="1130" href="#1130">1130</a>                 <a href="../../../../../../org/apache/chemistry/opencmis/tck/impl/PropertyCheckEnum.html">PropertyCheckEnum</a> propertyCheck = PropertyCheckEnum.NO_VALUE_CHECK;
<a class="jxr_linenumber" name="1131" href="#1131">1131</a> 
<a class="jxr_linenumber" name="1132" href="#1132">1132</a>                 <em class="jxr_comment">// known properties that are strings and must be set</em>
<a class="jxr_linenumber" name="1133" href="#1133">1133</a>                 <strong class="jxr_keyword">if</strong> (PropertyIds.OBJECT_ID.equals(propId) || PropertyIds.BASE_TYPE_ID.equals(propId)
<a class="jxr_linenumber" name="1134" href="#1134">1134</a>                         || PropertyIds.OBJECT_TYPE_ID.equals(propId) || PropertyIds.PATH.equals(propId)
<a class="jxr_linenumber" name="1135" href="#1135">1135</a>                         || PropertyIds.SOURCE_ID.equals(propId) || PropertyIds.TARGET_ID.equals(propId)) {
<a class="jxr_linenumber" name="1136" href="#1136">1136</a>                     propertyCheck = PropertyCheckEnum.STRING_MUST_NOT_BE_EMPTY;
<a class="jxr_linenumber" name="1137" href="#1137">1137</a>                 }
<a class="jxr_linenumber" name="1138" href="#1138">1138</a> 
<a class="jxr_linenumber" name="1139" href="#1139">1139</a>                 <strong class="jxr_keyword">if</strong> (!(object instanceof Relationship)) {
<a class="jxr_linenumber" name="1140" href="#1140">1140</a>                     <strong class="jxr_keyword">if</strong> (PropertyIds.CREATED_BY.equals(propId) || PropertyIds.LAST_MODIFIED_BY.equals(propId)) {
<a class="jxr_linenumber" name="1141" href="#1141">1141</a>                         propertyCheck = PropertyCheckEnum.STRING_MUST_NOT_BE_EMPTY;
<a class="jxr_linenumber" name="1142" href="#1142">1142</a>                     }
<a class="jxr_linenumber" name="1143" href="#1143">1143</a>                 }
<a class="jxr_linenumber" name="1144" href="#1144">1144</a> 
<a class="jxr_linenumber" name="1145" href="#1145">1145</a>                 <em class="jxr_comment">// known properties that are strings and should be set</em>
<a class="jxr_linenumber" name="1146" href="#1146">1146</a>                 <strong class="jxr_keyword">if</strong> (PropertyIds.NAME.equals(propId) || PropertyIds.POLICY_TEXT.equals(propId)) {
<a class="jxr_linenumber" name="1147" href="#1147">1147</a>                     propertyCheck = PropertyCheckEnum.STRING_SHOULD_NOT_BE_EMPTY;
<a class="jxr_linenumber" name="1148" href="#1148">1148</a>                 }
<a class="jxr_linenumber" name="1149" href="#1149">1149</a> 
<a class="jxr_linenumber" name="1150" href="#1150">1150</a>                 <em class="jxr_comment">// known properties that are not strings and must be set</em>
<a class="jxr_linenumber" name="1151" href="#1151">1151</a>                 <strong class="jxr_keyword">if</strong> (PropertyIds.IS_IMMUTABLE.equals(propId)) {
<a class="jxr_linenumber" name="1152" href="#1152">1152</a>                     propertyCheck = PropertyCheckEnum.MUST_BE_SET;
<a class="jxr_linenumber" name="1153" href="#1153">1153</a>                 }
<a class="jxr_linenumber" name="1154" href="#1154">1154</a> 
<a class="jxr_linenumber" name="1155" href="#1155">1155</a>                 <strong class="jxr_keyword">if</strong> (!(object instanceof Relationship)) {
<a class="jxr_linenumber" name="1156" href="#1156">1156</a>                     <strong class="jxr_keyword">if</strong> (PropertyIds.CREATION_DATE.equals(propId) || PropertyIds.LAST_MODIFICATION_DATE.equals(propId)) {
<a class="jxr_linenumber" name="1157" href="#1157">1157</a>                         propertyCheck = PropertyCheckEnum.MUST_BE_SET;
<a class="jxr_linenumber" name="1158" href="#1158">1158</a>                     }
<a class="jxr_linenumber" name="1159" href="#1159">1159</a>                 }
<a class="jxr_linenumber" name="1160" href="#1160">1160</a> 
<a class="jxr_linenumber" name="1161" href="#1161">1161</a>                 <em class="jxr_comment">// special case: parent</em>
<a class="jxr_linenumber" name="1162" href="#1162">1162</a>                 <strong class="jxr_keyword">if</strong> (PropertyIds.PARENT_ID.equals(propId)) {
<a class="jxr_linenumber" name="1163" href="#1163">1163</a>                     <strong class="jxr_keyword">if</strong> (object instanceof Folder) {
<a class="jxr_linenumber" name="1164" href="#1164">1164</a>                         <strong class="jxr_keyword">if</strong> (((Folder) object).isRootFolder()) {
<a class="jxr_linenumber" name="1165" href="#1165">1165</a>                             propertyCheck = PropertyCheckEnum.MUST_NOT_BE_SET;
<a class="jxr_linenumber" name="1166" href="#1166">1166</a>                         } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="1167" href="#1167">1167</a>                             propertyCheck = PropertyCheckEnum.STRING_MUST_NOT_BE_EMPTY;
<a class="jxr_linenumber" name="1168" href="#1168">1168</a>                         }
<a class="jxr_linenumber" name="1169" href="#1169">1169</a>                     } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="1170" href="#1170">1170</a>                         addResult(results, createResult(FAILURE,
<a class="jxr_linenumber" name="1171" href="#1171">1171</a>                                 <span class="jxr_string">"Property "</span> + PropertyIds.PARENT_ID + <span class="jxr_string">" is only defined for folders!"</span>));
<a class="jxr_linenumber" name="1172" href="#1172">1172</a>                     }
<a class="jxr_linenumber" name="1173" href="#1173">1173</a>                 }
<a class="jxr_linenumber" name="1174" href="#1174">1174</a> 
<a class="jxr_linenumber" name="1175" href="#1175">1175</a>                 <em class="jxr_comment">// special case: path</em>
<a class="jxr_linenumber" name="1176" href="#1176">1176</a>                 <strong class="jxr_keyword">if</strong> (PropertyIds.PATH.equals(propId) &amp;&amp; prop.getFirstValue() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="1177" href="#1177">1177</a>                     Object path = prop.getFirstValue();
<a class="jxr_linenumber" name="1178" href="#1178">1178</a>                     <strong class="jxr_keyword">if</strong> (path instanceof String) {
<a class="jxr_linenumber" name="1179" href="#1179">1179</a>                         f = createResult(FAILURE, <span class="jxr_string">"Path does not start with '/': "</span> + path);
<a class="jxr_linenumber" name="1180" href="#1180">1180</a>                         addResult(results, assertIsTrue(
<a class="jxr_linenumber" name="1181" href="#1181">1181</a>                                 ((String) path).length() &gt; 0 &amp;&amp; ((String) path).charAt(0) == '/', <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1182" href="#1182">1182</a>                     } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="1183" href="#1183">1183</a>                         addResult(results, createResult(FAILURE, <span class="jxr_string">"Property "</span> + PropertyIds.PATH + <span class="jxr_string">" is not a string!"</span>));
<a class="jxr_linenumber" name="1184" href="#1184">1184</a>                     }
<a class="jxr_linenumber" name="1185" href="#1185">1185</a>                 }
<a class="jxr_linenumber" name="1186" href="#1186">1186</a> 
<a class="jxr_linenumber" name="1187" href="#1187">1187</a>                 <em class="jxr_comment">// check property</em>
<a class="jxr_linenumber" name="1188" href="#1188">1188</a>                 addResult(results, checkProperty(prop, <span class="jxr_string">"Property "</span> + propId, propertyCheck));
<a class="jxr_linenumber" name="1189" href="#1189">1189</a> 
<a class="jxr_linenumber" name="1190" href="#1190">1190</a>                 <em class="jxr_comment">// catch creationDate and lastModificationDate</em>
<a class="jxr_linenumber" name="1191" href="#1191">1191</a>                 <strong class="jxr_keyword">if</strong> (PropertyIds.CREATION_DATE.equals(propId)) {
<a class="jxr_linenumber" name="1192" href="#1192">1192</a>                     <strong class="jxr_keyword">if</strong> (prop != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="1193" href="#1193">1193</a>                         creationDate = (GregorianCalendar) prop.getFirstValue();
<a class="jxr_linenumber" name="1194" href="#1194">1194</a>                     }
<a class="jxr_linenumber" name="1195" href="#1195">1195</a>                 } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (PropertyIds.LAST_MODIFICATION_DATE.equals(propId)) {
<a class="jxr_linenumber" name="1196" href="#1196">1196</a>                     <strong class="jxr_keyword">if</strong> (prop != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="1197" href="#1197">1197</a>                         lastModificationDate = (GregorianCalendar) prop.getFirstValue();
<a class="jxr_linenumber" name="1198" href="#1198">1198</a>                     }
<a class="jxr_linenumber" name="1199" href="#1199">1199</a>                 }
<a class="jxr_linenumber" name="1200" href="#1200">1200</a>             }
<a class="jxr_linenumber" name="1201" href="#1201">1201</a> 
<a class="jxr_linenumber" name="1202" href="#1202">1202</a>             <em class="jxr_comment">// check creationDate &lt;= lastModificationDate</em>
<a class="jxr_linenumber" name="1203" href="#1203">1203</a>             <strong class="jxr_keyword">if</strong> (creationDate != <strong class="jxr_keyword">null</strong> &amp;&amp; lastModificationDate != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="1204" href="#1204">1204</a>                 f = createResult(FAILURE, <span class="jxr_string">"Last modification date precedes creation date!"</span>);
<a class="jxr_linenumber" name="1205" href="#1205">1205</a>                 addResult(results, assertIsTrue(
<a class="jxr_linenumber" name="1206" href="#1206">1206</a>                         creationDate.getTimeInMillis() &lt;= lastModificationDate.getTimeInMillis(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1207" href="#1207">1207</a> 
<a class="jxr_linenumber" name="1208" href="#1208">1208</a>                 f = createResult(WARNING, <span class="jxr_string">"Creation date and last modification date have different timezones."</span>);
<a class="jxr_linenumber" name="1209" href="#1209">1209</a>                 addResult(assertIsTrue(creationDate.getTimeZone().hasSameRules(lastModificationDate.getTimeZone()),
<a class="jxr_linenumber" name="1210" href="#1210">1210</a>                         <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1211" href="#1211">1211</a>             }
<a class="jxr_linenumber" name="1212" href="#1212">1212</a> 
<a class="jxr_linenumber" name="1213" href="#1213">1213</a>             <em class="jxr_comment">// allowable actions</em>
<a class="jxr_linenumber" name="1214" href="#1214">1214</a>             <strong class="jxr_keyword">if</strong> ((object.getAllowableActions() == <strong class="jxr_keyword">null</strong>)
<a class="jxr_linenumber" name="1215" href="#1215">1215</a>                     || (object.getAllowableActions().getAllowableActions() == <strong class="jxr_keyword">null</strong>)) {
<a class="jxr_linenumber" name="1216" href="#1216">1216</a>                 addResult(results, createResult(FAILURE, <span class="jxr_string">"Object has no allowable actions!"</span>));
<a class="jxr_linenumber" name="1217" href="#1217">1217</a>             } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="1218" href="#1218">1218</a>                 Set&lt;Action&gt; actions = object.getAllowableActions().getAllowableActions();
<a class="jxr_linenumber" name="1219" href="#1219">1219</a> 
<a class="jxr_linenumber" name="1220" href="#1220">1220</a>                 f = createResult(FAILURE, <span class="jxr_string">"Object has no CAN_GET_PROPERTIES allowable action!"</span>);
<a class="jxr_linenumber" name="1221" href="#1221">1221</a>                 addResult(results, assertAllowableAction(object, Action.CAN_GET_PROPERTIES, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1222" href="#1222">1222</a>                 addResult(results, assertIsTrue(object.hasAllowableAction(Action.CAN_GET_PROPERTIES), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1223" href="#1223">1223</a> 
<a class="jxr_linenumber" name="1224" href="#1224">1224</a>                 <strong class="jxr_keyword">if</strong> (object instanceof Document) {
<a class="jxr_linenumber" name="1225" href="#1225">1225</a>                     <strong class="jxr_keyword">if</strong> (actions.contains(Action.CAN_CHECK_OUT) &amp;&amp; actions.contains(Action.CAN_CHECK_IN)) {
<a class="jxr_linenumber" name="1226" href="#1226">1226</a>                         addResult(results, createResult(FAILURE,
<a class="jxr_linenumber" name="1227" href="#1227">1227</a>                                 <span class="jxr_string">"Document object has CAN_CHECK_OUT and CAN_CHECK_IN allowable actions!"</span>));
<a class="jxr_linenumber" name="1228" href="#1228">1228</a>                     }
<a class="jxr_linenumber" name="1229" href="#1229">1229</a> 
<a class="jxr_linenumber" name="1230" href="#1230">1230</a>                     <strong class="jxr_keyword">if</strong> (actions.contains(Action.CAN_CHECK_OUT) &amp;&amp; actions.contains(Action.CAN_CANCEL_CHECK_OUT)) {
<a class="jxr_linenumber" name="1231" href="#1231">1231</a>                         addResult(results, createResult(FAILURE,
<a class="jxr_linenumber" name="1232" href="#1232">1232</a>                                 <span class="jxr_string">"Document object has CAN_CHECK_OUT and CAN_CANCEL_CHECK_OUT allowable actions!"</span>));
<a class="jxr_linenumber" name="1233" href="#1233">1233</a>                     }
<a class="jxr_linenumber" name="1234" href="#1234">1234</a> 
<a class="jxr_linenumber" name="1235" href="#1235">1235</a>                     Document doc = (Document) object;
<a class="jxr_linenumber" name="1236" href="#1236">1236</a>                     DocumentTypeDefinition docType = (DocumentTypeDefinition) doc.getType();
<a class="jxr_linenumber" name="1237" href="#1237">1237</a>                     <strong class="jxr_keyword">if</strong> (doc.isVersionSeriesCheckedOut() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="1238" href="#1238">1238</a>                         <strong class="jxr_keyword">if</strong> (doc.isVersionSeriesCheckedOut()) {
<a class="jxr_linenumber" name="1239" href="#1239">1239</a>                             f = createResult(WARNING,
<a class="jxr_linenumber" name="1240" href="#1240">1240</a>                                     <span class="jxr_string">"Document is checked out and has CAN_CHECK_OUT allowable action!"</span>);
<a class="jxr_linenumber" name="1241" href="#1241">1241</a>                             addResult(results, assertNotAllowableAction(object, Action.CAN_CHECK_OUT, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1242" href="#1242">1242</a> 
<a class="jxr_linenumber" name="1243" href="#1243">1243</a>                             <strong class="jxr_keyword">if</strong> (doc.getVersionSeriesCheckedOutId() == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="1244" href="#1244">1244</a>                                 addResult(results, createResult(WARNING,
<a class="jxr_linenumber" name="1245" href="#1245">1245</a>                                         <span class="jxr_string">"Document is checked out and but the property cmis:versionSeriesCheckedOutId is not set!"</span>));
<a class="jxr_linenumber" name="1246" href="#1246">1246</a>                             } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="1247" href="#1247">1247</a>                                 <strong class="jxr_keyword">if</strong> (doc.getVersionSeriesCheckedOutId().equals(object.getId())) {
<a class="jxr_linenumber" name="1248" href="#1248">1248</a>                                     <em class="jxr_comment">// object is PWC</em>
<a class="jxr_linenumber" name="1249" href="#1249">1249</a>                                     f = createResult(FAILURE, <span class="jxr_string">"PWC doesn't have CAN_CHECK_IN allowable action!"</span>);
<a class="jxr_linenumber" name="1250" href="#1250">1250</a>                                     addResult(results, assertAllowableAction(object, Action.CAN_CHECK_IN, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1251" href="#1251">1251</a> 
<a class="jxr_linenumber" name="1252" href="#1252">1252</a>                                     f = createResult(FAILURE,
<a class="jxr_linenumber" name="1253" href="#1253">1253</a>                                             <span class="jxr_string">"PWC doesn't have CAN_CANCEL_CHECK_OUT allowable action!"</span>);
<a class="jxr_linenumber" name="1254" href="#1254">1254</a>                                     addResult(results,
<a class="jxr_linenumber" name="1255" href="#1255">1255</a>                                             assertAllowableAction(object, Action.CAN_CANCEL_CHECK_OUT, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1256" href="#1256">1256</a>                                 } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="1257" href="#1257">1257</a>                                     <em class="jxr_comment">// object is not PWC</em>
<a class="jxr_linenumber" name="1258" href="#1258">1258</a>                                     f = createResult(WARNING, <span class="jxr_string">"Non-PWC has CAN_CHECK_IN allowable action!"</span>);
<a class="jxr_linenumber" name="1259" href="#1259">1259</a>                                     addResult(results, assertNotAllowableAction(object, Action.CAN_CHECK_IN, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1260" href="#1260">1260</a> 
<a class="jxr_linenumber" name="1261" href="#1261">1261</a>                                     f = createResult(WARNING, <span class="jxr_string">"Non-PWC has CAN_CANCEL_CHECK_OUT allowable action!"</span>);
<a class="jxr_linenumber" name="1262" href="#1262">1262</a>                                     addResult(results,
<a class="jxr_linenumber" name="1263" href="#1263">1263</a>                                             assertNotAllowableAction(object, Action.CAN_CANCEL_CHECK_OUT, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1264" href="#1264">1264</a>                                 }
<a class="jxr_linenumber" name="1265" href="#1265">1265</a>                             }
<a class="jxr_linenumber" name="1266" href="#1266">1266</a>                         } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="1267" href="#1267">1267</a>                             f = createResult(FAILURE,
<a class="jxr_linenumber" name="1268" href="#1268">1268</a>                                     <span class="jxr_string">"Document is not checked out and has CAN_CHECK_IN allowable action!"</span>);
<a class="jxr_linenumber" name="1269" href="#1269">1269</a>                             addResult(results, assertNotAllowableAction(object, Action.CAN_CHECK_IN, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1270" href="#1270">1270</a> 
<a class="jxr_linenumber" name="1271" href="#1271">1271</a>                             f = createResult(FAILURE,
<a class="jxr_linenumber" name="1272" href="#1272">1272</a>                                     <span class="jxr_string">"Document is not checked out and has CAN_CANCEL_CHECK_OUT allowable action!"</span>);
<a class="jxr_linenumber" name="1273" href="#1273">1273</a>                             addResult(results, assertNotAllowableAction(object, Action.CAN_CANCEL_CHECK_OUT, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1274" href="#1274">1274</a> 
<a class="jxr_linenumber" name="1275" href="#1275">1275</a>                             <em class="jxr_comment">// versionable check</em>
<a class="jxr_linenumber" name="1276" href="#1276">1276</a>                             <strong class="jxr_keyword">if</strong> (docType.isVersionable()) {
<a class="jxr_linenumber" name="1277" href="#1277">1277</a>                                 <strong class="jxr_keyword">if</strong> (Boolean.TRUE.equals(doc.isLatestVersion())) {
<a class="jxr_linenumber" name="1278" href="#1278">1278</a>                                     f = createResult(WARNING,
<a class="jxr_linenumber" name="1279" href="#1279">1279</a>                                             <span class="jxr_string">"Document is versionable and not checked but has no CAN_CHECK_OUT allowable action!"</span>);
<a class="jxr_linenumber" name="1280" href="#1280">1280</a>                                     addResult(results, assertAllowableAction(object, Action.CAN_CHECK_OUT, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1281" href="#1281">1281</a>                                 }
<a class="jxr_linenumber" name="1282" href="#1282">1282</a>                             } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="1283" href="#1283">1283</a>                                 f = createResult(FAILURE,
<a class="jxr_linenumber" name="1284" href="#1284">1284</a>                                         <span class="jxr_string">"Document is not versionable but has CAN_CHECK_OUT allowable action!"</span>);
<a class="jxr_linenumber" name="1285" href="#1285">1285</a>                                 addResult(results, assertNotAllowableAction(object, Action.CAN_CHECK_OUT, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1286" href="#1286">1286</a>                             }
<a class="jxr_linenumber" name="1287" href="#1287">1287</a>                         }
<a class="jxr_linenumber" name="1288" href="#1288">1288</a>                     } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="1289" href="#1289">1289</a>                         addResult(results,
<a class="jxr_linenumber" name="1290" href="#1290">1290</a>                                 createResult(WARNING, <span class="jxr_string">"Property cmis:isVersionSeriesCheckedOut is not set!"</span>));
<a class="jxr_linenumber" name="1291" href="#1291">1291</a>                     }
<a class="jxr_linenumber" name="1292" href="#1292">1292</a> 
<a class="jxr_linenumber" name="1293" href="#1293">1293</a>                     <em class="jxr_comment">// immutable check</em>
<a class="jxr_linenumber" name="1294" href="#1294">1294</a>                     <strong class="jxr_keyword">if</strong> (Boolean.TRUE.equals(doc.isImmutable())) {
<a class="jxr_linenumber" name="1295" href="#1295">1295</a>                         f = createResult(FAILURE,
<a class="jxr_linenumber" name="1296" href="#1296">1296</a>                                 <span class="jxr_string">"Document is immutable and has CAN_UPDATE_PROPERTIES allowable action!"</span>);
<a class="jxr_linenumber" name="1297" href="#1297">1297</a>                         addResult(results, assertNotAllowableAction(object, Action.CAN_UPDATE_PROPERTIES, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1298" href="#1298">1298</a> 
<a class="jxr_linenumber" name="1299" href="#1299">1299</a>                         f = createResult(FAILURE, <span class="jxr_string">"Document is immutable and has CAN_DELETE_OBJECT allowable action!"</span>);
<a class="jxr_linenumber" name="1300" href="#1300">1300</a>                         addResult(results, assertNotAllowableAction(object, Action.CAN_DELETE_OBJECT, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1301" href="#1301">1301</a>                     }
<a class="jxr_linenumber" name="1302" href="#1302">1302</a>                 } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="1303" href="#1303">1303</a>                     f = createResult(FAILURE, <span class="jxr_string">"Non-Document object has CAN_CHECK_IN allowable action!"</span>);
<a class="jxr_linenumber" name="1304" href="#1304">1304</a>                     addResult(results, assertNotAllowableAction(object, Action.CAN_CHECK_IN, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1305" href="#1305">1305</a> 
<a class="jxr_linenumber" name="1306" href="#1306">1306</a>                     f = createResult(FAILURE, <span class="jxr_string">"Non-Document object has CAN_CHECK_OUT allowable action!"</span>);
<a class="jxr_linenumber" name="1307" href="#1307">1307</a>                     addResult(results, assertNotAllowableAction(object, Action.CAN_CHECK_OUT, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1308" href="#1308">1308</a> 
<a class="jxr_linenumber" name="1309" href="#1309">1309</a>                     f = createResult(FAILURE, <span class="jxr_string">"Non-Document object has CAN_CANCEL_CHECK_OUT allowable action!"</span>);
<a class="jxr_linenumber" name="1310" href="#1310">1310</a>                     addResult(results, assertNotAllowableAction(object, Action.CAN_CANCEL_CHECK_OUT, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1311" href="#1311">1311</a> 
<a class="jxr_linenumber" name="1312" href="#1312">1312</a>                     f = createResult(FAILURE, <span class="jxr_string">"Non-Document object has CAN_GET_CONTENT_STREAM allowable action!"</span>);
<a class="jxr_linenumber" name="1313" href="#1313">1313</a>                     addResult(results, assertNotAllowableAction(object, Action.CAN_GET_CONTENT_STREAM, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1314" href="#1314">1314</a> 
<a class="jxr_linenumber" name="1315" href="#1315">1315</a>                     f = createResult(FAILURE, <span class="jxr_string">"Non-Document object has CAN_DELETE_CONTENT_STREAM allowable action!"</span>);
<a class="jxr_linenumber" name="1316" href="#1316">1316</a>                     addResult(results, assertNotAllowableAction(object, Action.CAN_DELETE_CONTENT_STREAM, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1317" href="#1317">1317</a> 
<a class="jxr_linenumber" name="1318" href="#1318">1318</a>                     f = createResult(FAILURE, <span class="jxr_string">"Non-Document object has CAN_GET_ALL_VERSIONS allowable action!"</span>);
<a class="jxr_linenumber" name="1319" href="#1319">1319</a>                     addResult(results, assertNotAllowableAction(object, Action.CAN_GET_ALL_VERSIONS, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1320" href="#1320">1320</a>                 }
<a class="jxr_linenumber" name="1321" href="#1321">1321</a> 
<a class="jxr_linenumber" name="1322" href="#1322">1322</a>                 <strong class="jxr_keyword">if</strong> (object instanceof Folder) {
<a class="jxr_linenumber" name="1323" href="#1323">1323</a>                     Folder folder = (Folder) object;
<a class="jxr_linenumber" name="1324" href="#1324">1324</a>                     <strong class="jxr_keyword">if</strong> (folder.isRootFolder()) {
<a class="jxr_linenumber" name="1325" href="#1325">1325</a>                         f = createResult(FAILURE, <span class="jxr_string">"Root folder has CAN_DELETE_OBJECT allowable action!"</span>);
<a class="jxr_linenumber" name="1326" href="#1326">1326</a>                         addResult(results, assertNotAllowableAction(object, Action.CAN_DELETE_OBJECT, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1327" href="#1327">1327</a> 
<a class="jxr_linenumber" name="1328" href="#1328">1328</a>                         f = createResult(FAILURE, <span class="jxr_string">"Root folder has CAN_GET_FOLDER_PARENT allowable action!"</span>);
<a class="jxr_linenumber" name="1329" href="#1329">1329</a>                         addResult(results, assertNotAllowableAction(object, Action.CAN_GET_FOLDER_PARENT, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1330" href="#1330">1330</a> 
<a class="jxr_linenumber" name="1331" href="#1331">1331</a>                         f = createResult(FAILURE, <span class="jxr_string">"Root folder has CAN_MOVE_OBJECT allowable action!"</span>);
<a class="jxr_linenumber" name="1332" href="#1332">1332</a>                         addResult(results, assertNotAllowableAction(object, Action.CAN_MOVE_OBJECT, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1333" href="#1333">1333</a>                     }
<a class="jxr_linenumber" name="1334" href="#1334">1334</a>                 } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="1335" href="#1335">1335</a>                     f = createResult(FAILURE, <span class="jxr_string">"Non-Folder object has CAN_GET_DESCENDANTS allowable action!"</span>);
<a class="jxr_linenumber" name="1336" href="#1336">1336</a>                     addResult(results, assertNotAllowableAction(object, Action.CAN_GET_DESCENDANTS, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1337" href="#1337">1337</a> 
<a class="jxr_linenumber" name="1338" href="#1338">1338</a>                     f = createResult(FAILURE, <span class="jxr_string">"Non-Folder object has CAN_GET_FOLDER_PARENT allowable action!"</span>);
<a class="jxr_linenumber" name="1339" href="#1339">1339</a>                     addResult(results, assertNotAllowableAction(object, Action.CAN_GET_FOLDER_PARENT, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1340" href="#1340">1340</a> 
<a class="jxr_linenumber" name="1341" href="#1341">1341</a>                     f = createResult(FAILURE, <span class="jxr_string">"Non-Folder object has CAN_GET_CHILDREN allowable action!"</span>);
<a class="jxr_linenumber" name="1342" href="#1342">1342</a>                     addResult(results, assertNotAllowableAction(object, Action.CAN_GET_CHILDREN, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1343" href="#1343">1343</a> 
<a class="jxr_linenumber" name="1344" href="#1344">1344</a>                     f = createResult(FAILURE, <span class="jxr_string">"Non-Folder object has CAN_DELETE_TREE allowable action!"</span>);
<a class="jxr_linenumber" name="1345" href="#1345">1345</a>                     addResult(results, assertNotAllowableAction(object, Action.CAN_DELETE_TREE, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1346" href="#1346">1346</a> 
<a class="jxr_linenumber" name="1347" href="#1347">1347</a>                     f = createResult(FAILURE, <span class="jxr_string">"Non-Folder object has CAN_GET_FOLDER_PARENT allowable action!"</span>);
<a class="jxr_linenumber" name="1348" href="#1348">1348</a>                     addResult(results, assertNotAllowableAction(object, Action.CAN_GET_FOLDER_PARENT, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1349" href="#1349">1349</a> 
<a class="jxr_linenumber" name="1350" href="#1350">1350</a>                     f = createResult(FAILURE, <span class="jxr_string">"Non-Folder object has CAN_CREATE_DOCUMENT allowable action!"</span>);
<a class="jxr_linenumber" name="1351" href="#1351">1351</a>                     addResult(results, assertNotAllowableAction(object, Action.CAN_CREATE_DOCUMENT, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1352" href="#1352">1352</a> 
<a class="jxr_linenumber" name="1353" href="#1353">1353</a>                     f = createResult(FAILURE, <span class="jxr_string">"Non-Folder object has CAN_CREATE_FOLDER allowable action!"</span>);
<a class="jxr_linenumber" name="1354" href="#1354">1354</a>                     addResult(results, assertNotAllowableAction(object, Action.CAN_CREATE_FOLDER, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1355" href="#1355">1355</a>                 }
<a class="jxr_linenumber" name="1356" href="#1356">1356</a> 
<a class="jxr_linenumber" name="1357" href="#1357">1357</a>                 <strong class="jxr_keyword">if</strong> (!(object instanceof FileableCmisObject) || (object instanceof Folder)) {
<a class="jxr_linenumber" name="1358" href="#1358">1358</a>                     f = createResult(FAILURE,
<a class="jxr_linenumber" name="1359" href="#1359">1359</a>                             <span class="jxr_string">"Non-Filable object or folder has CAN_ADD_OBJECT_TO_FOLDER allowable action!"</span>);
<a class="jxr_linenumber" name="1360" href="#1360">1360</a>                     addResult(results, assertNotAllowableAction(object, Action.CAN_ADD_OBJECT_TO_FOLDER, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1361" href="#1361">1361</a> 
<a class="jxr_linenumber" name="1362" href="#1362">1362</a>                     f = createResult(FAILURE,
<a class="jxr_linenumber" name="1363" href="#1363">1363</a>                             <span class="jxr_string">"Non-Filable object or folder has CAN_REMOVE_OBJECT_FROM_FOLDER allowable action!"</span>);
<a class="jxr_linenumber" name="1364" href="#1364">1364</a>                     addResult(results, assertNotAllowableAction(object, Action.CAN_REMOVE_OBJECT_FROM_FOLDER, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1365" href="#1365">1365</a>                 }
<a class="jxr_linenumber" name="1366" href="#1366">1366</a> 
<a class="jxr_linenumber" name="1367" href="#1367">1367</a>                 <strong class="jxr_keyword">if</strong> (!(object instanceof FileableCmisObject)) {
<a class="jxr_linenumber" name="1368" href="#1368">1368</a>                     f = createResult(FAILURE, <span class="jxr_string">"Non-Fileable object has CAN_MOVE_OBJECT allowable action!"</span>);
<a class="jxr_linenumber" name="1369" href="#1369">1369</a>                     addResult(results, assertNotAllowableAction(object, Action.CAN_MOVE_OBJECT, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1370" href="#1370">1370</a>                 }
<a class="jxr_linenumber" name="1371" href="#1371">1371</a> 
<a class="jxr_linenumber" name="1372" href="#1372">1372</a>                 <em class="jxr_comment">// get allowable actions again</em>
<a class="jxr_linenumber" name="1373" href="#1373">1373</a>                 AllowableActions allowableActions = session.getBinding().getObjectService()
<a class="jxr_linenumber" name="1374" href="#1374">1374</a>                         .getAllowableActions(session.getRepositoryInfo().getId(), object.getId(), <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="1375" href="#1375">1375</a> 
<a class="jxr_linenumber" name="1376" href="#1376">1376</a>                 <strong class="jxr_keyword">if</strong> (allowableActions.getAllowableActions() == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="1377" href="#1377">1377</a>                     addResult(results,
<a class="jxr_linenumber" name="1378" href="#1378">1378</a>                             createResult(FAILURE, <span class="jxr_string">"getAllowableActions() didn't returned allowable actions!"</span>));
<a class="jxr_linenumber" name="1379" href="#1379">1379</a>                 } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="1380" href="#1380">1380</a>                     f = createResult(FAILURE,
<a class="jxr_linenumber" name="1381" href="#1381">1381</a>                             <span class="jxr_string">"Object allowable actions don't match the allowable actions returned by getAllowableActions()!"</span>);
<a class="jxr_linenumber" name="1382" href="#1382">1382</a>                     addResult(results, assertEqualSet(object.getAllowableActions().getAllowableActions(),
<a class="jxr_linenumber" name="1383" href="#1383">1383</a>                             allowableActions.getAllowableActions(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1384" href="#1384">1384</a>                 }
<a class="jxr_linenumber" name="1385" href="#1385">1385</a>             }
<a class="jxr_linenumber" name="1386" href="#1386">1386</a> 
<a class="jxr_linenumber" name="1387" href="#1387">1387</a>             <em class="jxr_comment">// check ACL</em>
<a class="jxr_linenumber" name="1388" href="#1388">1388</a>             <strong class="jxr_keyword">if</strong> (object.getAcl() != <strong class="jxr_keyword">null</strong> &amp;&amp; object.getAcl().getAces() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="1389" href="#1389">1389</a>                 addResult(results, checkACL(session, object.getAcl(), <strong class="jxr_keyword">true</strong>, <span class="jxr_string">"ACL"</span>));
<a class="jxr_linenumber" name="1390" href="#1390">1390</a>             }
<a class="jxr_linenumber" name="1391" href="#1391">1391</a> 
<a class="jxr_linenumber" name="1392" href="#1392">1392</a>             <em class="jxr_comment">// check policies</em>
<a class="jxr_linenumber" name="1393" href="#1393">1393</a>             <strong class="jxr_keyword">if</strong> (hasPolicies(session)) {
<a class="jxr_linenumber" name="1394" href="#1394">1394</a>                 <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="1395" href="#1395">1395</a>                     List&lt;ObjectData&gt; appliedPolicies = session.getBinding().getPolicyService()
<a class="jxr_linenumber" name="1396" href="#1396">1396</a>                             .getAppliedPolicies(session.getRepositoryInfo().getId(), object.getId(), <span class="jxr_string">"*"</span>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="1397" href="#1397">1397</a> 
<a class="jxr_linenumber" name="1398" href="#1398">1398</a>                     <strong class="jxr_keyword">if</strong> (appliedPolicies == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="1399" href="#1399">1399</a>                         appliedPolicies = Collections.emptyList();
<a class="jxr_linenumber" name="1400" href="#1400">1400</a>                     }
<a class="jxr_linenumber" name="1401" href="#1401">1401</a> 
<a class="jxr_linenumber" name="1402" href="#1402">1402</a>                     List&lt;Policy&gt; objectPolicies = object.getPolicies();
<a class="jxr_linenumber" name="1403" href="#1403">1403</a>                     <strong class="jxr_keyword">if</strong> (objectPolicies == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="1404" href="#1404">1404</a>                         objectPolicies = Collections.emptyList();
<a class="jxr_linenumber" name="1405" href="#1405">1405</a>                     }
<a class="jxr_linenumber" name="1406" href="#1406">1406</a> 
<a class="jxr_linenumber" name="1407" href="#1407">1407</a>                     f = createResult(FAILURE,
<a class="jxr_linenumber" name="1408" href="#1408">1408</a>                             <span class="jxr_string">"The number of policies returned by getAppliedPolicies() and the number of object policies don't match!"</span>);
<a class="jxr_linenumber" name="1409" href="#1409">1409</a>                     addResult(results, assertEquals(appliedPolicies.size(), objectPolicies.size(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1410" href="#1410">1410</a>                 } <strong class="jxr_keyword">catch</strong> (CmisNotSupportedException e) {
<a class="jxr_linenumber" name="1411" href="#1411">1411</a>                     addResult(results,
<a class="jxr_linenumber" name="1412" href="#1412">1412</a>                             createResult(WARNING, <span class="jxr_string">"getAppliedPolicies() not supported for object: "</span> + object.getId()));
<a class="jxr_linenumber" name="1413" href="#1413">1413</a>                 }
<a class="jxr_linenumber" name="1414" href="#1414">1414</a>             }
<a class="jxr_linenumber" name="1415" href="#1415">1415</a> 
<a class="jxr_linenumber" name="1416" href="#1416">1416</a>             <em class="jxr_comment">// check relationships</em>
<a class="jxr_linenumber" name="1417" href="#1417">1417</a>             checkRelationships(session, results, object);
<a class="jxr_linenumber" name="1418" href="#1418">1418</a> 
<a class="jxr_linenumber" name="1419" href="#1419">1419</a>             <em class="jxr_comment">// check document content</em>
<a class="jxr_linenumber" name="1420" href="#1420">1420</a>             checkDocumentContent(session, results, object);
<a class="jxr_linenumber" name="1421" href="#1421">1421</a> 
<a class="jxr_linenumber" name="1422" href="#1422">1422</a>             <em class="jxr_comment">// check renditions</em>
<a class="jxr_linenumber" name="1423" href="#1423">1423</a>             <strong class="jxr_keyword">if</strong> (object.getRenditions() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="1424" href="#1424">1424</a>                 addResult(results, checkRenditions(session, object, <span class="jxr_string">"Rendition check"</span>));
<a class="jxr_linenumber" name="1425" href="#1425">1425</a>             }
<a class="jxr_linenumber" name="1426" href="#1426">1426</a> 
<a class="jxr_linenumber" name="1427" href="#1427">1427</a>             <em class="jxr_comment">// check allowed child object type ids</em>
<a class="jxr_linenumber" name="1428" href="#1428">1428</a>             <strong class="jxr_keyword">if</strong> (object instanceof Folder) {
<a class="jxr_linenumber" name="1429" href="#1429">1429</a>                 List&lt;String&gt; otids = object.getPropertyValue(PropertyIds.ALLOWED_CHILD_OBJECT_TYPE_IDS);
<a class="jxr_linenumber" name="1430" href="#1430">1430</a>                 <strong class="jxr_keyword">if</strong> (otids != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="1431" href="#1431">1431</a>                     <strong class="jxr_keyword">for</strong> (String otid : otids) {
<a class="jxr_linenumber" name="1432" href="#1432">1432</a>                         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="1433" href="#1433">1433</a>                             session.getTypeDefinition(otid);
<a class="jxr_linenumber" name="1434" href="#1434">1434</a>                         } <strong class="jxr_keyword">catch</strong> (CmisBaseException e) {
<a class="jxr_linenumber" name="1435" href="#1435">1435</a>                             addResult(results,
<a class="jxr_linenumber" name="1436" href="#1436">1436</a>                                     createResult(FAILURE,
<a class="jxr_linenumber" name="1437" href="#1437">1437</a>                                             <span class="jxr_string">"The cmis:allowedChildObjectTypeIds property contains the type ID '"</span> + otid
<a class="jxr_linenumber" name="1438" href="#1438">1438</a>                                                     + <span class="jxr_string">"' but the type doesn't exists. Folder ID: "</span> + object.getId()));
<a class="jxr_linenumber" name="1439" href="#1439">1439</a>                         }
<a class="jxr_linenumber" name="1440" href="#1440">1440</a>                     }
<a class="jxr_linenumber" name="1441" href="#1441">1441</a>                 }
<a class="jxr_linenumber" name="1442" href="#1442">1442</a>             }
<a class="jxr_linenumber" name="1443" href="#1443">1443</a> 
<a class="jxr_linenumber" name="1444" href="#1444">1444</a>             <em class="jxr_comment">// check path</em>
<a class="jxr_linenumber" name="1445" href="#1445">1445</a>             <strong class="jxr_keyword">if</strong> (object instanceof FileableCmisObject) {
<a class="jxr_linenumber" name="1446" href="#1446">1446</a>                 List&lt;String&gt; paths = ((FileableCmisObject) object).getPaths();
<a class="jxr_linenumber" name="1447" href="#1447">1447</a>                 <strong class="jxr_keyword">if</strong> (object instanceof Folder) {
<a class="jxr_linenumber" name="1448" href="#1448">1448</a>                     f = createResult(FAILURE, <span class="jxr_string">"Folder does not have excatly one path! This is an OpenCMIS bug!"</span>);
<a class="jxr_linenumber" name="1449" href="#1449">1449</a>                     addResult(results, assertEquals(1, paths.size(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1450" href="#1450">1450</a>                 } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="1451" href="#1451">1451</a>                     <strong class="jxr_keyword">if</strong> (Boolean.FALSE.equals(session.getRepositoryInfo().getCapabilities().isMultifilingSupported())) {
<a class="jxr_linenumber" name="1452" href="#1452">1452</a>                         f = createResult(FAILURE,
<a class="jxr_linenumber" name="1453" href="#1453">1453</a>                                 <span class="jxr_string">"Repository does not support multi-filing, but the object has more than one parent!"</span>);
<a class="jxr_linenumber" name="1454" href="#1454">1454</a>                         addResult(results, assertIsTrue(paths.size() &lt; 2, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1455" href="#1455">1455</a>                     }
<a class="jxr_linenumber" name="1456" href="#1456">1456</a>                 }
<a class="jxr_linenumber" name="1457" href="#1457">1457</a>             }
<a class="jxr_linenumber" name="1458" href="#1458">1458</a>         }
<a class="jxr_linenumber" name="1459" href="#1459">1459</a> 
<a class="jxr_linenumber" name="1460" href="#1460">1460</a>         <a href="../../../../../../org/apache/chemistry/opencmis/tck/impl/CmisTestResultImpl.html">CmisTestResultImpl</a> result = createResult(getWorst(results), message);
<a class="jxr_linenumber" name="1461" href="#1461">1461</a>         result.getChildren().addAll(results);
<a class="jxr_linenumber" name="1462" href="#1462">1462</a> 
<a class="jxr_linenumber" name="1463" href="#1463">1463</a>         <strong class="jxr_keyword">return</strong> result.getStatus().getLevel() &lt;= OK.getLevel() ? <strong class="jxr_keyword">null</strong> : result;
<a class="jxr_linenumber" name="1464" href="#1464">1464</a>     }
<a class="jxr_linenumber" name="1465" href="#1465">1465</a> 
<a class="jxr_linenumber" name="1466" href="#1466">1466</a>     <strong class="jxr_keyword">protected</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> checkACL(Session session, Acl acl, <strong class="jxr_keyword">boolean</strong> checkExact, String message) {
<a class="jxr_linenumber" name="1467" href="#1467">1467</a>         List&lt;CmisTestResult&gt; results = <strong class="jxr_keyword">new</strong> ArrayList&lt;CmisTestResult&gt;();
<a class="jxr_linenumber" name="1468" href="#1468">1468</a> 
<a class="jxr_linenumber" name="1469" href="#1469">1469</a>         <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> f;
<a class="jxr_linenumber" name="1470" href="#1470">1470</a> 
<a class="jxr_linenumber" name="1471" href="#1471">1471</a>         f = createResult(FAILURE, <span class="jxr_string">"ACL is null!"</span>);
<a class="jxr_linenumber" name="1472" href="#1472">1472</a>         addResult(results, assertNotNull(acl, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1473" href="#1473">1473</a> 
<a class="jxr_linenumber" name="1474" href="#1474">1474</a>         <strong class="jxr_keyword">if</strong> (acl != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="1475" href="#1475">1475</a> 
<a class="jxr_linenumber" name="1476" href="#1476">1476</a>             f = createResult(FAILURE, <span class="jxr_string">"List of ACEs is null!"</span>);
<a class="jxr_linenumber" name="1477" href="#1477">1477</a>             addResult(results, assertNotNull(acl.getAces(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1478" href="#1478">1478</a> 
<a class="jxr_linenumber" name="1479" href="#1479">1479</a>             <strong class="jxr_keyword">if</strong> (acl.getAces() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="1480" href="#1480">1480</a>                 <strong class="jxr_keyword">for</strong> (Ace ace : acl.getAces()) {
<a class="jxr_linenumber" name="1481" href="#1481">1481</a>                     f = createResult(FAILURE, <span class="jxr_string">"ACE with empty principal ID!"</span>);
<a class="jxr_linenumber" name="1482" href="#1482">1482</a>                     addResult(results, assertStringNotEmpty(ace.getPrincipalId(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1483" href="#1483">1483</a> 
<a class="jxr_linenumber" name="1484" href="#1484">1484</a>                     f = createResult(FAILURE, <span class="jxr_string">"ACE with empty permission list!"</span>);
<a class="jxr_linenumber" name="1485" href="#1485">1485</a>                     addResult(results, assertListNotEmpty(ace.getPermissions(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1486" href="#1486">1486</a> 
<a class="jxr_linenumber" name="1487" href="#1487">1487</a>                     <strong class="jxr_keyword">if</strong> (ace.getPermissions() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="1488" href="#1488">1488</a>                         <strong class="jxr_keyword">for</strong> (String permission : ace.getPermissions()) {
<a class="jxr_linenumber" name="1489" href="#1489">1489</a>                             f = createResult(FAILURE, <span class="jxr_string">"ACE with empty permission entry!"</span>);
<a class="jxr_linenumber" name="1490" href="#1490">1490</a>                             addResult(results, assertStringNotEmpty(permission, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1491" href="#1491">1491</a>                         }
<a class="jxr_linenumber" name="1492" href="#1492">1492</a>                     }
<a class="jxr_linenumber" name="1493" href="#1493">1493</a>                 }
<a class="jxr_linenumber" name="1494" href="#1494">1494</a>             }
<a class="jxr_linenumber" name="1495" href="#1495">1495</a> 
<a class="jxr_linenumber" name="1496" href="#1496">1496</a>             <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResultStatus.html">CmisTestResultStatus</a> status = checkExact ? WARNING : INFO;
<a class="jxr_linenumber" name="1497" href="#1497">1497</a>             f = createResult(status, <span class="jxr_string">"ACL is provided but the isExact flag is not set!"</span>);
<a class="jxr_linenumber" name="1498" href="#1498">1498</a>             addResult(results, assertNotNull(acl.isExact(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1499" href="#1499">1499</a>         }
<a class="jxr_linenumber" name="1500" href="#1500">1500</a> 
<a class="jxr_linenumber" name="1501" href="#1501">1501</a>         <a href="../../../../../../org/apache/chemistry/opencmis/tck/impl/CmisTestResultImpl.html">CmisTestResultImpl</a> result = createResult(getWorst(results), message);
<a class="jxr_linenumber" name="1502" href="#1502">1502</a>         result.getChildren().addAll(results);
<a class="jxr_linenumber" name="1503" href="#1503">1503</a> 
<a class="jxr_linenumber" name="1504" href="#1504">1504</a>         <strong class="jxr_keyword">return</strong> result.getStatus().getLevel() &lt;= OK.getLevel() ? <strong class="jxr_keyword">null</strong> : result;
<a class="jxr_linenumber" name="1505" href="#1505">1505</a>     }
<a class="jxr_linenumber" name="1506" href="#1506">1506</a> 
<a class="jxr_linenumber" name="1507" href="#1507">1507</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> checkRelationships(Session session, List&lt;CmisTestResult&gt; results, CmisObject object) {
<a class="jxr_linenumber" name="1508" href="#1508">1508</a>         <strong class="jxr_keyword">if</strong> (object instanceof Relationship) {
<a class="jxr_linenumber" name="1509" href="#1509">1509</a>             <strong class="jxr_keyword">if</strong> (isNotEmpty(object.getRelationships())) {
<a class="jxr_linenumber" name="1510" href="#1510">1510</a>                 addResult(results, createResult(FAILURE, <span class="jxr_string">"A relationship has relationships!"</span>));
<a class="jxr_linenumber" name="1511" href="#1511">1511</a>                 <strong class="jxr_keyword">return</strong>;
<a class="jxr_linenumber" name="1512" href="#1512">1512</a>             }
<a class="jxr_linenumber" name="1513" href="#1513">1513</a>         }
<a class="jxr_linenumber" name="1514" href="#1514">1514</a> 
<a class="jxr_linenumber" name="1515" href="#1515">1515</a>         <strong class="jxr_keyword">if</strong> (object.getRelationships() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="1516" href="#1516">1516</a>             <strong class="jxr_keyword">for</strong> (Relationship relationship : object.getRelationships()) {
<a class="jxr_linenumber" name="1517" href="#1517">1517</a>                 <strong class="jxr_keyword">if</strong> (relationship == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="1518" href="#1518">1518</a>                     addResult(results, createResult(FAILURE, <span class="jxr_string">"A relationship in the relationship list is null!"</span>));
<a class="jxr_linenumber" name="1519" href="#1519">1519</a>                     <strong class="jxr_keyword">continue</strong>;
<a class="jxr_linenumber" name="1520" href="#1520">1520</a>                 }
<a class="jxr_linenumber" name="1521" href="#1521">1521</a> 
<a class="jxr_linenumber" name="1522" href="#1522">1522</a>                 CmisObject fullRelationshipObject = session.getObject(relationship, SELECT_ALL_NO_CACHE_OC);
<a class="jxr_linenumber" name="1523" href="#1523">1523</a>                 addResult(results,
<a class="jxr_linenumber" name="1524" href="#1524">1524</a>                         checkObject(session, fullRelationshipObject, getAllProperties(fullRelationshipObject),
<a class="jxr_linenumber" name="1525" href="#1525">1525</a>                                 <span class="jxr_string">"Relationship check: "</span> + fullRelationshipObject.getId()));
<a class="jxr_linenumber" name="1526" href="#1526">1526</a>             }
<a class="jxr_linenumber" name="1527" href="#1527">1527</a>         }
<a class="jxr_linenumber" name="1528" href="#1528">1528</a>     }
<a class="jxr_linenumber" name="1529" href="#1529">1529</a> 
<a class="jxr_linenumber" name="1530" href="#1530">1530</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> checkDocumentContent(Session session, List&lt;CmisTestResult&gt; results, CmisObject object) {
<a class="jxr_linenumber" name="1531" href="#1531">1531</a>         <strong class="jxr_keyword">if</strong> (!(object instanceof Document)) {
<a class="jxr_linenumber" name="1532" href="#1532">1532</a>             <em class="jxr_comment">// only documents have content</em>
<a class="jxr_linenumber" name="1533" href="#1533">1533</a>             <strong class="jxr_keyword">return</strong>;
<a class="jxr_linenumber" name="1534" href="#1534">1534</a>         }
<a class="jxr_linenumber" name="1535" href="#1535">1535</a> 
<a class="jxr_linenumber" name="1536" href="#1536">1536</a>         <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> f;
<a class="jxr_linenumber" name="1537" href="#1537">1537</a> 
<a class="jxr_linenumber" name="1538" href="#1538">1538</a>         Document doc = (Document) object;
<a class="jxr_linenumber" name="1539" href="#1539">1539</a>         DocumentTypeDefinition type = (DocumentTypeDefinition) doc.getType();
<a class="jxr_linenumber" name="1540" href="#1540">1540</a> 
<a class="jxr_linenumber" name="1541" href="#1541">1541</a>         <em class="jxr_comment">// check ContentStreamAllowed flag</em>
<a class="jxr_linenumber" name="1542" href="#1542">1542</a>         <strong class="jxr_keyword">boolean</strong> hasContentProperties = (doc.getContentStreamFileName() != <strong class="jxr_keyword">null</strong>) || (doc.getContentStreamId() != <strong class="jxr_keyword">null</strong>)
<a class="jxr_linenumber" name="1543" href="#1543">1543</a>                 || (doc.getContentStreamLength() &gt; -1) || (doc.getContentStreamMimeType() != <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="1544" href="#1544">1544</a> 
<a class="jxr_linenumber" name="1545" href="#1545">1545</a>         <strong class="jxr_keyword">if</strong> (hasContentProperties) {
<a class="jxr_linenumber" name="1546" href="#1546">1546</a>             <strong class="jxr_keyword">if</strong> (type.getContentStreamAllowed() == ContentStreamAllowed.NOTALLOWED) {
<a class="jxr_linenumber" name="1547" href="#1547">1547</a>                 addResult(results, createResult(FAILURE,
<a class="jxr_linenumber" name="1548" href="#1548">1548</a>                         <span class="jxr_string">"Content properties have values but the document type doesn't allow content!"</span>));
<a class="jxr_linenumber" name="1549" href="#1549">1549</a>             }
<a class="jxr_linenumber" name="1550" href="#1550">1550</a>         } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="1551" href="#1551">1551</a>             <strong class="jxr_keyword">if</strong> (type.getContentStreamAllowed() == ContentStreamAllowed.REQUIRED) {
<a class="jxr_linenumber" name="1552" href="#1552">1552</a>                 addResult(results,
<a class="jxr_linenumber" name="1553" href="#1553">1553</a>                         createResult(FAILURE, <span class="jxr_string">"Content properties are not set but the document type demands content!"</span>));
<a class="jxr_linenumber" name="1554" href="#1554">1554</a>             }
<a class="jxr_linenumber" name="1555" href="#1555">1555</a>         }
<a class="jxr_linenumber" name="1556" href="#1556">1556</a> 
<a class="jxr_linenumber" name="1557" href="#1557">1557</a>         <em class="jxr_comment">// get the content stream</em>
<a class="jxr_linenumber" name="1558" href="#1558">1558</a>         ContentStream contentStream = doc.getContentStream();
<a class="jxr_linenumber" name="1559" href="#1559">1559</a> 
<a class="jxr_linenumber" name="1560" href="#1560">1560</a>         <strong class="jxr_keyword">if</strong> (contentStream == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="1561" href="#1561">1561</a>             <strong class="jxr_keyword">if</strong> (hasContentProperties &amp;&amp; doc.getContentStreamLength() &gt; 0) {
<a class="jxr_linenumber" name="1562" href="#1562">1562</a>                 addResult(results,
<a class="jxr_linenumber" name="1563" href="#1563">1563</a>                         createResult(FAILURE, <span class="jxr_string">"Content properties have values but the document has no content!"</span>));
<a class="jxr_linenumber" name="1564" href="#1564">1564</a>             }
<a class="jxr_linenumber" name="1565" href="#1565">1565</a> 
<a class="jxr_linenumber" name="1566" href="#1566">1566</a>             <strong class="jxr_keyword">if</strong> (type.getContentStreamAllowed() == ContentStreamAllowed.REQUIRED) {
<a class="jxr_linenumber" name="1567" href="#1567">1567</a>                 addResult(results,
<a class="jxr_linenumber" name="1568" href="#1568">1568</a>                         createResult(FAILURE, <span class="jxr_string">"The document type demands content but the document has no content!"</span>));
<a class="jxr_linenumber" name="1569" href="#1569">1569</a>             }
<a class="jxr_linenumber" name="1570" href="#1570">1570</a> 
<a class="jxr_linenumber" name="1571" href="#1571">1571</a>             <strong class="jxr_keyword">return</strong>;
<a class="jxr_linenumber" name="1572" href="#1572">1572</a>         }
<a class="jxr_linenumber" name="1573" href="#1573">1573</a> 
<a class="jxr_linenumber" name="1574" href="#1574">1574</a>         <strong class="jxr_keyword">if</strong> (type.getContentStreamAllowed() == ContentStreamAllowed.NOTALLOWED) {
<a class="jxr_linenumber" name="1575" href="#1575">1575</a>             addResult(results, createResult(FAILURE, <span class="jxr_string">"Document type doesn't allow content but document has content!"</span>));
<a class="jxr_linenumber" name="1576" href="#1576">1576</a>         }
<a class="jxr_linenumber" name="1577" href="#1577">1577</a> 
<a class="jxr_linenumber" name="1578" href="#1578">1578</a>         <em class="jxr_comment">// file name check</em>
<a class="jxr_linenumber" name="1579" href="#1579">1579</a>         f = createResult(FAILURE, <span class="jxr_string">"Content file names don't match!"</span>);
<a class="jxr_linenumber" name="1580" href="#1580">1580</a>         addResult(results, assertEquals(doc.getContentStreamFileName(), contentStream.getFileName(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1581" href="#1581">1581</a> 
<a class="jxr_linenumber" name="1582" href="#1582">1582</a>         <strong class="jxr_keyword">if</strong> (doc.getContentStreamLength() &gt; -1 &amp;&amp; contentStream.getLength() &gt; -1) {
<a class="jxr_linenumber" name="1583" href="#1583">1583</a>             f = createResult(FAILURE, <span class="jxr_string">"Content lengths don't match!"</span>);
<a class="jxr_linenumber" name="1584" href="#1584">1584</a>             addResult(results, assertEquals(doc.getContentStreamLength(), contentStream.getLength(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1585" href="#1585">1585</a>         }
<a class="jxr_linenumber" name="1586" href="#1586">1586</a> 
<a class="jxr_linenumber" name="1587" href="#1587">1587</a>         <em class="jxr_comment">// MIME type check</em>
<a class="jxr_linenumber" name="1588" href="#1588">1588</a>         String docMimeType = doc.getContentStreamMimeType();
<a class="jxr_linenumber" name="1589" href="#1589">1589</a>         <strong class="jxr_keyword">if</strong> (docMimeType != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="1590" href="#1590">1590</a>             <strong class="jxr_keyword">int</strong> x = docMimeType.indexOf(';');
<a class="jxr_linenumber" name="1591" href="#1591">1591</a>             <strong class="jxr_keyword">if</strong> (x &gt; -1) {
<a class="jxr_linenumber" name="1592" href="#1592">1592</a>                 docMimeType = docMimeType.substring(0, x);
<a class="jxr_linenumber" name="1593" href="#1593">1593</a>             }
<a class="jxr_linenumber" name="1594" href="#1594">1594</a>             docMimeType = docMimeType.trim();
<a class="jxr_linenumber" name="1595" href="#1595">1595</a>         }
<a class="jxr_linenumber" name="1596" href="#1596">1596</a> 
<a class="jxr_linenumber" name="1597" href="#1597">1597</a>         String contentMimeType = contentStream.getMimeType();
<a class="jxr_linenumber" name="1598" href="#1598">1598</a>         <strong class="jxr_keyword">if</strong> (contentMimeType != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="1599" href="#1599">1599</a>             <strong class="jxr_keyword">int</strong> x = contentMimeType.indexOf(';');
<a class="jxr_linenumber" name="1600" href="#1600">1600</a>             <strong class="jxr_keyword">if</strong> (x &gt; -1) {
<a class="jxr_linenumber" name="1601" href="#1601">1601</a>                 contentMimeType = contentMimeType.substring(0, x);
<a class="jxr_linenumber" name="1602" href="#1602">1602</a>             }
<a class="jxr_linenumber" name="1603" href="#1603">1603</a>             contentMimeType = contentMimeType.trim();
<a class="jxr_linenumber" name="1604" href="#1604">1604</a>         }
<a class="jxr_linenumber" name="1605" href="#1605">1605</a> 
<a class="jxr_linenumber" name="1606" href="#1606">1606</a>         f = createResult(FAILURE, <span class="jxr_string">"Content MIME types don't match!"</span>);
<a class="jxr_linenumber" name="1607" href="#1607">1607</a>         addResult(results, assertEquals(docMimeType, contentMimeType, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1608" href="#1608">1608</a> 
<a class="jxr_linenumber" name="1609" href="#1609">1609</a>         <strong class="jxr_keyword">if</strong> (contentStream.getMimeType() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="1610" href="#1610">1610</a>             <strong class="jxr_keyword">if</strong> (contentMimeType.equals(docMimeType)) {
<a class="jxr_linenumber" name="1611" href="#1611">1611</a>                 f = createResult(WARNING, <span class="jxr_string">"Content MIME types don't match!"</span>);
<a class="jxr_linenumber" name="1612" href="#1612">1612</a>                 addResult(results, assertEquals(doc.getContentStreamMimeType(), contentStream.getMimeType(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1613" href="#1613">1613</a>             }
<a class="jxr_linenumber" name="1614" href="#1614">1614</a> 
<a class="jxr_linenumber" name="1615" href="#1615">1615</a>             f = createResult(FAILURE, <span class="jxr_string">"Content MIME types is invalid: "</span> + contentStream.getMimeType());
<a class="jxr_linenumber" name="1616" href="#1616">1616</a>             addResult(results, assertIsTrue(
<a class="jxr_linenumber" name="1617" href="#1617">1617</a>                     contentStream.getMimeType().length() &gt; 2 &amp;&amp; contentStream.getMimeType().indexOf('/') &gt; 0, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1618" href="#1618">1618</a>         }
<a class="jxr_linenumber" name="1619" href="#1619">1619</a> 
<a class="jxr_linenumber" name="1620" href="#1620">1620</a>         <em class="jxr_comment">// check stream</em>
<a class="jxr_linenumber" name="1621" href="#1621">1621</a>         InputStream stream = contentStream.getStream();
<a class="jxr_linenumber" name="1622" href="#1622">1622</a>         <strong class="jxr_keyword">if</strong> (stream == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="1623" href="#1623">1623</a>             addResult(results, createResult(FAILURE, <span class="jxr_string">"Document has no content stream!"</span>));
<a class="jxr_linenumber" name="1624" href="#1624">1624</a>             <strong class="jxr_keyword">return</strong>;
<a class="jxr_linenumber" name="1625" href="#1625">1625</a>         }
<a class="jxr_linenumber" name="1626" href="#1626">1626</a> 
<a class="jxr_linenumber" name="1627" href="#1627">1627</a>         <em class="jxr_comment">// collect hashes</em>
<a class="jxr_linenumber" name="1628" href="#1628">1628</a>         List&lt;ContentStreamHash&gt; hashes = doc.getContentStreamHashes();
<a class="jxr_linenumber" name="1629" href="#1629">1629</a>         List&lt;MessageDigest&gt; messageDigests = <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="1630" href="#1630">1630</a>         List&lt;String&gt; algorithms = <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="1631" href="#1631">1631</a> 
<a class="jxr_linenumber" name="1632" href="#1632">1632</a>         <strong class="jxr_keyword">if</strong> (hashes != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="1633" href="#1633">1633</a>             algorithms = <strong class="jxr_keyword">new</strong> ArrayList&lt;String&gt;(hashes.size());
<a class="jxr_linenumber" name="1634" href="#1634">1634</a>             messageDigests = <strong class="jxr_keyword">new</strong> ArrayList&lt;MessageDigest&gt;(hashes.size());
<a class="jxr_linenumber" name="1635" href="#1635">1635</a> 
<a class="jxr_linenumber" name="1636" href="#1636">1636</a>             <strong class="jxr_keyword">for</strong> (ContentStreamHash hash : hashes) {
<a class="jxr_linenumber" name="1637" href="#1637">1637</a>                 <strong class="jxr_keyword">if</strong> (hash.getAlgorithm() == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="1638" href="#1638">1638</a>                     addResult(results,
<a class="jxr_linenumber" name="1639" href="#1639">1639</a>                             createResult(FAILURE, <span class="jxr_string">"Invalid content stream hash: "</span> + hash.getPropertyValue()));
<a class="jxr_linenumber" name="1640" href="#1640">1640</a>                 } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="1641" href="#1641">1641</a>                     <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="1642" href="#1642">1642</a>                         messageDigests.add(MessageDigest.getInstance(hash.getAlgorithm()));
<a class="jxr_linenumber" name="1643" href="#1643">1643</a>                         algorithms.add(hash.getAlgorithm());
<a class="jxr_linenumber" name="1644" href="#1644">1644</a>                     } <strong class="jxr_keyword">catch</strong> (NoSuchAlgorithmException e) {
<a class="jxr_linenumber" name="1645" href="#1645">1645</a>                         <em class="jxr_comment">// we don't know this algorithm - that's ok</em>
<a class="jxr_linenumber" name="1646" href="#1646">1646</a>                     }
<a class="jxr_linenumber" name="1647" href="#1647">1647</a>                 }
<a class="jxr_linenumber" name="1648" href="#1648">1648</a>             }
<a class="jxr_linenumber" name="1649" href="#1649">1649</a>         }
<a class="jxr_linenumber" name="1650" href="#1650">1650</a> 
<a class="jxr_linenumber" name="1651" href="#1651">1651</a>         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="1652" href="#1652">1652</a>             <strong class="jxr_keyword">long</strong> bytes = 0;
<a class="jxr_linenumber" name="1653" href="#1653">1653</a>             byte[] buffer = <strong class="jxr_keyword">new</strong> byte[64 * 1024];
<a class="jxr_linenumber" name="1654" href="#1654">1654</a>             <strong class="jxr_keyword">int</strong> b = stream.read(buffer);
<a class="jxr_linenumber" name="1655" href="#1655">1655</a>             <strong class="jxr_keyword">while</strong> (b &gt; -1) {
<a class="jxr_linenumber" name="1656" href="#1656">1656</a>                 bytes += b;
<a class="jxr_linenumber" name="1657" href="#1657">1657</a> 
<a class="jxr_linenumber" name="1658" href="#1658">1658</a>                 <strong class="jxr_keyword">if</strong> (messageDigests != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="1659" href="#1659">1659</a>                     <strong class="jxr_keyword">for</strong> (MessageDigest md : messageDigests) {
<a class="jxr_linenumber" name="1660" href="#1660">1660</a>                         md.update(buffer, 0, b);
<a class="jxr_linenumber" name="1661" href="#1661">1661</a>                     }
<a class="jxr_linenumber" name="1662" href="#1662">1662</a>                 }
<a class="jxr_linenumber" name="1663" href="#1663">1663</a> 
<a class="jxr_linenumber" name="1664" href="#1664">1664</a>                 b = stream.read(buffer);
<a class="jxr_linenumber" name="1665" href="#1665">1665</a>             }
<a class="jxr_linenumber" name="1666" href="#1666">1666</a>             stream.close();
<a class="jxr_linenumber" name="1667" href="#1667">1667</a> 
<a class="jxr_linenumber" name="1668" href="#1668">1668</a>             <em class="jxr_comment">// check content length</em>
<a class="jxr_linenumber" name="1669" href="#1669">1669</a>             <strong class="jxr_keyword">if</strong> (doc.getContentStreamLength() &gt; -1) {
<a class="jxr_linenumber" name="1670" href="#1670">1670</a>                 f = createResult(FAILURE,
<a class="jxr_linenumber" name="1671" href="#1671">1671</a>                         <span class="jxr_string">"Content stream length property value doesn't match the actual content length!"</span>);
<a class="jxr_linenumber" name="1672" href="#1672">1672</a>                 addResult(results, assertEquals(doc.getContentStreamLength(), bytes, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1673" href="#1673">1673</a>             }
<a class="jxr_linenumber" name="1674" href="#1674">1674</a> 
<a class="jxr_linenumber" name="1675" href="#1675">1675</a>             <strong class="jxr_keyword">if</strong> (contentStream.getLength() &gt; -1) {
<a class="jxr_linenumber" name="1676" href="#1676">1676</a>                 f = createResult(FAILURE, <span class="jxr_string">"Content length value doesn't match the actual content length!"</span>);
<a class="jxr_linenumber" name="1677" href="#1677">1677</a>                 addResult(results, assertEquals(contentStream.getLength(), bytes, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1678" href="#1678">1678</a>             }
<a class="jxr_linenumber" name="1679" href="#1679">1679</a> 
<a class="jxr_linenumber" name="1680" href="#1680">1680</a>             <em class="jxr_comment">// check hashes</em>
<a class="jxr_linenumber" name="1681" href="#1681">1681</a>             <strong class="jxr_keyword">if</strong> (messageDigests != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="1682" href="#1682">1682</a>                 <strong class="jxr_keyword">int</strong> n = messageDigests.size();
<a class="jxr_linenumber" name="1683" href="#1683">1683</a>                 <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; n; i++) {
<a class="jxr_linenumber" name="1684" href="#1684">1684</a>                     ContentStreamHash testHash = <strong class="jxr_keyword">new</strong> ContentStreamHashImpl(algorithms.get(i),
<a class="jxr_linenumber" name="1685" href="#1685">1685</a>                             messageDigests.get(i).digest());
<a class="jxr_linenumber" name="1686" href="#1686">1686</a> 
<a class="jxr_linenumber" name="1687" href="#1687">1687</a>                     <strong class="jxr_keyword">for</strong> (ContentStreamHash repHash : hashes) {
<a class="jxr_linenumber" name="1688" href="#1688">1688</a>                         <strong class="jxr_keyword">if</strong> (testHash.getAlgorithm().equals(repHash.getAlgorithm())) {
<a class="jxr_linenumber" name="1689" href="#1689">1689</a>                             f = createResult(CmisTestResultStatus.FAILURE,
<a class="jxr_linenumber" name="1690" href="#1690">1690</a>                                     <span class="jxr_string">"This content stream hash is wrong: "</span> + repHash.getPropertyValue());
<a class="jxr_linenumber" name="1691" href="#1691">1691</a>                             addResult(assertEquals(testHash.getHash(), repHash.getHash(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1692" href="#1692">1692</a>                             <strong class="jxr_keyword">break</strong>;
<a class="jxr_linenumber" name="1693" href="#1693">1693</a>                         }
<a class="jxr_linenumber" name="1694" href="#1694">1694</a>                     }
<a class="jxr_linenumber" name="1695" href="#1695">1695</a>                 }
<a class="jxr_linenumber" name="1696" href="#1696">1696</a>             }
<a class="jxr_linenumber" name="1697" href="#1697">1697</a> 
<a class="jxr_linenumber" name="1698" href="#1698">1698</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a class="jxr_linenumber" name="1699" href="#1699">1699</a>             addResult(results, createResult(FAILURE, <span class="jxr_string">"Reading content failed: "</span> + e, e, false));
<a class="jxr_linenumber" name="1700" href="#1700">1700</a>         } <strong class="jxr_keyword">finally</strong> {
<a class="jxr_linenumber" name="1701" href="#1701">1701</a>             IOUtils.closeQuietly(stream);
<a class="jxr_linenumber" name="1702" href="#1702">1702</a>         }
<a class="jxr_linenumber" name="1703" href="#1703">1703</a>     }
<a class="jxr_linenumber" name="1704" href="#1704">1704</a> 
<a class="jxr_linenumber" name="1705" href="#1705">1705</a>     <strong class="jxr_keyword">protected</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> checkRenditions(Session session, CmisObject object, String message) {
<a class="jxr_linenumber" name="1706" href="#1706">1706</a>         List&lt;CmisTestResult&gt; results = <strong class="jxr_keyword">new</strong> ArrayList&lt;CmisTestResult&gt;();
<a class="jxr_linenumber" name="1707" href="#1707">1707</a> 
<a class="jxr_linenumber" name="1708" href="#1708">1708</a>         <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> f;
<a class="jxr_linenumber" name="1709" href="#1709">1709</a> 
<a class="jxr_linenumber" name="1710" href="#1710">1710</a>         <strong class="jxr_keyword">if</strong> (object.getRenditions() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="1711" href="#1711">1711</a> 
<a class="jxr_linenumber" name="1712" href="#1712">1712</a>             <strong class="jxr_keyword">for</strong> (Rendition rend : object.getRenditions()) {
<a class="jxr_linenumber" name="1713" href="#1713">1713</a>                 f = createResult(FAILURE, <span class="jxr_string">"A rendition in the list of renditions is null!"</span>);
<a class="jxr_linenumber" name="1714" href="#1714">1714</a>                 addResult(results, assertNotNull(rend, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1715" href="#1715">1715</a> 
<a class="jxr_linenumber" name="1716" href="#1716">1716</a>                 <strong class="jxr_keyword">if</strong> (rend != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="1717" href="#1717">1717</a>                     f = createResult(FAILURE, <span class="jxr_string">"A rendition has an empty stream ID!"</span>);
<a class="jxr_linenumber" name="1718" href="#1718">1718</a>                     addResult(results, assertStringNotEmpty(rend.getStreamId(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1719" href="#1719">1719</a> 
<a class="jxr_linenumber" name="1720" href="#1720">1720</a>                     f = createResult(FAILURE, <span class="jxr_string">"A rendition has an empty kind! Stream ID: "</span> + rend.getStreamId());
<a class="jxr_linenumber" name="1721" href="#1721">1721</a>                     addResult(results, assertStringNotEmpty(rend.getKind(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1722" href="#1722">1722</a> 
<a class="jxr_linenumber" name="1723" href="#1723">1723</a>                     f = createResult(FAILURE, <span class="jxr_string">"A rendition has an empty MIME type! Stream ID: "</span> + rend.getStreamId());
<a class="jxr_linenumber" name="1724" href="#1724">1724</a>                     addResult(results, assertStringNotEmpty(rend.getMimeType(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1725" href="#1725">1725</a> 
<a class="jxr_linenumber" name="1726" href="#1726">1726</a>                     <strong class="jxr_keyword">if</strong> (<span class="jxr_string">"cmis:thumbnail"</span>.equals(rend.getKind())) {
<a class="jxr_linenumber" name="1727" href="#1727">1727</a>                         f = createResult(WARNING,
<a class="jxr_linenumber" name="1728" href="#1728">1728</a>                                 <span class="jxr_string">"A rendition is of kind 'cmis:thumbnail' but the height is not set or has an invalid value! Stream ID: "</span>
<a class="jxr_linenumber" name="1729" href="#1729">1729</a>                                         + rend.getStreamId());
<a class="jxr_linenumber" name="1730" href="#1730">1730</a>                         addResult(results, assertIsTrue(rend.getHeight() &gt; 0, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1731" href="#1731">1731</a> 
<a class="jxr_linenumber" name="1732" href="#1732">1732</a>                         f = createResult(WARNING,
<a class="jxr_linenumber" name="1733" href="#1733">1733</a>                                 <span class="jxr_string">"A rendition is of kind 'cmis:thumbnail' but the width is not set or has an invalid value! Stream ID: "</span>
<a class="jxr_linenumber" name="1734" href="#1734">1734</a>                                         + rend.getStreamId());
<a class="jxr_linenumber" name="1735" href="#1735">1735</a>                         addResult(results, assertIsTrue(rend.getWidth() &gt; 0, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1736" href="#1736">1736</a>                     }
<a class="jxr_linenumber" name="1737" href="#1737">1737</a> 
<a class="jxr_linenumber" name="1738" href="#1738">1738</a>                     <em class="jxr_comment">// check the content</em>
<a class="jxr_linenumber" name="1739" href="#1739">1739</a>                     ContentStream contentStream = rend.getContentStream();
<a class="jxr_linenumber" name="1740" href="#1740">1740</a>                     f = createResult(FAILURE, <span class="jxr_string">"A rendition has no content stream! Stream ID: "</span> + rend.getStreamId());
<a class="jxr_linenumber" name="1741" href="#1741">1741</a>                     addResult(results, assertNotNull(contentStream, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1742" href="#1742">1742</a> 
<a class="jxr_linenumber" name="1743" href="#1743">1743</a>                     <strong class="jxr_keyword">if</strong> (contentStream != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="1744" href="#1744">1744</a>                         InputStream stream = contentStream.getStream();
<a class="jxr_linenumber" name="1745" href="#1745">1745</a> 
<a class="jxr_linenumber" name="1746" href="#1746">1746</a>                         f = createResult(FAILURE, <span class="jxr_string">"A rendition has no stream! Stream ID: "</span> + rend.getStreamId());
<a class="jxr_linenumber" name="1747" href="#1747">1747</a>                         addResult(results, assertNotNull(stream, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1748" href="#1748">1748</a> 
<a class="jxr_linenumber" name="1749" href="#1749">1749</a>                         <strong class="jxr_keyword">if</strong> (stream != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="1750" href="#1750">1750</a>                             <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="1751" href="#1751">1751</a>                                 <strong class="jxr_keyword">long</strong> bytes = 0;
<a class="jxr_linenumber" name="1752" href="#1752">1752</a>                                 byte[] buffer = <strong class="jxr_keyword">new</strong> byte[64 * 1024];
<a class="jxr_linenumber" name="1753" href="#1753">1753</a>                                 <strong class="jxr_keyword">int</strong> b = stream.read(buffer);
<a class="jxr_linenumber" name="1754" href="#1754">1754</a>                                 <strong class="jxr_keyword">while</strong> (b &gt; -1) {
<a class="jxr_linenumber" name="1755" href="#1755">1755</a>                                     bytes += b;
<a class="jxr_linenumber" name="1756" href="#1756">1756</a>                                     b = stream.read(buffer);
<a class="jxr_linenumber" name="1757" href="#1757">1757</a>                                 }
<a class="jxr_linenumber" name="1758" href="#1758">1758</a>                                 stream.close();
<a class="jxr_linenumber" name="1759" href="#1759">1759</a> 
<a class="jxr_linenumber" name="1760" href="#1760">1760</a>                                 <em class="jxr_comment">// check content length</em>
<a class="jxr_linenumber" name="1761" href="#1761">1761</a>                                 <strong class="jxr_keyword">if</strong> (rend.getLength() &gt; -1) {
<a class="jxr_linenumber" name="1762" href="#1762">1762</a>                                     f = createResult(FAILURE,
<a class="jxr_linenumber" name="1763" href="#1763">1763</a>                                             <span class="jxr_string">"Rendition content stream length value doesn't match the actual content length!"</span>);
<a class="jxr_linenumber" name="1764" href="#1764">1764</a>                                     addResult(results, assertEquals(rend.getLength(), bytes, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1765" href="#1765">1765</a>                                 }
<a class="jxr_linenumber" name="1766" href="#1766">1766</a>                             } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a class="jxr_linenumber" name="1767" href="#1767">1767</a>                                 addResult(results, createResult(FAILURE, <span class="jxr_string">"Reading content failed: "</span> + e, e, false));
<a class="jxr_linenumber" name="1768" href="#1768">1768</a>                             } <strong class="jxr_keyword">finally</strong> {
<a class="jxr_linenumber" name="1769" href="#1769">1769</a>                                 IOUtils.closeQuietly(stream);
<a class="jxr_linenumber" name="1770" href="#1770">1770</a>                             }
<a class="jxr_linenumber" name="1771" href="#1771">1771</a>                         }
<a class="jxr_linenumber" name="1772" href="#1772">1772</a>                     }
<a class="jxr_linenumber" name="1773" href="#1773">1773</a>                 }
<a class="jxr_linenumber" name="1774" href="#1774">1774</a>             }
<a class="jxr_linenumber" name="1775" href="#1775">1775</a>         }
<a class="jxr_linenumber" name="1776" href="#1776">1776</a> 
<a class="jxr_linenumber" name="1777" href="#1777">1777</a>         <a href="../../../../../../org/apache/chemistry/opencmis/tck/impl/CmisTestResultImpl.html">CmisTestResultImpl</a> result = createResult(getWorst(results), message);
<a class="jxr_linenumber" name="1778" href="#1778">1778</a>         result.getChildren().addAll(results);
<a class="jxr_linenumber" name="1779" href="#1779">1779</a> 
<a class="jxr_linenumber" name="1780" href="#1780">1780</a>         <strong class="jxr_keyword">return</strong> result.getStatus().getLevel() &lt;= OK.getLevel() ? <strong class="jxr_keyword">null</strong> : result;
<a class="jxr_linenumber" name="1781" href="#1781">1781</a>     }
<a class="jxr_linenumber" name="1782" href="#1782">1782</a> 
<a class="jxr_linenumber" name="1783" href="#1783">1783</a>     <strong class="jxr_keyword">protected</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> checkVersionHistory(Session session, CmisObject object, String[] properties,
<a class="jxr_linenumber" name="1784" href="#1784">1784</a>             String message) {
<a class="jxr_linenumber" name="1785" href="#1785">1785</a>         List&lt;CmisTestResult&gt; results = <strong class="jxr_keyword">new</strong> ArrayList&lt;CmisTestResult&gt;();
<a class="jxr_linenumber" name="1786" href="#1786">1786</a> 
<a class="jxr_linenumber" name="1787" href="#1787">1787</a>         <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> f;
<a class="jxr_linenumber" name="1788" href="#1788">1788</a> 
<a class="jxr_linenumber" name="1789" href="#1789">1789</a>         <strong class="jxr_keyword">if</strong> (object.getBaseTypeId() != BaseTypeId.CMIS_DOCUMENT) {
<a class="jxr_linenumber" name="1790" href="#1790">1790</a>             <em class="jxr_comment">// skip non-document objects</em>
<a class="jxr_linenumber" name="1791" href="#1791">1791</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="1792" href="#1792">1792</a>         }
<a class="jxr_linenumber" name="1793" href="#1793">1793</a> 
<a class="jxr_linenumber" name="1794" href="#1794">1794</a>         <strong class="jxr_keyword">if</strong> (!Boolean.TRUE.equals(((DocumentTypeDefinition) object.getType()).isVersionable())) {
<a class="jxr_linenumber" name="1795" href="#1795">1795</a>             <em class="jxr_comment">// skip non-versionable types</em>
<a class="jxr_linenumber" name="1796" href="#1796">1796</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="1797" href="#1797">1797</a>         }
<a class="jxr_linenumber" name="1798" href="#1798">1798</a> 
<a class="jxr_linenumber" name="1799" href="#1799">1799</a>         Document doc = (Document) object;
<a class="jxr_linenumber" name="1800" href="#1800">1800</a> 
<a class="jxr_linenumber" name="1801" href="#1801">1801</a>         <em class="jxr_comment">// check version series ID</em>
<a class="jxr_linenumber" name="1802" href="#1802">1802</a>         String versionSeriesId = doc.getVersionSeriesId();
<a class="jxr_linenumber" name="1803" href="#1803">1803</a> 
<a class="jxr_linenumber" name="1804" href="#1804">1804</a>         f = createResult(FAILURE, <span class="jxr_string">"Versionable document has no version series ID property!"</span>);
<a class="jxr_linenumber" name="1805" href="#1805">1805</a>         addResult(results, assertStringNotEmpty(versionSeriesId, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1806" href="#1806">1806</a>         <strong class="jxr_keyword">if</strong> (versionSeriesId == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="1807" href="#1807">1807</a>             <a href="../../../../../../org/apache/chemistry/opencmis/tck/impl/CmisTestResultImpl.html">CmisTestResultImpl</a> result = createResult(getWorst(results), message);
<a class="jxr_linenumber" name="1808" href="#1808">1808</a>             result.getChildren().addAll(results);
<a class="jxr_linenumber" name="1809" href="#1809">1809</a>             <strong class="jxr_keyword">return</strong> result;
<a class="jxr_linenumber" name="1810" href="#1810">1810</a>         }
<a class="jxr_linenumber" name="1811" href="#1811">1811</a> 
<a class="jxr_linenumber" name="1812" href="#1812">1812</a>         <em class="jxr_comment">// get version history</em>
<a class="jxr_linenumber" name="1813" href="#1813">1813</a>         List&lt;Document&gt; versions = doc.getAllVersions(SELECT_ALL_NO_CACHE_OC);
<a class="jxr_linenumber" name="1814" href="#1814">1814</a> 
<a class="jxr_linenumber" name="1815" href="#1815">1815</a>         f = createResult(FAILURE, <span class="jxr_string">"Version history is null!"</span>);
<a class="jxr_linenumber" name="1816" href="#1816">1816</a>         addResult(results, assertNotNull(versions, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1817" href="#1817">1817</a>         <strong class="jxr_keyword">if</strong> (versions == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="1818" href="#1818">1818</a>             <a href="../../../../../../org/apache/chemistry/opencmis/tck/impl/CmisTestResultImpl.html">CmisTestResultImpl</a> result = createResult(getWorst(results), message);
<a class="jxr_linenumber" name="1819" href="#1819">1819</a>             result.getChildren().addAll(results);
<a class="jxr_linenumber" name="1820" href="#1820">1820</a>             <strong class="jxr_keyword">return</strong> result;
<a class="jxr_linenumber" name="1821" href="#1821">1821</a>         }
<a class="jxr_linenumber" name="1822" href="#1822">1822</a> 
<a class="jxr_linenumber" name="1823" href="#1823">1823</a>         f = createResult(FAILURE, <span class="jxr_string">"Version history must have at least one version!"</span>);
<a class="jxr_linenumber" name="1824" href="#1824">1824</a>         addResult(results, assertListNotEmpty(versions, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1825" href="#1825">1825</a> 
<a class="jxr_linenumber" name="1826" href="#1826">1826</a>         <strong class="jxr_keyword">if</strong> (!versions.isEmpty()) {
<a class="jxr_linenumber" name="1827" href="#1827">1827</a>             <em class="jxr_comment">// get latest version</em>
<a class="jxr_linenumber" name="1828" href="#1828">1828</a>             Document lastestVersion = doc.getObjectOfLatestVersion(false, SELECT_ALL_NO_CACHE_OC);
<a class="jxr_linenumber" name="1829" href="#1829">1829</a>             addResult(results, checkObject(session, lastestVersion, properties,
<a class="jxr_linenumber" name="1830" href="#1830">1830</a>                     <span class="jxr_string">"Latest version check: "</span> + lastestVersion.getId()));
<a class="jxr_linenumber" name="1831" href="#1831">1831</a> 
<a class="jxr_linenumber" name="1832" href="#1832">1832</a>             f = createResult(FAILURE, <span class="jxr_string">"Latest version is not flagged as latest version! ID: "</span> + lastestVersion.getId());
<a class="jxr_linenumber" name="1833" href="#1833">1833</a>             addResult(results, assertIsTrue(lastestVersion.isLatestVersion(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1834" href="#1834">1834</a> 
<a class="jxr_linenumber" name="1835" href="#1835">1835</a>             <em class="jxr_comment">// get latest major version</em>
<a class="jxr_linenumber" name="1836" href="#1836">1836</a>             Document lastestMajorVersion = <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="1837" href="#1837">1837</a>             <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="1838" href="#1838">1838</a>                 lastestMajorVersion = doc.getObjectOfLatestVersion(<strong class="jxr_keyword">true</strong>, SELECT_ALL_NO_CACHE_OC);
<a class="jxr_linenumber" name="1839" href="#1839">1839</a> 
<a class="jxr_linenumber" name="1840" href="#1840">1840</a>                 f = createResult(FAILURE, <span class="jxr_string">"getObjectOfLatestVersion returned an invalid object!"</span>);
<a class="jxr_linenumber" name="1841" href="#1841">1841</a>                 addResult(results, assertNotNull(lastestMajorVersion, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1842" href="#1842">1842</a>             } <strong class="jxr_keyword">catch</strong> (CmisObjectNotFoundException e) {
<a class="jxr_linenumber" name="1843" href="#1843">1843</a>                 <em class="jxr_comment">// no latest major version</em>
<a class="jxr_linenumber" name="1844" href="#1844">1844</a>             }
<a class="jxr_linenumber" name="1845" href="#1845">1845</a>             <strong class="jxr_keyword">if</strong> (lastestMajorVersion != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="1846" href="#1846">1846</a>                 addResult(results, checkObject(session, lastestMajorVersion, properties,
<a class="jxr_linenumber" name="1847" href="#1847">1847</a>                         <span class="jxr_string">"Latest major version check: "</span> + lastestMajorVersion.getId()));
<a class="jxr_linenumber" name="1848" href="#1848">1848</a> 
<a class="jxr_linenumber" name="1849" href="#1849">1849</a>                 f = createResult(FAILURE, <span class="jxr_string">"Latest major version is not flagged as latest major version! ID: "</span>
<a class="jxr_linenumber" name="1850" href="#1850">1850</a>                         + lastestMajorVersion.getId());
<a class="jxr_linenumber" name="1851" href="#1851">1851</a>                 addResult(results, assertIsTrue(lastestMajorVersion.isLatestMajorVersion(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1852" href="#1852">1852</a>             }
<a class="jxr_linenumber" name="1853" href="#1853">1853</a> 
<a class="jxr_linenumber" name="1854" href="#1854">1854</a>             <em class="jxr_comment">// iterate through the version history and test each version</em>
<a class="jxr_linenumber" name="1855" href="#1855">1855</a>             <em class="jxr_comment">// document</em>
<a class="jxr_linenumber" name="1856" href="#1856">1856</a>             <strong class="jxr_keyword">long</strong> creatationDate = Long.MAX_VALUE;
<a class="jxr_linenumber" name="1857" href="#1857">1857</a>             <strong class="jxr_keyword">int</strong> latestVersion = 0;
<a class="jxr_linenumber" name="1858" href="#1858">1858</a>             <strong class="jxr_keyword">int</strong> latestMajorVersion = 0;
<a class="jxr_linenumber" name="1859" href="#1859">1859</a>             <strong class="jxr_keyword">long</strong> latestModificationDate = Long.MAX_VALUE;
<a class="jxr_linenumber" name="1860" href="#1860">1860</a>             <strong class="jxr_keyword">int</strong> latestModifictaionIndex = Integer.MIN_VALUE;
<a class="jxr_linenumber" name="1861" href="#1861">1861</a>             Set&lt;String&gt; versionLabels = <strong class="jxr_keyword">new</strong> HashSet&lt;String&gt;();
<a class="jxr_linenumber" name="1862" href="#1862">1862</a>             <strong class="jxr_keyword">boolean</strong> found = false;
<a class="jxr_linenumber" name="1863" href="#1863">1863</a>             <strong class="jxr_keyword">boolean</strong> foundLastestVersion = false;
<a class="jxr_linenumber" name="1864" href="#1864">1864</a>             <strong class="jxr_keyword">boolean</strong> foundLastestMajorVersion = false;
<a class="jxr_linenumber" name="1865" href="#1865">1865</a>             <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; versions.size(); i++) {
<a class="jxr_linenumber" name="1866" href="#1866">1866</a>                 Document version = versions.get(i);
<a class="jxr_linenumber" name="1867" href="#1867">1867</a> 
<a class="jxr_linenumber" name="1868" href="#1868">1868</a>                 f = createResult(FAILURE, <span class="jxr_string">"Version "</span> + i + <span class="jxr_string">" is null!"</span>);
<a class="jxr_linenumber" name="1869" href="#1869">1869</a>                 addResult(results, assertNotNull(version, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1870" href="#1870">1870</a>                 <strong class="jxr_keyword">if</strong> (version == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="1871" href="#1871">1871</a>                     <strong class="jxr_keyword">continue</strong>;
<a class="jxr_linenumber" name="1872" href="#1872">1872</a>                 }
<a class="jxr_linenumber" name="1873" href="#1873">1873</a> 
<a class="jxr_linenumber" name="1874" href="#1874">1874</a>                 addResult(results, checkObject(session, version, properties, <span class="jxr_string">"Version check: "</span> + version.getId()));
<a class="jxr_linenumber" name="1875" href="#1875">1875</a> 
<a class="jxr_linenumber" name="1876" href="#1876">1876</a>                 <em class="jxr_comment">// check first entry</em>
<a class="jxr_linenumber" name="1877" href="#1877">1877</a>                 <strong class="jxr_keyword">if</strong> (i == 0) {
<a class="jxr_linenumber" name="1878" href="#1878">1878</a>                     <strong class="jxr_keyword">if</strong> (version.isVersionSeriesCheckedOut()) {
<a class="jxr_linenumber" name="1879" href="#1879">1879</a>                         f = createResult(WARNING,
<a class="jxr_linenumber" name="1880" href="#1880">1880</a>                                 <span class="jxr_string">"Version series is checked-out and the PWC is not the latest version! ID: "</span>
<a class="jxr_linenumber" name="1881" href="#1881">1881</a>                                         + version.getId()
<a class="jxr_linenumber" name="1882" href="#1882">1882</a>                                         + <span class="jxr_string">" (Note: The words of the CMIS specification define that the PWC is the latest version."</span>
<a class="jxr_linenumber" name="1883" href="#1883">1883</a>                                         + <span class="jxr_string">" But that is not the intention of the spec and will be changed in CMIS 1.1."</span>
<a class="jxr_linenumber" name="1884" href="#1884">1884</a>                                         + <span class="jxr_string">" Thus this a warning, not an error.)"</span>);
<a class="jxr_linenumber" name="1885" href="#1885">1885</a>                         addResult(results, assertIsTrue(version.isLatestVersion(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1886" href="#1886">1886</a>                     } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="1887" href="#1887">1887</a>                         f = createResult(FAILURE,
<a class="jxr_linenumber" name="1888" href="#1888">1888</a>                                 <span class="jxr_string">"Version series is not checked-out and first version history entry is not the latest version! ID: "</span>
<a class="jxr_linenumber" name="1889" href="#1889">1889</a>                                         + version.getId());
<a class="jxr_linenumber" name="1890" href="#1890">1890</a>                         addResult(results, assertIsTrue(version.isLatestVersion(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1891" href="#1891">1891</a>                     }
<a class="jxr_linenumber" name="1892" href="#1892">1892</a>                 }
<a class="jxr_linenumber" name="1893" href="#1893">1893</a> 
<a class="jxr_linenumber" name="1894" href="#1894">1894</a>                 <em class="jxr_comment">// check version ID</em>
<a class="jxr_linenumber" name="1895" href="#1895">1895</a>                 f = createResult(FAILURE, <span class="jxr_string">"Version series id does not match! ID: "</span> + version.getId());
<a class="jxr_linenumber" name="1896" href="#1896">1896</a>                 addResult(results, assertEquals(versionSeriesId, version.getVersionSeriesId(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1897" href="#1897">1897</a> 
<a class="jxr_linenumber" name="1898" href="#1898">1898</a>                 <em class="jxr_comment">// check creation date</em>
<a class="jxr_linenumber" name="1899" href="#1899">1899</a>                 <strong class="jxr_keyword">if</strong> (creatationDate == version.getCreationDate().getTimeInMillis()) {
<a class="jxr_linenumber" name="1900" href="#1900">1900</a>                     addResult(results, createResult(WARNING, <span class="jxr_string">"Two or more versions have the same creation date!"</span>));
<a class="jxr_linenumber" name="1901" href="#1901">1901</a>                 } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="1902" href="#1902">1902</a>                     f = createResult(FAILURE, <span class="jxr_string">"Version history order incorrect! Must be sorted bei creation date!"</span>);
<a class="jxr_linenumber" name="1903" href="#1903">1903</a>                     addResult(results,
<a class="jxr_linenumber" name="1904" href="#1904">1904</a>                             assertIsTrue(version.getCreationDate().getTimeInMillis() &lt;= creatationDate, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1905" href="#1905">1905</a>                 }
<a class="jxr_linenumber" name="1906" href="#1906">1906</a> 
<a class="jxr_linenumber" name="1907" href="#1907">1907</a>                 <em class="jxr_comment">// count latest versions and latest major versions</em>
<a class="jxr_linenumber" name="1908" href="#1908">1908</a>                 <strong class="jxr_keyword">if</strong> (version.isLatestVersion()) {
<a class="jxr_linenumber" name="1909" href="#1909">1909</a>                     latestVersion++;
<a class="jxr_linenumber" name="1910" href="#1910">1910</a>                 }
<a class="jxr_linenumber" name="1911" href="#1911">1911</a> 
<a class="jxr_linenumber" name="1912" href="#1912">1912</a>                 <strong class="jxr_keyword">if</strong> (version.isLatestMajorVersion()) {
<a class="jxr_linenumber" name="1913" href="#1913">1913</a>                     latestMajorVersion++;
<a class="jxr_linenumber" name="1914" href="#1914">1914</a>                 }
<a class="jxr_linenumber" name="1915" href="#1915">1915</a> 
<a class="jxr_linenumber" name="1916" href="#1916">1916</a>                 <em class="jxr_comment">// find latest modification date</em>
<a class="jxr_linenumber" name="1917" href="#1917">1917</a>                 <strong class="jxr_keyword">if</strong> (latestModificationDate == version.getLastModificationDate().getTimeInMillis()) {
<a class="jxr_linenumber" name="1918" href="#1918">1918</a>                     addResult(results,
<a class="jxr_linenumber" name="1919" href="#1919">1919</a>                             createResult(WARNING, <span class="jxr_string">"Two or more versions have the same last modification date!"</span>));
<a class="jxr_linenumber" name="1920" href="#1920">1920</a>                 } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (latestModificationDate &lt; version.getLastModificationDate().getTimeInMillis()) {
<a class="jxr_linenumber" name="1921" href="#1921">1921</a>                     latestModificationDate = version.getLastModificationDate().getTimeInMillis();
<a class="jxr_linenumber" name="1922" href="#1922">1922</a>                     latestModifictaionIndex = i;
<a class="jxr_linenumber" name="1923" href="#1923">1923</a>                 }
<a class="jxr_linenumber" name="1924" href="#1924">1924</a> 
<a class="jxr_linenumber" name="1925" href="#1925">1925</a>                 <em class="jxr_comment">// check for version label duplicates</em>
<a class="jxr_linenumber" name="1926" href="#1926">1926</a>                 String versionLabel = version.getVersionLabel();
<a class="jxr_linenumber" name="1927" href="#1927">1927</a>                 f = createResult(WARNING, <span class="jxr_string">"More than one version have this version label: "</span> + versionLabel);
<a class="jxr_linenumber" name="1928" href="#1928">1928</a>                 addResult(results, assertIsFalse(versionLabels.contains(versionLabel), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1929" href="#1929">1929</a> 
<a class="jxr_linenumber" name="1930" href="#1930">1930</a>                 versionLabels.add(versionLabel);
<a class="jxr_linenumber" name="1931" href="#1931">1931</a> 
<a class="jxr_linenumber" name="1932" href="#1932">1932</a>                 <em class="jxr_comment">// check PWC</em>
<a class="jxr_linenumber" name="1933" href="#1933">1933</a>                 <strong class="jxr_keyword">if</strong> (version.getId().equals(version.getVersionSeriesCheckedOutId())) {
<a class="jxr_linenumber" name="1934" href="#1934">1934</a>                     f = createResult(FAILURE,
<a class="jxr_linenumber" name="1935" href="#1935">1935</a>                             <span class="jxr_string">"PWC must not be flagged as latest major version! ID: "</span> + version.getId());
<a class="jxr_linenumber" name="1936" href="#1936">1936</a>                     addResult(results, assertIsFalse(version.isLatestMajorVersion(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1937" href="#1937">1937</a>                 }
<a class="jxr_linenumber" name="1938" href="#1938">1938</a> 
<a class="jxr_linenumber" name="1939" href="#1939">1939</a>                 <em class="jxr_comment">// check checked out</em>
<a class="jxr_linenumber" name="1940" href="#1940">1940</a>                 <strong class="jxr_keyword">if</strong> (Boolean.TRUE.equals(doc.isVersionSeriesCheckedOut())) {
<a class="jxr_linenumber" name="1941" href="#1941">1941</a>                     f = createResult(WARNING,
<a class="jxr_linenumber" name="1942" href="#1942">1942</a>                             <span class="jxr_string">"Version series is marked as checked out but cmis:versionSeriesCheckedOutId is not set! ID: "</span>
<a class="jxr_linenumber" name="1943" href="#1943">1943</a>                                     + version.getId());
<a class="jxr_linenumber" name="1944" href="#1944">1944</a>                     addResult(results, assertStringNotEmpty(doc.getVersionSeriesCheckedOutId(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1945" href="#1945">1945</a> 
<a class="jxr_linenumber" name="1946" href="#1946">1946</a>                     f = createResult(WARNING,
<a class="jxr_linenumber" name="1947" href="#1947">1947</a>                             <span class="jxr_string">"Version series is marked as checked out but cmis:versionSeriesCheckedOutBy is not set! ID: "</span>
<a class="jxr_linenumber" name="1948" href="#1948">1948</a>                                     + version.getId());
<a class="jxr_linenumber" name="1949" href="#1949">1949</a>                     addResult(results, assertStringNotEmpty(doc.getVersionSeriesCheckedOutBy(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1950" href="#1950">1950</a>                 } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (Boolean.FALSE.equals(doc.isVersionSeriesCheckedOut())) {
<a class="jxr_linenumber" name="1951" href="#1951">1951</a>                     f = createResult(FAILURE,
<a class="jxr_linenumber" name="1952" href="#1952">1952</a>                             <span class="jxr_string">"Version series is not marked as checked out but cmis:versionSeriesCheckedOutId is set! ID: "</span>
<a class="jxr_linenumber" name="1953" href="#1953">1953</a>                                     + version.getId());
<a class="jxr_linenumber" name="1954" href="#1954">1954</a>                     addResult(results, assertNull(doc.getVersionSeriesCheckedOutId(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1955" href="#1955">1955</a> 
<a class="jxr_linenumber" name="1956" href="#1956">1956</a>                     f = createResult(FAILURE,
<a class="jxr_linenumber" name="1957" href="#1957">1957</a>                             <span class="jxr_string">"Version series is not marked as checked out but cmis:versionSeriesCheckedOutIdBy is set! ID: "</span>
<a class="jxr_linenumber" name="1958" href="#1958">1958</a>                                     + version.getId());
<a class="jxr_linenumber" name="1959" href="#1959">1959</a>                     addResult(results, assertNull(doc.getVersionSeriesCheckedOutBy(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1960" href="#1960">1960</a>                 }
<a class="jxr_linenumber" name="1961" href="#1961">1961</a> 
<a class="jxr_linenumber" name="1962" href="#1962">1962</a>                 <em class="jxr_comment">// found origin object?</em>
<a class="jxr_linenumber" name="1963" href="#1963">1963</a>                 <strong class="jxr_keyword">if</strong> (version.getId().equals(object.getId())) {
<a class="jxr_linenumber" name="1964" href="#1964">1964</a>                     found = <strong class="jxr_keyword">true</strong>;
<a class="jxr_linenumber" name="1965" href="#1965">1965</a>                 }
<a class="jxr_linenumber" name="1966" href="#1966">1966</a> 
<a class="jxr_linenumber" name="1967" href="#1967">1967</a>                 <em class="jxr_comment">// found latest version?</em>
<a class="jxr_linenumber" name="1968" href="#1968">1968</a>                 <strong class="jxr_keyword">if</strong> (version.getId().equals(lastestVersion.getId())) {
<a class="jxr_linenumber" name="1969" href="#1969">1969</a>                     foundLastestVersion = <strong class="jxr_keyword">true</strong>;
<a class="jxr_linenumber" name="1970" href="#1970">1970</a>                 }
<a class="jxr_linenumber" name="1971" href="#1971">1971</a> 
<a class="jxr_linenumber" name="1972" href="#1972">1972</a>                 <em class="jxr_comment">// found latest major version?</em>
<a class="jxr_linenumber" name="1973" href="#1973">1973</a>                 <strong class="jxr_keyword">if</strong> (lastestMajorVersion != <strong class="jxr_keyword">null</strong> &amp;&amp; version.getId().equals(lastestMajorVersion.getId())) {
<a class="jxr_linenumber" name="1974" href="#1974">1974</a>                     foundLastestMajorVersion = <strong class="jxr_keyword">true</strong>;
<a class="jxr_linenumber" name="1975" href="#1975">1975</a>                 }
<a class="jxr_linenumber" name="1976" href="#1976">1976</a>             }
<a class="jxr_linenumber" name="1977" href="#1977">1977</a> 
<a class="jxr_linenumber" name="1978" href="#1978">1978</a>             <em class="jxr_comment">// check latest versions</em>
<a class="jxr_linenumber" name="1979" href="#1979">1979</a>             f = createResult(FAILURE,
<a class="jxr_linenumber" name="1980" href="#1980">1980</a>                     <span class="jxr_string">"Version series ID has "</span> + latestVersion + <span class="jxr_string">" latest versions! There must be only one!"</span>);
<a class="jxr_linenumber" name="1981" href="#1981">1981</a>             addResult(results, assertEquals(1, latestVersion, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1982" href="#1982">1982</a> 
<a class="jxr_linenumber" name="1983" href="#1983">1983</a>             <strong class="jxr_keyword">if</strong> (!foundLastestVersion) {
<a class="jxr_linenumber" name="1984" href="#1984">1984</a>                 addResult(results, createResult(FAILURE, <span class="jxr_string">"Latest version not found in version history!"</span>));
<a class="jxr_linenumber" name="1985" href="#1985">1985</a>             }
<a class="jxr_linenumber" name="1986" href="#1986">1986</a> 
<a class="jxr_linenumber" name="1987" href="#1987">1987</a>             <em class="jxr_comment">// check latest major versions</em>
<a class="jxr_linenumber" name="1988" href="#1988">1988</a>             <strong class="jxr_keyword">if</strong> (lastestMajorVersion == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="1989" href="#1989">1989</a>                 f = createResult(FAILURE, <span class="jxr_string">"Version series ID has "</span> + latestMajorVersion
<a class="jxr_linenumber" name="1990" href="#1990">1990</a>                         + <span class="jxr_string">" latest major version(s) but getObjectOfLatestVersion() didn't return a major version!"</span>);
<a class="jxr_linenumber" name="1991" href="#1991">1991</a>                 addResult(results, assertEquals(0, latestMajorVersion, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1992" href="#1992">1992</a>             } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="1993" href="#1993">1993</a>                 f = createResult(FAILURE, <span class="jxr_string">"Version series ID has "</span> + latestMajorVersion
<a class="jxr_linenumber" name="1994" href="#1994">1994</a>                         + <span class="jxr_string">" latest major versions but there should be exactly one!"</span>);
<a class="jxr_linenumber" name="1995" href="#1995">1995</a>                 addResult(results, assertEquals(1, latestMajorVersion, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="1996" href="#1996">1996</a> 
<a class="jxr_linenumber" name="1997" href="#1997">1997</a>                 <strong class="jxr_keyword">if</strong> (!foundLastestMajorVersion) {
<a class="jxr_linenumber" name="1998" href="#1998">1998</a>                     addResult(results, createResult(FAILURE, <span class="jxr_string">"Latest major version not found in version history!"</span>));
<a class="jxr_linenumber" name="1999" href="#1999">1999</a>                 }
<a class="jxr_linenumber" name="2000" href="#2000">2000</a>             }
<a class="jxr_linenumber" name="2001" href="#2001">2001</a> 
<a class="jxr_linenumber" name="2002" href="#2002">2002</a>             <em class="jxr_comment">// check latest version</em>
<a class="jxr_linenumber" name="2003" href="#2003">2003</a>             <strong class="jxr_keyword">if</strong> (latestModifictaionIndex &gt;= 0) {
<a class="jxr_linenumber" name="2004" href="#2004">2004</a>                 f = createResult(FAILURE,
<a class="jxr_linenumber" name="2005" href="#2005">2005</a>                         <span class="jxr_string">"Version with the latest modification date is not flagged as latest version! ID: "</span>
<a class="jxr_linenumber" name="2006" href="#2006">2006</a>                                 + versions.get(latestModifictaionIndex));
<a class="jxr_linenumber" name="2007" href="#2007">2007</a>                 addResult(results, assertIsTrue(versions.get(latestModifictaionIndex).isLatestVersion(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2008" href="#2008">2008</a>             }
<a class="jxr_linenumber" name="2009" href="#2009">2009</a> 
<a class="jxr_linenumber" name="2010" href="#2010">2010</a>             <em class="jxr_comment">// check if the origin object was found</em>
<a class="jxr_linenumber" name="2011" href="#2011">2011</a>             <strong class="jxr_keyword">if</strong> (!found) {
<a class="jxr_linenumber" name="2012" href="#2012">2012</a>                 addResult(results, createResult(FAILURE, <span class="jxr_string">"Document not found in its version history!"</span>));
<a class="jxr_linenumber" name="2013" href="#2013">2013</a>             }
<a class="jxr_linenumber" name="2014" href="#2014">2014</a>         }
<a class="jxr_linenumber" name="2015" href="#2015">2015</a> 
<a class="jxr_linenumber" name="2016" href="#2016">2016</a>         <a href="../../../../../../org/apache/chemistry/opencmis/tck/impl/CmisTestResultImpl.html">CmisTestResultImpl</a> result = createResult(getWorst(results), message);
<a class="jxr_linenumber" name="2017" href="#2017">2017</a>         result.getChildren().addAll(results);
<a class="jxr_linenumber" name="2018" href="#2018">2018</a> 
<a class="jxr_linenumber" name="2019" href="#2019">2019</a>         <strong class="jxr_keyword">return</strong> result.getStatus().getLevel() &lt;= OK.getLevel() ? <strong class="jxr_keyword">null</strong> : result;
<a class="jxr_linenumber" name="2020" href="#2020">2020</a>     }
<a class="jxr_linenumber" name="2021" href="#2021">2021</a> 
<a class="jxr_linenumber" name="2022" href="#2022">2022</a>     <strong class="jxr_keyword">protected</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> assertAllowableAction(CmisObject object, Action action, <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> success,
<a class="jxr_linenumber" name="2023" href="#2023">2023</a>             <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> failure) {
<a class="jxr_linenumber" name="2024" href="#2024">2024</a>         AllowableActions allowableActions = object.getAllowableActions();
<a class="jxr_linenumber" name="2025" href="#2025">2025</a>         <strong class="jxr_keyword">if</strong> (allowableActions != <strong class="jxr_keyword">null</strong> &amp;&amp; allowableActions.getAllowableActions() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="2026" href="#2026">2026</a>             <strong class="jxr_keyword">if</strong> (allowableActions.getAllowableActions().contains(action)) {
<a class="jxr_linenumber" name="2027" href="#2027">2027</a>                 <strong class="jxr_keyword">return</strong> success;
<a class="jxr_linenumber" name="2028" href="#2028">2028</a>             }
<a class="jxr_linenumber" name="2029" href="#2029">2029</a>         }
<a class="jxr_linenumber" name="2030" href="#2030">2030</a> 
<a class="jxr_linenumber" name="2031" href="#2031">2031</a>         <strong class="jxr_keyword">return</strong> failure;
<a class="jxr_linenumber" name="2032" href="#2032">2032</a>     }
<a class="jxr_linenumber" name="2033" href="#2033">2033</a> 
<a class="jxr_linenumber" name="2034" href="#2034">2034</a>     <strong class="jxr_keyword">protected</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> assertNotAllowableAction(CmisObject object, Action action, <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> success,
<a class="jxr_linenumber" name="2035" href="#2035">2035</a>             <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> failure) {
<a class="jxr_linenumber" name="2036" href="#2036">2036</a>         AllowableActions allowableActions = object.getAllowableActions();
<a class="jxr_linenumber" name="2037" href="#2037">2037</a>         <strong class="jxr_keyword">if</strong> (allowableActions != <strong class="jxr_keyword">null</strong> &amp;&amp; allowableActions.getAllowableActions() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="2038" href="#2038">2038</a>             <strong class="jxr_keyword">if</strong> (!allowableActions.getAllowableActions().contains(action)) {
<a class="jxr_linenumber" name="2039" href="#2039">2039</a>                 <strong class="jxr_keyword">return</strong> success;
<a class="jxr_linenumber" name="2040" href="#2040">2040</a>             }
<a class="jxr_linenumber" name="2041" href="#2041">2041</a>         }
<a class="jxr_linenumber" name="2042" href="#2042">2042</a> 
<a class="jxr_linenumber" name="2043" href="#2043">2043</a>         <strong class="jxr_keyword">return</strong> failure;
<a class="jxr_linenumber" name="2044" href="#2044">2044</a>     }
<a class="jxr_linenumber" name="2045" href="#2045">2045</a> 
<a class="jxr_linenumber" name="2046" href="#2046">2046</a>     <strong class="jxr_keyword">protected</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> checkProperty(Property&lt;?&gt; property, String message, <a href="../../../../../../org/apache/chemistry/opencmis/tck/impl/PropertyCheckEnum.html">PropertyCheckEnum</a> propertyCheck) {
<a class="jxr_linenumber" name="2047" href="#2047">2047</a>         List&lt;CmisTestResult&gt; results = <strong class="jxr_keyword">new</strong> ArrayList&lt;CmisTestResult&gt;();
<a class="jxr_linenumber" name="2048" href="#2048">2048</a> 
<a class="jxr_linenumber" name="2049" href="#2049">2049</a>         <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> f;
<a class="jxr_linenumber" name="2050" href="#2050">2050</a> 
<a class="jxr_linenumber" name="2051" href="#2051">2051</a>         f = createResult(FAILURE, <span class="jxr_string">"Property is not included in response!"</span>);
<a class="jxr_linenumber" name="2052" href="#2052">2052</a>         addResult(results, assertNotNull(property, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2053" href="#2053">2053</a> 
<a class="jxr_linenumber" name="2054" href="#2054">2054</a>         <strong class="jxr_keyword">if</strong> (property != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="2055" href="#2055">2055</a>             f = createResult(FAILURE, <span class="jxr_string">"Property ID is not set or empty!"</span>);
<a class="jxr_linenumber" name="2056" href="#2056">2056</a>             addResult(results, assertStringNotEmpty(property.getId(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2057" href="#2057">2057</a> 
<a class="jxr_linenumber" name="2058" href="#2058">2058</a>             f = createResult(WARNING, <span class="jxr_string">"Display name is not set!"</span>);
<a class="jxr_linenumber" name="2059" href="#2059">2059</a>             addResult(results, assertNotNull(property.getDisplayName(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2060" href="#2060">2060</a> 
<a class="jxr_linenumber" name="2061" href="#2061">2061</a>             f = createResult(WARNING, <span class="jxr_string">"Query name is not set!"</span>);
<a class="jxr_linenumber" name="2062" href="#2062">2062</a>             addResult(results, assertNotNull(property.getQueryName(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2063" href="#2063">2063</a> 
<a class="jxr_linenumber" name="2064" href="#2064">2064</a>             f = createResult(WARNING, <span class="jxr_string">"Local name is not set!"</span>);
<a class="jxr_linenumber" name="2065" href="#2065">2065</a>             addResult(results, assertNotNull(property.getLocalName(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2066" href="#2066">2066</a> 
<a class="jxr_linenumber" name="2067" href="#2067">2067</a>             <strong class="jxr_keyword">if</strong> ((propertyCheck == PropertyCheckEnum.MUST_BE_SET)
<a class="jxr_linenumber" name="2068" href="#2068">2068</a>                     || (propertyCheck == PropertyCheckEnum.STRING_MUST_NOT_BE_EMPTY)) {
<a class="jxr_linenumber" name="2069" href="#2069">2069</a>                 f = createResult(FAILURE, <span class="jxr_string">"Property has no value!"</span>);
<a class="jxr_linenumber" name="2070" href="#2070">2070</a>                 addResult(results, assertListNotEmpty(property.getValues(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2071" href="#2071">2071</a>             } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (propertyCheck == PropertyCheckEnum.STRING_SHOULD_NOT_BE_EMPTY) {
<a class="jxr_linenumber" name="2072" href="#2072">2072</a>                 f = createResult(WARNING, <span class="jxr_string">"Property has no value!"</span>);
<a class="jxr_linenumber" name="2073" href="#2073">2073</a>                 addResult(results, assertListNotEmpty(property.getValues(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2074" href="#2074">2074</a>             } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (propertyCheck == PropertyCheckEnum.MUST_NOT_BE_SET) {
<a class="jxr_linenumber" name="2075" href="#2075">2075</a>                 f = createResult(FAILURE, <span class="jxr_string">"Property has a value!"</span>);
<a class="jxr_linenumber" name="2076" href="#2076">2076</a>                 addResult(results, assertIsTrue(property.getValues().isEmpty(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2077" href="#2077">2077</a>             }
<a class="jxr_linenumber" name="2078" href="#2078">2078</a> 
<a class="jxr_linenumber" name="2079" href="#2079">2079</a>             <strong class="jxr_keyword">boolean</strong> isString = ((property.getDefinition().getPropertyType() == PropertyType.STRING)
<a class="jxr_linenumber" name="2080" href="#2080">2080</a>                     || (property.getDefinition().getPropertyType() == PropertyType.ID)
<a class="jxr_linenumber" name="2081" href="#2081">2081</a>                     || (property.getDefinition().getPropertyType() == PropertyType.URI)
<a class="jxr_linenumber" name="2082" href="#2082">2082</a>                     || (property.getDefinition().getPropertyType() == PropertyType.HTML));
<a class="jxr_linenumber" name="2083" href="#2083">2083</a>             <strong class="jxr_keyword">for</strong> (Object value : property.getValues()) {
<a class="jxr_linenumber" name="2084" href="#2084">2084</a>                 <strong class="jxr_keyword">if</strong> (value == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="2085" href="#2085">2085</a>                     addResult(results, createResult(FAILURE, <span class="jxr_string">"Property values contain a null value!"</span>));
<a class="jxr_linenumber" name="2086" href="#2086">2086</a>                     <strong class="jxr_keyword">break</strong>;
<a class="jxr_linenumber" name="2087" href="#2087">2087</a>                 } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (isString) {
<a class="jxr_linenumber" name="2088" href="#2088">2088</a>                     <strong class="jxr_keyword">if</strong> (propertyCheck == PropertyCheckEnum.STRING_MUST_NOT_BE_EMPTY) {
<a class="jxr_linenumber" name="2089" href="#2089">2089</a>                         f = createResult(FAILURE, <span class="jxr_string">"Property values contain an empty string!"</span>);
<a class="jxr_linenumber" name="2090" href="#2090">2090</a>                         addResult(results, assertStringNotEmpty(value.toString(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2091" href="#2091">2091</a>                     } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (propertyCheck == PropertyCheckEnum.STRING_SHOULD_NOT_BE_EMPTY) {
<a class="jxr_linenumber" name="2092" href="#2092">2092</a>                         f = createResult(WARNING, <span class="jxr_string">"Property values contain an empty string!"</span>);
<a class="jxr_linenumber" name="2093" href="#2093">2093</a>                         addResult(results, assertStringNotEmpty(value.toString(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2094" href="#2094">2094</a>                     }
<a class="jxr_linenumber" name="2095" href="#2095">2095</a>                 }
<a class="jxr_linenumber" name="2096" href="#2096">2096</a>             }
<a class="jxr_linenumber" name="2097" href="#2097">2097</a> 
<a class="jxr_linenumber" name="2098" href="#2098">2098</a>             <strong class="jxr_keyword">if</strong> (property.getDefinition().getCardinality() == Cardinality.SINGLE) {
<a class="jxr_linenumber" name="2099" href="#2099">2099</a>                 f = createResult(FAILURE, <span class="jxr_string">"Property cardinality is SINGLE but property has more than one value!"</span>);
<a class="jxr_linenumber" name="2100" href="#2100">2100</a>                 addResult(results, assertIsTrue(property.getValues().size() &lt;= 1, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2101" href="#2101">2101</a>             }
<a class="jxr_linenumber" name="2102" href="#2102">2102</a> 
<a class="jxr_linenumber" name="2103" href="#2103">2103</a>             <strong class="jxr_keyword">if</strong> (property.getDefinition().isRequired() == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="2104" href="#2104">2104</a>                 addResult(results, createResult(FAILURE, <span class="jxr_string">"Property definition doesn't contain the required flag!"</span>));
<a class="jxr_linenumber" name="2105" href="#2105">2105</a>             } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="2106" href="#2106">2106</a>                 <strong class="jxr_keyword">if</strong> (property.getDefinition().isRequired().booleanValue()) {
<a class="jxr_linenumber" name="2107" href="#2107">2107</a>                     f = createResult(FAILURE, <span class="jxr_string">"Property is required but has no value!"</span>);
<a class="jxr_linenumber" name="2108" href="#2108">2108</a>                     addResult(results, assertListNotEmpty(property.getValues(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2109" href="#2109">2109</a>                 }
<a class="jxr_linenumber" name="2110" href="#2110">2110</a>             }
<a class="jxr_linenumber" name="2111" href="#2111">2111</a>         }
<a class="jxr_linenumber" name="2112" href="#2112">2112</a> 
<a class="jxr_linenumber" name="2113" href="#2113">2113</a>         <a href="../../../../../../org/apache/chemistry/opencmis/tck/impl/CmisTestResultImpl.html">CmisTestResultImpl</a> result = createResult(getWorst(results), message);
<a class="jxr_linenumber" name="2114" href="#2114">2114</a>         result.getChildren().addAll(results);
<a class="jxr_linenumber" name="2115" href="#2115">2115</a> 
<a class="jxr_linenumber" name="2116" href="#2116">2116</a>         <strong class="jxr_keyword">return</strong> result.getStatus().getLevel() &lt;= OK.getLevel() ? <strong class="jxr_keyword">null</strong> : result;
<a class="jxr_linenumber" name="2117" href="#2117">2117</a>     }
<a class="jxr_linenumber" name="2118" href="#2118">2118</a> 
<a class="jxr_linenumber" name="2119" href="#2119">2119</a>     <strong class="jxr_keyword">protected</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> checkChildren(Session session, Folder folder, String message) {
<a class="jxr_linenumber" name="2120" href="#2120">2120</a>         List&lt;CmisTestResult&gt; results = <strong class="jxr_keyword">new</strong> ArrayList&lt;CmisTestResult&gt;();
<a class="jxr_linenumber" name="2121" href="#2121">2121</a> 
<a class="jxr_linenumber" name="2122" href="#2122">2122</a>         <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> f;
<a class="jxr_linenumber" name="2123" href="#2123">2123</a> 
<a class="jxr_linenumber" name="2124" href="#2124">2124</a>         <strong class="jxr_keyword">if</strong> (folder == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="2125" href="#2125">2125</a>             <strong class="jxr_keyword">return</strong> createResult(FAILURE, <span class="jxr_string">"Folder is null!"</span>);
<a class="jxr_linenumber" name="2126" href="#2126">2126</a>         }
<a class="jxr_linenumber" name="2127" href="#2127">2127</a> 
<a class="jxr_linenumber" name="2128" href="#2128">2128</a>         <em class="jxr_comment">// getChildren</em>
<a class="jxr_linenumber" name="2129" href="#2129">2129</a> 
<a class="jxr_linenumber" name="2130" href="#2130">2130</a>         <strong class="jxr_keyword">boolean</strong> supportsOrderByName = isOrderByNameSupported(session);
<a class="jxr_linenumber" name="2131" href="#2131">2131</a>         OperationContext orderContext = (supportsOrderByName ? SELECT_ALL_NO_CACHE_OC_ORDER_BY_NAME
<a class="jxr_linenumber" name="2132" href="#2132">2132</a>                 : SELECT_ALL_NO_CACHE_OC);
<a class="jxr_linenumber" name="2133" href="#2133">2133</a> 
<a class="jxr_linenumber" name="2134" href="#2134">2134</a>         <strong class="jxr_keyword">long</strong> childrenCount = 0;
<a class="jxr_linenumber" name="2135" href="#2135">2135</a>         <strong class="jxr_keyword">long</strong> childrenFolderCount = 0;
<a class="jxr_linenumber" name="2136" href="#2136">2136</a>         ItemIterable&lt;CmisObject&gt; children = folder.getChildren(orderContext);
<a class="jxr_linenumber" name="2137" href="#2137">2137</a> 
<a class="jxr_linenumber" name="2138" href="#2138">2138</a>         <strong class="jxr_keyword">int</strong> orderByNameIssues = 0;
<a class="jxr_linenumber" name="2139" href="#2139">2139</a>         String lastName = <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="2140" href="#2140">2140</a> 
<a class="jxr_linenumber" name="2141" href="#2141">2141</a>         <strong class="jxr_keyword">for</strong> (CmisObject child : children) {
<a class="jxr_linenumber" name="2142" href="#2142">2142</a>             childrenCount++;
<a class="jxr_linenumber" name="2143" href="#2143">2143</a>             <strong class="jxr_keyword">if</strong> (child instanceof Folder) {
<a class="jxr_linenumber" name="2144" href="#2144">2144</a>                 childrenFolderCount++;
<a class="jxr_linenumber" name="2145" href="#2145">2145</a>             }
<a class="jxr_linenumber" name="2146" href="#2146">2146</a> 
<a class="jxr_linenumber" name="2147" href="#2147">2147</a>             checkChild(session, results, folder, child);
<a class="jxr_linenumber" name="2148" href="#2148">2148</a> 
<a class="jxr_linenumber" name="2149" href="#2149">2149</a>             <strong class="jxr_keyword">if</strong> (lastName != <strong class="jxr_keyword">null</strong> &amp;&amp; child.getName() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="2150" href="#2150">2150</a>                 <strong class="jxr_keyword">if</strong> (child.getName().compareToIgnoreCase(lastName) &lt; 0) {
<a class="jxr_linenumber" name="2151" href="#2151">2151</a>                     orderByNameIssues++;
<a class="jxr_linenumber" name="2152" href="#2152">2152</a>                 }
<a class="jxr_linenumber" name="2153" href="#2153">2153</a>             }
<a class="jxr_linenumber" name="2154" href="#2154">2154</a> 
<a class="jxr_linenumber" name="2155" href="#2155">2155</a>             lastName = child.getName();
<a class="jxr_linenumber" name="2156" href="#2156">2156</a>         }
<a class="jxr_linenumber" name="2157" href="#2157">2157</a> 
<a class="jxr_linenumber" name="2158" href="#2158">2158</a>         <strong class="jxr_keyword">if</strong> (children.getTotalNumItems() &gt;= 0) {
<a class="jxr_linenumber" name="2159" href="#2159">2159</a>             f = createResult(WARNING, <span class="jxr_string">"Number of children doesn't match the reported total number of items!"</span>);
<a class="jxr_linenumber" name="2160" href="#2160">2160</a>             addResult(results, assertEquals(childrenCount, children.getTotalNumItems(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2161" href="#2161">2161</a>         } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="2162" href="#2162">2162</a>             addResult(results, createResult(WARNING, <span class="jxr_string">"getChildren did not report the total number of items!"</span>));
<a class="jxr_linenumber" name="2163" href="#2163">2163</a>         }
<a class="jxr_linenumber" name="2164" href="#2164">2164</a> 
<a class="jxr_linenumber" name="2165" href="#2165">2165</a>         <strong class="jxr_keyword">if</strong> (supportsOrderByName) {
<a class="jxr_linenumber" name="2166" href="#2166">2166</a>             f = createResult(WARNING,
<a class="jxr_linenumber" name="2167" href="#2167">2167</a>                     <span class="jxr_string">"Children should be ordered by cmis:name, but they are not! (It might be a collation mismtach.)"</span>);
<a class="jxr_linenumber" name="2168" href="#2168">2168</a>             addResult(results, assertEquals(0, orderByNameIssues, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2169" href="#2169">2169</a>         } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="2170" href="#2170">2170</a>             addResult(results, createResult(INFO, <span class="jxr_string">"Repository doesn't support Order By for getChildren()."</span>));
<a class="jxr_linenumber" name="2171" href="#2171">2171</a>         }
<a class="jxr_linenumber" name="2172" href="#2172">2172</a> 
<a class="jxr_linenumber" name="2173" href="#2173">2173</a>         <em class="jxr_comment">// test path segments</em>
<a class="jxr_linenumber" name="2174" href="#2174">2174</a> 
<a class="jxr_linenumber" name="2175" href="#2175">2175</a>         ObjectInFolderList pathSegementChildren = session.getBinding().getNavigationService().getChildren(
<a class="jxr_linenumber" name="2176" href="#2176">2176</a>                 session.getRepositoryInfo().getId(), folder.getId(), <span class="jxr_string">"cmis:objectId,cmis:name"</span>, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>,
<a class="jxr_linenumber" name="2177" href="#2177">2177</a>                 Boolean.TRUE, BigInteger.valueOf(10), BigInteger.ZERO, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="2178" href="#2178">2178</a> 
<a class="jxr_linenumber" name="2179" href="#2179">2179</a>         <strong class="jxr_keyword">if</strong> (pathSegementChildren != <strong class="jxr_keyword">null</strong> &amp;&amp; pathSegementChildren.getObjects() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="2180" href="#2180">2180</a>             <strong class="jxr_keyword">for</strong> (ObjectInFolderData objectInFolder : pathSegementChildren.getObjects()) {
<a class="jxr_linenumber" name="2181" href="#2181">2181</a>                 String pathSegement = objectInFolder.getPathSegment();
<a class="jxr_linenumber" name="2182" href="#2182">2182</a>                 String objectId = (String) objectInFolder.getObject().getProperties().getProperties()
<a class="jxr_linenumber" name="2183" href="#2183">2183</a>                         .get(PropertyIds.OBJECT_ID).getFirstValue();
<a class="jxr_linenumber" name="2184" href="#2184">2184</a> 
<a class="jxr_linenumber" name="2185" href="#2185">2185</a>                 <strong class="jxr_keyword">if</strong> (pathSegement == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="2186" href="#2186">2186</a>                     addResult(results, createResult(FAILURE, <span class="jxr_string">"getChildren omitted path segement! ID: "</span> + objectId));
<a class="jxr_linenumber" name="2187" href="#2187">2187</a>                 } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="2188" href="#2188">2188</a>                     CmisObject pathSegementChild = session.getObjectByPath(folder.getPath(), pathSegement);
<a class="jxr_linenumber" name="2189" href="#2189">2189</a> 
<a class="jxr_linenumber" name="2190" href="#2190">2190</a>                     f = createResult(FAILURE,
<a class="jxr_linenumber" name="2191" href="#2191">2191</a>                             <span class="jxr_string">"Combining the path of the parent folder and the path segement of a child returns a different object! ID: "</span>
<a class="jxr_linenumber" name="2192" href="#2192">2192</a>                                     + objectId);
<a class="jxr_linenumber" name="2193" href="#2193">2193</a>                     addResult(results, assertEquals(objectId, pathSegementChild.getId(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2194" href="#2194">2194</a>                 }
<a class="jxr_linenumber" name="2195" href="#2195">2195</a>             }
<a class="jxr_linenumber" name="2196" href="#2196">2196</a>         }
<a class="jxr_linenumber" name="2197" href="#2197">2197</a> 
<a class="jxr_linenumber" name="2198" href="#2198">2198</a>         <em class="jxr_comment">// getDescendants</em>
<a class="jxr_linenumber" name="2199" href="#2199">2199</a> 
<a class="jxr_linenumber" name="2200" href="#2200">2200</a>         <strong class="jxr_keyword">if</strong> (isGetDescendantsSupported(session)) {
<a class="jxr_linenumber" name="2201" href="#2201">2201</a>             <strong class="jxr_keyword">long</strong> descendantsCount = 0;
<a class="jxr_linenumber" name="2202" href="#2202">2202</a>             List&lt;Tree&lt;FileableCmisObject&gt;&gt; descendants = folder.getDescendants(1, SELECT_ALL_NO_CACHE_OC);
<a class="jxr_linenumber" name="2203" href="#2203">2203</a> 
<a class="jxr_linenumber" name="2204" href="#2204">2204</a>             <strong class="jxr_keyword">for</strong> (Tree&lt;FileableCmisObject&gt; child : descendants) {
<a class="jxr_linenumber" name="2205" href="#2205">2205</a>                 descendantsCount++;
<a class="jxr_linenumber" name="2206" href="#2206">2206</a> 
<a class="jxr_linenumber" name="2207" href="#2207">2207</a>                 <strong class="jxr_keyword">if</strong> (child == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="2208" href="#2208">2208</a>                     addResult(results, createResult(FAILURE, <span class="jxr_string">"Folder descendants contain a null tree!"</span>));
<a class="jxr_linenumber" name="2209" href="#2209">2209</a>                 } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="2210" href="#2210">2210</a>                     checkChild(session, results, folder, child.getItem());
<a class="jxr_linenumber" name="2211" href="#2211">2211</a>                 }
<a class="jxr_linenumber" name="2212" href="#2212">2212</a>             }
<a class="jxr_linenumber" name="2213" href="#2213">2213</a> 
<a class="jxr_linenumber" name="2214" href="#2214">2214</a>             f = createResult(FAILURE,
<a class="jxr_linenumber" name="2215" href="#2215">2215</a>                     <span class="jxr_string">"Number of descendants doesn't match the number of children returned by getChildren!"</span>);
<a class="jxr_linenumber" name="2216" href="#2216">2216</a>             addResult(results, assertEquals(childrenCount, descendantsCount, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2217" href="#2217">2217</a>         } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="2218" href="#2218">2218</a>             addResult(results, createResult(SKIPPED, <span class="jxr_string">"getDescendants is not supported."</span>));
<a class="jxr_linenumber" name="2219" href="#2219">2219</a>         }
<a class="jxr_linenumber" name="2220" href="#2220">2220</a> 
<a class="jxr_linenumber" name="2221" href="#2221">2221</a>         <em class="jxr_comment">// getFolderTree</em>
<a class="jxr_linenumber" name="2222" href="#2222">2222</a> 
<a class="jxr_linenumber" name="2223" href="#2223">2223</a>         <strong class="jxr_keyword">if</strong> (isGetFolderTreeSupported(session)) {
<a class="jxr_linenumber" name="2224" href="#2224">2224</a>             <strong class="jxr_keyword">long</strong> folderTreeCount = 0;
<a class="jxr_linenumber" name="2225" href="#2225">2225</a>             List&lt;Tree&lt;FileableCmisObject&gt;&gt; folderTree = folder.getFolderTree(1, SELECT_ALL_NO_CACHE_OC);
<a class="jxr_linenumber" name="2226" href="#2226">2226</a> 
<a class="jxr_linenumber" name="2227" href="#2227">2227</a>             <strong class="jxr_keyword">for</strong> (Tree&lt;FileableCmisObject&gt; child : folderTree) {
<a class="jxr_linenumber" name="2228" href="#2228">2228</a>                 folderTreeCount++;
<a class="jxr_linenumber" name="2229" href="#2229">2229</a> 
<a class="jxr_linenumber" name="2230" href="#2230">2230</a>                 <strong class="jxr_keyword">if</strong> (child == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="2231" href="#2231">2231</a>                     addResult(results, createResult(FAILURE, <span class="jxr_string">"Folder tree contains a null tree!"</span>));
<a class="jxr_linenumber" name="2232" href="#2232">2232</a>                 } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="2233" href="#2233">2233</a>                     checkChild(session, results, folder, child.getItem());
<a class="jxr_linenumber" name="2234" href="#2234">2234</a>                 }
<a class="jxr_linenumber" name="2235" href="#2235">2235</a>             }
<a class="jxr_linenumber" name="2236" href="#2236">2236</a> 
<a class="jxr_linenumber" name="2237" href="#2237">2237</a>             f = createResult(FAILURE, <span class="jxr_string">"Number of folders doesn't match the number of folders returned by getChildren!"</span>);
<a class="jxr_linenumber" name="2238" href="#2238">2238</a>             addResult(results, assertEquals(childrenFolderCount, folderTreeCount, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2239" href="#2239">2239</a>         } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="2240" href="#2240">2240</a>             addResult(results, createResult(SKIPPED, <span class="jxr_string">"getFolderTree is not supported."</span>));
<a class="jxr_linenumber" name="2241" href="#2241">2241</a>         }
<a class="jxr_linenumber" name="2242" href="#2242">2242</a> 
<a class="jxr_linenumber" name="2243" href="#2243">2243</a>         <em class="jxr_comment">// --- wrap up ---</em>
<a class="jxr_linenumber" name="2244" href="#2244">2244</a> 
<a class="jxr_linenumber" name="2245" href="#2245">2245</a>         <a href="../../../../../../org/apache/chemistry/opencmis/tck/impl/CmisTestResultImpl.html">CmisTestResultImpl</a> result = createResult(getWorst(results), message);
<a class="jxr_linenumber" name="2246" href="#2246">2246</a>         result.getChildren().addAll(results);
<a class="jxr_linenumber" name="2247" href="#2247">2247</a> 
<a class="jxr_linenumber" name="2248" href="#2248">2248</a>         <strong class="jxr_keyword">return</strong> result.getStatus().getLevel() &lt;= OK.getLevel() ? <strong class="jxr_keyword">null</strong> : result;
<a class="jxr_linenumber" name="2249" href="#2249">2249</a>     }
<a class="jxr_linenumber" name="2250" href="#2250">2250</a> 
<a class="jxr_linenumber" name="2251" href="#2251">2251</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> checkChild(Session session, List&lt;CmisTestResult&gt; results, Folder folder, CmisObject child) {
<a class="jxr_linenumber" name="2252" href="#2252">2252</a>         <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> f;
<a class="jxr_linenumber" name="2253" href="#2253">2253</a> 
<a class="jxr_linenumber" name="2254" href="#2254">2254</a>         <strong class="jxr_keyword">if</strong> (child == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="2255" href="#2255">2255</a>             addResult(results, createResult(FAILURE, <span class="jxr_string">"Folder contains a null child!"</span>));
<a class="jxr_linenumber" name="2256" href="#2256">2256</a>         } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="2257" href="#2257">2257</a>             String[] propertiesToCheck = <strong class="jxr_keyword">new</strong> String[child.getType().getPropertyDefinitions().size()];
<a class="jxr_linenumber" name="2258" href="#2258">2258</a> 
<a class="jxr_linenumber" name="2259" href="#2259">2259</a>             <strong class="jxr_keyword">int</strong> i = 0;
<a class="jxr_linenumber" name="2260" href="#2260">2260</a>             <strong class="jxr_keyword">for</strong> (String propId : child.getType().getPropertyDefinitions().keySet()) {
<a class="jxr_linenumber" name="2261" href="#2261">2261</a>                 propertiesToCheck[i++] = propId;
<a class="jxr_linenumber" name="2262" href="#2262">2262</a>             }
<a class="jxr_linenumber" name="2263" href="#2263">2263</a> 
<a class="jxr_linenumber" name="2264" href="#2264">2264</a>             addResult(results, checkObject(session, child, propertiesToCheck, <span class="jxr_string">"Child check: "</span> + child.getId()));
<a class="jxr_linenumber" name="2265" href="#2265">2265</a>             addResult(results, checkVersionHistory(session, child, propertiesToCheck,
<a class="jxr_linenumber" name="2266" href="#2266">2266</a>                     <span class="jxr_string">"Child version history check: "</span> + child.getId()));
<a class="jxr_linenumber" name="2267" href="#2267">2267</a> 
<a class="jxr_linenumber" name="2268" href="#2268">2268</a>             f = createResult(FAILURE,
<a class="jxr_linenumber" name="2269" href="#2269">2269</a>                     <span class="jxr_string">"Child is not fileable! ID: "</span> + child.getId() + <span class="jxr_string">" / Type: "</span> + child.getType().getId());
<a class="jxr_linenumber" name="2270" href="#2270">2270</a>             addResult(results, assertIsTrue(child instanceof FileableCmisObject, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2271" href="#2271">2271</a> 
<a class="jxr_linenumber" name="2272" href="#2272">2272</a>             <strong class="jxr_keyword">if</strong> (child instanceof FileableCmisObject) {
<a class="jxr_linenumber" name="2273" href="#2273">2273</a>                 FileableCmisObject fileableChild = (FileableCmisObject) child;
<a class="jxr_linenumber" name="2274" href="#2274">2274</a> 
<a class="jxr_linenumber" name="2275" href="#2275">2275</a>                 Set&lt;Action&gt; actions = fileableChild.getAllowableActions().getAllowableActions();
<a class="jxr_linenumber" name="2276" href="#2276">2276</a>                 <strong class="jxr_keyword">boolean</strong> hasObjectParentsAction = actions.contains(Action.CAN_GET_OBJECT_PARENTS);
<a class="jxr_linenumber" name="2277" href="#2277">2277</a>                 <strong class="jxr_keyword">boolean</strong> hasFolderParentAction = actions.contains(Action.CAN_GET_FOLDER_PARENT);
<a class="jxr_linenumber" name="2278" href="#2278">2278</a> 
<a class="jxr_linenumber" name="2279" href="#2279">2279</a>                 <strong class="jxr_keyword">if</strong> (hasObjectParentsAction || hasFolderParentAction) {
<a class="jxr_linenumber" name="2280" href="#2280">2280</a>                     List&lt;Folder&gt; parents = fileableChild.getParents();
<a class="jxr_linenumber" name="2281" href="#2281">2281</a> 
<a class="jxr_linenumber" name="2282" href="#2282">2282</a>                     f = createResult(FAILURE, <span class="jxr_string">"Child has no parents! ID: "</span> + child.getId());
<a class="jxr_linenumber" name="2283" href="#2283">2283</a>                     addResult(results, assertListNotEmpty(parents, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2284" href="#2284">2284</a> 
<a class="jxr_linenumber" name="2285" href="#2285">2285</a>                     <strong class="jxr_keyword">if</strong> (child instanceof Folder) {
<a class="jxr_linenumber" name="2286" href="#2286">2286</a>                         f = createResult(FAILURE,
<a class="jxr_linenumber" name="2287" href="#2287">2287</a>                                 <span class="jxr_string">"Child is a folder and has more than one parent! ID: "</span> + child.getId());
<a class="jxr_linenumber" name="2288" href="#2288">2288</a>                         addResult(results, assertIsFalse(parents.size() &gt; 1, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2289" href="#2289">2289</a> 
<a class="jxr_linenumber" name="2290" href="#2290">2290</a>                         Folder folderParent = ((Folder) child).getFolderParent();
<a class="jxr_linenumber" name="2291" href="#2291">2291</a>                         <strong class="jxr_keyword">if</strong> (folderParent == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="2292" href="#2292">2292</a>                             addResult(results,
<a class="jxr_linenumber" name="2293" href="#2293">2293</a>                                     createResult(FAILURE,
<a class="jxr_linenumber" name="2294" href="#2294">2294</a>                                             <span class="jxr_string">"getFolderParent() returns null for a non-root folder object! ID: "</span>
<a class="jxr_linenumber" name="2295" href="#2295">2295</a>                                                     + child.getId()));
<a class="jxr_linenumber" name="2296" href="#2296">2296</a>                         } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="2297" href="#2297">2297</a>                             f = createResult(FAILURE,
<a class="jxr_linenumber" name="2298" href="#2298">2298</a>                                     <span class="jxr_string">"getFolderParent() returns wrong parent object! ID: "</span> + child.getId());
<a class="jxr_linenumber" name="2299" href="#2299">2299</a>                             addResult(results, assertEquals(folder.getId(), folderParent.getId(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2300" href="#2300">2300</a> 
<a class="jxr_linenumber" name="2301" href="#2301">2301</a>                             <strong class="jxr_keyword">if</strong> (parents.size() &gt; 0 &amp;&amp; parents.get(0) != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="2302" href="#2302">2302</a>                                 f = createResult(FAILURE,
<a class="jxr_linenumber" name="2303" href="#2303">2303</a>                                         <span class="jxr_string">"getFolderParent() and getParents() return different parents for a folder object! ID: "</span>
<a class="jxr_linenumber" name="2304" href="#2304">2304</a>                                                 + child.getId());
<a class="jxr_linenumber" name="2305" href="#2305">2305</a>                                 addResult(results, assertEquals(parents.get(0).getId(), folderParent.getId(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2306" href="#2306">2306</a>                             }
<a class="jxr_linenumber" name="2307" href="#2307">2307</a>                         }
<a class="jxr_linenumber" name="2308" href="#2308">2308</a>                     }
<a class="jxr_linenumber" name="2309" href="#2309">2309</a> 
<a class="jxr_linenumber" name="2310" href="#2310">2310</a>                     <strong class="jxr_keyword">boolean</strong> foundParent = false;
<a class="jxr_linenumber" name="2311" href="#2311">2311</a>                     <strong class="jxr_keyword">for</strong> (Folder parent : parents) {
<a class="jxr_linenumber" name="2312" href="#2312">2312</a>                         <strong class="jxr_keyword">if</strong> (parent == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="2313" href="#2313">2313</a>                             f = createResult(FAILURE, <span class="jxr_string">"One of childs parents is null! ID: "</span> + child.getId());
<a class="jxr_linenumber" name="2314" href="#2314">2314</a>                             addResult(results, assertListNotEmpty(parents, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2315" href="#2315">2315</a>                         } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (folder.getId().equals(parent.getId())) {
<a class="jxr_linenumber" name="2316" href="#2316">2316</a>                             foundParent = <strong class="jxr_keyword">true</strong>;
<a class="jxr_linenumber" name="2317" href="#2317">2317</a>                             <strong class="jxr_keyword">break</strong>;
<a class="jxr_linenumber" name="2318" href="#2318">2318</a>                         }
<a class="jxr_linenumber" name="2319" href="#2319">2319</a>                     }
<a class="jxr_linenumber" name="2320" href="#2320">2320</a> 
<a class="jxr_linenumber" name="2321" href="#2321">2321</a>                     <strong class="jxr_keyword">if</strong> (!foundParent) {
<a class="jxr_linenumber" name="2322" href="#2322">2322</a>                         addResult(results, createResult(FAILURE,
<a class="jxr_linenumber" name="2323" href="#2323">2323</a>                                 <span class="jxr_string">"Parent folder is not in parents of the child! ID: "</span> + child.getId()));
<a class="jxr_linenumber" name="2324" href="#2324">2324</a>                     }
<a class="jxr_linenumber" name="2325" href="#2325">2325</a>                 }
<a class="jxr_linenumber" name="2326" href="#2326">2326</a> 
<a class="jxr_linenumber" name="2327" href="#2327">2327</a>                 <em class="jxr_comment">// get object by ID and compare</em>
<a class="jxr_linenumber" name="2328" href="#2328">2328</a>                 CmisObject objectById = session.getObject(child.getId(), SELECT_ALL_NO_CACHE_OC);
<a class="jxr_linenumber" name="2329" href="#2329">2329</a> 
<a class="jxr_linenumber" name="2330" href="#2330">2330</a>                 f = createResult(FAILURE, <span class="jxr_string">"Child and object fetched by ID don't match! ID: "</span> + child.getId());
<a class="jxr_linenumber" name="2331" href="#2331">2331</a>                 addResult(results, assertEquals(child, objectById, <strong class="jxr_keyword">null</strong>, f, false, false));
<a class="jxr_linenumber" name="2332" href="#2332">2332</a> 
<a class="jxr_linenumber" name="2333" href="#2333">2333</a>                 <em class="jxr_comment">// get object by path and compare</em>
<a class="jxr_linenumber" name="2334" href="#2334">2334</a>                 List&lt;String&gt; paths = ((FileableCmisObject) child).getPaths();
<a class="jxr_linenumber" name="2335" href="#2335">2335</a> 
<a class="jxr_linenumber" name="2336" href="#2336">2336</a>                 <strong class="jxr_keyword">if</strong> (isNullOrEmpty(paths)) {
<a class="jxr_linenumber" name="2337" href="#2337">2337</a>                     addResult(results, createResult(FAILURE, <span class="jxr_string">"Child has no path! "</span> + child.getId()));
<a class="jxr_linenumber" name="2338" href="#2338">2338</a>                 } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="2339" href="#2339">2339</a>                     <strong class="jxr_keyword">for</strong> (String path : paths) {
<a class="jxr_linenumber" name="2340" href="#2340">2340</a>                         CmisObject objectByPath = session.getObjectByPath(path, SELECT_ALL_NO_CACHE_OC);
<a class="jxr_linenumber" name="2341" href="#2341">2341</a> 
<a class="jxr_linenumber" name="2342" href="#2342">2342</a>                         f = createResult(FAILURE, <span class="jxr_string">"Child and object fetched by path don't match! ID: "</span> + child.getId()
<a class="jxr_linenumber" name="2343" href="#2343">2343</a>                                 + <span class="jxr_string">" / Path: "</span> + path);
<a class="jxr_linenumber" name="2344" href="#2344">2344</a>                         addResult(results, assertEquals(child, objectByPath, <strong class="jxr_keyword">null</strong>, f, false, false));
<a class="jxr_linenumber" name="2345" href="#2345">2345</a> 
<a class="jxr_linenumber" name="2346" href="#2346">2346</a>                         f = createResult(FAILURE, <span class="jxr_string">"Object fetched by id and object fetched by path don't match! ID: "</span>
<a class="jxr_linenumber" name="2347" href="#2347">2347</a>                                 + child.getId() + <span class="jxr_string">" / Path: "</span> + path);
<a class="jxr_linenumber" name="2348" href="#2348">2348</a>                         addResult(results, assertEquals(objectById, objectByPath, <strong class="jxr_keyword">null</strong>, f, <strong class="jxr_keyword">true</strong>, <strong class="jxr_keyword">true</strong>));
<a class="jxr_linenumber" name="2349" href="#2349">2349</a>                     }
<a class="jxr_linenumber" name="2350" href="#2350">2350</a>                 }
<a class="jxr_linenumber" name="2351" href="#2351">2351</a>             }
<a class="jxr_linenumber" name="2352" href="#2352">2352</a> 
<a class="jxr_linenumber" name="2353" href="#2353">2353</a>             <strong class="jxr_keyword">if</strong> (child instanceof Folder) {
<a class="jxr_linenumber" name="2354" href="#2354">2354</a>                 f = createResult(WARNING, <span class="jxr_string">"Child has no CAN_GET_FOLDER_PARENT allowable action! ID: "</span> + child.getId());
<a class="jxr_linenumber" name="2355" href="#2355">2355</a>                 addResult(results, assertAllowableAction(child, Action.CAN_GET_FOLDER_PARENT, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2356" href="#2356">2356</a>             } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="2357" href="#2357">2357</a>                 f = createResult(WARNING, <span class="jxr_string">"Child has no CAN_GET_OBJECT_PARENTS allowable action! ID: "</span> + child.getId());
<a class="jxr_linenumber" name="2358" href="#2358">2358</a>                 addResult(results, assertAllowableAction(child, Action.CAN_GET_OBJECT_PARENTS, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2359" href="#2359">2359</a>             }
<a class="jxr_linenumber" name="2360" href="#2360">2360</a>         }
<a class="jxr_linenumber" name="2361" href="#2361">2361</a>     }
<a class="jxr_linenumber" name="2362" href="#2362">2362</a> 
<a class="jxr_linenumber" name="2363" href="#2363">2363</a>     <strong class="jxr_keyword">protected</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> assertShallowEquals(CmisObject expected, CmisObject actual, <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> success,
<a class="jxr_linenumber" name="2364" href="#2364">2364</a>             <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> failure) {
<a class="jxr_linenumber" name="2365" href="#2365">2365</a> 
<a class="jxr_linenumber" name="2366" href="#2366">2366</a>         List&lt;CmisTestResult&gt; results = <strong class="jxr_keyword">new</strong> ArrayList&lt;CmisTestResult&gt;();
<a class="jxr_linenumber" name="2367" href="#2367">2367</a> 
<a class="jxr_linenumber" name="2368" href="#2368">2368</a>         <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> f;
<a class="jxr_linenumber" name="2369" href="#2369">2369</a> 
<a class="jxr_linenumber" name="2370" href="#2370">2370</a>         <strong class="jxr_keyword">if</strong> ((expected == <strong class="jxr_keyword">null</strong>) &amp;&amp; (actual == <strong class="jxr_keyword">null</strong>)) {
<a class="jxr_linenumber" name="2371" href="#2371">2371</a>             <strong class="jxr_keyword">return</strong> success;
<a class="jxr_linenumber" name="2372" href="#2372">2372</a>         }
<a class="jxr_linenumber" name="2373" href="#2373">2373</a> 
<a class="jxr_linenumber" name="2374" href="#2374">2374</a>         <strong class="jxr_keyword">if</strong> (expected == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="2375" href="#2375">2375</a>             f = createResult(FAILURE, <span class="jxr_string">"Expected object is null, but actual object is not!"</span>);
<a class="jxr_linenumber" name="2376" href="#2376">2376</a>             addResultChild(failure, f);
<a class="jxr_linenumber" name="2377" href="#2377">2377</a> 
<a class="jxr_linenumber" name="2378" href="#2378">2378</a>             <strong class="jxr_keyword">return</strong> failure;
<a class="jxr_linenumber" name="2379" href="#2379">2379</a>         }
<a class="jxr_linenumber" name="2380" href="#2380">2380</a> 
<a class="jxr_linenumber" name="2381" href="#2381">2381</a>         <strong class="jxr_keyword">if</strong> (actual == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="2382" href="#2382">2382</a>             f = createResult(FAILURE, <span class="jxr_string">"Actual object is null, but expected object is not!"</span>);
<a class="jxr_linenumber" name="2383" href="#2383">2383</a>             addResultChild(failure, f);
<a class="jxr_linenumber" name="2384" href="#2384">2384</a> 
<a class="jxr_linenumber" name="2385" href="#2385">2385</a>             <strong class="jxr_keyword">return</strong> failure;
<a class="jxr_linenumber" name="2386" href="#2386">2386</a>         }
<a class="jxr_linenumber" name="2387" href="#2387">2387</a> 
<a class="jxr_linenumber" name="2388" href="#2388">2388</a>         f = createResult(FAILURE, <span class="jxr_string">"Ids don't match!"</span>);
<a class="jxr_linenumber" name="2389" href="#2389">2389</a>         addResult(results, assertEquals(expected.getId(), actual.getId(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2390" href="#2390">2390</a> 
<a class="jxr_linenumber" name="2391" href="#2391">2391</a>         f = createResult(FAILURE, <span class="jxr_string">"Base types don't match!"</span>);
<a class="jxr_linenumber" name="2392" href="#2392">2392</a>         addResult(results, assertEquals(expected.getBaseTypeId(), actual.getBaseTypeId(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2393" href="#2393">2393</a> 
<a class="jxr_linenumber" name="2394" href="#2394">2394</a>         f = createResult(FAILURE, <span class="jxr_string">"Types don't match!"</span>);
<a class="jxr_linenumber" name="2395" href="#2395">2395</a>         addResult(results, assertEquals(expected.getType().getId(), actual.getType().getId(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2396" href="#2396">2396</a> 
<a class="jxr_linenumber" name="2397" href="#2397">2397</a>         <strong class="jxr_keyword">if</strong> (getWorst(results).getLevel() &lt;= OK.getLevel()) {
<a class="jxr_linenumber" name="2398" href="#2398">2398</a>             <strong class="jxr_keyword">for</strong> (CmisTestResult result : results) {
<a class="jxr_linenumber" name="2399" href="#2399">2399</a>                 addResultChild(success, result);
<a class="jxr_linenumber" name="2400" href="#2400">2400</a>             }
<a class="jxr_linenumber" name="2401" href="#2401">2401</a> 
<a class="jxr_linenumber" name="2402" href="#2402">2402</a>             <strong class="jxr_keyword">return</strong> success;
<a class="jxr_linenumber" name="2403" href="#2403">2403</a>         } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="2404" href="#2404">2404</a>             <strong class="jxr_keyword">for</strong> (CmisTestResult result : results) {
<a class="jxr_linenumber" name="2405" href="#2405">2405</a>                 addResultChild(failure, result);
<a class="jxr_linenumber" name="2406" href="#2406">2406</a>             }
<a class="jxr_linenumber" name="2407" href="#2407">2407</a> 
<a class="jxr_linenumber" name="2408" href="#2408">2408</a>             <strong class="jxr_keyword">return</strong> failure;
<a class="jxr_linenumber" name="2409" href="#2409">2409</a>         }
<a class="jxr_linenumber" name="2410" href="#2410">2410</a>     }
<a class="jxr_linenumber" name="2411" href="#2411">2411</a> 
<a class="jxr_linenumber" name="2412" href="#2412">2412</a>     <em class="jxr_comment">// --- type checks ---</em>
<a class="jxr_linenumber" name="2413" href="#2413">2413</a> 
<a class="jxr_linenumber" name="2414" href="#2414">2414</a>     <strong class="jxr_keyword">protected</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> checkQueryName(String queryName, <strong class="jxr_keyword">boolean</strong> isRequired, String message) {
<a class="jxr_linenumber" name="2415" href="#2415">2415</a>         List&lt;CmisTestResult&gt; results = <strong class="jxr_keyword">new</strong> ArrayList&lt;CmisTestResult&gt;();
<a class="jxr_linenumber" name="2416" href="#2416">2416</a> 
<a class="jxr_linenumber" name="2417" href="#2417">2417</a>         <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> f;
<a class="jxr_linenumber" name="2418" href="#2418">2418</a> 
<a class="jxr_linenumber" name="2419" href="#2419">2419</a>         <strong class="jxr_keyword">if</strong> (queryName == <strong class="jxr_keyword">null</strong> || queryName.length() == 0) {
<a class="jxr_linenumber" name="2420" href="#2420">2420</a>             addResult(results, createResult(isRequired ? FAILURE : WARNING, <span class="jxr_string">"Query name is not set!"</span>));
<a class="jxr_linenumber" name="2421" href="#2421">2421</a>         } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="2422" href="#2422">2422</a>             f = createResult(FAILURE, <span class="jxr_string">"Query name contains invalid character: ' '"</span>);
<a class="jxr_linenumber" name="2423" href="#2423">2423</a>             addResult(results, assertIsTrue(queryName.indexOf(' ') &lt; 0, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2424" href="#2424">2424</a> 
<a class="jxr_linenumber" name="2425" href="#2425">2425</a>             f = createResult(FAILURE, <span class="jxr_string">"Query name contains invalid character: ','"</span>);
<a class="jxr_linenumber" name="2426" href="#2426">2426</a>             addResult(results, assertIsTrue(queryName.indexOf(',') &lt; 0, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2427" href="#2427">2427</a> 
<a class="jxr_linenumber" name="2428" href="#2428">2428</a>             f = createResult(FAILURE, <span class="jxr_string">"Query name contains invalid character: '\&quot;'"</span>);
<a class="jxr_linenumber" name="2429" href="#2429">2429</a>             addResult(results, assertIsTrue(queryName.indexOf('&quot;') &lt; 0, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2430" href="#2430">2430</a> 
<a class="jxr_linenumber" name="2431" href="#2431">2431</a>             f = createResult(FAILURE, <span class="jxr_string">"Query name contains invalid character: '''"</span>);
<a class="jxr_linenumber" name="2432" href="#2432">2432</a>             addResult(results, assertIsTrue(queryName.indexOf('\'') &lt; 0, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2433" href="#2433">2433</a> 
<a class="jxr_linenumber" name="2434" href="#2434">2434</a>             f = createResult(FAILURE, <span class="jxr_string">"Query name contains invalid character: '&#92;&#92;'"</span>);
<a class="jxr_linenumber" name="2435" href="#2435">2435</a>             addResult(results, assertIsTrue(queryName.indexOf('&#92;&#92;') &lt; 0, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2436" href="#2436">2436</a> 
<a class="jxr_linenumber" name="2437" href="#2437">2437</a>             f = createResult(FAILURE, <span class="jxr_string">"Query name contains invalid character: '.'"</span>);
<a class="jxr_linenumber" name="2438" href="#2438">2438</a>             addResult(results, assertIsTrue(queryName.indexOf('.') &lt; 0, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2439" href="#2439">2439</a> 
<a class="jxr_linenumber" name="2440" href="#2440">2440</a>             f = createResult(FAILURE, <span class="jxr_string">"Query name contains invalid character: '('"</span>);
<a class="jxr_linenumber" name="2441" href="#2441">2441</a>             addResult(results, assertIsTrue(queryName.indexOf('(') &lt; 0, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2442" href="#2442">2442</a> 
<a class="jxr_linenumber" name="2443" href="#2443">2443</a>             f = createResult(FAILURE, <span class="jxr_string">"Query name contains invalid character: ')'"</span>);
<a class="jxr_linenumber" name="2444" href="#2444">2444</a>             addResult(results, assertIsTrue(queryName.indexOf(')') &lt; 0, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2445" href="#2445">2445</a> 
<a class="jxr_linenumber" name="2446" href="#2446">2446</a>             f = createResult(FAILURE, <span class="jxr_string">"Query name contains invalid character: '&#92;&#92;t'"</span>);
<a class="jxr_linenumber" name="2447" href="#2447">2447</a>             addResult(results, assertIsTrue(queryName.indexOf('\t') &lt; 0, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2448" href="#2448">2448</a> 
<a class="jxr_linenumber" name="2449" href="#2449">2449</a>             f = createResult(FAILURE, <span class="jxr_string">"Query name contains invalid character: '&#92;&#92;n'"</span>);
<a class="jxr_linenumber" name="2450" href="#2450">2450</a>             addResult(results, assertIsTrue(queryName.indexOf('\n') &lt; 0, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2451" href="#2451">2451</a> 
<a class="jxr_linenumber" name="2452" href="#2452">2452</a>             f = createResult(FAILURE, <span class="jxr_string">"Query name contains invalid character: '&#92;&#92;r'"</span>);
<a class="jxr_linenumber" name="2453" href="#2453">2453</a>             addResult(results, assertIsTrue(queryName.indexOf('\r') &lt; 0, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2454" href="#2454">2454</a>         }
<a class="jxr_linenumber" name="2455" href="#2455">2455</a> 
<a class="jxr_linenumber" name="2456" href="#2456">2456</a>         <a href="../../../../../../org/apache/chemistry/opencmis/tck/impl/CmisTestResultImpl.html">CmisTestResultImpl</a> result = createResult(getWorst(results), message);
<a class="jxr_linenumber" name="2457" href="#2457">2457</a>         result.getChildren().addAll(results);
<a class="jxr_linenumber" name="2458" href="#2458">2458</a> 
<a class="jxr_linenumber" name="2459" href="#2459">2459</a>         <strong class="jxr_keyword">return</strong> result.getStatus().getLevel() &lt;= OK.getLevel() ? <strong class="jxr_keyword">null</strong> : result;
<a class="jxr_linenumber" name="2460" href="#2460">2460</a>     }
<a class="jxr_linenumber" name="2461" href="#2461">2461</a> 
<a class="jxr_linenumber" name="2462" href="#2462">2462</a>     <strong class="jxr_keyword">protected</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> checkTypeDefinition(Session session, TypeDefinition type, String message) {
<a class="jxr_linenumber" name="2463" href="#2463">2463</a>         List&lt;CmisTestResult&gt; results = <strong class="jxr_keyword">new</strong> ArrayList&lt;CmisTestResult&gt;();
<a class="jxr_linenumber" name="2464" href="#2464">2464</a> 
<a class="jxr_linenumber" name="2465" href="#2465">2465</a>         <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> f;
<a class="jxr_linenumber" name="2466" href="#2466">2466</a> 
<a class="jxr_linenumber" name="2467" href="#2467">2467</a>         f = createResult(FAILURE, <span class="jxr_string">"Type is null!"</span>);
<a class="jxr_linenumber" name="2468" href="#2468">2468</a>         addResult(results, assertNotNull(type, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2469" href="#2469">2469</a> 
<a class="jxr_linenumber" name="2470" href="#2470">2470</a>         <strong class="jxr_keyword">if</strong> (type != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="2471" href="#2471">2471</a>             f = createResult(FAILURE, <span class="jxr_string">"Type ID is not set!"</span>);
<a class="jxr_linenumber" name="2472" href="#2472">2472</a>             addResult(results, assertStringNotEmpty(type.getId(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2473" href="#2473">2473</a> 
<a class="jxr_linenumber" name="2474" href="#2474">2474</a>             f = createResult(FAILURE, <span class="jxr_string">"Base type ID is not set!"</span>);
<a class="jxr_linenumber" name="2475" href="#2475">2475</a>             addResult(results, assertNotNull(type.getBaseTypeId(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2476" href="#2476">2476</a> 
<a class="jxr_linenumber" name="2477" href="#2477">2477</a>             f = createResult(FAILURE, <span class="jxr_string">"Local name is not set!"</span>);
<a class="jxr_linenumber" name="2478" href="#2478">2478</a>             addResult(results, assertStringNotEmpty(type.getLocalName(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2479" href="#2479">2479</a> 
<a class="jxr_linenumber" name="2480" href="#2480">2480</a>             <em class="jxr_comment">// f = createResult(FAILURE, "Local namespace is not set!");</em>
<a class="jxr_linenumber" name="2481" href="#2481">2481</a>             <em class="jxr_comment">// addResult(results, assertStringNotEmpty(type.(), null, f));</em>
<a class="jxr_linenumber" name="2482" href="#2482">2482</a> 
<a class="jxr_linenumber" name="2483" href="#2483">2483</a>             <strong class="jxr_keyword">boolean</strong> isQueryNameRequired = Boolean.TRUE.equals(type.isQueryable());
<a class="jxr_linenumber" name="2484" href="#2484">2484</a>             addResult(results, checkQueryName(type.getQueryName(), isQueryNameRequired,
<a class="jxr_linenumber" name="2485" href="#2485">2485</a>                     <span class="jxr_string">"Type Query Name: "</span> + type.getQueryName()));
<a class="jxr_linenumber" name="2486" href="#2486">2486</a> 
<a class="jxr_linenumber" name="2487" href="#2487">2487</a>             <strong class="jxr_keyword">if</strong> ((type.getId() != <strong class="jxr_keyword">null</strong>) &amp;&amp; (type.getBaseTypeId() != <strong class="jxr_keyword">null</strong>)) {
<a class="jxr_linenumber" name="2488" href="#2488">2488</a>                 <strong class="jxr_keyword">if</strong> (type.getBaseTypeId().value().equals(type.getId())) {
<a class="jxr_linenumber" name="2489" href="#2489">2489</a>                     f = createResult(FAILURE, <span class="jxr_string">"Base type has parent type!"</span>);
<a class="jxr_linenumber" name="2490" href="#2490">2490</a>                     addResult(results, assertStringNullOrEmpty(type.getParentTypeId(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2491" href="#2491">2491</a> 
<a class="jxr_linenumber" name="2492" href="#2492">2492</a>                     f = createResult(FAILURE, <span class="jxr_string">"Query name of base type is wrong!"</span>);
<a class="jxr_linenumber" name="2493" href="#2493">2493</a>                     addResult(results, assertEquals(type.getId(), type.getQueryName(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2494" href="#2494">2494</a>                 } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="2495" href="#2495">2495</a>                     f = createResult(FAILURE, <span class="jxr_string">"Parent type is not set!"</span>);
<a class="jxr_linenumber" name="2496" href="#2496">2496</a>                     addResult(results, assertStringNotEmpty(type.getParentTypeId(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2497" href="#2497">2497</a>                 }
<a class="jxr_linenumber" name="2498" href="#2498">2498</a>             }
<a class="jxr_linenumber" name="2499" href="#2499">2499</a> 
<a class="jxr_linenumber" name="2500" href="#2500">2500</a>             f = createResult(FAILURE, <span class="jxr_string">"Creatable flag is not set!"</span>);
<a class="jxr_linenumber" name="2501" href="#2501">2501</a>             addResult(results, assertNotNull(type.isCreatable(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2502" href="#2502">2502</a> 
<a class="jxr_linenumber" name="2503" href="#2503">2503</a>             f = createResult(FAILURE, <span class="jxr_string">"Fileable flag is not set!"</span>);
<a class="jxr_linenumber" name="2504" href="#2504">2504</a>             addResult(results, assertNotNull(type.isFileable(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2505" href="#2505">2505</a> 
<a class="jxr_linenumber" name="2506" href="#2506">2506</a>             f = createResult(FAILURE, <span class="jxr_string">"Controllable ACL flag is not set!"</span>);
<a class="jxr_linenumber" name="2507" href="#2507">2507</a>             addResult(results, assertNotNull(type.isControllableAcl(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2508" href="#2508">2508</a> 
<a class="jxr_linenumber" name="2509" href="#2509">2509</a>             f = createResult(FAILURE, <span class="jxr_string">"Controllable Policy flag is not set!"</span>);
<a class="jxr_linenumber" name="2510" href="#2510">2510</a>             addResult(results, assertNotNull(type.isControllablePolicy(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2511" href="#2511">2511</a> 
<a class="jxr_linenumber" name="2512" href="#2512">2512</a>             f = createResult(FAILURE, <span class="jxr_string">"Fulltext indexed flag is not set!"</span>);
<a class="jxr_linenumber" name="2513" href="#2513">2513</a>             addResult(results, assertNotNull(type.isFulltextIndexed(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2514" href="#2514">2514</a> 
<a class="jxr_linenumber" name="2515" href="#2515">2515</a>             f = createResult(FAILURE, <span class="jxr_string">"Included in super type flag is not set!"</span>);
<a class="jxr_linenumber" name="2516" href="#2516">2516</a>             addResult(results, assertNotNull(type.isIncludedInSupertypeQuery(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2517" href="#2517">2517</a> 
<a class="jxr_linenumber" name="2518" href="#2518">2518</a>             f = createResult(FAILURE, <span class="jxr_string">"Queryable flag is not set!"</span>);
<a class="jxr_linenumber" name="2519" href="#2519">2519</a>             addResult(results, assertNotNull(type.isQueryable(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2520" href="#2520">2520</a> 
<a class="jxr_linenumber" name="2521" href="#2521">2521</a>             f = createResult(WARNING, <span class="jxr_string">"Type display name is not set!"</span>);
<a class="jxr_linenumber" name="2522" href="#2522">2522</a>             addResult(results, assertStringNotEmpty(type.getDisplayName(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2523" href="#2523">2523</a> 
<a class="jxr_linenumber" name="2524" href="#2524">2524</a>             f = createResult(WARNING, <span class="jxr_string">"Type description is not set!"</span>);
<a class="jxr_linenumber" name="2525" href="#2525">2525</a>             addResult(results, assertStringNotEmpty(type.getDescription(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2526" href="#2526">2526</a> 
<a class="jxr_linenumber" name="2527" href="#2527">2527</a>             <strong class="jxr_keyword">if</strong> (BaseTypeId.CMIS_DOCUMENT.equals(type.getBaseTypeId())) {
<a class="jxr_linenumber" name="2528" href="#2528">2528</a>                 DocumentTypeDefinition docType = (DocumentTypeDefinition) type;
<a class="jxr_linenumber" name="2529" href="#2529">2529</a> 
<a class="jxr_linenumber" name="2530" href="#2530">2530</a>                 f = createResult(FAILURE, <span class="jxr_string">"Versionable flag is not set!"</span>);
<a class="jxr_linenumber" name="2531" href="#2531">2531</a>                 addResult(results, assertNotNull(docType.isVersionable(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2532" href="#2532">2532</a> 
<a class="jxr_linenumber" name="2533" href="#2533">2533</a>                 f = createResult(FAILURE, <span class="jxr_string">"Content stream allowed flag is not set!"</span>);
<a class="jxr_linenumber" name="2534" href="#2534">2534</a>                 addResult(results, assertNotNull(docType.getContentStreamAllowed(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2535" href="#2535">2535</a>             } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (BaseTypeId.CMIS_FOLDER.equals(type.getBaseTypeId())) {
<a class="jxr_linenumber" name="2536" href="#2536">2536</a>                 <strong class="jxr_keyword">if</strong> (type.isFileable() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="2537" href="#2537">2537</a>                     f = createResult(FAILURE, <span class="jxr_string">"Folder types must be fileable!"</span>);
<a class="jxr_linenumber" name="2538" href="#2538">2538</a>                     addResult(results, assertIsTrue(type.isFileable(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2539" href="#2539">2539</a>                 }
<a class="jxr_linenumber" name="2540" href="#2540">2540</a>             } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (BaseTypeId.CMIS_RELATIONSHIP.equals(type.getBaseTypeId())) {
<a class="jxr_linenumber" name="2541" href="#2541">2541</a>                 RelationshipTypeDefinition relType = (RelationshipTypeDefinition) type;
<a class="jxr_linenumber" name="2542" href="#2542">2542</a> 
<a class="jxr_linenumber" name="2543" href="#2543">2543</a>                 f = createResult(FAILURE, <span class="jxr_string">"Allowed Source Type IDs are not set!"</span>);
<a class="jxr_linenumber" name="2544" href="#2544">2544</a>                 addResult(results, assertNotNull(relType.getAllowedSourceTypeIds(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2545" href="#2545">2545</a> 
<a class="jxr_linenumber" name="2546" href="#2546">2546</a>                 <strong class="jxr_keyword">if</strong> (relType.getAllowedSourceTypeIds() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="2547" href="#2547">2547</a>                     <strong class="jxr_keyword">for</strong> (String typeId : relType.getAllowedSourceTypeIds()) {
<a class="jxr_linenumber" name="2548" href="#2548">2548</a>                         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="2549" href="#2549">2549</a>                             session.getTypeDefinition(typeId);
<a class="jxr_linenumber" name="2550" href="#2550">2550</a>                         } <strong class="jxr_keyword">catch</strong> (CmisInvalidArgumentException e) {
<a class="jxr_linenumber" name="2551" href="#2551">2551</a>                             addResult(results, createResult(WARNING,
<a class="jxr_linenumber" name="2552" href="#2552">2552</a>                                     <span class="jxr_string">"Allowed Source Type IDs contain a type ID that doesn't exist: "</span> + typeId));
<a class="jxr_linenumber" name="2553" href="#2553">2553</a>                         } <strong class="jxr_keyword">catch</strong> (CmisObjectNotFoundException e) {
<a class="jxr_linenumber" name="2554" href="#2554">2554</a>                             addResult(results, createResult(WARNING,
<a class="jxr_linenumber" name="2555" href="#2555">2555</a>                                     <span class="jxr_string">"Allowed Source Type IDs contain a type ID that doesn't exist: "</span> + typeId));
<a class="jxr_linenumber" name="2556" href="#2556">2556</a>                         }
<a class="jxr_linenumber" name="2557" href="#2557">2557</a>                     }
<a class="jxr_linenumber" name="2558" href="#2558">2558</a>                 }
<a class="jxr_linenumber" name="2559" href="#2559">2559</a> 
<a class="jxr_linenumber" name="2560" href="#2560">2560</a>                 f = createResult(FAILURE, <span class="jxr_string">"Allowed Target Type IDs are not set!"</span>);
<a class="jxr_linenumber" name="2561" href="#2561">2561</a>                 addResult(results, assertNotNull(relType.getAllowedTargetTypeIds(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2562" href="#2562">2562</a> 
<a class="jxr_linenumber" name="2563" href="#2563">2563</a>                 <strong class="jxr_keyword">if</strong> (relType.getAllowedTargetTypeIds() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="2564" href="#2564">2564</a>                     <strong class="jxr_keyword">for</strong> (String typeId : relType.getAllowedTargetTypeIds()) {
<a class="jxr_linenumber" name="2565" href="#2565">2565</a>                         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="2566" href="#2566">2566</a>                             session.getTypeDefinition(typeId);
<a class="jxr_linenumber" name="2567" href="#2567">2567</a>                         } <strong class="jxr_keyword">catch</strong> (CmisInvalidArgumentException e) {
<a class="jxr_linenumber" name="2568" href="#2568">2568</a>                             addResult(results, createResult(WARNING,
<a class="jxr_linenumber" name="2569" href="#2569">2569</a>                                     <span class="jxr_string">"Allowed Target Type IDs contain a type ID that doesn't exist: "</span> + typeId));
<a class="jxr_linenumber" name="2570" href="#2570">2570</a>                         } <strong class="jxr_keyword">catch</strong> (CmisObjectNotFoundException e) {
<a class="jxr_linenumber" name="2571" href="#2571">2571</a>                             addResult(results, createResult(WARNING,
<a class="jxr_linenumber" name="2572" href="#2572">2572</a>                                     <span class="jxr_string">"Allowed Target Type IDs contain a type ID that doesn't exist: "</span> + typeId));
<a class="jxr_linenumber" name="2573" href="#2573">2573</a>                         }
<a class="jxr_linenumber" name="2574" href="#2574">2574</a>                     }
<a class="jxr_linenumber" name="2575" href="#2575">2575</a>                 }
<a class="jxr_linenumber" name="2576" href="#2576">2576</a> 
<a class="jxr_linenumber" name="2577" href="#2577">2577</a>                 <strong class="jxr_keyword">if</strong> (type.isFileable() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="2578" href="#2578">2578</a>                     f = createResult(FAILURE, <span class="jxr_string">"Relationship types must not be fileable!"</span>);
<a class="jxr_linenumber" name="2579" href="#2579">2579</a>                     addResult(results, assertIsFalse(type.isFileable(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2580" href="#2580">2580</a>                 }
<a class="jxr_linenumber" name="2581" href="#2581">2581</a>             } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (BaseTypeId.CMIS_POLICY.equals(type.getBaseTypeId())) {
<a class="jxr_linenumber" name="2582" href="#2582">2582</a>                 <em class="jxr_comment">// nothing to do</em>
<a class="jxr_linenumber" name="2583" href="#2583">2583</a>             } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (BaseTypeId.CMIS_SECONDARY.equals(type.getBaseTypeId())) {
<a class="jxr_linenumber" name="2584" href="#2584">2584</a>                 <strong class="jxr_keyword">if</strong> (type.isCreatable() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="2585" href="#2585">2585</a>                     f = createResult(FAILURE, <span class="jxr_string">"Secondary types must not be creatable!"</span>);
<a class="jxr_linenumber" name="2586" href="#2586">2586</a>                     addResult(results, assertIsFalse(type.isCreatable(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2587" href="#2587">2587</a>                 }
<a class="jxr_linenumber" name="2588" href="#2588">2588</a> 
<a class="jxr_linenumber" name="2589" href="#2589">2589</a>                 <strong class="jxr_keyword">if</strong> (type.isFileable() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="2590" href="#2590">2590</a>                     f = createResult(FAILURE, <span class="jxr_string">"Secondary types must not be fileable!"</span>);
<a class="jxr_linenumber" name="2591" href="#2591">2591</a>                     addResult(results, assertIsFalse(type.isFileable(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2592" href="#2592">2592</a>                 }
<a class="jxr_linenumber" name="2593" href="#2593">2593</a> 
<a class="jxr_linenumber" name="2594" href="#2594">2594</a>                 <strong class="jxr_keyword">if</strong> (type.isControllableAcl() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="2595" href="#2595">2595</a>                     f = createResult(FAILURE, <span class="jxr_string">"The controllable ACL flag must be false for secondary types!"</span>);
<a class="jxr_linenumber" name="2596" href="#2596">2596</a>                     addResult(results, assertIsFalse(type.isControllableAcl(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2597" href="#2597">2597</a>                 }
<a class="jxr_linenumber" name="2598" href="#2598">2598</a> 
<a class="jxr_linenumber" name="2599" href="#2599">2599</a>                 <strong class="jxr_keyword">if</strong> (type.isControllablePolicy() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="2600" href="#2600">2600</a>                     f = createResult(FAILURE, <span class="jxr_string">"The controllable policy flag must be false for secondary types!"</span>);
<a class="jxr_linenumber" name="2601" href="#2601">2601</a>                     addResult(results, assertIsFalse(type.isControllablePolicy(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2602" href="#2602">2602</a>                 }
<a class="jxr_linenumber" name="2603" href="#2603">2603</a>             }
<a class="jxr_linenumber" name="2604" href="#2604">2604</a> 
<a class="jxr_linenumber" name="2605" href="#2605">2605</a>             <em class="jxr_comment">// check properties</em>
<a class="jxr_linenumber" name="2606" href="#2606">2606</a>             <strong class="jxr_keyword">if</strong> (!BaseTypeId.CMIS_SECONDARY.equals(type.getBaseTypeId())) {
<a class="jxr_linenumber" name="2607" href="#2607">2607</a> 
<a class="jxr_linenumber" name="2608" href="#2608">2608</a>                 f = createResult(FAILURE, <span class="jxr_string">"Type has no property definitions!"</span>);
<a class="jxr_linenumber" name="2609" href="#2609">2609</a>                 addResult(results, assertNotNull(type.getPropertyDefinitions(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2610" href="#2610">2610</a> 
<a class="jxr_linenumber" name="2611" href="#2611">2611</a>                 <strong class="jxr_keyword">if</strong> (type.getPropertyDefinitions() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="2612" href="#2612">2612</a>                     <strong class="jxr_keyword">for</strong> (PropertyDefinition&lt;?&gt; propDef : type.getPropertyDefinitions().values()) {
<a class="jxr_linenumber" name="2613" href="#2613">2613</a>                         <strong class="jxr_keyword">if</strong> (propDef == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="2614" href="#2614">2614</a>                             addResult(results, createResult(FAILURE, <span class="jxr_string">"A property definition is null!"</span>));
<a class="jxr_linenumber" name="2615" href="#2615">2615</a>                         } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (propDef.getId() == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="2616" href="#2616">2616</a>                             addResult(results, createResult(FAILURE, <span class="jxr_string">"A property definition ID is null!"</span>));
<a class="jxr_linenumber" name="2617" href="#2617">2617</a>                         } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="2618" href="#2618">2618</a>                             addResult(results,
<a class="jxr_linenumber" name="2619" href="#2619">2619</a>                                     checkPropertyDefinition(propDef, <span class="jxr_string">"Property definition: "</span> + propDef.getId()));
<a class="jxr_linenumber" name="2620" href="#2620">2620</a>                         }
<a class="jxr_linenumber" name="2621" href="#2621">2621</a>                     }
<a class="jxr_linenumber" name="2622" href="#2622">2622</a>                 }
<a class="jxr_linenumber" name="2623" href="#2623">2623</a> 
<a class="jxr_linenumber" name="2624" href="#2624">2624</a>                 <a href="../../../../../../org/apache/chemistry/opencmis/tck/impl/AbstractSessionTest.html">CmisPropertyDefintion</a> cpd;
<a class="jxr_linenumber" name="2625" href="#2625">2625</a> 
<a class="jxr_linenumber" name="2626" href="#2626">2626</a>                 <em class="jxr_comment">// cmis:name</em>
<a class="jxr_linenumber" name="2627" href="#2627">2627</a>                 cpd = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/impl/AbstractSessionTest.html">CmisPropertyDefintion</a>(PropertyIds.NAME, <strong class="jxr_keyword">null</strong>, PropertyType.STRING, Cardinality.SINGLE, <strong class="jxr_keyword">null</strong>,
<a class="jxr_linenumber" name="2628" href="#2628">2628</a>                         <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="2629" href="#2629">2629</a>                 addResult(results, cpd.check(type));
<a class="jxr_linenumber" name="2630" href="#2630">2630</a> 
<a class="jxr_linenumber" name="2631" href="#2631">2631</a>                 <em class="jxr_comment">// cmis:objectId</em>
<a class="jxr_linenumber" name="2632" href="#2632">2632</a>                 cpd = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/impl/AbstractSessionTest.html">CmisPropertyDefintion</a>(PropertyIds.OBJECT_ID, false, PropertyType.ID, Cardinality.SINGLE,
<a class="jxr_linenumber" name="2633" href="#2633">2633</a>                         Updatability.READONLY, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="2634" href="#2634">2634</a>                 addResult(results, cpd.check(type));
<a class="jxr_linenumber" name="2635" href="#2635">2635</a> 
<a class="jxr_linenumber" name="2636" href="#2636">2636</a>                 <em class="jxr_comment">// cmis:baseTypeId</em>
<a class="jxr_linenumber" name="2637" href="#2637">2637</a>                 cpd = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/impl/AbstractSessionTest.html">CmisPropertyDefintion</a>(PropertyIds.BASE_TYPE_ID, false, PropertyType.ID, Cardinality.SINGLE,
<a class="jxr_linenumber" name="2638" href="#2638">2638</a>                         Updatability.READONLY, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="2639" href="#2639">2639</a>                 addResult(results, cpd.check(type));
<a class="jxr_linenumber" name="2640" href="#2640">2640</a> 
<a class="jxr_linenumber" name="2641" href="#2641">2641</a>                 <em class="jxr_comment">// cmis:objectTypeId</em>
<a class="jxr_linenumber" name="2642" href="#2642">2642</a>                 cpd = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/impl/AbstractSessionTest.html">CmisPropertyDefintion</a>(PropertyIds.OBJECT_TYPE_ID, <strong class="jxr_keyword">true</strong>, PropertyType.ID, Cardinality.SINGLE,
<a class="jxr_linenumber" name="2643" href="#2643">2643</a>                         Updatability.ONCREATE, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="2644" href="#2644">2644</a>                 addResult(results, cpd.check(type));
<a class="jxr_linenumber" name="2645" href="#2645">2645</a> 
<a class="jxr_linenumber" name="2646" href="#2646">2646</a>                 <em class="jxr_comment">// cmis:createdBy</em>
<a class="jxr_linenumber" name="2647" href="#2647">2647</a>                 cpd = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/impl/AbstractSessionTest.html">CmisPropertyDefintion</a>(PropertyIds.CREATED_BY, false, PropertyType.STRING, Cardinality.SINGLE,
<a class="jxr_linenumber" name="2648" href="#2648">2648</a>                         Updatability.READONLY, <strong class="jxr_keyword">true</strong>, <strong class="jxr_keyword">true</strong>);
<a class="jxr_linenumber" name="2649" href="#2649">2649</a>                 addResult(results, cpd.check(type));
<a class="jxr_linenumber" name="2650" href="#2650">2650</a> 
<a class="jxr_linenumber" name="2651" href="#2651">2651</a>                 <em class="jxr_comment">// cmis:creationDate</em>
<a class="jxr_linenumber" name="2652" href="#2652">2652</a>                 cpd = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/impl/AbstractSessionTest.html">CmisPropertyDefintion</a>(PropertyIds.CREATION_DATE, false, PropertyType.DATETIME,
<a class="jxr_linenumber" name="2653" href="#2653">2653</a>                         Cardinality.SINGLE, Updatability.READONLY, <strong class="jxr_keyword">true</strong>, <strong class="jxr_keyword">true</strong>);
<a class="jxr_linenumber" name="2654" href="#2654">2654</a>                 addResult(results, cpd.check(type));
<a class="jxr_linenumber" name="2655" href="#2655">2655</a> 
<a class="jxr_linenumber" name="2656" href="#2656">2656</a>                 <em class="jxr_comment">// cmis:lastModifiedBy</em>
<a class="jxr_linenumber" name="2657" href="#2657">2657</a>                 cpd = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/impl/AbstractSessionTest.html">CmisPropertyDefintion</a>(PropertyIds.LAST_MODIFIED_BY, false, PropertyType.STRING,
<a class="jxr_linenumber" name="2658" href="#2658">2658</a>                         Cardinality.SINGLE, Updatability.READONLY, <strong class="jxr_keyword">true</strong>, <strong class="jxr_keyword">true</strong>);
<a class="jxr_linenumber" name="2659" href="#2659">2659</a>                 addResult(results, cpd.check(type));
<a class="jxr_linenumber" name="2660" href="#2660">2660</a> 
<a class="jxr_linenumber" name="2661" href="#2661">2661</a>                 <em class="jxr_comment">// cmis:lastModificationDate</em>
<a class="jxr_linenumber" name="2662" href="#2662">2662</a>                 cpd = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/impl/AbstractSessionTest.html">CmisPropertyDefintion</a>(PropertyIds.LAST_MODIFICATION_DATE, false, PropertyType.DATETIME,
<a class="jxr_linenumber" name="2663" href="#2663">2663</a>                         Cardinality.SINGLE, Updatability.READONLY, <strong class="jxr_keyword">true</strong>, <strong class="jxr_keyword">true</strong>);
<a class="jxr_linenumber" name="2664" href="#2664">2664</a>                 addResult(results, cpd.check(type));
<a class="jxr_linenumber" name="2665" href="#2665">2665</a> 
<a class="jxr_linenumber" name="2666" href="#2666">2666</a>                 <em class="jxr_comment">// cmis:changeToken</em>
<a class="jxr_linenumber" name="2667" href="#2667">2667</a>                 cpd = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/impl/AbstractSessionTest.html">CmisPropertyDefintion</a>(PropertyIds.CHANGE_TOKEN, false, PropertyType.STRING,
<a class="jxr_linenumber" name="2668" href="#2668">2668</a>                         Cardinality.SINGLE, Updatability.READONLY, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="2669" href="#2669">2669</a>                 addResult(results, cpd.check(type));
<a class="jxr_linenumber" name="2670" href="#2670">2670</a> 
<a class="jxr_linenumber" name="2671" href="#2671">2671</a>                 <em class="jxr_comment">// CMIS 1.1 properties</em>
<a class="jxr_linenumber" name="2672" href="#2672">2672</a>                 <strong class="jxr_keyword">if</strong> (session.getRepositoryInfo().getCmisVersion() == CmisVersion.CMIS_1_1) {
<a class="jxr_linenumber" name="2673" href="#2673">2673</a>                     <em class="jxr_comment">// cmis:description</em>
<a class="jxr_linenumber" name="2674" href="#2674">2674</a>                     cpd = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/impl/AbstractSessionTest.html">CmisPropertyDefintion</a>(PropertyIds.DESCRIPTION, <strong class="jxr_keyword">null</strong>, PropertyType.STRING,
<a class="jxr_linenumber" name="2675" href="#2675">2675</a>                             Cardinality.SINGLE, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="2676" href="#2676">2676</a>                     addResult(results, cpd.check(type));
<a class="jxr_linenumber" name="2677" href="#2677">2677</a> 
<a class="jxr_linenumber" name="2678" href="#2678">2678</a>                     <em class="jxr_comment">// cmis:secondaryObjectTypeIds</em>
<a class="jxr_linenumber" name="2679" href="#2679">2679</a>                     cpd = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/impl/AbstractSessionTest.html">CmisPropertyDefintion</a>(PropertyIds.SECONDARY_OBJECT_TYPE_IDS, false, PropertyType.ID,
<a class="jxr_linenumber" name="2680" href="#2680">2680</a>                             Cardinality.MULTI, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, false);
<a class="jxr_linenumber" name="2681" href="#2681">2681</a>                     addResult(results, cpd.check(type));
<a class="jxr_linenumber" name="2682" href="#2682">2682</a> 
<a class="jxr_linenumber" name="2683" href="#2683">2683</a>                     <strong class="jxr_keyword">if</strong> (BaseTypeId.CMIS_DOCUMENT.equals(type.getBaseTypeId())) {
<a class="jxr_linenumber" name="2684" href="#2684">2684</a>                         <em class="jxr_comment">// cmis:isPrivateWorkingCopy</em>
<a class="jxr_linenumber" name="2685" href="#2685">2685</a>                         cpd = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/impl/AbstractSessionTest.html">CmisPropertyDefintion</a>(PropertyIds.IS_PRIVATE_WORKING_COPY, <strong class="jxr_keyword">null</strong>, PropertyType.BOOLEAN,
<a class="jxr_linenumber" name="2686" href="#2686">2686</a>                                 Cardinality.SINGLE, Updatability.READONLY, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="2687" href="#2687">2687</a>                         addResult(results, cpd.check(type));
<a class="jxr_linenumber" name="2688" href="#2688">2688</a>                     }
<a class="jxr_linenumber" name="2689" href="#2689">2689</a>                 }
<a class="jxr_linenumber" name="2690" href="#2690">2690</a> 
<a class="jxr_linenumber" name="2691" href="#2691">2691</a>                 <strong class="jxr_keyword">if</strong> (BaseTypeId.CMIS_DOCUMENT.equals(type.getBaseTypeId())) {
<a class="jxr_linenumber" name="2692" href="#2692">2692</a>                     <em class="jxr_comment">// cmis:isImmutable</em>
<a class="jxr_linenumber" name="2693" href="#2693">2693</a>                     cpd = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/impl/AbstractSessionTest.html">CmisPropertyDefintion</a>(PropertyIds.IS_IMMUTABLE, false, PropertyType.BOOLEAN,
<a class="jxr_linenumber" name="2694" href="#2694">2694</a>                             Cardinality.SINGLE, Updatability.READONLY, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="2695" href="#2695">2695</a>                     addResult(results, cpd.check(type));
<a class="jxr_linenumber" name="2696" href="#2696">2696</a> 
<a class="jxr_linenumber" name="2697" href="#2697">2697</a>                     <em class="jxr_comment">// cmis:isLatestVersion</em>
<a class="jxr_linenumber" name="2698" href="#2698">2698</a>                     cpd = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/impl/AbstractSessionTest.html">CmisPropertyDefintion</a>(PropertyIds.IS_LATEST_VERSION, false, PropertyType.BOOLEAN,
<a class="jxr_linenumber" name="2699" href="#2699">2699</a>                             Cardinality.SINGLE, Updatability.READONLY, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="2700" href="#2700">2700</a>                     addResult(results, cpd.check(type));
<a class="jxr_linenumber" name="2701" href="#2701">2701</a> 
<a class="jxr_linenumber" name="2702" href="#2702">2702</a>                     <em class="jxr_comment">// cmis:isMajorVersion</em>
<a class="jxr_linenumber" name="2703" href="#2703">2703</a>                     cpd = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/impl/AbstractSessionTest.html">CmisPropertyDefintion</a>(PropertyIds.IS_MAJOR_VERSION, false, PropertyType.BOOLEAN,
<a class="jxr_linenumber" name="2704" href="#2704">2704</a>                             Cardinality.SINGLE, Updatability.READONLY, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="2705" href="#2705">2705</a>                     addResult(results, cpd.check(type));
<a class="jxr_linenumber" name="2706" href="#2706">2706</a> 
<a class="jxr_linenumber" name="2707" href="#2707">2707</a>                     <em class="jxr_comment">// cmis:isLatestMajorVersion</em>
<a class="jxr_linenumber" name="2708" href="#2708">2708</a>                     cpd = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/impl/AbstractSessionTest.html">CmisPropertyDefintion</a>(PropertyIds.IS_LATEST_MAJOR_VERSION, false, PropertyType.BOOLEAN,
<a class="jxr_linenumber" name="2709" href="#2709">2709</a>                             Cardinality.SINGLE, Updatability.READONLY, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="2710" href="#2710">2710</a>                     addResult(results, cpd.check(type));
<a class="jxr_linenumber" name="2711" href="#2711">2711</a> 
<a class="jxr_linenumber" name="2712" href="#2712">2712</a>                     <em class="jxr_comment">// cmis:versionLabel</em>
<a class="jxr_linenumber" name="2713" href="#2713">2713</a>                     cpd = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/impl/AbstractSessionTest.html">CmisPropertyDefintion</a>(PropertyIds.VERSION_LABEL, false, PropertyType.STRING,
<a class="jxr_linenumber" name="2714" href="#2714">2714</a>                             Cardinality.SINGLE, Updatability.READONLY, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="2715" href="#2715">2715</a>                     addResult(results, cpd.check(type));
<a class="jxr_linenumber" name="2716" href="#2716">2716</a> 
<a class="jxr_linenumber" name="2717" href="#2717">2717</a>                     <em class="jxr_comment">// cmis:versionSeriesId</em>
<a class="jxr_linenumber" name="2718" href="#2718">2718</a>                     cpd = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/impl/AbstractSessionTest.html">CmisPropertyDefintion</a>(PropertyIds.VERSION_SERIES_ID, false, PropertyType.ID,
<a class="jxr_linenumber" name="2719" href="#2719">2719</a>                             Cardinality.SINGLE, Updatability.READONLY, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="2720" href="#2720">2720</a>                     addResult(results, cpd.check(type));
<a class="jxr_linenumber" name="2721" href="#2721">2721</a> 
<a class="jxr_linenumber" name="2722" href="#2722">2722</a>                     <em class="jxr_comment">// cmis:isVersionSeriesCheckedOut</em>
<a class="jxr_linenumber" name="2723" href="#2723">2723</a>                     cpd = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/impl/AbstractSessionTest.html">CmisPropertyDefintion</a>(PropertyIds.IS_VERSION_SERIES_CHECKED_OUT, false,
<a class="jxr_linenumber" name="2724" href="#2724">2724</a>                             PropertyType.BOOLEAN, Cardinality.SINGLE, Updatability.READONLY, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="2725" href="#2725">2725</a>                     addResult(results, cpd.check(type));
<a class="jxr_linenumber" name="2726" href="#2726">2726</a> 
<a class="jxr_linenumber" name="2727" href="#2727">2727</a>                     <em class="jxr_comment">// cmis:versionSeriesCheckedOutBy</em>
<a class="jxr_linenumber" name="2728" href="#2728">2728</a>                     cpd = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/impl/AbstractSessionTest.html">CmisPropertyDefintion</a>(PropertyIds.VERSION_SERIES_CHECKED_OUT_BY, false,
<a class="jxr_linenumber" name="2729" href="#2729">2729</a>                             PropertyType.STRING, Cardinality.SINGLE, Updatability.READONLY, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="2730" href="#2730">2730</a>                     addResult(results, cpd.check(type));
<a class="jxr_linenumber" name="2731" href="#2731">2731</a> 
<a class="jxr_linenumber" name="2732" href="#2732">2732</a>                     <em class="jxr_comment">// cmis:versionSeriesCheckedOutId</em>
<a class="jxr_linenumber" name="2733" href="#2733">2733</a>                     cpd = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/impl/AbstractSessionTest.html">CmisPropertyDefintion</a>(PropertyIds.VERSION_SERIES_CHECKED_OUT_ID, false, PropertyType.ID,
<a class="jxr_linenumber" name="2734" href="#2734">2734</a>                             Cardinality.SINGLE, Updatability.READONLY, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="2735" href="#2735">2735</a>                     addResult(results, cpd.check(type));
<a class="jxr_linenumber" name="2736" href="#2736">2736</a> 
<a class="jxr_linenumber" name="2737" href="#2737">2737</a>                     <em class="jxr_comment">// cmis:checkinComment</em>
<a class="jxr_linenumber" name="2738" href="#2738">2738</a>                     cpd = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/impl/AbstractSessionTest.html">CmisPropertyDefintion</a>(PropertyIds.CHECKIN_COMMENT, false, PropertyType.STRING,
<a class="jxr_linenumber" name="2739" href="#2739">2739</a>                             Cardinality.SINGLE, Updatability.READONLY, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="2740" href="#2740">2740</a>                     addResult(results, cpd.check(type));
<a class="jxr_linenumber" name="2741" href="#2741">2741</a> 
<a class="jxr_linenumber" name="2742" href="#2742">2742</a>                     <em class="jxr_comment">// cmis:contentStreamLength</em>
<a class="jxr_linenumber" name="2743" href="#2743">2743</a>                     cpd = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/impl/AbstractSessionTest.html">CmisPropertyDefintion</a>(PropertyIds.CONTENT_STREAM_LENGTH, false, PropertyType.INTEGER,
<a class="jxr_linenumber" name="2744" href="#2744">2744</a>                             Cardinality.SINGLE, Updatability.READONLY, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="2745" href="#2745">2745</a>                     addResult(results, cpd.check(type));
<a class="jxr_linenumber" name="2746" href="#2746">2746</a> 
<a class="jxr_linenumber" name="2747" href="#2747">2747</a>                     <em class="jxr_comment">// cmis:contentStreamMimeType</em>
<a class="jxr_linenumber" name="2748" href="#2748">2748</a>                     cpd = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/impl/AbstractSessionTest.html">CmisPropertyDefintion</a>(PropertyIds.CONTENT_STREAM_MIME_TYPE, false, PropertyType.STRING,
<a class="jxr_linenumber" name="2749" href="#2749">2749</a>                             Cardinality.SINGLE, Updatability.READONLY, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="2750" href="#2750">2750</a>                     addResult(results, cpd.check(type));
<a class="jxr_linenumber" name="2751" href="#2751">2751</a> 
<a class="jxr_linenumber" name="2752" href="#2752">2752</a>                     <em class="jxr_comment">// cmis:contentStreamFileName</em>
<a class="jxr_linenumber" name="2753" href="#2753">2753</a>                     cpd = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/impl/AbstractSessionTest.html">CmisPropertyDefintion</a>(PropertyIds.CONTENT_STREAM_FILE_NAME, false, PropertyType.STRING,
<a class="jxr_linenumber" name="2754" href="#2754">2754</a>                             Cardinality.SINGLE, Updatability.READONLY, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="2755" href="#2755">2755</a>                     addResult(results, cpd.check(type));
<a class="jxr_linenumber" name="2756" href="#2756">2756</a> 
<a class="jxr_linenumber" name="2757" href="#2757">2757</a>                     <em class="jxr_comment">// cmis:contentStreamId</em>
<a class="jxr_linenumber" name="2758" href="#2758">2758</a>                     cpd = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/impl/AbstractSessionTest.html">CmisPropertyDefintion</a>(PropertyIds.CONTENT_STREAM_ID, false, PropertyType.ID,
<a class="jxr_linenumber" name="2759" href="#2759">2759</a>                             Cardinality.SINGLE, Updatability.READONLY, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="2760" href="#2760">2760</a>                     addResult(results, cpd.check(type));
<a class="jxr_linenumber" name="2761" href="#2761">2761</a>                 } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (BaseTypeId.CMIS_FOLDER.equals(type.getBaseTypeId())) {
<a class="jxr_linenumber" name="2762" href="#2762">2762</a>                     <em class="jxr_comment">// cmis:parentId</em>
<a class="jxr_linenumber" name="2763" href="#2763">2763</a>                     cpd = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/impl/AbstractSessionTest.html">CmisPropertyDefintion</a>(PropertyIds.PARENT_ID, false, PropertyType.ID, Cardinality.SINGLE,
<a class="jxr_linenumber" name="2764" href="#2764">2764</a>                             Updatability.READONLY, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="2765" href="#2765">2765</a>                     addResult(results, cpd.check(type));
<a class="jxr_linenumber" name="2766" href="#2766">2766</a> 
<a class="jxr_linenumber" name="2767" href="#2767">2767</a>                     <em class="jxr_comment">// cmis:path</em>
<a class="jxr_linenumber" name="2768" href="#2768">2768</a>                     cpd = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/impl/AbstractSessionTest.html">CmisPropertyDefintion</a>(PropertyIds.PATH, false, PropertyType.STRING, Cardinality.SINGLE,
<a class="jxr_linenumber" name="2769" href="#2769">2769</a>                             Updatability.READONLY, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="2770" href="#2770">2770</a>                     addResult(results, cpd.check(type));
<a class="jxr_linenumber" name="2771" href="#2771">2771</a> 
<a class="jxr_linenumber" name="2772" href="#2772">2772</a>                     <em class="jxr_comment">// cmis:allowedChildObjectTypeIds</em>
<a class="jxr_linenumber" name="2773" href="#2773">2773</a>                     cpd = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/impl/AbstractSessionTest.html">CmisPropertyDefintion</a>(PropertyIds.ALLOWED_CHILD_OBJECT_TYPE_IDS, false, PropertyType.ID,
<a class="jxr_linenumber" name="2774" href="#2774">2774</a>                             Cardinality.MULTI, Updatability.READONLY, <strong class="jxr_keyword">null</strong>, false);
<a class="jxr_linenumber" name="2775" href="#2775">2775</a>                     addResult(results, cpd.check(type));
<a class="jxr_linenumber" name="2776" href="#2776">2776</a>                 } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (BaseTypeId.CMIS_RELATIONSHIP.equals(type.getBaseTypeId())) {
<a class="jxr_linenumber" name="2777" href="#2777">2777</a>                     <em class="jxr_comment">// cmis:sourceId</em>
<a class="jxr_linenumber" name="2778" href="#2778">2778</a>                     cpd = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/impl/AbstractSessionTest.html">CmisPropertyDefintion</a>(PropertyIds.SOURCE_ID, <strong class="jxr_keyword">true</strong>, PropertyType.ID, Cardinality.SINGLE,
<a class="jxr_linenumber" name="2779" href="#2779">2779</a>                             <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="2780" href="#2780">2780</a>                     addResult(results, cpd.check(type));
<a class="jxr_linenumber" name="2781" href="#2781">2781</a> 
<a class="jxr_linenumber" name="2782" href="#2782">2782</a>                     <em class="jxr_comment">// cmis:targetId</em>
<a class="jxr_linenumber" name="2783" href="#2783">2783</a>                     cpd = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/impl/AbstractSessionTest.html">CmisPropertyDefintion</a>(PropertyIds.TARGET_ID, <strong class="jxr_keyword">true</strong>, PropertyType.ID, Cardinality.SINGLE,
<a class="jxr_linenumber" name="2784" href="#2784">2784</a>                             <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="2785" href="#2785">2785</a>                     addResult(results, cpd.check(type));
<a class="jxr_linenumber" name="2786" href="#2786">2786</a>                 } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (BaseTypeId.CMIS_POLICY.equals(type.getBaseTypeId())) {
<a class="jxr_linenumber" name="2787" href="#2787">2787</a>                     <em class="jxr_comment">// cmis:policyText</em>
<a class="jxr_linenumber" name="2788" href="#2788">2788</a>                     cpd = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/impl/AbstractSessionTest.html">CmisPropertyDefintion</a>(PropertyIds.POLICY_TEXT, <strong class="jxr_keyword">null</strong>, PropertyType.STRING,
<a class="jxr_linenumber" name="2789" href="#2789">2789</a>                             Cardinality.SINGLE, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="2790" href="#2790">2790</a>                     addResult(results, cpd.check(type));
<a class="jxr_linenumber" name="2791" href="#2791">2791</a>                 }
<a class="jxr_linenumber" name="2792" href="#2792">2792</a>             }
<a class="jxr_linenumber" name="2793" href="#2793">2793</a>         }
<a class="jxr_linenumber" name="2794" href="#2794">2794</a> 
<a class="jxr_linenumber" name="2795" href="#2795">2795</a>         <a href="../../../../../../org/apache/chemistry/opencmis/tck/impl/CmisTestResultImpl.html">CmisTestResultImpl</a> result = createResult(getWorst(results), message);
<a class="jxr_linenumber" name="2796" href="#2796">2796</a>         result.getChildren().addAll(results);
<a class="jxr_linenumber" name="2797" href="#2797">2797</a> 
<a class="jxr_linenumber" name="2798" href="#2798">2798</a>         <strong class="jxr_keyword">return</strong> result.getStatus().getLevel() &lt;= OK.getLevel() ? <strong class="jxr_keyword">null</strong> : result;
<a class="jxr_linenumber" name="2799" href="#2799">2799</a>     }
<a class="jxr_linenumber" name="2800" href="#2800">2800</a> 
<a class="jxr_linenumber" name="2801" href="#2801">2801</a>     <strong class="jxr_keyword">protected</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> checkPropertyDefinition(PropertyDefinition&lt;?&gt; propDef, String message) {
<a class="jxr_linenumber" name="2802" href="#2802">2802</a>         List&lt;CmisTestResult&gt; results = <strong class="jxr_keyword">new</strong> ArrayList&lt;CmisTestResult&gt;();
<a class="jxr_linenumber" name="2803" href="#2803">2803</a> 
<a class="jxr_linenumber" name="2804" href="#2804">2804</a>         <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> f;
<a class="jxr_linenumber" name="2805" href="#2805">2805</a> 
<a class="jxr_linenumber" name="2806" href="#2806">2806</a>         f = createResult(FAILURE, <span class="jxr_string">"Property definition is null!"</span>);
<a class="jxr_linenumber" name="2807" href="#2807">2807</a>         addResult(results, assertNotNull(propDef, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2808" href="#2808">2808</a> 
<a class="jxr_linenumber" name="2809" href="#2809">2809</a>         <strong class="jxr_keyword">if</strong> (propDef != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="2810" href="#2810">2810</a>             f = createResult(FAILURE, <span class="jxr_string">"Property ID is not set!"</span>);
<a class="jxr_linenumber" name="2811" href="#2811">2811</a>             addResult(results, assertStringNotEmpty(propDef.getId(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2812" href="#2812">2812</a> 
<a class="jxr_linenumber" name="2813" href="#2813">2813</a>             f = createResult(WARNING, <span class="jxr_string">"Local name is not set!"</span>);
<a class="jxr_linenumber" name="2814" href="#2814">2814</a>             addResult(results, assertStringNotEmpty(propDef.getLocalName(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2815" href="#2815">2815</a> 
<a class="jxr_linenumber" name="2816" href="#2816">2816</a>             <em class="jxr_comment">// f = createResult(WARNING, "Local namespace is not set!");</em>
<a class="jxr_linenumber" name="2817" href="#2817">2817</a>             <em class="jxr_comment">// addResult(results,</em>
<a class="jxr_linenumber" name="2818" href="#2818">2818</a>             <em class="jxr_comment">// assertStringNotEmpty(propDef.getLocalNamespace(), null, f));</em>
<a class="jxr_linenumber" name="2819" href="#2819">2819</a> 
<a class="jxr_linenumber" name="2820" href="#2820">2820</a>             f = createResult(FAILURE, <span class="jxr_string">"Query name is not set!"</span>);
<a class="jxr_linenumber" name="2821" href="#2821">2821</a>             addResult(results, assertStringNotEmpty(propDef.getQueryName(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2822" href="#2822">2822</a> 
<a class="jxr_linenumber" name="2823" href="#2823">2823</a>             f = createResult(WARNING, <span class="jxr_string">"Display name is not set!"</span>);
<a class="jxr_linenumber" name="2824" href="#2824">2824</a>             addResult(results, assertStringNotEmpty(propDef.getDisplayName(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2825" href="#2825">2825</a> 
<a class="jxr_linenumber" name="2826" href="#2826">2826</a>             f = createResult(WARNING, <span class="jxr_string">"Description is not set!"</span>);
<a class="jxr_linenumber" name="2827" href="#2827">2827</a>             addResult(results, assertStringNotEmpty(propDef.getDescription(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2828" href="#2828">2828</a> 
<a class="jxr_linenumber" name="2829" href="#2829">2829</a>             f = createResult(FAILURE, <span class="jxr_string">"Property type is not set!"</span>);
<a class="jxr_linenumber" name="2830" href="#2830">2830</a>             addResult(results, assertNotNull(propDef.getPropertyType(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2831" href="#2831">2831</a> 
<a class="jxr_linenumber" name="2832" href="#2832">2832</a>             f = createResult(FAILURE, <span class="jxr_string">"Cardinality is not set!"</span>);
<a class="jxr_linenumber" name="2833" href="#2833">2833</a>             addResult(results, assertNotNull(propDef.getCardinality(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2834" href="#2834">2834</a> 
<a class="jxr_linenumber" name="2835" href="#2835">2835</a>             f = createResult(FAILURE, <span class="jxr_string">"Updatability is not set!"</span>);
<a class="jxr_linenumber" name="2836" href="#2836">2836</a>             addResult(results, assertNotNull(propDef.getUpdatability(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2837" href="#2837">2837</a> 
<a class="jxr_linenumber" name="2838" href="#2838">2838</a>             f = createResult(FAILURE, <span class="jxr_string">"Inherited flag is not set!"</span>);
<a class="jxr_linenumber" name="2839" href="#2839">2839</a>             addResult(results, assertNotNull(propDef.isInherited(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2840" href="#2840">2840</a> 
<a class="jxr_linenumber" name="2841" href="#2841">2841</a>             f = createResult(FAILURE, <span class="jxr_string">"Required flag is not set!"</span>);
<a class="jxr_linenumber" name="2842" href="#2842">2842</a>             addResult(results, assertNotNull(propDef.isRequired(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2843" href="#2843">2843</a> 
<a class="jxr_linenumber" name="2844" href="#2844">2844</a>             f = createResult(FAILURE, <span class="jxr_string">"Queryable flag is not set!"</span>);
<a class="jxr_linenumber" name="2845" href="#2845">2845</a>             addResult(results, assertNotNull(propDef.isQueryable(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2846" href="#2846">2846</a> 
<a class="jxr_linenumber" name="2847" href="#2847">2847</a>             f = createResult(FAILURE, <span class="jxr_string">"Orderable flag is not set!"</span>);
<a class="jxr_linenumber" name="2848" href="#2848">2848</a>             addResult(results, assertNotNull(propDef.isOrderable(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2849" href="#2849">2849</a>         }
<a class="jxr_linenumber" name="2850" href="#2850">2850</a> 
<a class="jxr_linenumber" name="2851" href="#2851">2851</a>         <a href="../../../../../../org/apache/chemistry/opencmis/tck/impl/CmisTestResultImpl.html">CmisTestResultImpl</a> result = createResult(getWorst(results), message);
<a class="jxr_linenumber" name="2852" href="#2852">2852</a>         result.getChildren().addAll(results);
<a class="jxr_linenumber" name="2853" href="#2853">2853</a> 
<a class="jxr_linenumber" name="2854" href="#2854">2854</a>         <strong class="jxr_keyword">return</strong> result.getStatus().getLevel() &lt;= OK.getLevel() ? <strong class="jxr_keyword">null</strong> : result;
<a class="jxr_linenumber" name="2855" href="#2855">2855</a>     }
<a class="jxr_linenumber" name="2856" href="#2856">2856</a> 
<a class="jxr_linenumber" name="2857" href="#2857">2857</a>     <strong class="jxr_keyword">protected</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> assertEquals(TypeDefinition expected, TypeDefinition actual, <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> success,
<a class="jxr_linenumber" name="2858" href="#2858">2858</a>             <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> failure) {
<a class="jxr_linenumber" name="2859" href="#2859">2859</a> 
<a class="jxr_linenumber" name="2860" href="#2860">2860</a>         List&lt;CmisTestResult&gt; results = <strong class="jxr_keyword">new</strong> ArrayList&lt;CmisTestResult&gt;();
<a class="jxr_linenumber" name="2861" href="#2861">2861</a> 
<a class="jxr_linenumber" name="2862" href="#2862">2862</a>         <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> f;
<a class="jxr_linenumber" name="2863" href="#2863">2863</a> 
<a class="jxr_linenumber" name="2864" href="#2864">2864</a>         <strong class="jxr_keyword">if</strong> ((expected == <strong class="jxr_keyword">null</strong>) &amp;&amp; (actual == <strong class="jxr_keyword">null</strong>)) {
<a class="jxr_linenumber" name="2865" href="#2865">2865</a>             <strong class="jxr_keyword">return</strong> success;
<a class="jxr_linenumber" name="2866" href="#2866">2866</a>         }
<a class="jxr_linenumber" name="2867" href="#2867">2867</a> 
<a class="jxr_linenumber" name="2868" href="#2868">2868</a>         <strong class="jxr_keyword">if</strong> (expected == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="2869" href="#2869">2869</a>             f = createResult(FAILURE, <span class="jxr_string">"Expected type defintion is null, but actual type defintion is not!"</span>);
<a class="jxr_linenumber" name="2870" href="#2870">2870</a>             addResultChild(failure, f);
<a class="jxr_linenumber" name="2871" href="#2871">2871</a> 
<a class="jxr_linenumber" name="2872" href="#2872">2872</a>             <strong class="jxr_keyword">return</strong> failure;
<a class="jxr_linenumber" name="2873" href="#2873">2873</a>         }
<a class="jxr_linenumber" name="2874" href="#2874">2874</a> 
<a class="jxr_linenumber" name="2875" href="#2875">2875</a>         <strong class="jxr_keyword">if</strong> (actual == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="2876" href="#2876">2876</a>             f = createResult(FAILURE, <span class="jxr_string">"Actual type defintion is null, but expected type defintion is not!"</span>);
<a class="jxr_linenumber" name="2877" href="#2877">2877</a>             addResultChild(failure, f);
<a class="jxr_linenumber" name="2878" href="#2878">2878</a> 
<a class="jxr_linenumber" name="2879" href="#2879">2879</a>             <strong class="jxr_keyword">return</strong> failure;
<a class="jxr_linenumber" name="2880" href="#2880">2880</a>         }
<a class="jxr_linenumber" name="2881" href="#2881">2881</a> 
<a class="jxr_linenumber" name="2882" href="#2882">2882</a>         f = createResult(FAILURE, <span class="jxr_string">"Type IDs don't match!"</span>);
<a class="jxr_linenumber" name="2883" href="#2883">2883</a>         addResult(results, assertEquals(expected.getId(), actual.getId(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2884" href="#2884">2884</a> 
<a class="jxr_linenumber" name="2885" href="#2885">2885</a>         f = createResult(FAILURE, <span class="jxr_string">"Base type IDs don't match!"</span>);
<a class="jxr_linenumber" name="2886" href="#2886">2886</a>         addResult(results, assertEquals(expected.getBaseTypeId(), actual.getBaseTypeId(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2887" href="#2887">2887</a> 
<a class="jxr_linenumber" name="2888" href="#2888">2888</a>         f = createResult(FAILURE, <span class="jxr_string">"Parent type IDs don't match!"</span>);
<a class="jxr_linenumber" name="2889" href="#2889">2889</a>         addResult(results, assertEquals(expected.getParentTypeId(), actual.getParentTypeId(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2890" href="#2890">2890</a> 
<a class="jxr_linenumber" name="2891" href="#2891">2891</a>         f = createResult(FAILURE, <span class="jxr_string">"Query names don't match!"</span>);
<a class="jxr_linenumber" name="2892" href="#2892">2892</a>         addResult(results, assertEquals(expected.getQueryName(), actual.getQueryName(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2893" href="#2893">2893</a> 
<a class="jxr_linenumber" name="2894" href="#2894">2894</a>         f = createResult(FAILURE, <span class="jxr_string">"Local names don't match!"</span>);
<a class="jxr_linenumber" name="2895" href="#2895">2895</a>         addResult(results, assertEquals(expected.getLocalName(), actual.getLocalName(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2896" href="#2896">2896</a> 
<a class="jxr_linenumber" name="2897" href="#2897">2897</a>         f = createResult(FAILURE, <span class="jxr_string">"Local namespaces don't match!"</span>);
<a class="jxr_linenumber" name="2898" href="#2898">2898</a>         addResult(results, assertEquals(expected.getLocalNamespace(), actual.getLocalNamespace(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2899" href="#2899">2899</a> 
<a class="jxr_linenumber" name="2900" href="#2900">2900</a>         f = createResult(FAILURE, <span class="jxr_string">"Display names don't match!"</span>);
<a class="jxr_linenumber" name="2901" href="#2901">2901</a>         addResult(results, assertEquals(expected.getDisplayName(), actual.getDisplayName(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2902" href="#2902">2902</a> 
<a class="jxr_linenumber" name="2903" href="#2903">2903</a>         f = createResult(FAILURE, <span class="jxr_string">"Descriptions don't match!"</span>);
<a class="jxr_linenumber" name="2904" href="#2904">2904</a>         addResult(results, assertEquals(expected.getDescription(), actual.getDescription(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2905" href="#2905">2905</a> 
<a class="jxr_linenumber" name="2906" href="#2906">2906</a>         f = createResult(FAILURE, <span class="jxr_string">"Controllable ACl flags don't match!"</span>);
<a class="jxr_linenumber" name="2907" href="#2907">2907</a>         addResult(results, assertEquals(expected.isControllableAcl(), actual.isControllableAcl(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2908" href="#2908">2908</a> 
<a class="jxr_linenumber" name="2909" href="#2909">2909</a>         f = createResult(FAILURE, <span class="jxr_string">"Controllable Policy flags don't match!"</span>);
<a class="jxr_linenumber" name="2910" href="#2910">2910</a>         addResult(results, assertEquals(expected.isControllablePolicy(), actual.isControllablePolicy(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2911" href="#2911">2911</a> 
<a class="jxr_linenumber" name="2912" href="#2912">2912</a>         f = createResult(FAILURE, <span class="jxr_string">"Creatable flags don't match!"</span>);
<a class="jxr_linenumber" name="2913" href="#2913">2913</a>         addResult(results, assertEquals(expected.isCreatable(), actual.isCreatable(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2914" href="#2914">2914</a> 
<a class="jxr_linenumber" name="2915" href="#2915">2915</a>         f = createResult(FAILURE, <span class="jxr_string">"Fileable flags don't match!"</span>);
<a class="jxr_linenumber" name="2916" href="#2916">2916</a>         addResult(results, assertEquals(expected.isFileable(), actual.isFileable(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2917" href="#2917">2917</a> 
<a class="jxr_linenumber" name="2918" href="#2918">2918</a>         f = createResult(FAILURE, <span class="jxr_string">"Fulltext indexed flags don't match!"</span>);
<a class="jxr_linenumber" name="2919" href="#2919">2919</a>         addResult(results, assertEquals(expected.isFulltextIndexed(), actual.isFulltextIndexed(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2920" href="#2920">2920</a> 
<a class="jxr_linenumber" name="2921" href="#2921">2921</a>         f = createResult(FAILURE, <span class="jxr_string">"Queryable flags don't match!"</span>);
<a class="jxr_linenumber" name="2922" href="#2922">2922</a>         addResult(results, assertEquals(expected.isQueryable(), actual.isQueryable(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2923" href="#2923">2923</a> 
<a class="jxr_linenumber" name="2924" href="#2924">2924</a>         f = createResult(FAILURE, <span class="jxr_string">"Included in supertype query flags don't match!"</span>);
<a class="jxr_linenumber" name="2925" href="#2925">2925</a>         addResult(results,
<a class="jxr_linenumber" name="2926" href="#2926">2926</a>                 assertEquals(expected.isIncludedInSupertypeQuery(), actual.isIncludedInSupertypeQuery(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2927" href="#2927">2927</a> 
<a class="jxr_linenumber" name="2928" href="#2928">2928</a>         <strong class="jxr_keyword">if</strong> (expected.getTypeMutability() != <strong class="jxr_keyword">null</strong> &amp;&amp; actual.getTypeMutability() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="2929" href="#2929">2929</a>             f = createResult(FAILURE, <span class="jxr_string">"Type Mutability: Create flags don't match!"</span>);
<a class="jxr_linenumber" name="2930" href="#2930">2930</a>             addResult(results, assertEquals(expected.getTypeMutability().canCreate(),
<a class="jxr_linenumber" name="2931" href="#2931">2931</a>                     actual.getTypeMutability().canCreate(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2932" href="#2932">2932</a> 
<a class="jxr_linenumber" name="2933" href="#2933">2933</a>             f = createResult(FAILURE, <span class="jxr_string">"Type Mutability: update flags don't match!"</span>);
<a class="jxr_linenumber" name="2934" href="#2934">2934</a>             addResult(results, assertEquals(expected.getTypeMutability().canUpdate(),
<a class="jxr_linenumber" name="2935" href="#2935">2935</a>                     actual.getTypeMutability().canUpdate(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2936" href="#2936">2936</a> 
<a class="jxr_linenumber" name="2937" href="#2937">2937</a>             f = createResult(FAILURE, <span class="jxr_string">"Type Mutability: delete flags don't match!"</span>);
<a class="jxr_linenumber" name="2938" href="#2938">2938</a>             addResult(results, assertEquals(expected.getTypeMutability().canDelete(),
<a class="jxr_linenumber" name="2939" href="#2939">2939</a>                     actual.getTypeMutability().canDelete(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2940" href="#2940">2940</a>         } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="2941" href="#2941">2941</a>             f = createResult(FAILURE, <span class="jxr_string">"Type Mutability infos don't match!"</span>);
<a class="jxr_linenumber" name="2942" href="#2942">2942</a>             addResult(results, assertEquals(expected.getTypeMutability(), actual.getTypeMutability(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2943" href="#2943">2943</a>         }
<a class="jxr_linenumber" name="2944" href="#2944">2944</a> 
<a class="jxr_linenumber" name="2945" href="#2945">2945</a>         <strong class="jxr_keyword">if</strong> ((expected.getPropertyDefinitions() != <strong class="jxr_keyword">null</strong>) &amp;&amp; (actual.getPropertyDefinitions() != <strong class="jxr_keyword">null</strong>)) {
<a class="jxr_linenumber" name="2946" href="#2946">2946</a>             Map&lt;String, PropertyDefinition&lt;?&gt;&gt; epd = expected.getPropertyDefinitions();
<a class="jxr_linenumber" name="2947" href="#2947">2947</a>             Map&lt;String, PropertyDefinition&lt;?&gt;&gt; apd = actual.getPropertyDefinitions();
<a class="jxr_linenumber" name="2948" href="#2948">2948</a> 
<a class="jxr_linenumber" name="2949" href="#2949">2949</a>             f = createResult(FAILURE, <span class="jxr_string">"Different number of property defintions!"</span>);
<a class="jxr_linenumber" name="2950" href="#2950">2950</a>             addResult(results, assertEquals(epd.size(), apd.size(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2951" href="#2951">2951</a> 
<a class="jxr_linenumber" name="2952" href="#2952">2952</a>             <strong class="jxr_keyword">for</strong> (PropertyDefinition&lt;?&gt; pd : epd.values()) {
<a class="jxr_linenumber" name="2953" href="#2953">2953</a>                 f = createResult(FAILURE, <span class="jxr_string">"Property definition mismatch: "</span> + pd.getId());
<a class="jxr_linenumber" name="2954" href="#2954">2954</a>                 addResult(results, assertEquals(pd, apd.get(pd.getId()), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="2955" href="#2955">2955</a>             }
<a class="jxr_linenumber" name="2956" href="#2956">2956</a>         }
<a class="jxr_linenumber" name="2957" href="#2957">2957</a> 
<a class="jxr_linenumber" name="2958" href="#2958">2958</a>         <strong class="jxr_keyword">if</strong> (getWorst(results).getLevel() &lt;= OK.getLevel()) {
<a class="jxr_linenumber" name="2959" href="#2959">2959</a>             <strong class="jxr_keyword">for</strong> (CmisTestResult result : results) {
<a class="jxr_linenumber" name="2960" href="#2960">2960</a>                 addResultChild(success, result);
<a class="jxr_linenumber" name="2961" href="#2961">2961</a>             }
<a class="jxr_linenumber" name="2962" href="#2962">2962</a> 
<a class="jxr_linenumber" name="2963" href="#2963">2963</a>             <strong class="jxr_keyword">return</strong> success;
<a class="jxr_linenumber" name="2964" href="#2964">2964</a>         } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="2965" href="#2965">2965</a>             <strong class="jxr_keyword">for</strong> (CmisTestResult result : results) {
<a class="jxr_linenumber" name="2966" href="#2966">2966</a>                 addResultChild(failure, result);
<a class="jxr_linenumber" name="2967" href="#2967">2967</a>             }
<a class="jxr_linenumber" name="2968" href="#2968">2968</a> 
<a class="jxr_linenumber" name="2969" href="#2969">2969</a>             <strong class="jxr_keyword">return</strong> failure;
<a class="jxr_linenumber" name="2970" href="#2970">2970</a>         }
<a class="jxr_linenumber" name="2971" href="#2971">2971</a>     }
<a class="jxr_linenumber" name="2972" href="#2972">2972</a> 
<a class="jxr_linenumber" name="2973" href="#2973">2973</a>     <strong class="jxr_keyword">protected</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> assertEquals(PropertyDefinition&lt;?&gt; expected, PropertyDefinition&lt;?&gt; actual,
<a class="jxr_linenumber" name="2974" href="#2974">2974</a>             <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> success, <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> failure) {
<a class="jxr_linenumber" name="2975" href="#2975">2975</a> 
<a class="jxr_linenumber" name="2976" href="#2976">2976</a>         List&lt;CmisTestResult&gt; results = <strong class="jxr_keyword">new</strong> ArrayList&lt;CmisTestResult&gt;();
<a class="jxr_linenumber" name="2977" href="#2977">2977</a> 
<a class="jxr_linenumber" name="2978" href="#2978">2978</a>         <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> f;
<a class="jxr_linenumber" name="2979" href="#2979">2979</a> 
<a class="jxr_linenumber" name="2980" href="#2980">2980</a>         <strong class="jxr_keyword">if</strong> ((expected == <strong class="jxr_keyword">null</strong>) &amp;&amp; (actual == <strong class="jxr_keyword">null</strong>)) {
<a class="jxr_linenumber" name="2981" href="#2981">2981</a>             <strong class="jxr_keyword">return</strong> success;
<a class="jxr_linenumber" name="2982" href="#2982">2982</a>         }
<a class="jxr_linenumber" name="2983" href="#2983">2983</a> 
<a class="jxr_linenumber" name="2984" href="#2984">2984</a>         <strong class="jxr_keyword">if</strong> (expected == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="2985" href="#2985">2985</a>             f = createResult(FAILURE, <span class="jxr_string">"Expected property defintion is null, but actual property defintion is not!"</span>);
<a class="jxr_linenumber" name="2986" href="#2986">2986</a>             addResultChild(failure, f);
<a class="jxr_linenumber" name="2987" href="#2987">2987</a> 
<a class="jxr_linenumber" name="2988" href="#2988">2988</a>             <strong class="jxr_keyword">return</strong> failure;
<a class="jxr_linenumber" name="2989" href="#2989">2989</a>         }
<a class="jxr_linenumber" name="2990" href="#2990">2990</a> 
<a class="jxr_linenumber" name="2991" href="#2991">2991</a>         <strong class="jxr_keyword">if</strong> (actual == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="2992" href="#2992">2992</a>             f = createResult(FAILURE, <span class="jxr_string">"Actual property defintion is null, but expected property defintion is not!"</span>);
<a class="jxr_linenumber" name="2993" href="#2993">2993</a>             addResultChild(failure, f);
<a class="jxr_linenumber" name="2994" href="#2994">2994</a> 
<a class="jxr_linenumber" name="2995" href="#2995">2995</a>             <strong class="jxr_keyword">return</strong> failure;
<a class="jxr_linenumber" name="2996" href="#2996">2996</a>         }
<a class="jxr_linenumber" name="2997" href="#2997">2997</a> 
<a class="jxr_linenumber" name="2998" href="#2998">2998</a>         f = createResult(FAILURE, <span class="jxr_string">"Property IDs don't match!"</span>);
<a class="jxr_linenumber" name="2999" href="#2999">2999</a>         addResult(results, assertEquals(expected.getId(), actual.getId(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="3000" href="#3000">3000</a> 
<a class="jxr_linenumber" name="3001" href="#3001">3001</a>         f = createResult(FAILURE, <span class="jxr_string">"Local names don't match!"</span>);
<a class="jxr_linenumber" name="3002" href="#3002">3002</a>         addResult(results, assertEquals(expected.getLocalName(), actual.getLocalName(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="3003" href="#3003">3003</a> 
<a class="jxr_linenumber" name="3004" href="#3004">3004</a>         f = createResult(FAILURE, <span class="jxr_string">"Local namespaces don't match!"</span>);
<a class="jxr_linenumber" name="3005" href="#3005">3005</a>         addResult(results, assertEquals(expected.getLocalNamespace(), actual.getLocalNamespace(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="3006" href="#3006">3006</a> 
<a class="jxr_linenumber" name="3007" href="#3007">3007</a>         f = createResult(FAILURE, <span class="jxr_string">"Display names don't match!"</span>);
<a class="jxr_linenumber" name="3008" href="#3008">3008</a>         addResult(results, assertEquals(expected.getDisplayName(), actual.getDisplayName(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="3009" href="#3009">3009</a> 
<a class="jxr_linenumber" name="3010" href="#3010">3010</a>         f = createResult(FAILURE, <span class="jxr_string">"Query names don't match!"</span>);
<a class="jxr_linenumber" name="3011" href="#3011">3011</a>         addResult(results, assertEquals(expected.getQueryName(), actual.getQueryName(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="3012" href="#3012">3012</a> 
<a class="jxr_linenumber" name="3013" href="#3013">3013</a>         f = createResult(FAILURE, <span class="jxr_string">"Property types don't match!"</span>);
<a class="jxr_linenumber" name="3014" href="#3014">3014</a>         addResult(results, assertEquals(expected.getPropertyType(), actual.getPropertyType(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="3015" href="#3015">3015</a> 
<a class="jxr_linenumber" name="3016" href="#3016">3016</a>         f = createResult(FAILURE, <span class="jxr_string">"Cardinalities don't match!"</span>);
<a class="jxr_linenumber" name="3017" href="#3017">3017</a>         addResult(results, assertEquals(expected.getCardinality(), actual.getCardinality(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="3018" href="#3018">3018</a> 
<a class="jxr_linenumber" name="3019" href="#3019">3019</a>         f = createResult(FAILURE, <span class="jxr_string">"Descriptions don't match!"</span>);
<a class="jxr_linenumber" name="3020" href="#3020">3020</a>         addResult(results, assertEquals(expected.getDescription(), actual.getDescription(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="3021" href="#3021">3021</a> 
<a class="jxr_linenumber" name="3022" href="#3022">3022</a>         f = createResult(FAILURE, <span class="jxr_string">"Updatability flags don't match!"</span>);
<a class="jxr_linenumber" name="3023" href="#3023">3023</a>         addResult(results, assertEquals(expected.getUpdatability(), actual.getUpdatability(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="3024" href="#3024">3024</a> 
<a class="jxr_linenumber" name="3025" href="#3025">3025</a>         f = createResult(FAILURE, <span class="jxr_string">"Default values don't match!"</span>);
<a class="jxr_linenumber" name="3026" href="#3026">3026</a>         addResult(results, assertEqualLists(expected.getDefaultValue(), actual.getDefaultValue(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="3027" href="#3027">3027</a> 
<a class="jxr_linenumber" name="3028" href="#3028">3028</a>         f = createResult(FAILURE, <span class="jxr_string">"Inherited flags don't match!"</span>);
<a class="jxr_linenumber" name="3029" href="#3029">3029</a>         addResult(results, assertEquals(expected.isInherited(), actual.isInherited(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="3030" href="#3030">3030</a> 
<a class="jxr_linenumber" name="3031" href="#3031">3031</a>         f = createResult(FAILURE, <span class="jxr_string">"Required flags don't match!"</span>);
<a class="jxr_linenumber" name="3032" href="#3032">3032</a>         addResult(results, assertEquals(expected.isRequired(), actual.isRequired(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="3033" href="#3033">3033</a> 
<a class="jxr_linenumber" name="3034" href="#3034">3034</a>         f = createResult(FAILURE, <span class="jxr_string">"Queryable flags don't match!"</span>);
<a class="jxr_linenumber" name="3035" href="#3035">3035</a>         addResult(results, assertEquals(expected.isQueryable(), actual.isQueryable(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="3036" href="#3036">3036</a> 
<a class="jxr_linenumber" name="3037" href="#3037">3037</a>         f = createResult(FAILURE, <span class="jxr_string">"Orderable flags don't match!"</span>);
<a class="jxr_linenumber" name="3038" href="#3038">3038</a>         addResult(results, assertEquals(expected.isOrderable(), actual.isOrderable(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="3039" href="#3039">3039</a> 
<a class="jxr_linenumber" name="3040" href="#3040">3040</a>         f = createResult(FAILURE, <span class="jxr_string">"Open choice flags don't match!"</span>);
<a class="jxr_linenumber" name="3041" href="#3041">3041</a>         addResult(results, assertEquals(expected.isOpenChoice(), actual.isOpenChoice(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="3042" href="#3042">3042</a> 
<a class="jxr_linenumber" name="3043" href="#3043">3043</a>         <strong class="jxr_keyword">if</strong> (getWorst(results).getLevel() &lt;= OK.getLevel()) {
<a class="jxr_linenumber" name="3044" href="#3044">3044</a>             <strong class="jxr_keyword">for</strong> (CmisTestResult result : results) {
<a class="jxr_linenumber" name="3045" href="#3045">3045</a>                 addResultChild(success, result);
<a class="jxr_linenumber" name="3046" href="#3046">3046</a>             }
<a class="jxr_linenumber" name="3047" href="#3047">3047</a> 
<a class="jxr_linenumber" name="3048" href="#3048">3048</a>             <strong class="jxr_keyword">return</strong> success;
<a class="jxr_linenumber" name="3049" href="#3049">3049</a>         } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="3050" href="#3050">3050</a>             <strong class="jxr_keyword">for</strong> (CmisTestResult result : results) {
<a class="jxr_linenumber" name="3051" href="#3051">3051</a>                 addResultChild(failure, result);
<a class="jxr_linenumber" name="3052" href="#3052">3052</a>             }
<a class="jxr_linenumber" name="3053" href="#3053">3053</a> 
<a class="jxr_linenumber" name="3054" href="#3054">3054</a>             <strong class="jxr_keyword">return</strong> failure;
<a class="jxr_linenumber" name="3055" href="#3055">3055</a>         }
<a class="jxr_linenumber" name="3056" href="#3056">3056</a>     }
<a class="jxr_linenumber" name="3057" href="#3057">3057</a> 
<a class="jxr_linenumber" name="3058" href="#3058">3058</a>     <strong class="jxr_keyword">protected</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> assertEquals(CmisObject expected, CmisObject actual, <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> success,
<a class="jxr_linenumber" name="3059" href="#3059">3059</a>             <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> failure, <strong class="jxr_keyword">boolean</strong> checkAcls, <strong class="jxr_keyword">boolean</strong> checkPolicies) {
<a class="jxr_linenumber" name="3060" href="#3060">3060</a> 
<a class="jxr_linenumber" name="3061" href="#3061">3061</a>         List&lt;CmisTestResult&gt; results = <strong class="jxr_keyword">new</strong> ArrayList&lt;CmisTestResult&gt;();
<a class="jxr_linenumber" name="3062" href="#3062">3062</a> 
<a class="jxr_linenumber" name="3063" href="#3063">3063</a>         <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> f;
<a class="jxr_linenumber" name="3064" href="#3064">3064</a> 
<a class="jxr_linenumber" name="3065" href="#3065">3065</a>         <strong class="jxr_keyword">if</strong> ((expected == <strong class="jxr_keyword">null</strong>) &amp;&amp; (actual == <strong class="jxr_keyword">null</strong>)) {
<a class="jxr_linenumber" name="3066" href="#3066">3066</a>             <strong class="jxr_keyword">return</strong> success;
<a class="jxr_linenumber" name="3067" href="#3067">3067</a>         }
<a class="jxr_linenumber" name="3068" href="#3068">3068</a> 
<a class="jxr_linenumber" name="3069" href="#3069">3069</a>         <strong class="jxr_keyword">if</strong> (expected == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="3070" href="#3070">3070</a>             f = createResult(FAILURE, <span class="jxr_string">"Expected object is null, but actual object is not!"</span>);
<a class="jxr_linenumber" name="3071" href="#3071">3071</a>             addResultChild(failure, f);
<a class="jxr_linenumber" name="3072" href="#3072">3072</a> 
<a class="jxr_linenumber" name="3073" href="#3073">3073</a>             <strong class="jxr_keyword">return</strong> failure;
<a class="jxr_linenumber" name="3074" href="#3074">3074</a>         }
<a class="jxr_linenumber" name="3075" href="#3075">3075</a> 
<a class="jxr_linenumber" name="3076" href="#3076">3076</a>         <strong class="jxr_keyword">if</strong> (actual == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="3077" href="#3077">3077</a>             f = createResult(FAILURE, <span class="jxr_string">"Actual object is null, but expected object is not!"</span>);
<a class="jxr_linenumber" name="3078" href="#3078">3078</a>             addResultChild(failure, f);
<a class="jxr_linenumber" name="3079" href="#3079">3079</a> 
<a class="jxr_linenumber" name="3080" href="#3080">3080</a>             <strong class="jxr_keyword">return</strong> failure;
<a class="jxr_linenumber" name="3081" href="#3081">3081</a>         }
<a class="jxr_linenumber" name="3082" href="#3082">3082</a> 
<a class="jxr_linenumber" name="3083" href="#3083">3083</a>         <strong class="jxr_keyword">if</strong> (expected.getProperties().size() != actual.getProperties().size()) {
<a class="jxr_linenumber" name="3084" href="#3084">3084</a>             f = createResult(FAILURE, <span class="jxr_string">"Number of properties don't match"</span>);
<a class="jxr_linenumber" name="3085" href="#3085">3085</a>             addResult(results, assertEquals(expected.getProperties().size(), actual.getProperties().size(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="3086" href="#3086">3086</a>         } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="3087" href="#3087">3087</a>             <strong class="jxr_keyword">for</strong> (Property&lt;?&gt; expectedProperty : expected.getProperties()) {
<a class="jxr_linenumber" name="3088" href="#3088">3088</a>                 Property&lt;?&gt; actualProperty = actual.getProperty(expectedProperty.getId());
<a class="jxr_linenumber" name="3089" href="#3089">3089</a> 
<a class="jxr_linenumber" name="3090" href="#3090">3090</a>                 f = createResult(FAILURE, <span class="jxr_string">"Properties don't match! Property: "</span> + expectedProperty.getId());
<a class="jxr_linenumber" name="3091" href="#3091">3091</a>                 addResult(results, assertEquals(expectedProperty, actualProperty, <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="3092" href="#3092">3092</a>             }
<a class="jxr_linenumber" name="3093" href="#3093">3093</a>         }
<a class="jxr_linenumber" name="3094" href="#3094">3094</a> 
<a class="jxr_linenumber" name="3095" href="#3095">3095</a>         f = createResult(FAILURE, <span class="jxr_string">"Allowable actions don't match!"</span>);
<a class="jxr_linenumber" name="3096" href="#3096">3096</a>         addResult(results, assertEquals(expected.getAllowableActions(), actual.getAllowableActions(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="3097" href="#3097">3097</a> 
<a class="jxr_linenumber" name="3098" href="#3098">3098</a>         <strong class="jxr_keyword">if</strong> (checkAcls) {
<a class="jxr_linenumber" name="3099" href="#3099">3099</a>             f = createResult(FAILURE, <span class="jxr_string">"ACLs don't match!"</span>);
<a class="jxr_linenumber" name="3100" href="#3100">3100</a>             addResult(results, assertEquals(expected.getAcl(), actual.getAcl(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="3101" href="#3101">3101</a>         }
<a class="jxr_linenumber" name="3102" href="#3102">3102</a> 
<a class="jxr_linenumber" name="3103" href="#3103">3103</a>         <strong class="jxr_keyword">if</strong> (checkPolicies) {
<a class="jxr_linenumber" name="3104" href="#3104">3104</a>             f = createResult(FAILURE, <span class="jxr_string">"Policies don't match!"</span>);
<a class="jxr_linenumber" name="3105" href="#3105">3105</a>             addResult(results, assertEqualObjectList(expected.getPolicies(), actual.getPolicies(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="3106" href="#3106">3106</a>         }
<a class="jxr_linenumber" name="3107" href="#3107">3107</a> 
<a class="jxr_linenumber" name="3108" href="#3108">3108</a>         f = createResult(FAILURE, <span class="jxr_string">"Relationships don't match!"</span>);
<a class="jxr_linenumber" name="3109" href="#3109">3109</a>         addResult(results, assertEqualObjectList(expected.getRelationships(), actual.getRelationships(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="3110" href="#3110">3110</a> 
<a class="jxr_linenumber" name="3111" href="#3111">3111</a>         f = createResult(FAILURE, <span class="jxr_string">"Renditions don't match!"</span>);
<a class="jxr_linenumber" name="3112" href="#3112">3112</a>         addResult(results, assertEqualRenditionLists(expected.getRenditions(), actual.getRenditions(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="3113" href="#3113">3113</a> 
<a class="jxr_linenumber" name="3114" href="#3114">3114</a>         <strong class="jxr_keyword">if</strong> (getWorst(results).getLevel() &lt;= OK.getLevel()) {
<a class="jxr_linenumber" name="3115" href="#3115">3115</a>             <strong class="jxr_keyword">for</strong> (CmisTestResult result : results) {
<a class="jxr_linenumber" name="3116" href="#3116">3116</a>                 addResultChild(success, result);
<a class="jxr_linenumber" name="3117" href="#3117">3117</a>             }
<a class="jxr_linenumber" name="3118" href="#3118">3118</a> 
<a class="jxr_linenumber" name="3119" href="#3119">3119</a>             <strong class="jxr_keyword">return</strong> success;
<a class="jxr_linenumber" name="3120" href="#3120">3120</a>         } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="3121" href="#3121">3121</a>             <strong class="jxr_keyword">for</strong> (CmisTestResult result : results) {
<a class="jxr_linenumber" name="3122" href="#3122">3122</a>                 addResultChild(failure, result);
<a class="jxr_linenumber" name="3123" href="#3123">3123</a>             }
<a class="jxr_linenumber" name="3124" href="#3124">3124</a> 
<a class="jxr_linenumber" name="3125" href="#3125">3125</a>             <strong class="jxr_keyword">return</strong> failure;
<a class="jxr_linenumber" name="3126" href="#3126">3126</a>         }
<a class="jxr_linenumber" name="3127" href="#3127">3127</a>     }
<a class="jxr_linenumber" name="3128" href="#3128">3128</a> 
<a class="jxr_linenumber" name="3129" href="#3129">3129</a>     <strong class="jxr_keyword">protected</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> assertEqualObjectList(List&lt;? <strong class="jxr_keyword">extends</strong> CmisObject&gt; expected,
<a class="jxr_linenumber" name="3130" href="#3130">3130</a>             List&lt;? <strong class="jxr_keyword">extends</strong> CmisObject&gt; actual, <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> success, <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> failure) {
<a class="jxr_linenumber" name="3131" href="#3131">3131</a> 
<a class="jxr_linenumber" name="3132" href="#3132">3132</a>         List&lt;CmisTestResult&gt; results = <strong class="jxr_keyword">new</strong> ArrayList&lt;CmisTestResult&gt;();
<a class="jxr_linenumber" name="3133" href="#3133">3133</a> 
<a class="jxr_linenumber" name="3134" href="#3134">3134</a>         <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> f;
<a class="jxr_linenumber" name="3135" href="#3135">3135</a> 
<a class="jxr_linenumber" name="3136" href="#3136">3136</a>         <strong class="jxr_keyword">if</strong> ((expected == <strong class="jxr_keyword">null</strong>) &amp;&amp; (actual == <strong class="jxr_keyword">null</strong>)) {
<a class="jxr_linenumber" name="3137" href="#3137">3137</a>             <strong class="jxr_keyword">return</strong> success;
<a class="jxr_linenumber" name="3138" href="#3138">3138</a>         }
<a class="jxr_linenumber" name="3139" href="#3139">3139</a> 
<a class="jxr_linenumber" name="3140" href="#3140">3140</a>         <strong class="jxr_keyword">if</strong> (expected == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="3141" href="#3141">3141</a>             f = createResult(FAILURE, <span class="jxr_string">"Expected list of CMIS objects is null, but actual list of CMIS objects is not!"</span>);
<a class="jxr_linenumber" name="3142" href="#3142">3142</a>             addResultChild(failure, f);
<a class="jxr_linenumber" name="3143" href="#3143">3143</a> 
<a class="jxr_linenumber" name="3144" href="#3144">3144</a>             <strong class="jxr_keyword">return</strong> failure;
<a class="jxr_linenumber" name="3145" href="#3145">3145</a>         }
<a class="jxr_linenumber" name="3146" href="#3146">3146</a> 
<a class="jxr_linenumber" name="3147" href="#3147">3147</a>         <strong class="jxr_keyword">if</strong> (actual == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="3148" href="#3148">3148</a>             f = createResult(FAILURE, <span class="jxr_string">"Actual list of CMIS objects is null, but expected list of CMIS objects is not!"</span>);
<a class="jxr_linenumber" name="3149" href="#3149">3149</a>             addResultChild(failure, f);
<a class="jxr_linenumber" name="3150" href="#3150">3150</a> 
<a class="jxr_linenumber" name="3151" href="#3151">3151</a>             <strong class="jxr_keyword">return</strong> failure;
<a class="jxr_linenumber" name="3152" href="#3152">3152</a>         }
<a class="jxr_linenumber" name="3153" href="#3153">3153</a> 
<a class="jxr_linenumber" name="3154" href="#3154">3154</a>         <strong class="jxr_keyword">if</strong> (expected.size() != actual.size()) {
<a class="jxr_linenumber" name="3155" href="#3155">3155</a>             addResult(results, createResult(CmisTestResultStatus.INFO,
<a class="jxr_linenumber" name="3156" href="#3156">3156</a>                     <span class="jxr_string">"Object list sizes don't match! expected: "</span> + expected.size() + <span class="jxr_string">" / actual: "</span> + actual.size()));
<a class="jxr_linenumber" name="3157" href="#3157">3157</a>         } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="3158" href="#3158">3158</a>             <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; expected.size(); i++) {
<a class="jxr_linenumber" name="3159" href="#3159">3159</a>                 f = createResult(FAILURE, <span class="jxr_string">"Objects at position "</span> + i + <span class="jxr_string">"  dont't match!"</span>);
<a class="jxr_linenumber" name="3160" href="#3160">3160</a>                 addResult(results, assertEquals(expected.get(i), actual.get(i), <strong class="jxr_keyword">null</strong>, f, <strong class="jxr_keyword">true</strong>, false));
<a class="jxr_linenumber" name="3161" href="#3161">3161</a>             }
<a class="jxr_linenumber" name="3162" href="#3162">3162</a>         }
<a class="jxr_linenumber" name="3163" href="#3163">3163</a> 
<a class="jxr_linenumber" name="3164" href="#3164">3164</a>         <strong class="jxr_keyword">if</strong> (getWorst(results).getLevel() &lt;= OK.getLevel()) {
<a class="jxr_linenumber" name="3165" href="#3165">3165</a>             <strong class="jxr_keyword">for</strong> (CmisTestResult result : results) {
<a class="jxr_linenumber" name="3166" href="#3166">3166</a>                 addResultChild(success, result);
<a class="jxr_linenumber" name="3167" href="#3167">3167</a>             }
<a class="jxr_linenumber" name="3168" href="#3168">3168</a> 
<a class="jxr_linenumber" name="3169" href="#3169">3169</a>             <strong class="jxr_keyword">return</strong> success;
<a class="jxr_linenumber" name="3170" href="#3170">3170</a>         } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="3171" href="#3171">3171</a>             <strong class="jxr_keyword">for</strong> (CmisTestResult result : results) {
<a class="jxr_linenumber" name="3172" href="#3172">3172</a>                 addResultChild(failure, result);
<a class="jxr_linenumber" name="3173" href="#3173">3173</a>             }
<a class="jxr_linenumber" name="3174" href="#3174">3174</a> 
<a class="jxr_linenumber" name="3175" href="#3175">3175</a>             <strong class="jxr_keyword">return</strong> failure;
<a class="jxr_linenumber" name="3176" href="#3176">3176</a>         }
<a class="jxr_linenumber" name="3177" href="#3177">3177</a>     }
<a class="jxr_linenumber" name="3178" href="#3178">3178</a> 
<a class="jxr_linenumber" name="3179" href="#3179">3179</a>     <strong class="jxr_keyword">protected</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> assertEquals(Property&lt;?&gt; expected, Property&lt;?&gt; actual, <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> success,
<a class="jxr_linenumber" name="3180" href="#3180">3180</a>             <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> failure) {
<a class="jxr_linenumber" name="3181" href="#3181">3181</a> 
<a class="jxr_linenumber" name="3182" href="#3182">3182</a>         List&lt;CmisTestResult&gt; results = <strong class="jxr_keyword">new</strong> ArrayList&lt;CmisTestResult&gt;();
<a class="jxr_linenumber" name="3183" href="#3183">3183</a> 
<a class="jxr_linenumber" name="3184" href="#3184">3184</a>         <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> f;
<a class="jxr_linenumber" name="3185" href="#3185">3185</a> 
<a class="jxr_linenumber" name="3186" href="#3186">3186</a>         <strong class="jxr_keyword">if</strong> ((expected == <strong class="jxr_keyword">null</strong>) &amp;&amp; (actual == <strong class="jxr_keyword">null</strong>)) {
<a class="jxr_linenumber" name="3187" href="#3187">3187</a>             <strong class="jxr_keyword">return</strong> success;
<a class="jxr_linenumber" name="3188" href="#3188">3188</a>         }
<a class="jxr_linenumber" name="3189" href="#3189">3189</a> 
<a class="jxr_linenumber" name="3190" href="#3190">3190</a>         <strong class="jxr_keyword">if</strong> (expected == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="3191" href="#3191">3191</a>             f = createResult(FAILURE, <span class="jxr_string">"Expected property is null, but actual property is not!"</span>);
<a class="jxr_linenumber" name="3192" href="#3192">3192</a>             addResultChild(failure, f);
<a class="jxr_linenumber" name="3193" href="#3193">3193</a> 
<a class="jxr_linenumber" name="3194" href="#3194">3194</a>             <strong class="jxr_keyword">return</strong> failure;
<a class="jxr_linenumber" name="3195" href="#3195">3195</a>         }
<a class="jxr_linenumber" name="3196" href="#3196">3196</a> 
<a class="jxr_linenumber" name="3197" href="#3197">3197</a>         <strong class="jxr_keyword">if</strong> (actual == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="3198" href="#3198">3198</a>             f = createResult(FAILURE, <span class="jxr_string">"Actual property is null, but expected property is not!"</span>);
<a class="jxr_linenumber" name="3199" href="#3199">3199</a>             addResultChild(failure, f);
<a class="jxr_linenumber" name="3200" href="#3200">3200</a> 
<a class="jxr_linenumber" name="3201" href="#3201">3201</a>             <strong class="jxr_keyword">return</strong> failure;
<a class="jxr_linenumber" name="3202" href="#3202">3202</a>         }
<a class="jxr_linenumber" name="3203" href="#3203">3203</a> 
<a class="jxr_linenumber" name="3204" href="#3204">3204</a>         f = createResult(FAILURE, <span class="jxr_string">"Property definitions don't match!"</span>);
<a class="jxr_linenumber" name="3205" href="#3205">3205</a>         addResult(results, assertEquals(expected.getDefinition(), actual.getDefinition(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="3206" href="#3206">3206</a> 
<a class="jxr_linenumber" name="3207" href="#3207">3207</a>         f = createResult(FAILURE, <span class="jxr_string">"Property values don't match!"</span>);
<a class="jxr_linenumber" name="3208" href="#3208">3208</a>         addResult(results, assertEqualLists(expected.getValues(), actual.getValues(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="3209" href="#3209">3209</a> 
<a class="jxr_linenumber" name="3210" href="#3210">3210</a>         <strong class="jxr_keyword">if</strong> (getWorst(results).getLevel() &lt;= OK.getLevel()) {
<a class="jxr_linenumber" name="3211" href="#3211">3211</a>             <strong class="jxr_keyword">for</strong> (CmisTestResult result : results) {
<a class="jxr_linenumber" name="3212" href="#3212">3212</a>                 addResultChild(success, result);
<a class="jxr_linenumber" name="3213" href="#3213">3213</a>             }
<a class="jxr_linenumber" name="3214" href="#3214">3214</a> 
<a class="jxr_linenumber" name="3215" href="#3215">3215</a>             <strong class="jxr_keyword">return</strong> success;
<a class="jxr_linenumber" name="3216" href="#3216">3216</a>         } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="3217" href="#3217">3217</a>             <strong class="jxr_keyword">for</strong> (CmisTestResult result : results) {
<a class="jxr_linenumber" name="3218" href="#3218">3218</a>                 addResultChild(failure, result);
<a class="jxr_linenumber" name="3219" href="#3219">3219</a>             }
<a class="jxr_linenumber" name="3220" href="#3220">3220</a> 
<a class="jxr_linenumber" name="3221" href="#3221">3221</a>             <strong class="jxr_keyword">return</strong> failure;
<a class="jxr_linenumber" name="3222" href="#3222">3222</a>         }
<a class="jxr_linenumber" name="3223" href="#3223">3223</a>     }
<a class="jxr_linenumber" name="3224" href="#3224">3224</a> 
<a class="jxr_linenumber" name="3225" href="#3225">3225</a>     <strong class="jxr_keyword">protected</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> assertEquals(AllowableActions expected, AllowableActions actual, <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> success,
<a class="jxr_linenumber" name="3226" href="#3226">3226</a>             <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> failure) {
<a class="jxr_linenumber" name="3227" href="#3227">3227</a> 
<a class="jxr_linenumber" name="3228" href="#3228">3228</a>         List&lt;CmisTestResult&gt; results = <strong class="jxr_keyword">new</strong> ArrayList&lt;CmisTestResult&gt;();
<a class="jxr_linenumber" name="3229" href="#3229">3229</a> 
<a class="jxr_linenumber" name="3230" href="#3230">3230</a>         <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> f;
<a class="jxr_linenumber" name="3231" href="#3231">3231</a> 
<a class="jxr_linenumber" name="3232" href="#3232">3232</a>         <strong class="jxr_keyword">if</strong> ((expected == <strong class="jxr_keyword">null</strong>) &amp;&amp; (actual == <strong class="jxr_keyword">null</strong>)) {
<a class="jxr_linenumber" name="3233" href="#3233">3233</a>             <strong class="jxr_keyword">return</strong> success;
<a class="jxr_linenumber" name="3234" href="#3234">3234</a>         }
<a class="jxr_linenumber" name="3235" href="#3235">3235</a> 
<a class="jxr_linenumber" name="3236" href="#3236">3236</a>         <strong class="jxr_keyword">if</strong> (expected == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="3237" href="#3237">3237</a>             f = createResult(FAILURE, <span class="jxr_string">"Expected allowable actions are null, but actual allowable actions are not!"</span>);
<a class="jxr_linenumber" name="3238" href="#3238">3238</a>             addResultChild(failure, f);
<a class="jxr_linenumber" name="3239" href="#3239">3239</a> 
<a class="jxr_linenumber" name="3240" href="#3240">3240</a>             <strong class="jxr_keyword">return</strong> failure;
<a class="jxr_linenumber" name="3241" href="#3241">3241</a>         }
<a class="jxr_linenumber" name="3242" href="#3242">3242</a> 
<a class="jxr_linenumber" name="3243" href="#3243">3243</a>         <strong class="jxr_keyword">if</strong> (actual == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="3244" href="#3244">3244</a>             f = createResult(FAILURE, <span class="jxr_string">"Actual allowable actions are null, but expected allowable actions are not!"</span>);
<a class="jxr_linenumber" name="3245" href="#3245">3245</a>             addResultChild(failure, f);
<a class="jxr_linenumber" name="3246" href="#3246">3246</a> 
<a class="jxr_linenumber" name="3247" href="#3247">3247</a>             <strong class="jxr_keyword">return</strong> failure;
<a class="jxr_linenumber" name="3248" href="#3248">3248</a>         }
<a class="jxr_linenumber" name="3249" href="#3249">3249</a> 
<a class="jxr_linenumber" name="3250" href="#3250">3250</a>         f = createResult(FAILURE, <span class="jxr_string">"Allowable action sets don't match!"</span>);
<a class="jxr_linenumber" name="3251" href="#3251">3251</a>         addResult(results, assertEqualSet(expected.getAllowableActions(), actual.getAllowableActions(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="3252" href="#3252">3252</a> 
<a class="jxr_linenumber" name="3253" href="#3253">3253</a>         <strong class="jxr_keyword">if</strong> (getWorst(results).getLevel() &lt;= OK.getLevel()) {
<a class="jxr_linenumber" name="3254" href="#3254">3254</a>             <strong class="jxr_keyword">for</strong> (CmisTestResult result : results) {
<a class="jxr_linenumber" name="3255" href="#3255">3255</a>                 addResultChild(success, result);
<a class="jxr_linenumber" name="3256" href="#3256">3256</a>             }
<a class="jxr_linenumber" name="3257" href="#3257">3257</a> 
<a class="jxr_linenumber" name="3258" href="#3258">3258</a>             <strong class="jxr_keyword">return</strong> success;
<a class="jxr_linenumber" name="3259" href="#3259">3259</a>         } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="3260" href="#3260">3260</a>             <strong class="jxr_keyword">for</strong> (CmisTestResult result : results) {
<a class="jxr_linenumber" name="3261" href="#3261">3261</a>                 addResultChild(failure, result);
<a class="jxr_linenumber" name="3262" href="#3262">3262</a>             }
<a class="jxr_linenumber" name="3263" href="#3263">3263</a> 
<a class="jxr_linenumber" name="3264" href="#3264">3264</a>             <strong class="jxr_keyword">return</strong> failure;
<a class="jxr_linenumber" name="3265" href="#3265">3265</a>         }
<a class="jxr_linenumber" name="3266" href="#3266">3266</a>     }
<a class="jxr_linenumber" name="3267" href="#3267">3267</a> 
<a class="jxr_linenumber" name="3268" href="#3268">3268</a>     <strong class="jxr_keyword">protected</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> assertEquals(Acl expected, Acl actual, <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> success, <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> failure) {
<a class="jxr_linenumber" name="3269" href="#3269">3269</a> 
<a class="jxr_linenumber" name="3270" href="#3270">3270</a>         List&lt;CmisTestResult&gt; results = <strong class="jxr_keyword">new</strong> ArrayList&lt;CmisTestResult&gt;();
<a class="jxr_linenumber" name="3271" href="#3271">3271</a> 
<a class="jxr_linenumber" name="3272" href="#3272">3272</a>         <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> f;
<a class="jxr_linenumber" name="3273" href="#3273">3273</a> 
<a class="jxr_linenumber" name="3274" href="#3274">3274</a>         <strong class="jxr_keyword">if</strong> ((expected == <strong class="jxr_keyword">null</strong>) &amp;&amp; (actual == <strong class="jxr_keyword">null</strong>)) {
<a class="jxr_linenumber" name="3275" href="#3275">3275</a>             <strong class="jxr_keyword">return</strong> success;
<a class="jxr_linenumber" name="3276" href="#3276">3276</a>         }
<a class="jxr_linenumber" name="3277" href="#3277">3277</a> 
<a class="jxr_linenumber" name="3278" href="#3278">3278</a>         <strong class="jxr_keyword">if</strong> (expected == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="3279" href="#3279">3279</a>             f = createResult(FAILURE, <span class="jxr_string">"Expected ACL is null, but actual ACL is not!"</span>);
<a class="jxr_linenumber" name="3280" href="#3280">3280</a>             addResultChild(failure, f);
<a class="jxr_linenumber" name="3281" href="#3281">3281</a> 
<a class="jxr_linenumber" name="3282" href="#3282">3282</a>             <strong class="jxr_keyword">return</strong> failure;
<a class="jxr_linenumber" name="3283" href="#3283">3283</a>         }
<a class="jxr_linenumber" name="3284" href="#3284">3284</a> 
<a class="jxr_linenumber" name="3285" href="#3285">3285</a>         <strong class="jxr_keyword">if</strong> (actual == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="3286" href="#3286">3286</a>             f = createResult(FAILURE, <span class="jxr_string">"Actual ACL is null, but expected ACL is not!"</span>);
<a class="jxr_linenumber" name="3287" href="#3287">3287</a>             addResultChild(failure, f);
<a class="jxr_linenumber" name="3288" href="#3288">3288</a> 
<a class="jxr_linenumber" name="3289" href="#3289">3289</a>             <strong class="jxr_keyword">return</strong> failure;
<a class="jxr_linenumber" name="3290" href="#3290">3290</a>         }
<a class="jxr_linenumber" name="3291" href="#3291">3291</a> 
<a class="jxr_linenumber" name="3292" href="#3292">3292</a>         f = createResult(FAILURE, <span class="jxr_string">"ACEs don't match!"</span>);
<a class="jxr_linenumber" name="3293" href="#3293">3293</a>         addResult(results, assertEqualAceLists(expected.getAces(), actual.getAces(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="3294" href="#3294">3294</a> 
<a class="jxr_linenumber" name="3295" href="#3295">3295</a>         f = createResult(FAILURE, <span class="jxr_string">"Exact flags dont't match!"</span>);
<a class="jxr_linenumber" name="3296" href="#3296">3296</a>         addResult(results, assertEquals(expected.isExact(), actual.isExact(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="3297" href="#3297">3297</a> 
<a class="jxr_linenumber" name="3298" href="#3298">3298</a>         <strong class="jxr_keyword">if</strong> (getWorst(results).getLevel() &lt;= OK.getLevel()) {
<a class="jxr_linenumber" name="3299" href="#3299">3299</a>             <strong class="jxr_keyword">for</strong> (CmisTestResult result : results) {
<a class="jxr_linenumber" name="3300" href="#3300">3300</a>                 addResultChild(success, result);
<a class="jxr_linenumber" name="3301" href="#3301">3301</a>             }
<a class="jxr_linenumber" name="3302" href="#3302">3302</a> 
<a class="jxr_linenumber" name="3303" href="#3303">3303</a>             <strong class="jxr_keyword">return</strong> success;
<a class="jxr_linenumber" name="3304" href="#3304">3304</a>         } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="3305" href="#3305">3305</a>             <strong class="jxr_keyword">for</strong> (CmisTestResult result : results) {
<a class="jxr_linenumber" name="3306" href="#3306">3306</a>                 addResultChild(failure, result);
<a class="jxr_linenumber" name="3307" href="#3307">3307</a>             }
<a class="jxr_linenumber" name="3308" href="#3308">3308</a> 
<a class="jxr_linenumber" name="3309" href="#3309">3309</a>             <strong class="jxr_keyword">return</strong> failure;
<a class="jxr_linenumber" name="3310" href="#3310">3310</a>         }
<a class="jxr_linenumber" name="3311" href="#3311">3311</a>     }
<a class="jxr_linenumber" name="3312" href="#3312">3312</a> 
<a class="jxr_linenumber" name="3313" href="#3313">3313</a>     <strong class="jxr_keyword">protected</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> assertEqualAceLists(List&lt;Ace&gt; expected, List&lt;Ace&gt; actual, <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> success,
<a class="jxr_linenumber" name="3314" href="#3314">3314</a>             <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> failure) {
<a class="jxr_linenumber" name="3315" href="#3315">3315</a> 
<a class="jxr_linenumber" name="3316" href="#3316">3316</a>         List&lt;CmisTestResult&gt; results = <strong class="jxr_keyword">new</strong> ArrayList&lt;CmisTestResult&gt;();
<a class="jxr_linenumber" name="3317" href="#3317">3317</a> 
<a class="jxr_linenumber" name="3318" href="#3318">3318</a>         <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> f;
<a class="jxr_linenumber" name="3319" href="#3319">3319</a> 
<a class="jxr_linenumber" name="3320" href="#3320">3320</a>         <strong class="jxr_keyword">if</strong> (expected == <strong class="jxr_keyword">null</strong> &amp;&amp; actual == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="3321" href="#3321">3321</a>             <strong class="jxr_keyword">return</strong> success;
<a class="jxr_linenumber" name="3322" href="#3322">3322</a>         }
<a class="jxr_linenumber" name="3323" href="#3323">3323</a> 
<a class="jxr_linenumber" name="3324" href="#3324">3324</a>         <strong class="jxr_keyword">if</strong> (expected == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="3325" href="#3325">3325</a>             <strong class="jxr_keyword">return</strong> addResultChild(failure, createResult(CmisTestResultStatus.INFO, <span class="jxr_string">"Expected ACE list is null!"</span>));
<a class="jxr_linenumber" name="3326" href="#3326">3326</a>         }
<a class="jxr_linenumber" name="3327" href="#3327">3327</a> 
<a class="jxr_linenumber" name="3328" href="#3328">3328</a>         <strong class="jxr_keyword">if</strong> (actual == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="3329" href="#3329">3329</a>             <strong class="jxr_keyword">return</strong> addResultChild(failure, createResult(CmisTestResultStatus.INFO, <span class="jxr_string">"Actual ACE list is null!"</span>));
<a class="jxr_linenumber" name="3330" href="#3330">3330</a>         }
<a class="jxr_linenumber" name="3331" href="#3331">3331</a> 
<a class="jxr_linenumber" name="3332" href="#3332">3332</a>         <strong class="jxr_keyword">if</strong> (expected.size() != actual.size()) {
<a class="jxr_linenumber" name="3333" href="#3333">3333</a>             addResult(results, createResult(CmisTestResultStatus.INFO,
<a class="jxr_linenumber" name="3334" href="#3334">3334</a>                     <span class="jxr_string">"ACE list sizes don't match! expected: "</span> + expected.size() + <span class="jxr_string">" / actual: "</span> + actual.size()));
<a class="jxr_linenumber" name="3335" href="#3335">3335</a>         } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="3336" href="#3336">3336</a>             <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; expected.size(); i++) {
<a class="jxr_linenumber" name="3337" href="#3337">3337</a>                 f = createResult(FAILURE, <span class="jxr_string">"ACEs at position "</span> + i + <span class="jxr_string">"  dont't match!"</span>);
<a class="jxr_linenumber" name="3338" href="#3338">3338</a>                 addResult(results, assertEquals(expected.get(i), actual.get(i), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="3339" href="#3339">3339</a>             }
<a class="jxr_linenumber" name="3340" href="#3340">3340</a>         }
<a class="jxr_linenumber" name="3341" href="#3341">3341</a> 
<a class="jxr_linenumber" name="3342" href="#3342">3342</a>         <strong class="jxr_keyword">if</strong> (getWorst(results).getLevel() &lt;= OK.getLevel()) {
<a class="jxr_linenumber" name="3343" href="#3343">3343</a>             <strong class="jxr_keyword">for</strong> (CmisTestResult result : results) {
<a class="jxr_linenumber" name="3344" href="#3344">3344</a>                 addResultChild(success, result);
<a class="jxr_linenumber" name="3345" href="#3345">3345</a>             }
<a class="jxr_linenumber" name="3346" href="#3346">3346</a> 
<a class="jxr_linenumber" name="3347" href="#3347">3347</a>             <strong class="jxr_keyword">return</strong> success;
<a class="jxr_linenumber" name="3348" href="#3348">3348</a>         } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="3349" href="#3349">3349</a>             <strong class="jxr_keyword">for</strong> (CmisTestResult result : results) {
<a class="jxr_linenumber" name="3350" href="#3350">3350</a>                 addResultChild(failure, result);
<a class="jxr_linenumber" name="3351" href="#3351">3351</a>             }
<a class="jxr_linenumber" name="3352" href="#3352">3352</a> 
<a class="jxr_linenumber" name="3353" href="#3353">3353</a>             <strong class="jxr_keyword">return</strong> failure;
<a class="jxr_linenumber" name="3354" href="#3354">3354</a>         }
<a class="jxr_linenumber" name="3355" href="#3355">3355</a>     }
<a class="jxr_linenumber" name="3356" href="#3356">3356</a> 
<a class="jxr_linenumber" name="3357" href="#3357">3357</a>     <strong class="jxr_keyword">protected</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> assertEquals(Ace expected, Ace actual, <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> success, <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> failure) {
<a class="jxr_linenumber" name="3358" href="#3358">3358</a> 
<a class="jxr_linenumber" name="3359" href="#3359">3359</a>         List&lt;CmisTestResult&gt; results = <strong class="jxr_keyword">new</strong> ArrayList&lt;CmisTestResult&gt;();
<a class="jxr_linenumber" name="3360" href="#3360">3360</a> 
<a class="jxr_linenumber" name="3361" href="#3361">3361</a>         <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> f;
<a class="jxr_linenumber" name="3362" href="#3362">3362</a> 
<a class="jxr_linenumber" name="3363" href="#3363">3363</a>         <strong class="jxr_keyword">if</strong> ((expected == <strong class="jxr_keyword">null</strong>) &amp;&amp; (actual == <strong class="jxr_keyword">null</strong>)) {
<a class="jxr_linenumber" name="3364" href="#3364">3364</a>             <strong class="jxr_keyword">return</strong> success;
<a class="jxr_linenumber" name="3365" href="#3365">3365</a>         }
<a class="jxr_linenumber" name="3366" href="#3366">3366</a> 
<a class="jxr_linenumber" name="3367" href="#3367">3367</a>         <strong class="jxr_keyword">if</strong> (expected == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="3368" href="#3368">3368</a>             f = createResult(FAILURE, <span class="jxr_string">"Expected ACE is null, but actual ACE is not!"</span>);
<a class="jxr_linenumber" name="3369" href="#3369">3369</a>             addResultChild(failure, f);
<a class="jxr_linenumber" name="3370" href="#3370">3370</a> 
<a class="jxr_linenumber" name="3371" href="#3371">3371</a>             <strong class="jxr_keyword">return</strong> failure;
<a class="jxr_linenumber" name="3372" href="#3372">3372</a>         }
<a class="jxr_linenumber" name="3373" href="#3373">3373</a> 
<a class="jxr_linenumber" name="3374" href="#3374">3374</a>         <strong class="jxr_keyword">if</strong> (actual == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="3375" href="#3375">3375</a>             f = createResult(FAILURE, <span class="jxr_string">"Actual ACE is null, but expected ACE is not!"</span>);
<a class="jxr_linenumber" name="3376" href="#3376">3376</a>             addResultChild(failure, f);
<a class="jxr_linenumber" name="3377" href="#3377">3377</a> 
<a class="jxr_linenumber" name="3378" href="#3378">3378</a>             <strong class="jxr_keyword">return</strong> failure;
<a class="jxr_linenumber" name="3379" href="#3379">3379</a>         }
<a class="jxr_linenumber" name="3380" href="#3380">3380</a> 
<a class="jxr_linenumber" name="3381" href="#3381">3381</a>         f = createResult(FAILURE, <span class="jxr_string">"Principal IDs dont't match!"</span>);
<a class="jxr_linenumber" name="3382" href="#3382">3382</a>         addResult(results, assertEquals(expected.getPrincipalId(), actual.getPrincipalId(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="3383" href="#3383">3383</a> 
<a class="jxr_linenumber" name="3384" href="#3384">3384</a>         f = createResult(FAILURE, <span class="jxr_string">"Permissions dont't match!"</span>);
<a class="jxr_linenumber" name="3385" href="#3385">3385</a>         addResult(results, assertEqualLists(expected.getPermissions(), actual.getPermissions(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="3386" href="#3386">3386</a> 
<a class="jxr_linenumber" name="3387" href="#3387">3387</a>         <strong class="jxr_keyword">if</strong> (getWorst(results).getLevel() &lt;= OK.getLevel()) {
<a class="jxr_linenumber" name="3388" href="#3388">3388</a>             <strong class="jxr_keyword">for</strong> (CmisTestResult result : results) {
<a class="jxr_linenumber" name="3389" href="#3389">3389</a>                 addResultChild(success, result);
<a class="jxr_linenumber" name="3390" href="#3390">3390</a>             }
<a class="jxr_linenumber" name="3391" href="#3391">3391</a> 
<a class="jxr_linenumber" name="3392" href="#3392">3392</a>             <strong class="jxr_keyword">return</strong> success;
<a class="jxr_linenumber" name="3393" href="#3393">3393</a>         } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="3394" href="#3394">3394</a>             <strong class="jxr_keyword">for</strong> (CmisTestResult result : results) {
<a class="jxr_linenumber" name="3395" href="#3395">3395</a>                 addResultChild(failure, result);
<a class="jxr_linenumber" name="3396" href="#3396">3396</a>             }
<a class="jxr_linenumber" name="3397" href="#3397">3397</a> 
<a class="jxr_linenumber" name="3398" href="#3398">3398</a>             <strong class="jxr_keyword">return</strong> failure;
<a class="jxr_linenumber" name="3399" href="#3399">3399</a>         }
<a class="jxr_linenumber" name="3400" href="#3400">3400</a>     }
<a class="jxr_linenumber" name="3401" href="#3401">3401</a> 
<a class="jxr_linenumber" name="3402" href="#3402">3402</a>     <strong class="jxr_keyword">protected</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> assertEqualRenditionLists(List&lt;Rendition&gt; expected, List&lt;Rendition&gt; actual,
<a class="jxr_linenumber" name="3403" href="#3403">3403</a>             <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> success, <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> failure) {
<a class="jxr_linenumber" name="3404" href="#3404">3404</a> 
<a class="jxr_linenumber" name="3405" href="#3405">3405</a>         List&lt;CmisTestResult&gt; results = <strong class="jxr_keyword">new</strong> ArrayList&lt;CmisTestResult&gt;();
<a class="jxr_linenumber" name="3406" href="#3406">3406</a> 
<a class="jxr_linenumber" name="3407" href="#3407">3407</a>         <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> f;
<a class="jxr_linenumber" name="3408" href="#3408">3408</a> 
<a class="jxr_linenumber" name="3409" href="#3409">3409</a>         <strong class="jxr_keyword">if</strong> (expected == <strong class="jxr_keyword">null</strong> &amp;&amp; actual == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="3410" href="#3410">3410</a>             <strong class="jxr_keyword">return</strong> success;
<a class="jxr_linenumber" name="3411" href="#3411">3411</a>         }
<a class="jxr_linenumber" name="3412" href="#3412">3412</a> 
<a class="jxr_linenumber" name="3413" href="#3413">3413</a>         <strong class="jxr_keyword">if</strong> (expected == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="3414" href="#3414">3414</a>             <strong class="jxr_keyword">return</strong> addResultChild(failure, createResult(CmisTestResultStatus.INFO, <span class="jxr_string">"Expected rendition list is null!"</span>));
<a class="jxr_linenumber" name="3415" href="#3415">3415</a>         }
<a class="jxr_linenumber" name="3416" href="#3416">3416</a> 
<a class="jxr_linenumber" name="3417" href="#3417">3417</a>         <strong class="jxr_keyword">if</strong> (actual == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="3418" href="#3418">3418</a>             <strong class="jxr_keyword">return</strong> addResultChild(failure, createResult(CmisTestResultStatus.INFO, <span class="jxr_string">"Actual rendition list is null!"</span>));
<a class="jxr_linenumber" name="3419" href="#3419">3419</a>         }
<a class="jxr_linenumber" name="3420" href="#3420">3420</a> 
<a class="jxr_linenumber" name="3421" href="#3421">3421</a>         <strong class="jxr_keyword">if</strong> (expected.size() != actual.size()) {
<a class="jxr_linenumber" name="3422" href="#3422">3422</a>             addResult(results, createResult(CmisTestResultStatus.INFO,
<a class="jxr_linenumber" name="3423" href="#3423">3423</a>                     <span class="jxr_string">"Rendition list sizes don't match! expected: "</span> + expected.size() + <span class="jxr_string">" / actual: "</span> + actual.size()));
<a class="jxr_linenumber" name="3424" href="#3424">3424</a>         } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="3425" href="#3425">3425</a>             <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; expected.size(); i++) {
<a class="jxr_linenumber" name="3426" href="#3426">3426</a>                 f = createResult(FAILURE, <span class="jxr_string">"Renditions at position "</span> + i + <span class="jxr_string">"  dont't match!"</span>);
<a class="jxr_linenumber" name="3427" href="#3427">3427</a>                 addResult(results, assertEquals(expected.get(i), actual.get(i), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="3428" href="#3428">3428</a>             }
<a class="jxr_linenumber" name="3429" href="#3429">3429</a>         }
<a class="jxr_linenumber" name="3430" href="#3430">3430</a> 
<a class="jxr_linenumber" name="3431" href="#3431">3431</a>         <strong class="jxr_keyword">if</strong> (getWorst(results).getLevel() &lt;= OK.getLevel()) {
<a class="jxr_linenumber" name="3432" href="#3432">3432</a>             <strong class="jxr_keyword">for</strong> (CmisTestResult result : results) {
<a class="jxr_linenumber" name="3433" href="#3433">3433</a>                 addResultChild(success, result);
<a class="jxr_linenumber" name="3434" href="#3434">3434</a>             }
<a class="jxr_linenumber" name="3435" href="#3435">3435</a> 
<a class="jxr_linenumber" name="3436" href="#3436">3436</a>             <strong class="jxr_keyword">return</strong> success;
<a class="jxr_linenumber" name="3437" href="#3437">3437</a>         } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="3438" href="#3438">3438</a>             <strong class="jxr_keyword">for</strong> (CmisTestResult result : results) {
<a class="jxr_linenumber" name="3439" href="#3439">3439</a>                 addResultChild(failure, result);
<a class="jxr_linenumber" name="3440" href="#3440">3440</a>             }
<a class="jxr_linenumber" name="3441" href="#3441">3441</a> 
<a class="jxr_linenumber" name="3442" href="#3442">3442</a>             <strong class="jxr_keyword">return</strong> failure;
<a class="jxr_linenumber" name="3443" href="#3443">3443</a>         }
<a class="jxr_linenumber" name="3444" href="#3444">3444</a>     }
<a class="jxr_linenumber" name="3445" href="#3445">3445</a> 
<a class="jxr_linenumber" name="3446" href="#3446">3446</a>     <strong class="jxr_keyword">protected</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> assertEquals(Rendition expected, Rendition actual, <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> success,
<a class="jxr_linenumber" name="3447" href="#3447">3447</a>             <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> failure) {
<a class="jxr_linenumber" name="3448" href="#3448">3448</a> 
<a class="jxr_linenumber" name="3449" href="#3449">3449</a>         List&lt;CmisTestResult&gt; results = <strong class="jxr_keyword">new</strong> ArrayList&lt;CmisTestResult&gt;();
<a class="jxr_linenumber" name="3450" href="#3450">3450</a> 
<a class="jxr_linenumber" name="3451" href="#3451">3451</a>         <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> f;
<a class="jxr_linenumber" name="3452" href="#3452">3452</a> 
<a class="jxr_linenumber" name="3453" href="#3453">3453</a>         <strong class="jxr_keyword">if</strong> ((expected == <strong class="jxr_keyword">null</strong>) &amp;&amp; (actual == <strong class="jxr_keyword">null</strong>)) {
<a class="jxr_linenumber" name="3454" href="#3454">3454</a>             <strong class="jxr_keyword">return</strong> success;
<a class="jxr_linenumber" name="3455" href="#3455">3455</a>         }
<a class="jxr_linenumber" name="3456" href="#3456">3456</a> 
<a class="jxr_linenumber" name="3457" href="#3457">3457</a>         <strong class="jxr_keyword">if</strong> (expected == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="3458" href="#3458">3458</a>             f = createResult(FAILURE, <span class="jxr_string">"Expected rendition is null, but actual rendition is not!"</span>);
<a class="jxr_linenumber" name="3459" href="#3459">3459</a>             addResultChild(failure, f);
<a class="jxr_linenumber" name="3460" href="#3460">3460</a> 
<a class="jxr_linenumber" name="3461" href="#3461">3461</a>             <strong class="jxr_keyword">return</strong> failure;
<a class="jxr_linenumber" name="3462" href="#3462">3462</a>         }
<a class="jxr_linenumber" name="3463" href="#3463">3463</a> 
<a class="jxr_linenumber" name="3464" href="#3464">3464</a>         <strong class="jxr_keyword">if</strong> (actual == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="3465" href="#3465">3465</a>             f = createResult(FAILURE, <span class="jxr_string">"Actual rendition is null, but expected rendition is not!"</span>);
<a class="jxr_linenumber" name="3466" href="#3466">3466</a>             addResultChild(failure, f);
<a class="jxr_linenumber" name="3467" href="#3467">3467</a> 
<a class="jxr_linenumber" name="3468" href="#3468">3468</a>             <strong class="jxr_keyword">return</strong> failure;
<a class="jxr_linenumber" name="3469" href="#3469">3469</a>         }
<a class="jxr_linenumber" name="3470" href="#3470">3470</a> 
<a class="jxr_linenumber" name="3471" href="#3471">3471</a>         f = createResult(FAILURE, <span class="jxr_string">"Stream IDs dont't match!"</span>);
<a class="jxr_linenumber" name="3472" href="#3472">3472</a>         addResult(results, assertEquals(expected.getStreamId(), actual.getStreamId(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="3473" href="#3473">3473</a> 
<a class="jxr_linenumber" name="3474" href="#3474">3474</a>         f = createResult(FAILURE, <span class="jxr_string">"Kinds dont't match!"</span>);
<a class="jxr_linenumber" name="3475" href="#3475">3475</a>         addResult(results, assertEquals(expected.getKind(), actual.getKind(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="3476" href="#3476">3476</a> 
<a class="jxr_linenumber" name="3477" href="#3477">3477</a>         f = createResult(FAILURE, <span class="jxr_string">"MIME types dont't match!"</span>);
<a class="jxr_linenumber" name="3478" href="#3478">3478</a>         addResult(results, assertEquals(expected.getMimeType(), actual.getMimeType(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="3479" href="#3479">3479</a> 
<a class="jxr_linenumber" name="3480" href="#3480">3480</a>         f = createResult(FAILURE, <span class="jxr_string">"Titles dont't match!"</span>);
<a class="jxr_linenumber" name="3481" href="#3481">3481</a>         addResult(results, assertEquals(expected.getTitle(), actual.getTitle(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="3482" href="#3482">3482</a> 
<a class="jxr_linenumber" name="3483" href="#3483">3483</a>         f = createResult(FAILURE, <span class="jxr_string">"Lengths dont't match!"</span>);
<a class="jxr_linenumber" name="3484" href="#3484">3484</a>         addResult(results, assertEquals(expected.getLength(), actual.getLength(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="3485" href="#3485">3485</a> 
<a class="jxr_linenumber" name="3486" href="#3486">3486</a>         f = createResult(FAILURE, <span class="jxr_string">"Heights dont't match!"</span>);
<a class="jxr_linenumber" name="3487" href="#3487">3487</a>         addResult(results, assertEquals(expected.getBigHeight(), actual.getBigHeight(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="3488" href="#3488">3488</a> 
<a class="jxr_linenumber" name="3489" href="#3489">3489</a>         f = createResult(FAILURE, <span class="jxr_string">"Widths dont't match!"</span>);
<a class="jxr_linenumber" name="3490" href="#3490">3490</a>         addResult(results, assertEquals(expected.getBigWidth(), actual.getBigWidth(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="3491" href="#3491">3491</a> 
<a class="jxr_linenumber" name="3492" href="#3492">3492</a>         f = createResult(FAILURE, <span class="jxr_string">"Rendition document IDs dont't match!"</span>);
<a class="jxr_linenumber" name="3493" href="#3493">3493</a>         addResult(results, assertEquals(expected.getRenditionDocumentId(), actual.getRenditionDocumentId(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="3494" href="#3494">3494</a> 
<a class="jxr_linenumber" name="3495" href="#3495">3495</a>         <strong class="jxr_keyword">if</strong> (getWorst(results).getLevel() &lt;= OK.getLevel()) {
<a class="jxr_linenumber" name="3496" href="#3496">3496</a>             <strong class="jxr_keyword">for</strong> (CmisTestResult result : results) {
<a class="jxr_linenumber" name="3497" href="#3497">3497</a>                 addResultChild(success, result);
<a class="jxr_linenumber" name="3498" href="#3498">3498</a>             }
<a class="jxr_linenumber" name="3499" href="#3499">3499</a> 
<a class="jxr_linenumber" name="3500" href="#3500">3500</a>             <strong class="jxr_keyword">return</strong> success;
<a class="jxr_linenumber" name="3501" href="#3501">3501</a>         } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="3502" href="#3502">3502</a>             <strong class="jxr_keyword">for</strong> (CmisTestResult result : results) {
<a class="jxr_linenumber" name="3503" href="#3503">3503</a>                 addResultChild(failure, result);
<a class="jxr_linenumber" name="3504" href="#3504">3504</a>             }
<a class="jxr_linenumber" name="3505" href="#3505">3505</a> 
<a class="jxr_linenumber" name="3506" href="#3506">3506</a>             <strong class="jxr_keyword">return</strong> failure;
<a class="jxr_linenumber" name="3507" href="#3507">3507</a>         }
<a class="jxr_linenumber" name="3508" href="#3508">3508</a>     }
<a class="jxr_linenumber" name="3509" href="#3509">3509</a> 
<a class="jxr_linenumber" name="3510" href="#3510">3510</a>     <strong class="jxr_keyword">protected</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> assertEquals(ContentStream expected, ContentStream actual, <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> success,
<a class="jxr_linenumber" name="3511" href="#3511">3511</a>             <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> failure) {
<a class="jxr_linenumber" name="3512" href="#3512">3512</a> 
<a class="jxr_linenumber" name="3513" href="#3513">3513</a>         List&lt;CmisTestResult&gt; results = <strong class="jxr_keyword">new</strong> ArrayList&lt;CmisTestResult&gt;();
<a class="jxr_linenumber" name="3514" href="#3514">3514</a> 
<a class="jxr_linenumber" name="3515" href="#3515">3515</a>         <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> f;
<a class="jxr_linenumber" name="3516" href="#3516">3516</a> 
<a class="jxr_linenumber" name="3517" href="#3517">3517</a>         <strong class="jxr_keyword">if</strong> ((expected == <strong class="jxr_keyword">null</strong>) &amp;&amp; (actual == <strong class="jxr_keyword">null</strong>)) {
<a class="jxr_linenumber" name="3518" href="#3518">3518</a>             <strong class="jxr_keyword">return</strong> success;
<a class="jxr_linenumber" name="3519" href="#3519">3519</a>         }
<a class="jxr_linenumber" name="3520" href="#3520">3520</a> 
<a class="jxr_linenumber" name="3521" href="#3521">3521</a>         <strong class="jxr_keyword">if</strong> (expected == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="3522" href="#3522">3522</a>             f = createResult(FAILURE, <span class="jxr_string">"Expected stream is null, but actual stream is not!"</span>);
<a class="jxr_linenumber" name="3523" href="#3523">3523</a>             addResultChild(failure, f);
<a class="jxr_linenumber" name="3524" href="#3524">3524</a> 
<a class="jxr_linenumber" name="3525" href="#3525">3525</a>             IOUtils.closeQuietly(actual);
<a class="jxr_linenumber" name="3526" href="#3526">3526</a> 
<a class="jxr_linenumber" name="3527" href="#3527">3527</a>             <strong class="jxr_keyword">return</strong> failure;
<a class="jxr_linenumber" name="3528" href="#3528">3528</a>         }
<a class="jxr_linenumber" name="3529" href="#3529">3529</a> 
<a class="jxr_linenumber" name="3530" href="#3530">3530</a>         <strong class="jxr_keyword">if</strong> (actual == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="3531" href="#3531">3531</a>             f = createResult(FAILURE, <span class="jxr_string">"Actual object is null, but expected object is not!"</span>);
<a class="jxr_linenumber" name="3532" href="#3532">3532</a>             addResultChild(failure, f);
<a class="jxr_linenumber" name="3533" href="#3533">3533</a> 
<a class="jxr_linenumber" name="3534" href="#3534">3534</a>             IOUtils.closeQuietly(expected);
<a class="jxr_linenumber" name="3535" href="#3535">3535</a> 
<a class="jxr_linenumber" name="3536" href="#3536">3536</a>             <strong class="jxr_keyword">return</strong> failure;
<a class="jxr_linenumber" name="3537" href="#3537">3537</a>         }
<a class="jxr_linenumber" name="3538" href="#3538">3538</a> 
<a class="jxr_linenumber" name="3539" href="#3539">3539</a>         f = createResult(WARNING, <span class="jxr_string">"Filenames don't match!"</span>);
<a class="jxr_linenumber" name="3540" href="#3540">3540</a>         addResult(results, assertEquals(expected.getFileName(), actual.getFileName(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="3541" href="#3541">3541</a> 
<a class="jxr_linenumber" name="3542" href="#3542">3542</a>         f = createResult(FAILURE, <span class="jxr_string">"MIME types don't match!"</span>);
<a class="jxr_linenumber" name="3543" href="#3543">3543</a>         addResult(results, assertEquals(expected.getMimeType(), actual.getMimeType(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="3544" href="#3544">3544</a> 
<a class="jxr_linenumber" name="3545" href="#3545">3545</a>         f = createResult(WARNING, <span class="jxr_string">"Lengths don't match!"</span>);
<a class="jxr_linenumber" name="3546" href="#3546">3546</a>         addResult(results, assertEquals(expected.getBigLength(), actual.getBigLength(), <strong class="jxr_keyword">null</strong>, f));
<a class="jxr_linenumber" name="3547" href="#3547">3547</a> 
<a class="jxr_linenumber" name="3548" href="#3548">3548</a>         <strong class="jxr_keyword">boolean</strong> match = <strong class="jxr_keyword">true</strong>;
<a class="jxr_linenumber" name="3549" href="#3549">3549</a> 
<a class="jxr_linenumber" name="3550" href="#3550">3550</a>         BufferedInputStream as = <strong class="jxr_keyword">new</strong> BufferedInputStream(actual.getStream(), 64 * 1024);
<a class="jxr_linenumber" name="3551" href="#3551">3551</a>         BufferedInputStream es = <strong class="jxr_keyword">new</strong> BufferedInputStream(expected.getStream(), 64 * 1024);
<a class="jxr_linenumber" name="3552" href="#3552">3552</a> 
<a class="jxr_linenumber" name="3553" href="#3553">3553</a>         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="3554" href="#3554">3554</a>             <strong class="jxr_keyword">int</strong> ab = 0;
<a class="jxr_linenumber" name="3555" href="#3555">3555</a>             <strong class="jxr_keyword">int</strong> eb = 0;
<a class="jxr_linenumber" name="3556" href="#3556">3556</a> 
<a class="jxr_linenumber" name="3557" href="#3557">3557</a>             <strong class="jxr_keyword">while</strong> (<strong class="jxr_keyword">true</strong>) {
<a class="jxr_linenumber" name="3558" href="#3558">3558</a>                 <strong class="jxr_keyword">if</strong> (ab &gt; -1) {
<a class="jxr_linenumber" name="3559" href="#3559">3559</a>                     ab = as.read();
<a class="jxr_linenumber" name="3560" href="#3560">3560</a>                 }
<a class="jxr_linenumber" name="3561" href="#3561">3561</a> 
<a class="jxr_linenumber" name="3562" href="#3562">3562</a>                 <strong class="jxr_keyword">if</strong> (eb &gt; -1) {
<a class="jxr_linenumber" name="3563" href="#3563">3563</a>                     eb = es.read();
<a class="jxr_linenumber" name="3564" href="#3564">3564</a>                 }
<a class="jxr_linenumber" name="3565" href="#3565">3565</a> 
<a class="jxr_linenumber" name="3566" href="#3566">3566</a>                 <strong class="jxr_keyword">if</strong> (ab == -1 &amp;&amp; eb == -1) {
<a class="jxr_linenumber" name="3567" href="#3567">3567</a>                     <strong class="jxr_keyword">break</strong>;
<a class="jxr_linenumber" name="3568" href="#3568">3568</a>                 }
<a class="jxr_linenumber" name="3569" href="#3569">3569</a> 
<a class="jxr_linenumber" name="3570" href="#3570">3570</a>                 <strong class="jxr_keyword">if</strong> (ab != eb) {
<a class="jxr_linenumber" name="3571" href="#3571">3571</a>                     match = false;
<a class="jxr_linenumber" name="3572" href="#3572">3572</a>                 }
<a class="jxr_linenumber" name="3573" href="#3573">3573</a>             }
<a class="jxr_linenumber" name="3574" href="#3574">3574</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a class="jxr_linenumber" name="3575" href="#3575">3575</a>             f = createResult(UNEXPECTED_EXCEPTION, e.getMessage(), e, false);
<a class="jxr_linenumber" name="3576" href="#3576">3576</a>             addResultChild(failure, f);
<a class="jxr_linenumber" name="3577" href="#3577">3577</a>         }
<a class="jxr_linenumber" name="3578" href="#3578">3578</a> 
<a class="jxr_linenumber" name="3579" href="#3579">3579</a>         <strong class="jxr_keyword">if</strong> (!match) {
<a class="jxr_linenumber" name="3580" href="#3580">3580</a>             f = createResult(FAILURE, <span class="jxr_string">"Content streams don't match!"</span>);
<a class="jxr_linenumber" name="3581" href="#3581">3581</a>             addResultChild(failure, f);
<a class="jxr_linenumber" name="3582" href="#3582">3582</a>         }
<a class="jxr_linenumber" name="3583" href="#3583">3583</a> 
<a class="jxr_linenumber" name="3584" href="#3584">3584</a>         IOUtils.closeQuietly(as);
<a class="jxr_linenumber" name="3585" href="#3585">3585</a>         IOUtils.closeQuietly(es);
<a class="jxr_linenumber" name="3586" href="#3586">3586</a> 
<a class="jxr_linenumber" name="3587" href="#3587">3587</a>         <strong class="jxr_keyword">if</strong> (getWorst(results).getLevel() &lt;= OK.getLevel()) {
<a class="jxr_linenumber" name="3588" href="#3588">3588</a>             <strong class="jxr_keyword">for</strong> (CmisTestResult result : results) {
<a class="jxr_linenumber" name="3589" href="#3589">3589</a>                 addResultChild(success, result);
<a class="jxr_linenumber" name="3590" href="#3590">3590</a>             }
<a class="jxr_linenumber" name="3591" href="#3591">3591</a> 
<a class="jxr_linenumber" name="3592" href="#3592">3592</a>             <strong class="jxr_keyword">return</strong> success;
<a class="jxr_linenumber" name="3593" href="#3593">3593</a>         } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="3594" href="#3594">3594</a>             <strong class="jxr_keyword">for</strong> (CmisTestResult result : results) {
<a class="jxr_linenumber" name="3595" href="#3595">3595</a>                 addResultChild(failure, result);
<a class="jxr_linenumber" name="3596" href="#3596">3596</a>             }
<a class="jxr_linenumber" name="3597" href="#3597">3597</a> 
<a class="jxr_linenumber" name="3598" href="#3598">3598</a>             <strong class="jxr_keyword">return</strong> failure;
<a class="jxr_linenumber" name="3599" href="#3599">3599</a>         }
<a class="jxr_linenumber" name="3600" href="#3600">3600</a>     }
<a class="jxr_linenumber" name="3601" href="#3601">3601</a> 
<a class="jxr_linenumber" name="3602" href="#3602">3602</a>     <em class="jxr_comment">// --- helpers ---</em>
<a class="jxr_linenumber" name="3603" href="#3603">3603</a> 
<a class="jxr_linenumber" name="3604" href="#3604">3604</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> addResult(List&lt;CmisTestResult&gt; results, <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> result) {
<a class="jxr_linenumber" name="3605" href="#3605">3605</a>         <strong class="jxr_keyword">if</strong> (result != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="3606" href="#3606">3606</a>             <strong class="jxr_keyword">if</strong> (result instanceof CmisTestResultImpl) {
<a class="jxr_linenumber" name="3607" href="#3607">3607</a>                 ((<a href="../../../../../../org/apache/chemistry/opencmis/tck/impl/CmisTestResultImpl.html">CmisTestResultImpl</a>) result).setStackTrace(getStackTrace());
<a class="jxr_linenumber" name="3608" href="#3608">3608</a>             }
<a class="jxr_linenumber" name="3609" href="#3609">3609</a> 
<a class="jxr_linenumber" name="3610" href="#3610">3610</a>             results.add(result);
<a class="jxr_linenumber" name="3611" href="#3611">3611</a>             <strong class="jxr_keyword">if</strong> (result.isFatal()) {
<a class="jxr_linenumber" name="3612" href="#3612">3612</a>                 <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/impl/FatalTestException.html">FatalTestException</a>(result.getMessage());
<a class="jxr_linenumber" name="3613" href="#3613">3613</a>             }
<a class="jxr_linenumber" name="3614" href="#3614">3614</a>         }
<a class="jxr_linenumber" name="3615" href="#3615">3615</a>     }
<a class="jxr_linenumber" name="3616" href="#3616">3616</a> 
<a class="jxr_linenumber" name="3617" href="#3617">3617</a>     <strong class="jxr_keyword">protected</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResultStatus.html">CmisTestResultStatus</a> getWorst(List&lt;CmisTestResult&gt; results) {
<a class="jxr_linenumber" name="3618" href="#3618">3618</a>         <strong class="jxr_keyword">if</strong> (isNullOrEmpty(results)) {
<a class="jxr_linenumber" name="3619" href="#3619">3619</a>             <strong class="jxr_keyword">return</strong> CmisTestResultStatus.OK;
<a class="jxr_linenumber" name="3620" href="#3620">3620</a>         }
<a class="jxr_linenumber" name="3621" href="#3621">3621</a> 
<a class="jxr_linenumber" name="3622" href="#3622">3622</a>         <strong class="jxr_keyword">int</strong> max = 0;
<a class="jxr_linenumber" name="3623" href="#3623">3623</a> 
<a class="jxr_linenumber" name="3624" href="#3624">3624</a>         <strong class="jxr_keyword">for</strong> (CmisTestResult result : results) {
<a class="jxr_linenumber" name="3625" href="#3625">3625</a>             <strong class="jxr_keyword">if</strong> (max &lt; result.getStatus().getLevel()) {
<a class="jxr_linenumber" name="3626" href="#3626">3626</a>                 max = result.getStatus().getLevel();
<a class="jxr_linenumber" name="3627" href="#3627">3627</a>             }
<a class="jxr_linenumber" name="3628" href="#3628">3628</a>         }
<a class="jxr_linenumber" name="3629" href="#3629">3629</a> 
<a class="jxr_linenumber" name="3630" href="#3630">3630</a>         <strong class="jxr_keyword">return</strong> CmisTestResultStatus.fromLevel(max);
<a class="jxr_linenumber" name="3631" href="#3631">3631</a>     }
<a class="jxr_linenumber" name="3632" href="#3632">3632</a> 
<a class="jxr_linenumber" name="3633" href="#3633">3633</a>     <em class="jxr_comment">// --- helper classes ---</em>
<a class="jxr_linenumber" name="3634" href="#3634">3634</a> 
<a class="jxr_linenumber" name="3635" href="#3635">3635</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/impl/AbstractSessionTest.html">CmisPropertyDefintion</a> {
<a class="jxr_linenumber" name="3636" href="#3636">3636</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> String id;
<a class="jxr_linenumber" name="3637" href="#3637">3637</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Boolean required;
<a class="jxr_linenumber" name="3638" href="#3638">3638</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> PropertyType propertyType;
<a class="jxr_linenumber" name="3639" href="#3639">3639</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Cardinality cardinality;
<a class="jxr_linenumber" name="3640" href="#3640">3640</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Updatability updatability;
<a class="jxr_linenumber" name="3641" href="#3641">3641</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Boolean queryable;
<a class="jxr_linenumber" name="3642" href="#3642">3642</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Boolean orderable;
<a class="jxr_linenumber" name="3643" href="#3643">3643</a> 
<a class="jxr_linenumber" name="3644" href="#3644">3644</a>         <strong class="jxr_keyword">public</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/impl/AbstractSessionTest.html">CmisPropertyDefintion</a>(String id, Boolean required, PropertyType propertyType, Cardinality cardinality,
<a class="jxr_linenumber" name="3645" href="#3645">3645</a>                 Updatability updatability, Boolean queryable, Boolean orderable) {
<a class="jxr_linenumber" name="3646" href="#3646">3646</a>             <strong class="jxr_keyword">this</strong>.id = id;
<a class="jxr_linenumber" name="3647" href="#3647">3647</a>             <strong class="jxr_keyword">this</strong>.required = required;
<a class="jxr_linenumber" name="3648" href="#3648">3648</a>             <strong class="jxr_keyword">this</strong>.propertyType = propertyType;
<a class="jxr_linenumber" name="3649" href="#3649">3649</a>             <strong class="jxr_keyword">this</strong>.cardinality = cardinality;
<a class="jxr_linenumber" name="3650" href="#3650">3650</a>             <strong class="jxr_keyword">this</strong>.updatability = updatability;
<a class="jxr_linenumber" name="3651" href="#3651">3651</a>             <strong class="jxr_keyword">this</strong>.queryable = queryable;
<a class="jxr_linenumber" name="3652" href="#3652">3652</a>             <strong class="jxr_keyword">this</strong>.orderable = (cardinality == Cardinality.MULTI ? Boolean.FALSE : orderable);
<a class="jxr_linenumber" name="3653" href="#3653">3653</a>         }
<a class="jxr_linenumber" name="3654" href="#3654">3654</a> 
<a class="jxr_linenumber" name="3655" href="#3655">3655</a>         <strong class="jxr_keyword">public</strong> <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> check(TypeDefinition type) {
<a class="jxr_linenumber" name="3656" href="#3656">3656</a>             List&lt;CmisTestResult&gt; results = <strong class="jxr_keyword">new</strong> ArrayList&lt;CmisTestResult&gt;();
<a class="jxr_linenumber" name="3657" href="#3657">3657</a> 
<a class="jxr_linenumber" name="3658" href="#3658">3658</a>             <a href="../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> f;
<a class="jxr_linenumber" name="3659" href="#3659">3659</a> 
<a class="jxr_linenumber" name="3660" href="#3660">3660</a>             Map&lt;String, PropertyDefinition&lt;?&gt;&gt; propDefs = type.getPropertyDefinitions();
<a class="jxr_linenumber" name="3661" href="#3661">3661</a>             <strong class="jxr_keyword">if</strong> (propDefs == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="3662" href="#3662">3662</a>                 addResult(results, createResult(FAILURE, <span class="jxr_string">"Property definitions are missing!"</span>));
<a class="jxr_linenumber" name="3663" href="#3663">3663</a>             } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="3664" href="#3664">3664</a>                 PropertyDefinition&lt;?&gt; propDef = propDefs.get(id);
<a class="jxr_linenumber" name="3665" href="#3665">3665</a>                 <strong class="jxr_keyword">if</strong> (propDef == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="3666" href="#3666">3666</a>                     addResult(results, createResult(FAILURE, <span class="jxr_string">"Property definition is missing!"</span>));
<a class="jxr_linenumber" name="3667" href="#3667">3667</a>                 } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="3668" href="#3668">3668</a>                     <strong class="jxr_keyword">if</strong> ((required != <strong class="jxr_keyword">null</strong>) &amp;&amp; !required.equals(propDef.isRequired())) {
<a class="jxr_linenumber" name="3669" href="#3669">3669</a>                         f = createResult(FAILURE,
<a class="jxr_linenumber" name="3670" href="#3670">3670</a>                                 <span class="jxr_string">"Required flag: expected: "</span> + required + <span class="jxr_string">" / actual: "</span> + propDef.isRequired());
<a class="jxr_linenumber" name="3671" href="#3671">3671</a>                         addResult(results, f);
<a class="jxr_linenumber" name="3672" href="#3672">3672</a>                     }
<a class="jxr_linenumber" name="3673" href="#3673">3673</a> 
<a class="jxr_linenumber" name="3674" href="#3674">3674</a>                     <strong class="jxr_keyword">if</strong> (!propertyType.equals(propDef.getPropertyType())) {
<a class="jxr_linenumber" name="3675" href="#3675">3675</a>                         f = createResult(FAILURE,
<a class="jxr_linenumber" name="3676" href="#3676">3676</a>                                 <span class="jxr_string">"Property type: expected: "</span> + propertyType + <span class="jxr_string">" / actual: "</span> + propDef.getPropertyType());
<a class="jxr_linenumber" name="3677" href="#3677">3677</a>                         addResult(results, f);
<a class="jxr_linenumber" name="3678" href="#3678">3678</a>                     }
<a class="jxr_linenumber" name="3679" href="#3679">3679</a> 
<a class="jxr_linenumber" name="3680" href="#3680">3680</a>                     <strong class="jxr_keyword">if</strong> (!cardinality.equals(propDef.getCardinality())) {
<a class="jxr_linenumber" name="3681" href="#3681">3681</a>                         f = createResult(FAILURE,
<a class="jxr_linenumber" name="3682" href="#3682">3682</a>                                 <span class="jxr_string">"Cardinality: expected: "</span> + cardinality + <span class="jxr_string">" / actual: "</span> + propDef.getCardinality());
<a class="jxr_linenumber" name="3683" href="#3683">3683</a>                         addResult(results, f);
<a class="jxr_linenumber" name="3684" href="#3684">3684</a>                     }
<a class="jxr_linenumber" name="3685" href="#3685">3685</a> 
<a class="jxr_linenumber" name="3686" href="#3686">3686</a>                     <strong class="jxr_keyword">if</strong> ((updatability != <strong class="jxr_keyword">null</strong>) &amp;&amp; !updatability.equals(propDef.getUpdatability())) {
<a class="jxr_linenumber" name="3687" href="#3687">3687</a>                         f = createResult(FAILURE,
<a class="jxr_linenumber" name="3688" href="#3688">3688</a>                                 <span class="jxr_string">"Updatability: expected: "</span> + updatability + <span class="jxr_string">" / actual: "</span> + propDef.getUpdatability());
<a class="jxr_linenumber" name="3689" href="#3689">3689</a>                         addResult(results, f);
<a class="jxr_linenumber" name="3690" href="#3690">3690</a>                     }
<a class="jxr_linenumber" name="3691" href="#3691">3691</a> 
<a class="jxr_linenumber" name="3692" href="#3692">3692</a>                     <strong class="jxr_keyword">if</strong> ((queryable != <strong class="jxr_keyword">null</strong>) &amp;&amp; !queryable.equals(propDef.isQueryable())) {
<a class="jxr_linenumber" name="3693" href="#3693">3693</a>                         f = createResult(FAILURE,
<a class="jxr_linenumber" name="3694" href="#3694">3694</a>                                 <span class="jxr_string">"Queryable: expected: "</span> + queryable + <span class="jxr_string">" / actual: "</span> + propDef.isQueryable());
<a class="jxr_linenumber" name="3695" href="#3695">3695</a>                         addResult(results, f);
<a class="jxr_linenumber" name="3696" href="#3696">3696</a>                     }
<a class="jxr_linenumber" name="3697" href="#3697">3697</a> 
<a class="jxr_linenumber" name="3698" href="#3698">3698</a>                     <strong class="jxr_keyword">boolean</strong> isPropertyQueryNameRequired = Boolean.TRUE.equals(queryable);
<a class="jxr_linenumber" name="3699" href="#3699">3699</a>                     checkQueryName(propDef.getQueryName(), isPropertyQueryNameRequired,
<a class="jxr_linenumber" name="3700" href="#3700">3700</a>                             <span class="jxr_string">"Property Query Name: "</span> + propDef.getQueryName());
<a class="jxr_linenumber" name="3701" href="#3701">3701</a> 
<a class="jxr_linenumber" name="3702" href="#3702">3702</a>                     <strong class="jxr_keyword">if</strong> ((orderable != <strong class="jxr_keyword">null</strong>) &amp;&amp; !orderable.equals(propDef.isOrderable())) {
<a class="jxr_linenumber" name="3703" href="#3703">3703</a>                         f = createResult(FAILURE,
<a class="jxr_linenumber" name="3704" href="#3704">3704</a>                                 <span class="jxr_string">"Orderable: expected: "</span> + orderable + <span class="jxr_string">" / actual: "</span> + propDef.isOrderable());
<a class="jxr_linenumber" name="3705" href="#3705">3705</a>                         addResult(results, f);
<a class="jxr_linenumber" name="3706" href="#3706">3706</a>                     }
<a class="jxr_linenumber" name="3707" href="#3707">3707</a> 
<a class="jxr_linenumber" name="3708" href="#3708">3708</a>                     <strong class="jxr_keyword">if</strong> (type.getBaseTypeId() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="3709" href="#3709">3709</a>                         Boolean inherited = !type.getBaseTypeId().value().equals(type.getId());
<a class="jxr_linenumber" name="3710" href="#3710">3710</a>                         <strong class="jxr_keyword">if</strong> (!inherited.equals(propDef.isInherited())) {
<a class="jxr_linenumber" name="3711" href="#3711">3711</a>                             f = createResult(FAILURE,
<a class="jxr_linenumber" name="3712" href="#3712">3712</a>                                     <span class="jxr_string">"Inhertited: expected: "</span> + inherited + <span class="jxr_string">" / actual: "</span> + propDef.isInherited());
<a class="jxr_linenumber" name="3713" href="#3713">3713</a>                             addResult(results, f);
<a class="jxr_linenumber" name="3714" href="#3714">3714</a>                         }
<a class="jxr_linenumber" name="3715" href="#3715">3715</a>                     }
<a class="jxr_linenumber" name="3716" href="#3716">3716</a> 
<a class="jxr_linenumber" name="3717" href="#3717">3717</a>                     <em class="jxr_comment">// data type specific tests</em>
<a class="jxr_linenumber" name="3718" href="#3718">3718</a>                     <strong class="jxr_keyword">if</strong> (propDef instanceof PropertyStringDefinition) {
<a class="jxr_linenumber" name="3719" href="#3719">3719</a>                         PropertyStringDefinition stringPropDef = (PropertyStringDefinition) propDef;
<a class="jxr_linenumber" name="3720" href="#3720">3720</a> 
<a class="jxr_linenumber" name="3721" href="#3721">3721</a>                         <strong class="jxr_keyword">if</strong> (stringPropDef.getMaxLength() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="3722" href="#3722">3722</a>                             <strong class="jxr_keyword">if</strong> (stringPropDef.getMaxLength().signum() == 0) {
<a class="jxr_linenumber" name="3723" href="#3723">3723</a>                                 f = createResult(WARNING, <span class="jxr_string">"Max length is 0!"</span>);
<a class="jxr_linenumber" name="3724" href="#3724">3724</a>                                 addResult(results, f);
<a class="jxr_linenumber" name="3725" href="#3725">3725</a>                             } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (stringPropDef.getMaxLength().signum() == -1) {
<a class="jxr_linenumber" name="3726" href="#3726">3726</a>                                 f = createResult(FAILURE, <span class="jxr_string">"Max length is negative!"</span>);
<a class="jxr_linenumber" name="3727" href="#3727">3727</a>                                 addResult(results, f);
<a class="jxr_linenumber" name="3728" href="#3728">3728</a>                             }
<a class="jxr_linenumber" name="3729" href="#3729">3729</a>                         }
<a class="jxr_linenumber" name="3730" href="#3730">3730</a>                     } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (propDef instanceof PropertyIntegerDefinition) {
<a class="jxr_linenumber" name="3731" href="#3731">3731</a>                         PropertyIntegerDefinition intPropDef = (PropertyIntegerDefinition) propDef;
<a class="jxr_linenumber" name="3732" href="#3732">3732</a> 
<a class="jxr_linenumber" name="3733" href="#3733">3733</a>                         <strong class="jxr_keyword">if</strong> (intPropDef.getMinValue() != <strong class="jxr_keyword">null</strong> &amp;&amp; intPropDef.getMaxValue() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="3734" href="#3734">3734</a>                             <strong class="jxr_keyword">if</strong> (intPropDef.getMinValue().compareTo(intPropDef.getMaxValue()) == 0) {
<a class="jxr_linenumber" name="3735" href="#3735">3735</a>                                 f = createResult(WARNING, <span class="jxr_string">"Min and max values are equal!"</span>);
<a class="jxr_linenumber" name="3736" href="#3736">3736</a>                                 addResult(results, f);
<a class="jxr_linenumber" name="3737" href="#3737">3737</a>                             } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (intPropDef.getMinValue().compareTo(intPropDef.getMaxValue()) == 1) {
<a class="jxr_linenumber" name="3738" href="#3738">3738</a>                                 f = createResult(FAILURE, <span class="jxr_string">"Min value is greater than max value!"</span>);
<a class="jxr_linenumber" name="3739" href="#3739">3739</a>                                 addResult(results, f);
<a class="jxr_linenumber" name="3740" href="#3740">3740</a>                             }
<a class="jxr_linenumber" name="3741" href="#3741">3741</a>                         }
<a class="jxr_linenumber" name="3742" href="#3742">3742</a>                     } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (propDef instanceof PropertyDecimalDefinition) {
<a class="jxr_linenumber" name="3743" href="#3743">3743</a>                         PropertyDecimalDefinition decPropDef = (PropertyDecimalDefinition) propDef;
<a class="jxr_linenumber" name="3744" href="#3744">3744</a> 
<a class="jxr_linenumber" name="3745" href="#3745">3745</a>                         <strong class="jxr_keyword">if</strong> (decPropDef.getMinValue() != <strong class="jxr_keyword">null</strong> &amp;&amp; decPropDef.getMaxValue() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="3746" href="#3746">3746</a>                             <strong class="jxr_keyword">if</strong> (decPropDef.getMinValue().compareTo(decPropDef.getMaxValue()) == 0) {
<a class="jxr_linenumber" name="3747" href="#3747">3747</a>                                 f = createResult(WARNING, <span class="jxr_string">"Min and max values are equal!"</span>);
<a class="jxr_linenumber" name="3748" href="#3748">3748</a>                                 addResult(results, f);
<a class="jxr_linenumber" name="3749" href="#3749">3749</a>                             } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (decPropDef.getMinValue().compareTo(decPropDef.getMaxValue()) == 1) {
<a class="jxr_linenumber" name="3750" href="#3750">3750</a>                                 f = createResult(FAILURE, <span class="jxr_string">"Min value is greater than max value!"</span>);
<a class="jxr_linenumber" name="3751" href="#3751">3751</a>                                 addResult(results, f);
<a class="jxr_linenumber" name="3752" href="#3752">3752</a>                             }
<a class="jxr_linenumber" name="3753" href="#3753">3753</a>                         }
<a class="jxr_linenumber" name="3754" href="#3754">3754</a>                     }
<a class="jxr_linenumber" name="3755" href="#3755">3755</a>                 }
<a class="jxr_linenumber" name="3756" href="#3756">3756</a>             }
<a class="jxr_linenumber" name="3757" href="#3757">3757</a> 
<a class="jxr_linenumber" name="3758" href="#3758">3758</a>             <a href="../../../../../../org/apache/chemistry/opencmis/tck/impl/CmisTestResultImpl.html">CmisTestResultImpl</a> result = createResult(getWorst(results), <span class="jxr_string">"Property definition: "</span> + id);
<a class="jxr_linenumber" name="3759" href="#3759">3759</a>             result.getChildren().addAll(results);
<a class="jxr_linenumber" name="3760" href="#3760">3760</a> 
<a class="jxr_linenumber" name="3761" href="#3761">3761</a>             <strong class="jxr_keyword">return</strong> result.getStatus().getLevel() &lt;= OK.getLevel() ? <strong class="jxr_keyword">null</strong> : result;
<a class="jxr_linenumber" name="3762" href="#3762">3762</a>         }
<a class="jxr_linenumber" name="3763" href="#3763">3763</a>     }
<a class="jxr_linenumber" name="3764" href="#3764">3764</a> }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

