<!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>RepositoryInfoTest xref</title>
<link type="text/css" rel="stylesheet" href="../../../../../../../stylesheet.css" />
</head>
<body>
<div id="overview"><a href="../../../../../../../../apidocs/org/apache/chemistry/opencmis/tck/tests/basics/RepositoryInfoTest.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.tests.basics;
<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.tck.CmisTestResultStatus.FAILURE;
<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.tck.CmisTestResultStatus.OK;
<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.WARNING;
<a class="jxr_linenumber" name="24" href="#24">24</a>  
<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> java.net.HttpURLConnection;
<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> java.net.URL;
<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> java.util.Map;
<a class="jxr_linenumber" name="28" href="#28">28</a>  
<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.client.api.Session;
<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.data.AclCapabilities;
<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.data.ExtensionFeature;
<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.data.RepositoryCapabilities;
<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.data.RepositoryInfo;
<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.definitions.PermissionDefinition;
<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.enums.CmisVersion;
<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.tck.CmisTestResult;
<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.tck.impl.AbstractSessionTest;
<a class="jxr_linenumber" name="38" href="#38">38</a>  
<a class="jxr_linenumber" name="39" href="#39">39</a>  <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="40" href="#40">40</a>  <em class="jxr_javadoccomment"> * Repository info test.</em>
<a class="jxr_linenumber" name="41" href="#41">41</a>  <em class="jxr_javadoccomment"> */</em>
<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../../../org/apache/chemistry/opencmis/tck/tests/basics/RepositoryInfoTest.html">RepositoryInfoTest</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../../../../org/apache/chemistry/opencmis/tck/impl/AbstractSessionTest.html">AbstractSessionTest</a> {
<a class="jxr_linenumber" name="43" href="#43">43</a>  
<a class="jxr_linenumber" name="44" href="#44">44</a>      @Override
<a class="jxr_linenumber" name="45" href="#45">45</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> init(Map&lt;String, String&gt; parameters) {
<a class="jxr_linenumber" name="46" href="#46">46</a>          <strong class="jxr_keyword">super</strong>.init(parameters);
<a class="jxr_linenumber" name="47" href="#47">47</a>          setName(<span class="jxr_string">"Repository Info Test"</span>);
<a class="jxr_linenumber" name="48" href="#48">48</a>          setDescription(<span class="jxr_string">"Gets and checks the repository info."</span>);
<a class="jxr_linenumber" name="49" href="#49">49</a>      }
<a class="jxr_linenumber" name="50" href="#50">50</a>  
<a class="jxr_linenumber" name="51" href="#51">51</a>      @Override
<a class="jxr_linenumber" name="52" href="#52">52</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> run(Session session) {
<a class="jxr_linenumber" name="53" href="#53">53</a>          <a href="../../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> success;
<a class="jxr_linenumber" name="54" href="#54">54</a>          <a href="../../../../../../../org/apache/chemistry/opencmis/tck/CmisTestResult.html">CmisTestResult</a> failure;
<a class="jxr_linenumber" name="55" href="#55">55</a>  
<a class="jxr_linenumber" name="56" href="#56">56</a>          RepositoryInfo ri = getRepositoryInfo(session);
<a class="jxr_linenumber" name="57" href="#57">57</a>  
<a class="jxr_linenumber" name="58" href="#58">58</a>          <em class="jxr_comment">// ID</em>
<a class="jxr_linenumber" name="59" href="#59">59</a>          success = createResult(OK, <span class="jxr_string">"Repository ID: "</span> + ri.getId());
<a class="jxr_linenumber" name="60" href="#60">60</a>          failure = createResult(FAILURE, <span class="jxr_string">"Repository id is not set!"</span>, <strong class="jxr_keyword">true</strong>);
<a class="jxr_linenumber" name="61" href="#61">61</a>          addResult(assertStringNotEmpty(ri.getId(), success, failure));
<a class="jxr_linenumber" name="62" href="#62">62</a>  
<a class="jxr_linenumber" name="63" href="#63">63</a>          <em class="jxr_comment">// name</em>
<a class="jxr_linenumber" name="64" href="#64">64</a>          failure = createResult(FAILURE, <span class="jxr_string">"Repository name is not set!"</span>);
<a class="jxr_linenumber" name="65" href="#65">65</a>          addResult(assertNotNull(ri.getName(), <strong class="jxr_keyword">null</strong>, failure));
<a class="jxr_linenumber" name="66" href="#66">66</a>  
<a class="jxr_linenumber" name="67" href="#67">67</a>          success = createResult(OK, <span class="jxr_string">"Repository name: "</span> + ri.getName());
<a class="jxr_linenumber" name="68" href="#68">68</a>          failure = createResult(WARNING, <span class="jxr_string">"Repository name is empty!"</span>);
<a class="jxr_linenumber" name="69" href="#69">69</a>          addResult(assertStringNotEmpty(ri.getName(), success, failure));
<a class="jxr_linenumber" name="70" href="#70">70</a>  
<a class="jxr_linenumber" name="71" href="#71">71</a>          <em class="jxr_comment">// description</em>
<a class="jxr_linenumber" name="72" href="#72">72</a>          failure = createResult(FAILURE, <span class="jxr_string">"Repository description is not set!"</span>);
<a class="jxr_linenumber" name="73" href="#73">73</a>          addResult(assertNotNull(ri.getDescription(), <strong class="jxr_keyword">null</strong>, failure));
<a class="jxr_linenumber" name="74" href="#74">74</a>  
<a class="jxr_linenumber" name="75" href="#75">75</a>          success = createResult(OK, <span class="jxr_string">"Repository description: "</span> + ri.getDescription());
<a class="jxr_linenumber" name="76" href="#76">76</a>          failure = createResult(WARNING, <span class="jxr_string">"Repository description is empty!"</span>);
<a class="jxr_linenumber" name="77" href="#77">77</a>          addResult(assertStringNotEmpty(ri.getDescription(), success, failure));
<a class="jxr_linenumber" name="78" href="#78">78</a>  
<a class="jxr_linenumber" name="79" href="#79">79</a>          <em class="jxr_comment">// vendor</em>
<a class="jxr_linenumber" name="80" href="#80">80</a>          failure = createResult(FAILURE, <span class="jxr_string">"Vendor name is not set!"</span>);
<a class="jxr_linenumber" name="81" href="#81">81</a>          addResult(assertStringNotEmpty(ri.getVendorName(), <strong class="jxr_keyword">null</strong>, failure));
<a class="jxr_linenumber" name="82" href="#82">82</a>  
<a class="jxr_linenumber" name="83" href="#83">83</a>          success = createResult(OK, <span class="jxr_string">"Vendor name: "</span> + ri.getVendorName());
<a class="jxr_linenumber" name="84" href="#84">84</a>          failure = createResult(WARNING, <span class="jxr_string">"Vendor name is empty!"</span>);
<a class="jxr_linenumber" name="85" href="#85">85</a>          addResult(assertStringNotEmpty(ri.getVendorName(), success, failure));
<a class="jxr_linenumber" name="86" href="#86">86</a>  
<a class="jxr_linenumber" name="87" href="#87">87</a>          <em class="jxr_comment">// product name</em>
<a class="jxr_linenumber" name="88" href="#88">88</a>          failure = createResult(FAILURE, <span class="jxr_string">"Product name is not set!"</span>);
<a class="jxr_linenumber" name="89" href="#89">89</a>          addResult(assertStringNotEmpty(ri.getProductName(), <strong class="jxr_keyword">null</strong>, failure));
<a class="jxr_linenumber" name="90" href="#90">90</a>  
<a class="jxr_linenumber" name="91" href="#91">91</a>          success = createResult(OK, <span class="jxr_string">"Product name: "</span> + ri.getProductName());
<a class="jxr_linenumber" name="92" href="#92">92</a>          failure = createResult(WARNING, <span class="jxr_string">"Product name is empty!"</span>);
<a class="jxr_linenumber" name="93" href="#93">93</a>          addResult(assertStringNotEmpty(ri.getProductName(), success, failure));
<a class="jxr_linenumber" name="94" href="#94">94</a>  
<a class="jxr_linenumber" name="95" href="#95">95</a>          <em class="jxr_comment">// product version</em>
<a class="jxr_linenumber" name="96" href="#96">96</a>          failure = createResult(FAILURE, <span class="jxr_string">"Product version is not set!"</span>);
<a class="jxr_linenumber" name="97" href="#97">97</a>          addResult(assertStringNotEmpty(ri.getProductVersion(), <strong class="jxr_keyword">null</strong>, failure));
<a class="jxr_linenumber" name="98" href="#98">98</a>  
<a class="jxr_linenumber" name="99" href="#99">99</a>          success = createResult(OK, <span class="jxr_string">"Product version: "</span> + ri.getProductVersion());
<a class="jxr_linenumber" name="100" href="#100">100</a>         failure = createResult(WARNING, <span class="jxr_string">"Product version is empty!"</span>);
<a class="jxr_linenumber" name="101" href="#101">101</a>         addResult(assertStringNotEmpty(ri.getProductVersion(), success, failure));
<a class="jxr_linenumber" name="102" href="#102">102</a> 
<a class="jxr_linenumber" name="103" href="#103">103</a>         <em class="jxr_comment">// CMIS version supported</em>
<a class="jxr_linenumber" name="104" href="#104">104</a>         success = createResult(OK, <span class="jxr_string">"CMIS Version Supported: "</span> + ri.getCmisVersionSupported());
<a class="jxr_linenumber" name="105" href="#105">105</a>         failure = createResult(FAILURE, <span class="jxr_string">"CMIS Version Supported is not set!"</span>);
<a class="jxr_linenumber" name="106" href="#106">106</a>         addResult(assertStringNotEmpty(ri.getCmisVersionSupported(), success, failure));
<a class="jxr_linenumber" name="107" href="#107">107</a> 
<a class="jxr_linenumber" name="108" href="#108">108</a>         <strong class="jxr_keyword">if</strong> (!<span class="jxr_string">"1.0"</span>.equals(ri.getCmisVersionSupported()) &amp;&amp; !<span class="jxr_string">"1.1"</span>.equals(ri.getCmisVersionSupported())) {
<a class="jxr_linenumber" name="109" href="#109">109</a>             addResult(createResult(FAILURE, <span class="jxr_string">"CMIS Version Supported is neither '1.0' nor '1.1'!"</span>));
<a class="jxr_linenumber" name="110" href="#110">110</a>         }
<a class="jxr_linenumber" name="111" href="#111">111</a> 
<a class="jxr_linenumber" name="112" href="#112">112</a>         <em class="jxr_comment">// root folder</em>
<a class="jxr_linenumber" name="113" href="#113">113</a>         success = createResult(OK, <span class="jxr_string">"Root folder ID: "</span> + ri.getRootFolderId());
<a class="jxr_linenumber" name="114" href="#114">114</a>         failure = createResult(FAILURE, <span class="jxr_string">"Root folder ID is not set!"</span>);
<a class="jxr_linenumber" name="115" href="#115">115</a>         addResult(assertStringNotEmpty(ri.getRootFolderId(), success, failure));
<a class="jxr_linenumber" name="116" href="#116">116</a> 
<a class="jxr_linenumber" name="117" href="#117">117</a>         <em class="jxr_comment">// thin client URI</em>
<a class="jxr_linenumber" name="118" href="#118">118</a>         success = createResult(OK, <span class="jxr_string">"Thin client URI: "</span> + ri.getThinClientUri());
<a class="jxr_linenumber" name="119" href="#119">119</a>         failure = createResult(WARNING, <span class="jxr_string">"Thin client URI is not set!"</span>);
<a class="jxr_linenumber" name="120" href="#120">120</a>         addResult(assertStringNotEmpty(ri.getThinClientUri(), success, failure));
<a class="jxr_linenumber" name="121" href="#121">121</a> 
<a class="jxr_linenumber" name="122" href="#122">122</a>         <strong class="jxr_keyword">if</strong> (ri.getThinClientUri() != <strong class="jxr_keyword">null</strong> &amp;&amp; ri.getThinClientUri().length() &gt; 0) {
<a class="jxr_linenumber" name="123" href="#123">123</a>             <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="124" href="#124">124</a>                 HttpURLConnection conn = (HttpURLConnection) (<strong class="jxr_keyword">new</strong> URL(ri.getThinClientUri())).openConnection();
<a class="jxr_linenumber" name="125" href="#125">125</a> 
<a class="jxr_linenumber" name="126" href="#126">126</a>                 conn.connect();
<a class="jxr_linenumber" name="127" href="#127">127</a> 
<a class="jxr_linenumber" name="128" href="#128">128</a>                 <strong class="jxr_keyword">int</strong> responseCode = conn.getResponseCode();
<a class="jxr_linenumber" name="129" href="#129">129</a>                 failure = createResult(WARNING, <span class="jxr_string">"Unable to connect to thin client '"</span> + ri.getThinClientUri()
<a class="jxr_linenumber" name="130" href="#130">130</a>                         + <span class="jxr_string">"'. HTTP status code: "</span> + responseCode);
<a class="jxr_linenumber" name="131" href="#131">131</a>                 addResult(assertIsTrue(responseCode &gt;= 200 &amp;&amp; responseCode &lt; 400, <strong class="jxr_keyword">null</strong>, failure));
<a class="jxr_linenumber" name="132" href="#132">132</a> 
<a class="jxr_linenumber" name="133" href="#133">133</a>                 conn.disconnect();
<a class="jxr_linenumber" name="134" href="#134">134</a>             } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a class="jxr_linenumber" name="135" href="#135">135</a>                 addResult(createResult(WARNING, <span class="jxr_string">"Unable to connect to thin client '"</span> + ri.getThinClientUri() + <span class="jxr_string">"': "</span>
<a class="jxr_linenumber" name="136" href="#136">136</a>                         + e.getMessage(), e, false));
<a class="jxr_linenumber" name="137" href="#137">137</a>             }
<a class="jxr_linenumber" name="138" href="#138">138</a>         }
<a class="jxr_linenumber" name="139" href="#139">139</a> 
<a class="jxr_linenumber" name="140" href="#140">140</a>         <em class="jxr_comment">// principal ID anonymous</em>
<a class="jxr_linenumber" name="141" href="#141">141</a>         success = createResult(OK, <span class="jxr_string">"Principal ID anonymous: "</span> + ri.getPrincipalIdAnonymous());
<a class="jxr_linenumber" name="142" href="#142">142</a>         failure = createResult(WARNING, <span class="jxr_string">"Principal ID anonymous is not set!"</span>);
<a class="jxr_linenumber" name="143" href="#143">143</a>         addResult(assertStringNotEmpty(ri.getPrincipalIdAnonymous(), success, failure));
<a class="jxr_linenumber" name="144" href="#144">144</a> 
<a class="jxr_linenumber" name="145" href="#145">145</a>         <em class="jxr_comment">// principal ID anyone</em>
<a class="jxr_linenumber" name="146" href="#146">146</a>         success = createResult(OK, <span class="jxr_string">"Principal ID anyone: "</span> + ri.getPrincipalIdAnyone());
<a class="jxr_linenumber" name="147" href="#147">147</a>         failure = createResult(WARNING, <span class="jxr_string">"Principal Id anyone is not set!"</span>);
<a class="jxr_linenumber" name="148" href="#148">148</a>         addResult(assertStringNotEmpty(ri.getPrincipalIdAnyone(), success, failure));
<a class="jxr_linenumber" name="149" href="#149">149</a> 
<a class="jxr_linenumber" name="150" href="#150">150</a>         <em class="jxr_comment">// latest change log token</em>
<a class="jxr_linenumber" name="151" href="#151">151</a>         success = createResult(OK, <span class="jxr_string">"Latest change log token: "</span> + ri.getLatestChangeLogToken());
<a class="jxr_linenumber" name="152" href="#152">152</a>         failure = createResult(WARNING, <span class="jxr_string">"Latest change log token is not set!"</span>);
<a class="jxr_linenumber" name="153" href="#153">153</a>         addResult(assertStringNotEmpty(ri.getLatestChangeLogToken(), success, failure));
<a class="jxr_linenumber" name="154" href="#154">154</a> 
<a class="jxr_linenumber" name="155" href="#155">155</a>         <em class="jxr_comment">// changes incomplete</em>
<a class="jxr_linenumber" name="156" href="#156">156</a>         success = createResult(OK, <span class="jxr_string">"Changes Incomplete: "</span> + ri.getChangesIncomplete());
<a class="jxr_linenumber" name="157" href="#157">157</a>         failure = createResult(WARNING, <span class="jxr_string">"Changes Incomplete is not set!"</span>);
<a class="jxr_linenumber" name="158" href="#158">158</a>         addResult(assertNotNull(ri.getChangesIncomplete(), success, failure));
<a class="jxr_linenumber" name="159" href="#159">159</a> 
<a class="jxr_linenumber" name="160" href="#160">160</a>         <em class="jxr_comment">// changes on type</em>
<a class="jxr_linenumber" name="161" href="#161">161</a>         success = createResult(OK, <span class="jxr_string">"Changes on type: "</span> + ri.getChangesOnType());
<a class="jxr_linenumber" name="162" href="#162">162</a>         failure = createResult(WARNING, <span class="jxr_string">"Changes on type is not set!"</span>);
<a class="jxr_linenumber" name="163" href="#163">163</a>         addResult(assertNotNull(ri.getChangesOnType(), success, failure));
<a class="jxr_linenumber" name="164" href="#164">164</a> 
<a class="jxr_linenumber" name="165" href="#165">165</a>         <strong class="jxr_keyword">if</strong> (ri.getChangesOnType() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="166" href="#166">166</a>             failure = createResult(WARNING, <span class="jxr_string">"Changes on type has more than 4 entries!"</span>);
<a class="jxr_linenumber" name="167" href="#167">167</a>             addResult(assertIsTrue(ri.getChangesOnType().size() &lt; 5, <strong class="jxr_keyword">null</strong>, failure));
<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>         <em class="jxr_comment">// features</em>
<a class="jxr_linenumber" name="171" href="#171">171</a>         <strong class="jxr_keyword">if</strong> (ri.getCmisVersion() != CmisVersion.CMIS_1_0) {
<a class="jxr_linenumber" name="172" href="#172">172</a>             success = createResult(OK, <span class="jxr_string">"Repository features exposed."</span>);
<a class="jxr_linenumber" name="173" href="#173">173</a>             failure = createResult(OK, <span class="jxr_string">"No repository features exposed."</span>);
<a class="jxr_linenumber" name="174" href="#174">174</a>             addResult(assertNotNull(ri.getExtensionFeatures(), success, failure));
<a class="jxr_linenumber" name="175" href="#175">175</a> 
<a class="jxr_linenumber" name="176" href="#176">176</a>             <strong class="jxr_keyword">if</strong> (ri.getExtensionFeatures() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="177" href="#177">177</a>                 <strong class="jxr_keyword">for</strong> (ExtensionFeature feature : ri.getExtensionFeatures()) {
<a class="jxr_linenumber" name="178" href="#178">178</a>                     failure = createResult(FAILURE, <span class="jxr_string">"At least one repository features has no ID!"</span>);
<a class="jxr_linenumber" name="179" href="#179">179</a>                     addResult(assertStringNotEmpty(feature.getId(), <strong class="jxr_keyword">null</strong>, failure));
<a class="jxr_linenumber" name="180" href="#180">180</a>                 }
<a class="jxr_linenumber" name="181" href="#181">181</a>             }
<a class="jxr_linenumber" name="182" href="#182">182</a>         }
<a class="jxr_linenumber" name="183" href="#183">183</a> 
<a class="jxr_linenumber" name="184" href="#184">184</a>         <em class="jxr_comment">// capabilities</em>
<a class="jxr_linenumber" name="185" href="#185">185</a>         <strong class="jxr_keyword">if</strong> (ri.getCapabilities() == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="186" href="#186">186</a>             addResult(createResult(FAILURE, <span class="jxr_string">"Capabilities are not set!"</span>));
<a class="jxr_linenumber" name="187" href="#187">187</a>         } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="188" href="#188">188</a>             RepositoryCapabilities cap = ri.getCapabilities();
<a class="jxr_linenumber" name="189" href="#189">189</a> 
<a class="jxr_linenumber" name="190" href="#190">190</a>             <em class="jxr_comment">// ACL capability</em>
<a class="jxr_linenumber" name="191" href="#191">191</a>             success = createResult(OK, <span class="jxr_string">"ACL capability: "</span> + cap.getAclCapability());
<a class="jxr_linenumber" name="192" href="#192">192</a>             failure = createResult(FAILURE, <span class="jxr_string">"ACL capability is not set!"</span>);
<a class="jxr_linenumber" name="193" href="#193">193</a>             addResult(assertNotNull(cap.getAclCapability(), success, failure));
<a class="jxr_linenumber" name="194" href="#194">194</a> 
<a class="jxr_linenumber" name="195" href="#195">195</a>             <em class="jxr_comment">// changes capability</em>
<a class="jxr_linenumber" name="196" href="#196">196</a>             success = createResult(OK, <span class="jxr_string">"Changes capability: "</span> + cap.getChangesCapability());
<a class="jxr_linenumber" name="197" href="#197">197</a>             failure = createResult(WARNING, <span class="jxr_string">"Changes capability is not set!"</span>);
<a class="jxr_linenumber" name="198" href="#198">198</a>             addResult(assertNotNull(cap.getChangesCapability(), success, failure));
<a class="jxr_linenumber" name="199" href="#199">199</a> 
<a class="jxr_linenumber" name="200" href="#200">200</a>             <em class="jxr_comment">// content stream updates capability</em>
<a class="jxr_linenumber" name="201" href="#201">201</a>             success = createResult(OK, <span class="jxr_string">"Content stream updates capability: "</span> + cap.getContentStreamUpdatesCapability());
<a class="jxr_linenumber" name="202" href="#202">202</a>             failure = createResult(FAILURE, <span class="jxr_string">"Content stream updates is not set!"</span>);
<a class="jxr_linenumber" name="203" href="#203">203</a>             addResult(assertNotNull(cap.getContentStreamUpdatesCapability(), success, failure));
<a class="jxr_linenumber" name="204" href="#204">204</a> 
<a class="jxr_linenumber" name="205" href="#205">205</a>             <em class="jxr_comment">// get descendants capability</em>
<a class="jxr_linenumber" name="206" href="#206">206</a>             success = createResult(OK, <span class="jxr_string">"Get descendants capability: "</span> + cap.isGetDescendantsSupported());
<a class="jxr_linenumber" name="207" href="#207">207</a>             failure = createResult(FAILURE, <span class="jxr_string">"Get descendants capability is not set!"</span>);
<a class="jxr_linenumber" name="208" href="#208">208</a>             addResult(assertNotNull(cap.isGetDescendantsSupported(), success, failure));
<a class="jxr_linenumber" name="209" href="#209">209</a> 
<a class="jxr_linenumber" name="210" href="#210">210</a>             <em class="jxr_comment">// get folder tree capability</em>
<a class="jxr_linenumber" name="211" href="#211">211</a>             success = createResult(OK, <span class="jxr_string">"Get folder tree capability: "</span> + cap.isGetFolderTreeSupported());
<a class="jxr_linenumber" name="212" href="#212">212</a>             failure = createResult(FAILURE, <span class="jxr_string">"Get folder tree capability is not set!"</span>);
<a class="jxr_linenumber" name="213" href="#213">213</a>             addResult(assertNotNull(cap.isGetFolderTreeSupported(), success, failure));
<a class="jxr_linenumber" name="214" href="#214">214</a> 
<a class="jxr_linenumber" name="215" href="#215">215</a>             <em class="jxr_comment">// multifiling capability</em>
<a class="jxr_linenumber" name="216" href="#216">216</a>             success = createResult(OK, <span class="jxr_string">"Multifiling capability: "</span> + cap.isMultifilingSupported());
<a class="jxr_linenumber" name="217" href="#217">217</a>             failure = createResult(FAILURE, <span class="jxr_string">"Multifiling capability is not set!"</span>);
<a class="jxr_linenumber" name="218" href="#218">218</a>             addResult(assertNotNull(cap.isMultifilingSupported(), success, failure));
<a class="jxr_linenumber" name="219" href="#219">219</a> 
<a class="jxr_linenumber" name="220" href="#220">220</a>             <em class="jxr_comment">// unfiling capability</em>
<a class="jxr_linenumber" name="221" href="#221">221</a>             success = createResult(OK, <span class="jxr_string">"Unfiling capability: "</span> + cap.isUnfilingSupported());
<a class="jxr_linenumber" name="222" href="#222">222</a>             failure = createResult(FAILURE, <span class="jxr_string">"Unfiling capability is not set!"</span>);
<a class="jxr_linenumber" name="223" href="#223">223</a>             addResult(assertNotNull(cap.isUnfilingSupported(), success, failure));
<a class="jxr_linenumber" name="224" href="#224">224</a> 
<a class="jxr_linenumber" name="225" href="#225">225</a>             <em class="jxr_comment">// version specific filing capability</em>
<a class="jxr_linenumber" name="226" href="#226">226</a>             success = createResult(OK, <span class="jxr_string">"Version specific filing capability: "</span> + cap.isVersionSpecificFilingSupported());
<a class="jxr_linenumber" name="227" href="#227">227</a>             failure = createResult(FAILURE, <span class="jxr_string">"Version specific filing capability is not set!"</span>);
<a class="jxr_linenumber" name="228" href="#228">228</a>             addResult(assertNotNull(cap.isVersionSpecificFilingSupported(), success, failure));
<a class="jxr_linenumber" name="229" href="#229">229</a> 
<a class="jxr_linenumber" name="230" href="#230">230</a>             <em class="jxr_comment">// query capability</em>
<a class="jxr_linenumber" name="231" href="#231">231</a>             success = createResult(OK, <span class="jxr_string">"Query capability: "</span> + cap.getQueryCapability());
<a class="jxr_linenumber" name="232" href="#232">232</a>             failure = createResult(FAILURE, <span class="jxr_string">"Query capability is not set!"</span>);
<a class="jxr_linenumber" name="233" href="#233">233</a>             addResult(assertNotNull(cap.getQueryCapability(), success, failure));
<a class="jxr_linenumber" name="234" href="#234">234</a> 
<a class="jxr_linenumber" name="235" href="#235">235</a>             <em class="jxr_comment">// JOIN capability</em>
<a class="jxr_linenumber" name="236" href="#236">236</a>             success = createResult(OK, <span class="jxr_string">"JOIN capability: "</span> + cap.getJoinCapability());
<a class="jxr_linenumber" name="237" href="#237">237</a>             failure = createResult(FAILURE, <span class="jxr_string">"JOIN capability is not set!"</span>);
<a class="jxr_linenumber" name="238" href="#238">238</a>             addResult(assertNotNull(cap.getJoinCapability(), success, failure));
<a class="jxr_linenumber" name="239" href="#239">239</a> 
<a class="jxr_linenumber" name="240" href="#240">240</a>             <em class="jxr_comment">// all versions searchable capability</em>
<a class="jxr_linenumber" name="241" href="#241">241</a>             success = createResult(OK, <span class="jxr_string">"All versions searchable capability: "</span> + cap.isAllVersionsSearchableSupported());
<a class="jxr_linenumber" name="242" href="#242">242</a>             failure = createResult(FAILURE, <span class="jxr_string">"All versions searchable capability is not set!"</span>);
<a class="jxr_linenumber" name="243" href="#243">243</a>             addResult(assertNotNull(cap.isAllVersionsSearchableSupported(), success, failure));
<a class="jxr_linenumber" name="244" href="#244">244</a> 
<a class="jxr_linenumber" name="245" href="#245">245</a>             <em class="jxr_comment">// PWC searchable capability</em>
<a class="jxr_linenumber" name="246" href="#246">246</a>             success = createResult(OK, <span class="jxr_string">"PWC searchable capability: "</span> + cap.isPwcSearchableSupported());
<a class="jxr_linenumber" name="247" href="#247">247</a>             failure = createResult(FAILURE, <span class="jxr_string">"PWC searchable capability is not set!"</span>);
<a class="jxr_linenumber" name="248" href="#248">248</a>             addResult(assertNotNull(cap.isPwcSearchableSupported(), success, failure));
<a class="jxr_linenumber" name="249" href="#249">249</a> 
<a class="jxr_linenumber" name="250" href="#250">250</a>             <em class="jxr_comment">// PWC updatable capability</em>
<a class="jxr_linenumber" name="251" href="#251">251</a>             success = createResult(OK, <span class="jxr_string">"PWC updatable capability: "</span> + cap.isPwcUpdatableSupported());
<a class="jxr_linenumber" name="252" href="#252">252</a>             failure = createResult(FAILURE, <span class="jxr_string">"PWC updatable capability is not set!"</span>);
<a class="jxr_linenumber" name="253" href="#253">253</a>             addResult(assertNotNull(cap.isPwcUpdatableSupported(), success, failure));
<a class="jxr_linenumber" name="254" href="#254">254</a> 
<a class="jxr_linenumber" name="255" href="#255">255</a>             <em class="jxr_comment">// renditions capability</em>
<a class="jxr_linenumber" name="256" href="#256">256</a>             success = createResult(OK, <span class="jxr_string">"Renditions capability: "</span> + cap.getRenditionsCapability());
<a class="jxr_linenumber" name="257" href="#257">257</a>             failure = createResult(FAILURE, <span class="jxr_string">"Renditions capability is not set!"</span>);
<a class="jxr_linenumber" name="258" href="#258">258</a>             addResult(assertNotNull(cap.getRenditionsCapability(), success, failure));
<a class="jxr_linenumber" name="259" href="#259">259</a> 
<a class="jxr_linenumber" name="260" href="#260">260</a>             <strong class="jxr_keyword">if</strong> (ri.getCmisVersion() != CmisVersion.CMIS_1_0) {
<a class="jxr_linenumber" name="261" href="#261">261</a>                 <em class="jxr_comment">// new type settable attributes</em>
<a class="jxr_linenumber" name="262" href="#262">262</a>                 success = createResult(OK, <span class="jxr_string">"'New type settable attributes' flags are set."</span>);
<a class="jxr_linenumber" name="263" href="#263">263</a>                 failure = createResult(WARNING, <span class="jxr_string">"'New type settable attributes' flags are not set!"</span>);
<a class="jxr_linenumber" name="264" href="#264">264</a>                 addResult(assertNotNull(cap.getNewTypeSettableAttributes(), success, failure));
<a class="jxr_linenumber" name="265" href="#265">265</a> 
<a class="jxr_linenumber" name="266" href="#266">266</a>                 <em class="jxr_comment">// creatable property types</em>
<a class="jxr_linenumber" name="267" href="#267">267</a>                 success = createResult(OK, <span class="jxr_string">"'Creatable property types' flags are set."</span>);
<a class="jxr_linenumber" name="268" href="#268">268</a>                 failure = createResult(WARNING, <span class="jxr_string">"'Creatable property types' flags are not set!"</span>);
<a class="jxr_linenumber" name="269" href="#269">269</a>                 addResult(assertNotNull(cap.getCreatablePropertyTypes(), success, failure));
<a class="jxr_linenumber" name="270" href="#270">270</a>             }
<a class="jxr_linenumber" name="271" href="#271">271</a>         }
<a class="jxr_linenumber" name="272" href="#272">272</a> 
<a class="jxr_linenumber" name="273" href="#273">273</a>         <em class="jxr_comment">// ACL capabilities</em>
<a class="jxr_linenumber" name="274" href="#274">274</a>         <strong class="jxr_keyword">if</strong> (ri.getAclCapabilities() == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="275" href="#275">275</a>             addResult(createResult(WARNING, <span class="jxr_string">"ACL capabilities are not set!"</span>));
<a class="jxr_linenumber" name="276" href="#276">276</a>         } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="277" href="#277">277</a>             AclCapabilities aclCap = ri.getAclCapabilities();
<a class="jxr_linenumber" name="278" href="#278">278</a> 
<a class="jxr_linenumber" name="279" href="#279">279</a>             <em class="jxr_comment">// supported permissions</em>
<a class="jxr_linenumber" name="280" href="#280">280</a>             success = createResult(OK, <span class="jxr_string">"Supported permissions: "</span> + aclCap.getSupportedPermissions());
<a class="jxr_linenumber" name="281" href="#281">281</a>             failure = createResult(WARNING, <span class="jxr_string">"Supported permissions are not set!"</span>);
<a class="jxr_linenumber" name="282" href="#282">282</a>             addResult(assertNotNull(aclCap.getSupportedPermissions(), success, failure));
<a class="jxr_linenumber" name="283" href="#283">283</a> 
<a class="jxr_linenumber" name="284" href="#284">284</a>             <em class="jxr_comment">// ACL propagation</em>
<a class="jxr_linenumber" name="285" href="#285">285</a>             success = createResult(OK, <span class="jxr_string">"ACL propagation: "</span> + aclCap.getAclPropagation());
<a class="jxr_linenumber" name="286" href="#286">286</a>             failure = createResult(WARNING, <span class="jxr_string">"ACL propagation is not set!"</span>);
<a class="jxr_linenumber" name="287" href="#287">287</a>             addResult(assertNotNull(aclCap.getAclPropagation(), success, failure));
<a class="jxr_linenumber" name="288" href="#288">288</a> 
<a class="jxr_linenumber" name="289" href="#289">289</a>             <em class="jxr_comment">// permissions</em>
<a class="jxr_linenumber" name="290" href="#290">290</a>             success = createResult(OK, <span class="jxr_string">"Permissions: "</span>
<a class="jxr_linenumber" name="291" href="#291">291</a>                     + (aclCap.getPermissions() == <strong class="jxr_keyword">null</strong> ? <span class="jxr_string">"?"</span> : aclCap.getPermissions().size()));
<a class="jxr_linenumber" name="292" href="#292">292</a>             failure = createResult(FAILURE, <span class="jxr_string">"Permissions are not set!"</span>);
<a class="jxr_linenumber" name="293" href="#293">293</a>             addResult(assertNotNull(aclCap.getPermissions(), success, failure));
<a class="jxr_linenumber" name="294" href="#294">294</a> 
<a class="jxr_linenumber" name="295" href="#295">295</a>             <strong class="jxr_keyword">if</strong> (aclCap.getPermissions() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="296" href="#296">296</a>                 <strong class="jxr_keyword">int</strong> i = 0;
<a class="jxr_linenumber" name="297" href="#297">297</a>                 <strong class="jxr_keyword">for</strong> (PermissionDefinition permDef : aclCap.getPermissions()) {
<a class="jxr_linenumber" name="298" href="#298">298</a>                     failure = createResult(FAILURE, <span class="jxr_string">"Permission #"</span> + i + <span class="jxr_string">" is not set!"</span>);
<a class="jxr_linenumber" name="299" href="#299">299</a>                     addResult(assertNotNull(permDef, <strong class="jxr_keyword">null</strong>, failure));
<a class="jxr_linenumber" name="300" href="#300">300</a> 
<a class="jxr_linenumber" name="301" href="#301">301</a>                     <strong class="jxr_keyword">if</strong> (permDef != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="302" href="#302">302</a>                         failure = createResult(FAILURE, <span class="jxr_string">"ID of permission #"</span> + i + <span class="jxr_string">" is not set!"</span>);
<a class="jxr_linenumber" name="303" href="#303">303</a>                         addResult(assertStringNotEmpty(permDef.getId(), <strong class="jxr_keyword">null</strong>, failure));
<a class="jxr_linenumber" name="304" href="#304">304</a>                     }
<a class="jxr_linenumber" name="305" href="#305">305</a> 
<a class="jxr_linenumber" name="306" href="#306">306</a>                     i++;
<a class="jxr_linenumber" name="307" href="#307">307</a>                 }
<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_comment">// permission mapping</em>
<a class="jxr_linenumber" name="311" href="#311">311</a>             success = createResult(OK, <span class="jxr_string">"Permission mapping: "</span>
<a class="jxr_linenumber" name="312" href="#312">312</a>                     + (aclCap.getPermissionMapping() == <strong class="jxr_keyword">null</strong> ? <span class="jxr_string">"?"</span> : aclCap.getPermissionMapping().size()));
<a class="jxr_linenumber" name="313" href="#313">313</a>             failure = createResult(WARNING, <span class="jxr_string">"Permission mapping is not set!"</span>);
<a class="jxr_linenumber" name="314" href="#314">314</a>             addResult(assertNotNull(aclCap.getPermissionMapping(), success, failure));
<a class="jxr_linenumber" name="315" href="#315">315</a>         }
<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> (ri.getExtensionFeatures() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="318" href="#318">318</a>             <strong class="jxr_keyword">for</strong> (ExtensionFeature ef : ri.getExtensionFeatures()) {
<a class="jxr_linenumber" name="319" href="#319">319</a>                 success = createResult(OK, <span class="jxr_string">"Extension Feature: "</span> + ef.getId());
<a class="jxr_linenumber" name="320" href="#320">320</a>                 failure = createResult(FAILURE, <span class="jxr_string">"Extension Feature without ID!"</span>);
<a class="jxr_linenumber" name="321" href="#321">321</a>                 addResult(assertStringNotEmpty(ef.getId(), success, failure));
<a class="jxr_linenumber" name="322" href="#322">322</a> 
<a class="jxr_linenumber" name="323" href="#323">323</a>                 failure = createResult(WARNING, <span class="jxr_string">"Extension Feature without common name: "</span> + ef.getId());
<a class="jxr_linenumber" name="324" href="#324">324</a>                 addResult(assertStringNotEmpty(ef.getCommonName(), <strong class="jxr_keyword">null</strong>, failure));
<a class="jxr_linenumber" name="325" href="#325">325</a> 
<a class="jxr_linenumber" name="326" href="#326">326</a>                 failure = createResult(WARNING, <span class="jxr_string">"Extension Feature without version label: "</span> + ef.getId());
<a class="jxr_linenumber" name="327" href="#327">327</a>                 addResult(assertStringNotEmpty(ef.getVersionLabel(), <strong class="jxr_keyword">null</strong>, failure));
<a class="jxr_linenumber" name="328" href="#328">328</a> 
<a class="jxr_linenumber" name="329" href="#329">329</a>                 failure = createResult(WARNING, <span class="jxr_string">"Extension Feature without URL: "</span> + ef.getId());
<a class="jxr_linenumber" name="330" href="#330">330</a>                 addResult(assertStringNotEmpty(ef.getUrl(), <strong class="jxr_keyword">null</strong>, failure));
<a class="jxr_linenumber" name="331" href="#331">331</a>             }
<a class="jxr_linenumber" name="332" href="#332">332</a>         }
<a class="jxr_linenumber" name="333" href="#333">333</a>     }
<a class="jxr_linenumber" name="334" href="#334">334</a> }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

