<!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>ObjectServiceTest xref</title>
<link type="text/css" rel="stylesheet" href="../../../../../stylesheet.css" />
</head>
<body>
<div id="overview"><a href="../../../../../../testapidocs/org/apache/chemistry/opencmis/inmemory/ObjectServiceTest.html">View Javadoc</a></div><pre>

<a class="jxr_linenumber" name="1" href="#1">1</a>   <em class="jxr_comment">/*</em>
<a class="jxr_linenumber" name="2" href="#2">2</a>   <em class="jxr_comment"> * Licensed to the Apache Software Foundation (ASF) under one</em>
<a class="jxr_linenumber" name="3" href="#3">3</a>   <em class="jxr_comment"> * or more contributor license agreements.  See the NOTICE file</em>
<a class="jxr_linenumber" name="4" href="#4">4</a>   <em class="jxr_comment"> * distributed with this work for additional information</em>
<a class="jxr_linenumber" name="5" href="#5">5</a>   <em class="jxr_comment"> * regarding copyright ownership.  The ASF licenses this file</em>
<a class="jxr_linenumber" name="6" href="#6">6</a>   <em class="jxr_comment"> * to you under the Apache License, Version 2.0 (the</em>
<a class="jxr_linenumber" name="7" href="#7">7</a>   <em class="jxr_comment"> * "License"); you may not use this file except in compliance</em>
<a class="jxr_linenumber" name="8" href="#8">8</a>   <em class="jxr_comment"> * with the License.  You may obtain a copy of the License at</em>
<a class="jxr_linenumber" name="9" href="#9">9</a>   <em class="jxr_comment"> *</em>
<a class="jxr_linenumber" name="10" href="#10">10</a>  <em class="jxr_comment"> * <a href="http://www.apache.org/licenses/LICENSE-2.0" target="alexandria_uri">http://www.apache.org/licenses/LICENSE-2.0</a></em>
<a class="jxr_linenumber" name="11" href="#11">11</a>  <em class="jxr_comment"> *</em>
<a class="jxr_linenumber" name="12" href="#12">12</a>  <em class="jxr_comment"> * Unless required by applicable law or agreed to in writing,</em>
<a class="jxr_linenumber" name="13" href="#13">13</a>  <em class="jxr_comment"> * software distributed under the License is distributed on an</em>
<a class="jxr_linenumber" name="14" href="#14">14</a>  <em class="jxr_comment"> * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</em>
<a class="jxr_linenumber" name="15" href="#15">15</a>  <em class="jxr_comment"> * KIND, either express or implied.  See the License for the</em>
<a class="jxr_linenumber" name="16" href="#16">16</a>  <em class="jxr_comment"> * specific language governing permissions and limitations</em>
<a class="jxr_linenumber" name="17" href="#17">17</a>  <em class="jxr_comment"> * under the License.</em>
<a class="jxr_linenumber" name="18" href="#18">18</a>  <em class="jxr_comment"> */</em>
<a class="jxr_linenumber" name="19" href="#19">19</a>  <strong class="jxr_keyword">package</strong> org.apache.chemistry.opencmis.inmemory;
<a class="jxr_linenumber" name="20" href="#20">20</a>  
<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.junit.Assert.assertEquals;
<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.junit.Assert.assertFalse;
<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.junit.Assert.assertNotNull;
<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.junit.Assert.assertNull;
<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.junit.Assert.assertTrue;
<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.junit.Assert.fail;
<a class="jxr_linenumber" name="27" href="#27">27</a>  
<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> java.io.ByteArrayInputStream;
<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> java.io.ByteArrayOutputStream;
<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> java.io.InputStream;
<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> java.math.BigInteger;
<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> java.util.ArrayList;
<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> java.util.Collections;
<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> java.util.HashMap;
<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> java.util.LinkedList;
<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> java.util.List;
<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> java.util.Map;
<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> java.util.Set;
<a class="jxr_linenumber" name="40" href="#40">40</a>  
<a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.PropertyIds;
<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.data.Acl;
<a class="jxr_linenumber" name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.data.AllowableActions;
<a class="jxr_linenumber" name="44" href="#44">44</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.data.BulkUpdateObjectIdAndChangeToken;
<a class="jxr_linenumber" name="45" href="#45">45</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.data.ContentStream;
<a class="jxr_linenumber" name="46" href="#46">46</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.data.ExtensionsData;
<a class="jxr_linenumber" name="47" href="#47">47</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.data.ObjectData;
<a class="jxr_linenumber" name="48" href="#48">48</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.data.ObjectInFolderList;
<a class="jxr_linenumber" name="49" href="#49">49</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.data.ObjectParentData;
<a class="jxr_linenumber" name="50" href="#50">50</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.data.Properties;
<a class="jxr_linenumber" name="51" href="#51">51</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.data.PropertyData;
<a class="jxr_linenumber" name="52" href="#52">52</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.data.RenditionData;
<a class="jxr_linenumber" name="53" href="#53">53</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.definitions.PropertyDefinition;
<a class="jxr_linenumber" name="54" href="#54">54</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.definitions.TypeDefinition;
<a class="jxr_linenumber" name="55" href="#55">55</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.enums.Action;
<a class="jxr_linenumber" name="56" href="#56">56</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.enums.ContentStreamAllowed;
<a class="jxr_linenumber" name="57" href="#57">57</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.enums.IncludeRelationships;
<a class="jxr_linenumber" name="58" href="#58">58</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.enums.UnfileObject;
<a class="jxr_linenumber" name="59" href="#59">59</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.enums.Updatability;
<a class="jxr_linenumber" name="60" href="#60">60</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.enums.VersioningState;
<a class="jxr_linenumber" name="61" href="#61">61</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.exceptions.CmisConstraintException;
<a class="jxr_linenumber" name="62" href="#62">62</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.exceptions.CmisContentAlreadyExistsException;
<a class="jxr_linenumber" name="63" href="#63">63</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.exceptions.CmisInvalidArgumentException;
<a class="jxr_linenumber" name="64" href="#64">64</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.exceptions.CmisNameConstraintViolationException;
<a class="jxr_linenumber" name="65" href="#65">65</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.exceptions.CmisNotSupportedException;
<a class="jxr_linenumber" name="66" href="#66">66</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.exceptions.CmisObjectNotFoundException;
<a class="jxr_linenumber" name="67" href="#67">67</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.exceptions.CmisUpdateConflictException;
<a class="jxr_linenumber" name="68" href="#68">68</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.impl.dataobjects.BulkUpdateObjectIdAndChangeTokenImpl;
<a class="jxr_linenumber" name="69" href="#69">69</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.impl.dataobjects.PropertyIntegerDefinitionImpl;
<a class="jxr_linenumber" name="70" href="#70">70</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.impl.dataobjects.PropertyStringDefinitionImpl;
<a class="jxr_linenumber" name="71" href="#71">71</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.spi.Holder;
<a class="jxr_linenumber" name="72" href="#72">72</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.inmemory.storedobj.impl.ContentStreamDataImpl;
<a class="jxr_linenumber" name="73" href="#73">73</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.inmemory.storedobj.impl.DocumentImpl;
<a class="jxr_linenumber" name="74" href="#74">74</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.inmemory.types.InMemoryDocumentTypeDefinition;
<a class="jxr_linenumber" name="75" href="#75">75</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.inmemory.types.InMemoryFolderTypeDefinition;
<a class="jxr_linenumber" name="76" href="#76">76</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.inmemory.types.InMemoryItemTypeDefinition;
<a class="jxr_linenumber" name="77" href="#77">77</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.inmemory.types.InMemoryPolicyTypeDefinition;
<a class="jxr_linenumber" name="78" href="#78">78</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.inmemory.types.InMemoryRelationshipTypeDefinition;
<a class="jxr_linenumber" name="79" href="#79">79</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.inmemory.types.InMemorySecondaryTypeDefinition;
<a class="jxr_linenumber" name="80" href="#80">80</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.inmemory.types.PropertyCreationHelper;
<a class="jxr_linenumber" name="81" href="#81">81</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.util.repository.ObjectGenerator;
<a class="jxr_linenumber" name="82" href="#82">82</a>  <strong class="jxr_keyword">import</strong> org.junit.After;
<a class="jxr_linenumber" name="83" href="#83">83</a>  <strong class="jxr_keyword">import</strong> org.junit.Before;
<a class="jxr_linenumber" name="84" href="#84">84</a>  <strong class="jxr_keyword">import</strong> org.junit.Test;
<a class="jxr_linenumber" name="85" href="#85">85</a>  <strong class="jxr_keyword">import</strong> org.slf4j.Logger;
<a class="jxr_linenumber" name="86" href="#86">86</a>  <strong class="jxr_keyword">import</strong> org.slf4j.LoggerFactory;
<a class="jxr_linenumber" name="87" href="#87">87</a>  
<a class="jxr_linenumber" name="88" href="#88">88</a>  <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="89" href="#89">89</a>  <em class="jxr_javadoccomment"> * @author Jens</em>
<a class="jxr_linenumber" name="90" href="#90">90</a>  <em class="jxr_javadoccomment"> */</em>
<a class="jxr_linenumber" name="91" href="#91">91</a>  
<a class="jxr_linenumber" name="92" href="#92">92</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/chemistry/opencmis/inmemory/ObjectServiceTest.html">ObjectServiceTest</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../../org/apache/chemistry/opencmis/inmemory/AbstractServiceTest.html">AbstractServiceTest</a> {
<a class="jxr_linenumber" name="93" href="#93">93</a>  
<a class="jxr_linenumber" name="94" href="#94">94</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Logger log = LoggerFactory.getLogger(ObjectServiceTest.<strong class="jxr_keyword">class</strong>);
<a class="jxr_linenumber" name="95" href="#95">95</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TEST_FOLDER_TYPE_ID = <span class="jxr_string">"MyFolderType"</span>;
<a class="jxr_linenumber" name="96" href="#96">96</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TEST_DOCUMENT_TYPE_ID = <span class="jxr_string">"MyDocumentType"</span>;
<a class="jxr_linenumber" name="97" href="#97">97</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TEST_DOC_TYPE_WITH_DEFAULTS_ID = <span class="jxr_string">"DocumentTypeWithDefault"</span>;
<a class="jxr_linenumber" name="98" href="#98">98</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TEST_FOLDER_TYPE_WITH_DEFAULTS_ID = <span class="jxr_string">"FolderTypeWithDefault"</span>;
<a class="jxr_linenumber" name="99" href="#99">99</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TEST_FOLDER_STRING_PROP_ID = <span class="jxr_string">"MyFolderStringProp"</span>;
<a class="jxr_linenumber" name="100" href="#100">100</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TEST_DOCUMENT_STRING_PROP_ID = <span class="jxr_string">"MyDocumentStringProp"</span>;
<a class="jxr_linenumber" name="101" href="#101">101</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TEST_VERSION_DOCUMENT_TYPE_ID = <span class="jxr_string">"MyVersionedType"</span>;
<a class="jxr_linenumber" name="102" href="#102">102</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TEST_VER_PROPERTY_ID = <span class="jxr_string">"VerStringProp"</span>;
<a class="jxr_linenumber" name="103" href="#103">103</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TEST_CUSTOM_DOCUMENT_TYPE_ID = <span class="jxr_string">"MyCustomDocumentType"</span>;
<a class="jxr_linenumber" name="104" href="#104">104</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TEST_INHERITED_CUSTOM_DOCUMENT_TYPE_ID = <span class="jxr_string">"MyCustomInheritedDocType"</span>;
<a class="jxr_linenumber" name="105" href="#105">105</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TEST_CUSTOM_NO_CONTENT_TYPE_ID = <span class="jxr_string">"NoContentType"</span>;
<a class="jxr_linenumber" name="106" href="#106">106</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TEST_CUSTOM_MUST_CONTENT_TYPE_ID = <span class="jxr_string">"MustHaveContentType"</span>;
<a class="jxr_linenumber" name="107" href="#107">107</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TEST_DOCUMENT_MY_STRING_PROP_ID = <span class="jxr_string">"MyCustomDocumentStringProp"</span>;
<a class="jxr_linenumber" name="108" href="#108">108</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TEST_DOCUMENT_MY_MULTI_STRING_PROP_ID = <span class="jxr_string">"MyCustomDocumentMultiStringProp"</span>;
<a class="jxr_linenumber" name="109" href="#109">109</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TEST_DOCUMENT_MY_INT_PROP_ID = <span class="jxr_string">"MyCustomDocumentIntProp"</span>;
<a class="jxr_linenumber" name="110" href="#110">110</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TEST_DOCUMENT_MY_INT_PROP_ID_MANDATORY_DEFAULT = <span class="jxr_string">"MyCustomDocumentIntPropMandatoryDefault"</span>;
<a class="jxr_linenumber" name="111" href="#111">111</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TEST_FOLDER_MY_MULTI_STRING_PROP_ID = <span class="jxr_string">"MyCustomDocumentMultiStringProp"</span>;
<a class="jxr_linenumber" name="112" href="#112">112</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TEST_FOLDER_MY_INT_PROP_ID = <span class="jxr_string">"MyCustomDocumentIntProp"</span>;
<a class="jxr_linenumber" name="113" href="#113">113</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TEST_FOLDER_MY_INT_PROP_ID_MANDATORY_DEFAULT = <span class="jxr_string">"MyCustomDocumentIntPropMandatoryDefault"</span>;
<a class="jxr_linenumber" name="114" href="#114">114</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TEST_DOCUMENT_MY_SUB_STRING_PROP_ID = <span class="jxr_string">"MyInheritedStringProp"</span>;
<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> String TEST_DOCUMENT_MY_SUB_INT_PROP_ID = <span class="jxr_string">"MyInheritedIntProp"</span>;
<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> String TEST_ITEM_TYPE_ID = <span class="jxr_string">"MyItemType"</span>;
<a class="jxr_linenumber" name="117" href="#117">117</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String ITEM_STRING_PROP = <span class="jxr_string">"ItemStringProp"</span>;
<a class="jxr_linenumber" name="118" href="#118">118</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String DOCUMENT_TYPE_ID = InMemoryDocumentTypeDefinition.getRootDocumentType().getId();
<a class="jxr_linenumber" name="119" href="#119">119</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String DOCUMENT_ID = <span class="jxr_string">"Document_1"</span>;
<a class="jxr_linenumber" name="120" href="#120">120</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String FOLDER_TYPE_ID = InMemoryFolderTypeDefinition.getRootFolderType().getId();
<a class="jxr_linenumber" name="121" href="#121">121</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String FOLDER_ID = <span class="jxr_string">"Folder_1"</span>;
<a class="jxr_linenumber" name="122" href="#122">122</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String MY_CUSTOM_NAME = <span class="jxr_string">"My Custom Document"</span>;
<a class="jxr_linenumber" name="123" href="#123">123</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> MAX_SIZE = 100;
<a class="jxr_linenumber" name="124" href="#124">124</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String PNG = <span class="jxr_string">"image/png"</span>;
<a class="jxr_linenumber" name="125" href="#125">125</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String JPEG = <span class="jxr_string">"image/jpeg"</span>;
<a class="jxr_linenumber" name="126" href="#126">126</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String NEW_STRING_PROP_VAL = <span class="jxr_string">"My ugly string 1"</span>;
<a class="jxr_linenumber" name="127" href="#127">127</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> BigInteger NEW_INT_PROP_VAL = BigInteger.valueOf(815);
<a class="jxr_linenumber" name="128" href="#128">128</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TEST_SECONDARY_TYPE_ID = <span class="jxr_string">"MySecondaryType"</span>;
<a class="jxr_linenumber" name="129" href="#129">129</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String SECONDARY_STRING_PROP = <span class="jxr_string">"SecondaryStringProp"</span>;
<a class="jxr_linenumber" name="130" href="#130">130</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String SECONDARY_INTEGER_PROP = <span class="jxr_string">"SecondaryIntegerProp"</span>;
<a class="jxr_linenumber" name="131" href="#131">131</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String REL_STRING_PROP = <span class="jxr_string">"CrossReferenceKind"</span>;
<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 TEST_RELATION_TYPE_ID = <span class="jxr_string">"CrossReferenceType"</span>;
<a class="jxr_linenumber" name="133" href="#133">133</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TEST_RESTRICTED_RELATION_TYPE_ID = <span class="jxr_string">"RestrictedRelationType"</span>;
<a class="jxr_linenumber" name="134" href="#134">134</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TEST_POLICY_TYPE_ID = <span class="jxr_string">"AuditPolicy"</span>;
<a class="jxr_linenumber" name="135" href="#135">135</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TEST_POLICY_PROPERTY_ID = <span class="jxr_string">"AuditSettings"</span>;
<a class="jxr_linenumber" name="136" href="#136">136</a> 
<a class="jxr_linenumber" name="137" href="#137">137</a> 
<a class="jxr_linenumber" name="138" href="#138">138</a>     <a href="../../../../../org/apache/chemistry/opencmis/inmemory/ObjectCreator.html">ObjectCreator</a> fCreator;
<a class="jxr_linenumber" name="139" href="#139">139</a> 
<a class="jxr_linenumber" name="140" href="#140">140</a>     @Override
<a class="jxr_linenumber" name="141" href="#141">141</a>     @Before
<a class="jxr_linenumber" name="142" href="#142">142</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setUp() {
<a class="jxr_linenumber" name="143" href="#143">143</a>         <strong class="jxr_keyword">super</strong>.setTypeCreatorClass(ObjectTestTypeSystemCreator.<strong class="jxr_keyword">class</strong>.getName());
<a class="jxr_linenumber" name="144" href="#144">144</a>         <strong class="jxr_keyword">super</strong>.setUp();
<a class="jxr_linenumber" name="145" href="#145">145</a>         fCreator = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/chemistry/opencmis/inmemory/ObjectCreator.html">ObjectCreator</a>(fFactory, fObjSvc, fRepositoryId);
<a class="jxr_linenumber" name="146" href="#146">146</a>     }
<a class="jxr_linenumber" name="147" href="#147">147</a> 
<a class="jxr_linenumber" name="148" href="#148">148</a>     @Override
<a class="jxr_linenumber" name="149" href="#149">149</a>     @After
<a class="jxr_linenumber" name="150" href="#150">150</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> tearDown() {
<a class="jxr_linenumber" name="151" href="#151">151</a>         <strong class="jxr_keyword">super</strong>.tearDown();
<a class="jxr_linenumber" name="152" href="#152">152</a>     }
<a class="jxr_linenumber" name="153" href="#153">153</a> 
<a class="jxr_linenumber" name="154" href="#154">154</a>     @Override
<a class="jxr_linenumber" name="155" href="#155">155</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> addParameters(Map&lt;String, String&gt; parameters) {
<a class="jxr_linenumber" name="156" href="#156">156</a>         parameters.put(ConfigConstants.MAX_CONTENT_SIZE_KB, Integer.valueOf(MAX_SIZE).toString());
<a class="jxr_linenumber" name="157" href="#157">157</a>     }
<a class="jxr_linenumber" name="158" href="#158">158</a> 
<a class="jxr_linenumber" name="159" href="#159">159</a>     @Test
<a class="jxr_linenumber" name="160" href="#160">160</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testCreateDocument() {
<a class="jxr_linenumber" name="161" href="#161">161</a>         log.info(<span class="jxr_string">"starting testCreateObject() ..."</span>);
<a class="jxr_linenumber" name="162" href="#162">162</a>         String id = createDocument(fRootFolderId, false);
<a class="jxr_linenumber" name="163" href="#163">163</a>         <strong class="jxr_keyword">if</strong> (id != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="164" href="#164">164</a>             log.info(<span class="jxr_string">"createDocument succeeded with created id: "</span> + id);
<a class="jxr_linenumber" name="165" href="#165">165</a>         }
<a class="jxr_linenumber" name="166" href="#166">166</a>         log.info(<span class="jxr_string">"... testCreateObject() finished."</span>);
<a class="jxr_linenumber" name="167" href="#167">167</a> 
<a class="jxr_linenumber" name="168" href="#168">168</a>         <em class="jxr_comment">// test create a document with a folder type, should fail:</em>
<a class="jxr_linenumber" name="169" href="#169">169</a>         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="170" href="#170">170</a>             Properties props = createDocumentProperties(<span class="jxr_string">"DocumentWithAFolderType"</span>, FOLDER_TYPE_ID);
<a class="jxr_linenumber" name="171" href="#171">171</a>             id = fObjSvc.createDocument(fRepositoryId, props, fRootFolderId, <strong class="jxr_keyword">null</strong>, VersioningState.NONE, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>,
<a class="jxr_linenumber" name="172" href="#172">172</a>                     <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="173" href="#173">173</a>             assertNotNull(id);
<a class="jxr_linenumber" name="174" href="#174">174</a>             fail(<span class="jxr_string">"Creating  document with a folder type should fail."</span>);
<a class="jxr_linenumber" name="175" href="#175">175</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a class="jxr_linenumber" name="176" href="#176">176</a>             log.info(<span class="jxr_string">"Creating  document with a folder type failed as expected."</span>);
<a class="jxr_linenumber" name="177" href="#177">177</a>         }
<a class="jxr_linenumber" name="178" href="#178">178</a>         <em class="jxr_comment">// test create a document with an illegal name, should fail:</em>
<a class="jxr_linenumber" name="179" href="#179">179</a>         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="180" href="#180">180</a>             Properties props = createDocumentProperties(<span class="jxr_string">"abc (:*)"</span>, DOCUMENT_TYPE_ID);
<a class="jxr_linenumber" name="181" href="#181">181</a>             fObjSvc.createDocument(fRepositoryId, props, fRootFolderId, <strong class="jxr_keyword">null</strong>, VersioningState.NONE, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>,
<a class="jxr_linenumber" name="182" href="#182">182</a>                     <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="183" href="#183">183</a>             fail(<span class="jxr_string">"Creating  document with an illegal name should fail."</span>);
<a class="jxr_linenumber" name="184" href="#184">184</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a class="jxr_linenumber" name="185" href="#185">185</a>             assertTrue(e instanceof CmisInvalidArgumentException);
<a class="jxr_linenumber" name="186" href="#186">186</a>             log.info(<span class="jxr_string">"Creating  document with an illegal name failed as expected."</span>);
<a class="jxr_linenumber" name="187" href="#187">187</a>         }
<a class="jxr_linenumber" name="188" href="#188">188</a>     }
<a class="jxr_linenumber" name="189" href="#189">189</a> 
<a class="jxr_linenumber" name="190" href="#190">190</a>     @Test
<a class="jxr_linenumber" name="191" href="#191">191</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testCreateDocumentInvalidNames() {
<a class="jxr_linenumber" name="192" href="#192">192</a>         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="193" href="#193">193</a>             createDocumentNoCatch(<strong class="jxr_keyword">null</strong>, fRootFolderId, DOCUMENT_TYPE_ID, VersioningState.NONE, false);
<a class="jxr_linenumber" name="194" href="#194">194</a>             fail(<span class="jxr_string">"Document creation with null name should fail."</span>);
<a class="jxr_linenumber" name="195" href="#195">195</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a class="jxr_linenumber" name="196" href="#196">196</a>             assertTrue(e instanceof CmisInvalidArgumentException);
<a class="jxr_linenumber" name="197" href="#197">197</a>         }
<a class="jxr_linenumber" name="198" href="#198">198</a> 
<a class="jxr_linenumber" name="199" href="#199">199</a>         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="200" href="#200">200</a>             createDocumentNoCatch(<span class="jxr_string">""</span>, fRootFolderId, DOCUMENT_TYPE_ID, VersioningState.NONE, false);
<a class="jxr_linenumber" name="201" href="#201">201</a>             fail(<span class="jxr_string">"Document creation with empty name should fail."</span>);
<a class="jxr_linenumber" name="202" href="#202">202</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a class="jxr_linenumber" name="203" href="#203">203</a>             assertTrue(e instanceof CmisInvalidArgumentException);
<a class="jxr_linenumber" name="204" href="#204">204</a>         }
<a class="jxr_linenumber" name="205" href="#205">205</a> 
<a class="jxr_linenumber" name="206" href="#206">206</a>         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="207" href="#207">207</a>             createDocumentNoCatch(<span class="jxr_string">"/(%#$���������"</span>, fRootFolderId, DOCUMENT_TYPE_ID, VersioningState.NONE, false);
<a class="jxr_linenumber" name="208" href="#208">208</a>             fail(<span class="jxr_string">"Document creation with ilegal name should fail."</span>);
<a class="jxr_linenumber" name="209" href="#209">209</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a class="jxr_linenumber" name="210" href="#210">210</a>             assertTrue(e instanceof CmisInvalidArgumentException);
<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">try</strong> {
<a class="jxr_linenumber" name="214" href="#214">214</a>             createDocumentNoCatch(<span class="jxr_string">"DuplicatedName"</span>, fRootFolderId, DOCUMENT_TYPE_ID, VersioningState.NONE, false);
<a class="jxr_linenumber" name="215" href="#215">215</a>             createDocumentNoCatch(<span class="jxr_string">"DuplicatedName"</span>, fRootFolderId, DOCUMENT_TYPE_ID, VersioningState.NONE, false);
<a class="jxr_linenumber" name="216" href="#216">216</a>             fail(<span class="jxr_string">"Document creation with existing name should fail."</span>);
<a class="jxr_linenumber" name="217" href="#217">217</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a class="jxr_linenumber" name="218" href="#218">218</a>             assertTrue(e instanceof CmisNameConstraintViolationException);
<a class="jxr_linenumber" name="219" href="#219">219</a>         }
<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>     @Test
<a class="jxr_linenumber" name="223" href="#223">223</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testCreateFolderInvalidNames() {
<a class="jxr_linenumber" name="224" href="#224">224</a>         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="225" href="#225">225</a>             createFolderNoCatch(<strong class="jxr_keyword">null</strong>, fRootFolderId, FOLDER_TYPE_ID);
<a class="jxr_linenumber" name="226" href="#226">226</a>             fail(<span class="jxr_string">"Folder creation with null name should fail."</span>);
<a class="jxr_linenumber" name="227" href="#227">227</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a class="jxr_linenumber" name="228" href="#228">228</a>             assertTrue(e instanceof CmisInvalidArgumentException);
<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">try</strong> {
<a class="jxr_linenumber" name="232" href="#232">232</a>             createFolderNoCatch(<span class="jxr_string">""</span>, fRootFolderId, FOLDER_TYPE_ID);
<a class="jxr_linenumber" name="233" href="#233">233</a>             fail(<span class="jxr_string">"Folder creation with empty name should fail."</span>);
<a class="jxr_linenumber" name="234" href="#234">234</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a class="jxr_linenumber" name="235" href="#235">235</a>             assertTrue(e instanceof CmisInvalidArgumentException);
<a class="jxr_linenumber" name="236" href="#236">236</a>         }
<a class="jxr_linenumber" name="237" href="#237">237</a> 
<a class="jxr_linenumber" name="238" href="#238">238</a>         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="239" href="#239">239</a>             createFolderNoCatch(<span class="jxr_string">"/(%#$���������"</span>, fRootFolderId, FOLDER_TYPE_ID);
<a class="jxr_linenumber" name="240" href="#240">240</a>             fail(<span class="jxr_string">"Folder creation with ilegal name should fail."</span>);
<a class="jxr_linenumber" name="241" href="#241">241</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a class="jxr_linenumber" name="242" href="#242">242</a>             assertTrue(e instanceof CmisInvalidArgumentException);
<a class="jxr_linenumber" name="243" href="#243">243</a>         }
<a class="jxr_linenumber" name="244" href="#244">244</a> 
<a class="jxr_linenumber" name="245" href="#245">245</a>         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="246" href="#246">246</a>             createFolderNoCatch(<span class="jxr_string">"DuplicatedName"</span>, fRootFolderId, FOLDER_TYPE_ID);
<a class="jxr_linenumber" name="247" href="#247">247</a>             createFolderNoCatch(<span class="jxr_string">"DuplicatedName"</span>, fRootFolderId, FOLDER_TYPE_ID);
<a class="jxr_linenumber" name="248" href="#248">248</a>             fail(<span class="jxr_string">"Folder creation with existing name should fail."</span>);
<a class="jxr_linenumber" name="249" href="#249">249</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a class="jxr_linenumber" name="250" href="#250">250</a>             assertTrue(e instanceof CmisNameConstraintViolationException || e instanceof IllegalArgumentException);
<a class="jxr_linenumber" name="251" href="#251">251</a>         }
<a class="jxr_linenumber" name="252" href="#252">252</a>     }
<a class="jxr_linenumber" name="253" href="#253">253</a> 
<a class="jxr_linenumber" name="254" href="#254">254</a>     @Test
<a class="jxr_linenumber" name="255" href="#255">255</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testGetObject() {
<a class="jxr_linenumber" name="256" href="#256">256</a>         log.info(<span class="jxr_string">"starting testGetObject() ..."</span>);
<a class="jxr_linenumber" name="257" href="#257">257</a>         log.info(<span class="jxr_string">"  creating object"</span>);
<a class="jxr_linenumber" name="258" href="#258">258</a>         String id = createDocument(fRootFolderId, false);
<a class="jxr_linenumber" name="259" href="#259">259</a>         <strong class="jxr_keyword">if</strong> (id != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="260" href="#260">260</a>             log.info(<span class="jxr_string">"  createDocument succeeded with created id: "</span> + id);
<a class="jxr_linenumber" name="261" href="#261">261</a>         }
<a class="jxr_linenumber" name="262" href="#262">262</a> 
<a class="jxr_linenumber" name="263" href="#263">263</a>         log.info(<span class="jxr_string">"  getting object"</span>);
<a class="jxr_linenumber" name="264" href="#264">264</a>         retrieveDocument(id);
<a class="jxr_linenumber" name="265" href="#265">265</a>         log.info(<span class="jxr_string">"... testGetObject() finished."</span>);
<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>     @Test
<a class="jxr_linenumber" name="269" href="#269">269</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testGetObjectByPath() {
<a class="jxr_linenumber" name="270" href="#270">270</a>         log.info(<span class="jxr_string">"starting testGetObjectByPath() ..."</span>);
<a class="jxr_linenumber" name="271" href="#271">271</a>         log.info(<span class="jxr_string">"  creating object"</span>);
<a class="jxr_linenumber" name="272" href="#272">272</a> 
<a class="jxr_linenumber" name="273" href="#273">273</a>         <em class="jxr_comment">// create a tree for testing paths</em>
<a class="jxr_linenumber" name="274" href="#274">274</a>         String f1 = createFolder(<span class="jxr_string">"folder1"</span>, fRootFolderId, FOLDER_TYPE_ID);
<a class="jxr_linenumber" name="275" href="#275">275</a>         String f2 = createFolder(<span class="jxr_string">"folder2"</span>, fRootFolderId, FOLDER_TYPE_ID);
<a class="jxr_linenumber" name="276" href="#276">276</a>         String f3 = createFolder(<span class="jxr_string">"folder3"</span>, fRootFolderId, FOLDER_TYPE_ID);
<a class="jxr_linenumber" name="277" href="#277">277</a>         String f11 = createFolder(<span class="jxr_string">"folder1.1"</span>, f1, FOLDER_TYPE_ID);
<a class="jxr_linenumber" name="278" href="#278">278</a>         String f12 = createFolder(<span class="jxr_string">"folder1.2"</span>, f1, FOLDER_TYPE_ID);
<a class="jxr_linenumber" name="279" href="#279">279</a>         String f13 = createFolder(<span class="jxr_string">"folder1.3"</span>, f1, FOLDER_TYPE_ID);
<a class="jxr_linenumber" name="280" href="#280">280</a>         String f31 = createFolder(<span class="jxr_string">"folder3.1"</span>, f3, FOLDER_TYPE_ID);
<a class="jxr_linenumber" name="281" href="#281">281</a>         String f32 = createFolder(<span class="jxr_string">"folder3.2"</span>, f3, FOLDER_TYPE_ID);
<a class="jxr_linenumber" name="282" href="#282">282</a>         String f33 = createFolder(<span class="jxr_string">"folder3.3"</span>, f3, FOLDER_TYPE_ID);
<a class="jxr_linenumber" name="283" href="#283">283</a>         String f121 = createFolder(<span class="jxr_string">"folder1.2.1"</span>, f12, FOLDER_TYPE_ID);
<a class="jxr_linenumber" name="284" href="#284">284</a>         String f122 = createFolder(<span class="jxr_string">"folder1.2.2"</span>, f12, FOLDER_TYPE_ID);
<a class="jxr_linenumber" name="285" href="#285">285</a>         String f123 = createFolder(<span class="jxr_string">"folder1.2.3"</span>, f12, FOLDER_TYPE_ID);
<a class="jxr_linenumber" name="286" href="#286">286</a>         String f331 = createFolder(<span class="jxr_string">"folder3.3.1"</span>, f33, FOLDER_TYPE_ID);
<a class="jxr_linenumber" name="287" href="#287">287</a>         String f332 = createFolder(<span class="jxr_string">"folder3.3.2"</span>, f33, FOLDER_TYPE_ID);
<a class="jxr_linenumber" name="288" href="#288">288</a>         String f333 = createFolder(<span class="jxr_string">"folder3.3.3"</span>, f33, FOLDER_TYPE_ID);
<a class="jxr_linenumber" name="289" href="#289">289</a>         String doc12 = createDocument(<span class="jxr_string">"Document1.2.Doc"</span>, f12, false);
<a class="jxr_linenumber" name="290" href="#290">290</a>         String doc33 = createDocument(<span class="jxr_string">"Document3.3.Doc"</span>, f33, false);
<a class="jxr_linenumber" name="291" href="#291">291</a>         String doc331 = createDocument(<span class="jxr_string">"Document3.3.1.Doc"</span>, f331, false);
<a class="jxr_linenumber" name="292" href="#292">292</a>         String doc333 = createDocument(<span class="jxr_string">"Document3.3.3.Doc"</span>, f333, false);
<a class="jxr_linenumber" name="293" href="#293">293</a> 
<a class="jxr_linenumber" name="294" href="#294">294</a>         log.info(<span class="jxr_string">"  getting object by path"</span>);
<a class="jxr_linenumber" name="295" href="#295">295</a>         getByPath(f1, <span class="jxr_string">"/folder1"</span>);
<a class="jxr_linenumber" name="296" href="#296">296</a>         getByPath(f2, <span class="jxr_string">"/folder2"</span>);
<a class="jxr_linenumber" name="297" href="#297">297</a>         getByPath(f3, <span class="jxr_string">"/folder3"</span>);
<a class="jxr_linenumber" name="298" href="#298">298</a>         getByPath(f11, <span class="jxr_string">"/folder1/folder1.1"</span>);
<a class="jxr_linenumber" name="299" href="#299">299</a>         getByPath(f12, <span class="jxr_string">"/folder1/folder1.2"</span>);
<a class="jxr_linenumber" name="300" href="#300">300</a>         getByPath(f13, <span class="jxr_string">"/folder1/folder1.3"</span>);
<a class="jxr_linenumber" name="301" href="#301">301</a>         getByPath(f31, <span class="jxr_string">"/folder3/folder3.1"</span>);
<a class="jxr_linenumber" name="302" href="#302">302</a>         getByPath(f32, <span class="jxr_string">"/folder3/folder3.2"</span>);
<a class="jxr_linenumber" name="303" href="#303">303</a>         getByPath(f33, <span class="jxr_string">"/folder3/folder3.3"</span>);
<a class="jxr_linenumber" name="304" href="#304">304</a>         getByPath(f121, <span class="jxr_string">"/folder1/folder1.2/folder1.2.1"</span>);
<a class="jxr_linenumber" name="305" href="#305">305</a>         getByPath(f122, <span class="jxr_string">"/folder1/folder1.2/folder1.2.2"</span>);
<a class="jxr_linenumber" name="306" href="#306">306</a>         getByPath(f123, <span class="jxr_string">"/folder1/folder1.2/folder1.2.3"</span>);
<a class="jxr_linenumber" name="307" href="#307">307</a>         getByPath(f331, <span class="jxr_string">"/folder3/folder3.3/folder3.3.1"</span>);
<a class="jxr_linenumber" name="308" href="#308">308</a>         getByPath(f332, <span class="jxr_string">"/folder3/folder3.3/folder3.3.2"</span>);
<a class="jxr_linenumber" name="309" href="#309">309</a>         getByPath(f333, <span class="jxr_string">"/folder3/folder3.3/folder3.3.3"</span>);
<a class="jxr_linenumber" name="310" href="#310">310</a>         getByPath(doc12, <span class="jxr_string">"/folder1/folder1.2/Document1.2.Doc"</span>);
<a class="jxr_linenumber" name="311" href="#311">311</a>         getByPath(doc33, <span class="jxr_string">"/folder3/folder3.3/Document3.3.Doc"</span>);
<a class="jxr_linenumber" name="312" href="#312">312</a>         getByPath(doc331, <span class="jxr_string">"/folder3/folder3.3/folder3.3.1/Document3.3.1.Doc"</span>);
<a class="jxr_linenumber" name="313" href="#313">313</a>         getByPath(doc333, <span class="jxr_string">"/folder3/folder3.3/folder3.3.3/Document3.3.3.Doc"</span>);
<a class="jxr_linenumber" name="314" href="#314">314</a> 
<a class="jxr_linenumber" name="315" href="#315">315</a>         log.info(<span class="jxr_string">"... testGetObjectByPath() finished."</span>);
<a class="jxr_linenumber" name="316" href="#316">316</a>     }
<a class="jxr_linenumber" name="317" href="#317">317</a> 
<a class="jxr_linenumber" name="318" href="#318">318</a>     @Test
<a class="jxr_linenumber" name="319" href="#319">319</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testCreateDocumentWithContent() {
<a class="jxr_linenumber" name="320" href="#320">320</a>         log.info(<span class="jxr_string">"starting testCreateDocumentWithContent() ..."</span>);
<a class="jxr_linenumber" name="321" href="#321">321</a>         String id = createDocument(fRootFolderId, <strong class="jxr_keyword">true</strong>);
<a class="jxr_linenumber" name="322" href="#322">322</a>         <strong class="jxr_keyword">if</strong> (id != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="323" href="#323">323</a>             log.info(<span class="jxr_string">"createDocument succeeded with created id: "</span> + id);
<a class="jxr_linenumber" name="324" href="#324">324</a>         }
<a class="jxr_linenumber" name="325" href="#325">325</a> 
<a class="jxr_linenumber" name="326" href="#326">326</a>         ContentStream sd = fObjSvc.getContentStream(fRepositoryId, id, <strong class="jxr_keyword">null</strong>, BigInteger.valueOf(-1) <em class="jxr_comment">/*<em class="jxr_comment"> offset */</em>,</em>
<a class="jxr_linenumber" name="327" href="#327">327</a>                 BigInteger.valueOf(-1) <em class="jxr_comment">/*<em class="jxr_comment"> length */</em>, <strong class="jxr_keyword">null</strong>);</em>
<a class="jxr_linenumber" name="328" href="#328">328</a>         verifyContentResult(sd);
<a class="jxr_linenumber" name="329" href="#329">329</a> 
<a class="jxr_linenumber" name="330" href="#330">330</a>         <em class="jxr_comment">// delete content again</em>
<a class="jxr_linenumber" name="331" href="#331">331</a>         Holder&lt;String&gt; idHolder = <strong class="jxr_keyword">new</strong> Holder&lt;String&gt;(id);
<a class="jxr_linenumber" name="332" href="#332">332</a>         Properties props = fObjSvc.getProperties(fRepositoryId, id, PropertyIds.CHANGE_TOKEN, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="333" href="#333">333</a>         String changeToken = (String) props.getProperties().get(PropertyIds.CHANGE_TOKEN).getFirstValue();
<a class="jxr_linenumber" name="334" href="#334">334</a>         Holder&lt;String&gt; tokenHolder = <strong class="jxr_keyword">new</strong> Holder&lt;String&gt;(changeToken);
<a class="jxr_linenumber" name="335" href="#335">335</a>         fObjSvc.deleteContentStream(fRepositoryId, idHolder, tokenHolder, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="336" href="#336">336</a>         
<a class="jxr_linenumber" name="337" href="#337">337</a>         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="338" href="#338">338</a>             props = fObjSvc.getProperties(fRepositoryId, id, PropertyIds.CHANGE_TOKEN, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="339" href="#339">339</a>             changeToken = (String) props.getProperties().get(PropertyIds.CHANGE_TOKEN).getFirstValue();
<a class="jxr_linenumber" name="340" href="#340">340</a>             tokenHolder = <strong class="jxr_keyword">new</strong> Holder&lt;String&gt;(changeToken);
<a class="jxr_linenumber" name="341" href="#341">341</a>             sd = fObjSvc.getContentStream(fRepositoryId, id, <strong class="jxr_keyword">null</strong>, BigInteger.valueOf(-1) <em class="jxr_comment">/*<em class="jxr_comment"> offset */</em>, BigInteger</em>
<a class="jxr_linenumber" name="342" href="#342">342</a>                     .valueOf(-1) <em class="jxr_comment">/*<em class="jxr_comment"> length */</em>, <strong class="jxr_keyword">null</strong>);</em>
<a class="jxr_linenumber" name="343" href="#343">343</a>             fail(<span class="jxr_string">"getContentStream with non existing content should raise a CmisConstraintException"</span>);
<a class="jxr_linenumber" name="344" href="#344">344</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a class="jxr_linenumber" name="345" href="#345">345</a>             assertTrue(e instanceof CmisConstraintException);
<a class="jxr_linenumber" name="346" href="#346">346</a>         }
<a class="jxr_linenumber" name="347" href="#347">347</a>         
<a class="jxr_linenumber" name="348" href="#348">348</a>         <em class="jxr_comment">// create content again in a second call</em>
<a class="jxr_linenumber" name="349" href="#349">349</a>         ContentStream contentStream = createContent();
<a class="jxr_linenumber" name="350" href="#350">350</a>         fObjSvc.setContentStream(fRepositoryId, idHolder, <strong class="jxr_keyword">true</strong>, tokenHolder, contentStream, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="351" href="#351">351</a>         sd = fObjSvc.getContentStream(fRepositoryId, id, <strong class="jxr_keyword">null</strong>, BigInteger.valueOf(-1) <em class="jxr_comment">/*<em class="jxr_comment"> offset */</em>, BigInteger</em>
<a class="jxr_linenumber" name="352" href="#352">352</a>                 .valueOf(-1) <em class="jxr_comment">/*<em class="jxr_comment"> length */</em>, <strong class="jxr_keyword">null</strong>);</em>
<a class="jxr_linenumber" name="353" href="#353">353</a>         verifyContentResult(sd);
<a class="jxr_linenumber" name="354" href="#354">354</a> 
<a class="jxr_linenumber" name="355" href="#355">355</a>         <em class="jxr_comment">// update content and do not set overwrite flag, expect failure</em>
<a class="jxr_linenumber" name="356" href="#356">356</a>         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="357" href="#357">357</a>             props = fObjSvc.getProperties(fRepositoryId, id, PropertyIds.CHANGE_TOKEN, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="358" href="#358">358</a>             changeToken = (String) props.getProperties().get(PropertyIds.CHANGE_TOKEN).getFirstValue();
<a class="jxr_linenumber" name="359" href="#359">359</a>             tokenHolder = <strong class="jxr_keyword">new</strong> Holder&lt;String&gt;(changeToken);
<a class="jxr_linenumber" name="360" href="#360">360</a>             fObjSvc.setContentStream(fRepositoryId, idHolder, false, tokenHolder, contentStream, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="361" href="#361">361</a>             fail(<span class="jxr_string">"setContentStream with existing content and no overWriteFlag should fail"</span>);
<a class="jxr_linenumber" name="362" href="#362">362</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a class="jxr_linenumber" name="363" href="#363">363</a>             assertTrue(e instanceof CmisContentAlreadyExistsException);
<a class="jxr_linenumber" name="364" href="#364">364</a>         }
<a class="jxr_linenumber" name="365" href="#365">365</a> 
<a class="jxr_linenumber" name="366" href="#366">366</a>         <em class="jxr_comment">// cleanup</em>
<a class="jxr_linenumber" name="367" href="#367">367</a>         fObjSvc.deleteObject(fRepositoryId, id, <strong class="jxr_keyword">true</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="368" href="#368">368</a> 
<a class="jxr_linenumber" name="369" href="#369">369</a>         log.info(<span class="jxr_string">"... testCreateDocumentWithContent() finished."</span>);
<a class="jxr_linenumber" name="370" href="#370">370</a>     }
<a class="jxr_linenumber" name="371" href="#371">371</a> 
<a class="jxr_linenumber" name="372" href="#372">372</a>     @Test
<a class="jxr_linenumber" name="373" href="#373">373</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testCreateDocumentWithContentNoFileNameNoMimeType() {
<a class="jxr_linenumber" name="374" href="#374">374</a>         log.info(<span class="jxr_string">"starting testCreateDocumentWithContent() ..."</span>);
<a class="jxr_linenumber" name="375" href="#375">375</a>         ContentStreamDataImpl contentStream = <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="376" href="#376">376</a>         List&lt;String&gt; policies = <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="377" href="#377">377</a>         Acl addACEs = <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="378" href="#378">378</a>         Acl removeACEs = <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="379" href="#379">379</a>         ExtensionsData extension = <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="380" href="#380">380</a> 
<a class="jxr_linenumber" name="381" href="#381">381</a>         Properties props = createDocumentProperties(DOCUMENT_ID, DOCUMENT_TYPE_ID);
<a class="jxr_linenumber" name="382" href="#382">382</a> 
<a class="jxr_linenumber" name="383" href="#383">383</a>         contentStream = (ContentStreamDataImpl) createContent();
<a class="jxr_linenumber" name="384" href="#384">384</a>         contentStream.setFileName(<strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="385" href="#385">385</a>         contentStream.setMimeType(<strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="386" href="#386">386</a> 
<a class="jxr_linenumber" name="387" href="#387">387</a>         String id = <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="388" href="#388">388</a>         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="389" href="#389">389</a>             id = fObjSvc.createDocument(fRepositoryId, props, fRootFolderId, contentStream, VersioningState.NONE, policies,
<a class="jxr_linenumber" name="390" href="#390">390</a>                     addACEs, removeACEs, extension);
<a class="jxr_linenumber" name="391" href="#391">391</a>             <strong class="jxr_keyword">if</strong> (<strong class="jxr_keyword">null</strong> == id) {
<a class="jxr_linenumber" name="392" href="#392">392</a>                 fail(<span class="jxr_string">"createDocument failed."</span>);
<a class="jxr_linenumber" name="393" href="#393">393</a>             }
<a class="jxr_linenumber" name="394" href="#394">394</a> 
<a class="jxr_linenumber" name="395" href="#395">395</a>             ContentStream sd = fObjSvc.getContentStream(fRepositoryId, id, <strong class="jxr_keyword">null</strong>, BigInteger.valueOf(-1) <em class="jxr_comment">/*<em class="jxr_comment"> offset */</em>,</em>
<a class="jxr_linenumber" name="396" href="#396">396</a>                     BigInteger.valueOf(-1) <em class="jxr_comment">/*<em class="jxr_comment"> length */</em>, <strong class="jxr_keyword">null</strong>);</em>
<a class="jxr_linenumber" name="397" href="#397">397</a>             assertNotNull(sd.getMimeType());
<a class="jxr_linenumber" name="398" href="#398">398</a>             assertNotNull(sd.getFileName());
<a class="jxr_linenumber" name="399" href="#399">399</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a class="jxr_linenumber" name="400" href="#400">400</a>             fail(<span class="jxr_string">"createDocument() failed with exception: "</span> + e);
<a class="jxr_linenumber" name="401" href="#401">401</a>         }
<a class="jxr_linenumber" name="402" href="#402">402</a>     }
<a class="jxr_linenumber" name="403" href="#403">403</a> 
<a class="jxr_linenumber" name="404" href="#404">404</a>     @Test
<a class="jxr_linenumber" name="405" href="#405">405</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testCreateDocumentFromSource() {
<a class="jxr_linenumber" name="406" href="#406">406</a>         log.info(<span class="jxr_string">"starting testCreateDocumentFromSource() ..."</span>);
<a class="jxr_linenumber" name="407" href="#407">407</a>         <em class="jxr_comment">// create a 1st document</em>
<a class="jxr_linenumber" name="408" href="#408">408</a>         String id1 = createDocument(fRootFolderId, <strong class="jxr_keyword">true</strong>);
<a class="jxr_linenumber" name="409" href="#409">409</a>         <em class="jxr_comment">// create a second document with first as source</em>
<a class="jxr_linenumber" name="410" href="#410">410</a>         String id2 = <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="411" href="#411">411</a>         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="412" href="#412">412</a>             VersioningState versioningState = VersioningState.NONE;
<a class="jxr_linenumber" name="413" href="#413">413</a>             Properties props = createDocumentPropertiesForDocumentFromSource(<span class="jxr_string">"Document From Source"</span>);
<a class="jxr_linenumber" name="414" href="#414">414</a>             id2 = fObjSvc.createDocumentFromSource(fRepositoryId, id1, props, fRootFolderId, versioningState, <strong class="jxr_keyword">null</strong>,
<a class="jxr_linenumber" name="415" href="#415">415</a>                     <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="416" href="#416">416</a>             <strong class="jxr_keyword">if</strong> (<strong class="jxr_keyword">null</strong> == id2) {
<a class="jxr_linenumber" name="417" href="#417">417</a>                 fail(<span class="jxr_string">"createDocumentFromSource failed."</span>);
<a class="jxr_linenumber" name="418" href="#418">418</a>             }
<a class="jxr_linenumber" name="419" href="#419">419</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a class="jxr_linenumber" name="420" href="#420">420</a>             fail(<span class="jxr_string">"createDocumentFromSource() failed with exception: "</span> + e);
<a class="jxr_linenumber" name="421" href="#421">421</a>         }
<a class="jxr_linenumber" name="422" href="#422">422</a> 
<a class="jxr_linenumber" name="423" href="#423">423</a>         <em class="jxr_comment">// get content from second document and compare it with original one</em>
<a class="jxr_linenumber" name="424" href="#424">424</a>         ContentStream sd = fObjSvc.getContentStream(fRepositoryId, id2, <strong class="jxr_keyword">null</strong>, BigInteger.valueOf(-1) <em class="jxr_comment">/*<em class="jxr_comment"> offset */</em>,</em>
<a class="jxr_linenumber" name="425" href="#425">425</a>                 BigInteger.valueOf(-1) <em class="jxr_comment">/*<em class="jxr_comment"> length */</em>, <strong class="jxr_keyword">null</strong>);</em>
<a class="jxr_linenumber" name="426" href="#426">426</a>         verifyContentResult(sd);
<a class="jxr_linenumber" name="427" href="#427">427</a> 
<a class="jxr_linenumber" name="428" href="#428">428</a>         <em class="jxr_comment">// cleanup</em>
<a class="jxr_linenumber" name="429" href="#429">429</a>         fObjSvc.deleteObject(fRepositoryId, id1, <strong class="jxr_keyword">true</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="430" href="#430">430</a>         fObjSvc.deleteObject(fRepositoryId, id2, <strong class="jxr_keyword">true</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="431" href="#431">431</a> 
<a class="jxr_linenumber" name="432" href="#432">432</a>         log.info(<span class="jxr_string">"... testCreateDocumentFromSource() finished."</span>);
<a class="jxr_linenumber" name="433" href="#433">433</a>     }
<a class="jxr_linenumber" name="434" href="#434">434</a> 
<a class="jxr_linenumber" name="435" href="#435">435</a>     @Test
<a class="jxr_linenumber" name="436" href="#436">436</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testCreatedDocumentInherited() {
<a class="jxr_linenumber" name="437" href="#437">437</a>         log.info(<span class="jxr_string">"starting testCreatedDocumentInherited() ..."</span>);
<a class="jxr_linenumber" name="438" href="#438">438</a>         log.info(<span class="jxr_string">"  creating object"</span>);
<a class="jxr_linenumber" name="439" href="#439">439</a> 
<a class="jxr_linenumber" name="440" href="#440">440</a>         String id = createDocumentInheritedProperties(fRootFolderId, false);
<a class="jxr_linenumber" name="441" href="#441">441</a>         <strong class="jxr_keyword">if</strong> (id != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="442" href="#442">442</a>             log.info(<span class="jxr_string">"  createDocument succeeded with created id: "</span> + id);
<a class="jxr_linenumber" name="443" href="#443">443</a>         }
<a class="jxr_linenumber" name="444" href="#444">444</a> 
<a class="jxr_linenumber" name="445" href="#445">445</a>         log.info(<span class="jxr_string">"  getting object"</span>);
<a class="jxr_linenumber" name="446" href="#446">446</a>         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="447" href="#447">447</a>             ObjectData res = fObjSvc.getObject(fRepositoryId, id, <span class="jxr_string">"*"</span>, false, IncludeRelationships.NONE, <strong class="jxr_keyword">null</strong>, false,
<a class="jxr_linenumber" name="448" href="#448">448</a>                     false, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="449" href="#449">449</a>             assertNotNull(res);
<a class="jxr_linenumber" name="450" href="#450">450</a> 
<a class="jxr_linenumber" name="451" href="#451">451</a>             String returnedId = res.getId();
<a class="jxr_linenumber" name="452" href="#452">452</a>             assertEquals(id, returnedId);
<a class="jxr_linenumber" name="453" href="#453">453</a>             Map&lt;String, PropertyData&lt;?&gt;&gt; props = res.getProperties().getProperties();
<a class="jxr_linenumber" name="454" href="#454">454</a>             <strong class="jxr_keyword">for</strong> (PropertyData&lt;?&gt; pd : props.values()) {
<a class="jxr_linenumber" name="455" href="#455">455</a>                 log.info(<span class="jxr_string">"return property id: "</span> + pd.getId() + <span class="jxr_string">", value: "</span> + pd.getValues());
<a class="jxr_linenumber" name="456" href="#456">456</a>             }
<a class="jxr_linenumber" name="457" href="#457">457</a> 
<a class="jxr_linenumber" name="458" href="#458">458</a>             PropertyData&lt;?&gt; pd = props.get(PropertyIds.NAME);
<a class="jxr_linenumber" name="459" href="#459">459</a>             assertNotNull(pd);
<a class="jxr_linenumber" name="460" href="#460">460</a>             assertEquals(MY_CUSTOM_NAME, pd.getFirstValue());
<a class="jxr_linenumber" name="461" href="#461">461</a> 
<a class="jxr_linenumber" name="462" href="#462">462</a>             pd = props.get(PropertyIds.OBJECT_TYPE_ID);
<a class="jxr_linenumber" name="463" href="#463">463</a>             assertEquals(TEST_INHERITED_CUSTOM_DOCUMENT_TYPE_ID, pd.getFirstValue());
<a class="jxr_linenumber" name="464" href="#464">464</a> 
<a class="jxr_linenumber" name="465" href="#465">465</a>             pd = props.get(TEST_DOCUMENT_MY_STRING_PROP_ID);
<a class="jxr_linenumber" name="466" href="#466">466</a>             assertEquals(<span class="jxr_string">"My pretty string"</span>, pd.getFirstValue());
<a class="jxr_linenumber" name="467" href="#467">467</a> 
<a class="jxr_linenumber" name="468" href="#468">468</a>             pd = props.get(TEST_DOCUMENT_MY_INT_PROP_ID);
<a class="jxr_linenumber" name="469" href="#469">469</a>             assertEquals(BigInteger.valueOf(4711), pd.getFirstValue());
<a class="jxr_linenumber" name="470" href="#470">470</a> 
<a class="jxr_linenumber" name="471" href="#471">471</a>             pd = props.get(TEST_DOCUMENT_MY_SUB_STRING_PROP_ID);
<a class="jxr_linenumber" name="472" href="#472">472</a>             assertEquals(<span class="jxr_string">"another cool string"</span>, pd.getFirstValue());
<a class="jxr_linenumber" name="473" href="#473">473</a> 
<a class="jxr_linenumber" name="474" href="#474">474</a>             pd = props.get(TEST_DOCUMENT_MY_SUB_INT_PROP_ID);
<a class="jxr_linenumber" name="475" href="#475">475</a>             assertEquals(BigInteger.valueOf(4712), pd.getFirstValue());
<a class="jxr_linenumber" name="476" href="#476">476</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a class="jxr_linenumber" name="477" href="#477">477</a>             fail(<span class="jxr_string">"getObject() failed with exception: "</span> + e);
<a class="jxr_linenumber" name="478" href="#478">478</a>         }
<a class="jxr_linenumber" name="479" href="#479">479</a>         log.info(<span class="jxr_string">"... testCreatedDocumentInherited() finished."</span>);
<a class="jxr_linenumber" name="480" href="#480">480</a>     }
<a class="jxr_linenumber" name="481" href="#481">481</a> 
<a class="jxr_linenumber" name="482" href="#482">482</a>     @Test
<a class="jxr_linenumber" name="483" href="#483">483</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testBuildFolderAndDocuments() {
<a class="jxr_linenumber" name="484" href="#484">484</a>         <em class="jxr_comment">// Create a hierarchy of folders and fill it with some documents</em>
<a class="jxr_linenumber" name="485" href="#485">485</a> 
<a class="jxr_linenumber" name="486" href="#486">486</a>         ObjectGenerator gen = <strong class="jxr_keyword">new</strong> ObjectGenerator(fFactory, fNavSvc, fObjSvc, fRepSvc, fRepositoryId,
<a class="jxr_linenumber" name="487" href="#487">487</a>                 ObjectGenerator.CONTENT_KIND.LoremIpsumText);
<a class="jxr_linenumber" name="488" href="#488">488</a>         <strong class="jxr_keyword">int</strong> levels = 2; <em class="jxr_comment">// create a hierarchy with two levels</em>
<a class="jxr_linenumber" name="489" href="#489">489</a>         <strong class="jxr_keyword">int</strong> childrenPerLevel = 2; <em class="jxr_comment">// create two folders on each level</em>
<a class="jxr_linenumber" name="490" href="#490">490</a> 
<a class="jxr_linenumber" name="491" href="#491">491</a>         gen.setNumberOfDocumentsToCreatePerFolder(1); <em class="jxr_comment">// create one document in</em>
<a class="jxr_linenumber" name="492" href="#492">492</a>         <em class="jxr_comment">// each folder</em>
<a class="jxr_linenumber" name="493" href="#493">493</a> 
<a class="jxr_linenumber" name="494" href="#494">494</a>         <em class="jxr_comment">// Set the type id for all created documents:</em>
<a class="jxr_linenumber" name="495" href="#495">495</a>         gen.setDocumentTypeId(TEST_DOCUMENT_TYPE_ID);
<a class="jxr_linenumber" name="496" href="#496">496</a> 
<a class="jxr_linenumber" name="497" href="#497">497</a>         <em class="jxr_comment">// Set the type id for all created folders:</em>
<a class="jxr_linenumber" name="498" href="#498">498</a>         gen.setFolderTypeId(TEST_FOLDER_TYPE_ID);
<a class="jxr_linenumber" name="499" href="#499">499</a> 
<a class="jxr_linenumber" name="500" href="#500">500</a>         <em class="jxr_comment">// set the properties the generator should fill with values for</em>
<a class="jxr_linenumber" name="501" href="#501">501</a>         <em class="jxr_comment">// documents:</em>
<a class="jxr_linenumber" name="502" href="#502">502</a>         <em class="jxr_comment">// Note: must be valid properties in type TEST_DOCUMENT_TYPE_ID</em>
<a class="jxr_linenumber" name="503" href="#503">503</a>         List&lt;String&gt; propsToSet = <strong class="jxr_keyword">new</strong> ArrayList&lt;String&gt;();
<a class="jxr_linenumber" name="504" href="#504">504</a>         propsToSet.add(TEST_DOCUMENT_STRING_PROP_ID);
<a class="jxr_linenumber" name="505" href="#505">505</a>         gen.setDocumentPropertiesToGenerate(propsToSet);
<a class="jxr_linenumber" name="506" href="#506">506</a> 
<a class="jxr_linenumber" name="507" href="#507">507</a>         <em class="jxr_comment">// set the properties the generator should fill with values for folders:</em>
<a class="jxr_linenumber" name="508" href="#508">508</a>         <em class="jxr_comment">// Note: must be valid properties in type TEST_FOLDER_TYPE_ID</em>
<a class="jxr_linenumber" name="509" href="#509">509</a>         propsToSet = <strong class="jxr_keyword">new</strong> ArrayList&lt;String&gt;();
<a class="jxr_linenumber" name="510" href="#510">510</a>         propsToSet.add(TEST_FOLDER_STRING_PROP_ID);
<a class="jxr_linenumber" name="511" href="#511">511</a>         gen.setFolderPropertiesToGenerate(propsToSet);
<a class="jxr_linenumber" name="512" href="#512">512</a> 
<a class="jxr_linenumber" name="513" href="#513">513</a>         <em class="jxr_comment">// Build the tree</em>
<a class="jxr_linenumber" name="514" href="#514">514</a>         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="515" href="#515">515</a>             gen.createFolderHierachy(levels, childrenPerLevel, fRootFolderId);
<a class="jxr_linenumber" name="516" href="#516">516</a>             <em class="jxr_comment">// Dump the tree</em>
<a class="jxr_linenumber" name="517" href="#517">517</a>             gen.dumpFolder(fRootFolderId, <span class="jxr_string">"*"</span>);
<a class="jxr_linenumber" name="518" href="#518">518</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a class="jxr_linenumber" name="519" href="#519">519</a>             fail(<span class="jxr_string">"Could not create folder hierarchy with documents. "</span> + e);
<a class="jxr_linenumber" name="520" href="#520">520</a>         }
<a class="jxr_linenumber" name="521" href="#521">521</a>     }
<a class="jxr_linenumber" name="522" href="#522">522</a> 
<a class="jxr_linenumber" name="523" href="#523">523</a>     @Test
<a class="jxr_linenumber" name="524" href="#524">524</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testDeleteObject() {
<a class="jxr_linenumber" name="525" href="#525">525</a>         log.info(<span class="jxr_string">"starting testDeleteObject() ..."</span>);
<a class="jxr_linenumber" name="526" href="#526">526</a>         log.info(<span class="jxr_string">"Testing to delete a document"</span>);
<a class="jxr_linenumber" name="527" href="#527">527</a>         log.info(<span class="jxr_string">"  creating object"</span>);
<a class="jxr_linenumber" name="528" href="#528">528</a>         String id = createDocument(fRootFolderId, false);
<a class="jxr_linenumber" name="529" href="#529">529</a>         <strong class="jxr_keyword">if</strong> (id != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="530" href="#530">530</a>             log.info(<span class="jxr_string">"  createDocument succeeded with created id: "</span> + id);
<a class="jxr_linenumber" name="531" href="#531">531</a>         }
<a class="jxr_linenumber" name="532" href="#532">532</a> 
<a class="jxr_linenumber" name="533" href="#533">533</a>         log.info(<span class="jxr_string">"  getting object"</span>);
<a class="jxr_linenumber" name="534" href="#534">534</a>         retrieveDocument(id);
<a class="jxr_linenumber" name="535" href="#535">535</a>         log.info(<span class="jxr_string">"  deleting object"</span>);
<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>             fObjSvc.deleteObject(fRepositoryId, id, <strong class="jxr_keyword">true</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="538" href="#538">538</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a class="jxr_linenumber" name="539" href="#539">539</a>             fail(<span class="jxr_string">"deleteObject() for document failed with exception: "</span> + e);
<a class="jxr_linenumber" name="540" href="#540">540</a>         }
<a class="jxr_linenumber" name="541" href="#541">541</a> 
<a class="jxr_linenumber" name="542" href="#542">542</a>         <em class="jxr_comment">// check that it does not exist anymore</em>
<a class="jxr_linenumber" name="543" href="#543">543</a>         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="544" href="#544">544</a>             fObjSvc.getObject(fRepositoryId, id, <span class="jxr_string">"*"</span>, false, IncludeRelationships.NONE, <strong class="jxr_keyword">null</strong>, false, false, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="545" href="#545">545</a>             fail(<span class="jxr_string">"object should not longer exist after it was deleted."</span>);
<a class="jxr_linenumber" name="546" href="#546">546</a>         } <strong class="jxr_keyword">catch</strong> (CmisObjectNotFoundException e) {
<a class="jxr_linenumber" name="547" href="#547">547</a>             assertTrue(e instanceof CmisObjectNotFoundException);
<a class="jxr_linenumber" name="548" href="#548">548</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a class="jxr_linenumber" name="549" href="#549">549</a>             fail(<span class="jxr_string">"getting deleted object should raise CMISObjectNotFoundException, but got "</span> + e);
<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>         log.info(<span class="jxr_string">"Testing to delete an empty folder"</span>);
<a class="jxr_linenumber" name="553" href="#553">553</a>         <em class="jxr_comment">// create and delete an empty folder</em>
<a class="jxr_linenumber" name="554" href="#554">554</a>         id = createFolder();
<a class="jxr_linenumber" name="555" href="#555">555</a>         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="556" href="#556">556</a>             fObjSvc.deleteObject(fRepositoryId, id, <strong class="jxr_keyword">true</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="557" href="#557">557</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a class="jxr_linenumber" name="558" href="#558">558</a>             fail(<span class="jxr_string">"deleteObject() for folder failed with exception: "</span> + e);
<a class="jxr_linenumber" name="559" href="#559">559</a>         }
<a class="jxr_linenumber" name="560" href="#560">560</a>         <em class="jxr_comment">// check that it does not exist anymore</em>
<a class="jxr_linenumber" name="561" href="#561">561</a>         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="562" href="#562">562</a>             fObjSvc.getObject(fRepositoryId, id, <span class="jxr_string">"*"</span>, false, IncludeRelationships.NONE, <strong class="jxr_keyword">null</strong>, false, false, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="563" href="#563">563</a>             fail(<span class="jxr_string">"object should not longer exist after it was deleted."</span>);
<a class="jxr_linenumber" name="564" href="#564">564</a>         } <strong class="jxr_keyword">catch</strong> (CmisObjectNotFoundException e) {
<a class="jxr_linenumber" name="565" href="#565">565</a>             assertTrue(e instanceof CmisObjectNotFoundException);
<a class="jxr_linenumber" name="566" href="#566">566</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a class="jxr_linenumber" name="567" href="#567">567</a>             fail(<span class="jxr_string">"getting deleted object should raise CMISObjectNotFoundException, but got "</span> + e);
<a class="jxr_linenumber" name="568" href="#568">568</a>         }
<a class="jxr_linenumber" name="569" href="#569">569</a> 
<a class="jxr_linenumber" name="570" href="#570">570</a>         <em class="jxr_comment">// create a folder with a document and delete should fail</em>
<a class="jxr_linenumber" name="571" href="#571">571</a>         <em class="jxr_comment">// create and delete an empty folder</em>
<a class="jxr_linenumber" name="572" href="#572">572</a>         log.info(<span class="jxr_string">"Testing to delete a folder with a contained document"</span>);
<a class="jxr_linenumber" name="573" href="#573">573</a>         String folderId;
<a class="jxr_linenumber" name="574" href="#574">574</a>         folderId = createFolder();
<a class="jxr_linenumber" name="575" href="#575">575</a>         id = createDocument(folderId, false);
<a class="jxr_linenumber" name="576" href="#576">576</a> 
<a class="jxr_linenumber" name="577" href="#577">577</a>         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="578" href="#578">578</a>             fObjSvc.deleteObject(fRepositoryId, folderId, <strong class="jxr_keyword">true</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="579" href="#579">579</a>             fail(<span class="jxr_string">"deleteObject() for folder with a document should fail."</span>);
<a class="jxr_linenumber" name="580" href="#580">580</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a class="jxr_linenumber" name="581" href="#581">581</a>             assertTrue(e instanceof CmisConstraintException);
<a class="jxr_linenumber" name="582" href="#582">582</a>         }
<a class="jxr_linenumber" name="583" href="#583">583</a>         <em class="jxr_comment">// should succeed if we first delete document then folder</em>
<a class="jxr_linenumber" name="584" href="#584">584</a>         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="585" href="#585">585</a>             fObjSvc.deleteObject(fRepositoryId, id, <strong class="jxr_keyword">true</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="586" href="#586">586</a>             fObjSvc.deleteObject(fRepositoryId, folderId, <strong class="jxr_keyword">true</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="587" href="#587">587</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a class="jxr_linenumber" name="588" href="#588">588</a>             fail(<span class="jxr_string">"deleteObject() for document and folder failed with exception: "</span> + e);
<a class="jxr_linenumber" name="589" href="#589">589</a>         }
<a class="jxr_linenumber" name="590" href="#590">590</a>         <em class="jxr_comment">// check that it does not exist anymore</em>
<a class="jxr_linenumber" name="591" href="#591">591</a>         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="592" href="#592">592</a>             fObjSvc.getObject(fRepositoryId, id, <span class="jxr_string">"*"</span>, false, IncludeRelationships.NONE, <strong class="jxr_keyword">null</strong>, false, false, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="593" href="#593">593</a>             fail(<span class="jxr_string">"object should not longer exist after it was deleted."</span>);
<a class="jxr_linenumber" name="594" href="#594">594</a>         } <strong class="jxr_keyword">catch</strong> (CmisObjectNotFoundException e) {
<a class="jxr_linenumber" name="595" href="#595">595</a>             assertTrue(e instanceof CmisObjectNotFoundException);
<a class="jxr_linenumber" name="596" href="#596">596</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a class="jxr_linenumber" name="597" href="#597">597</a>             fail(<span class="jxr_string">"getting deleted object should raise CMISObjectNotFoundException, but got "</span> + e);
<a class="jxr_linenumber" name="598" href="#598">598</a>         }
<a class="jxr_linenumber" name="599" href="#599">599</a>         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="600" href="#600">600</a>             fObjSvc.getObject(fRepositoryId, folderId, <span class="jxr_string">"*"</span>, false, IncludeRelationships.NONE, <strong class="jxr_keyword">null</strong>, false, false, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="601" href="#601">601</a>             fail(<span class="jxr_string">"object should not longer exist after it was deleted."</span>);
<a class="jxr_linenumber" name="602" href="#602">602</a>         } <strong class="jxr_keyword">catch</strong> (CmisObjectNotFoundException e) {
<a class="jxr_linenumber" name="603" href="#603">603</a>             assertTrue(e instanceof CmisObjectNotFoundException);
<a class="jxr_linenumber" name="604" href="#604">604</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a class="jxr_linenumber" name="605" href="#605">605</a>             fail(<span class="jxr_string">"getting deleted object should raise CMISObjectNotFoundException, but got "</span> + e);
<a class="jxr_linenumber" name="606" href="#606">606</a>         }
<a class="jxr_linenumber" name="607" href="#607">607</a>         log.info(<span class="jxr_string">"... testDeleteObject() finished."</span>);
<a class="jxr_linenumber" name="608" href="#608">608</a>     }
<a class="jxr_linenumber" name="609" href="#609">609</a> 
<a class="jxr_linenumber" name="610" href="#610">610</a>     @Test
<a class="jxr_linenumber" name="611" href="#611">611</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testDeleteTree() {
<a class="jxr_linenumber" name="612" href="#612">612</a>         log.info(<span class="jxr_string">"starting testDeleteTree() ..."</span>);
<a class="jxr_linenumber" name="613" href="#613">613</a>         ObjectGenerator gen = <strong class="jxr_keyword">new</strong> ObjectGenerator(fFactory, fNavSvc, fObjSvc, fRepSvc, fRepositoryId,
<a class="jxr_linenumber" name="614" href="#614">614</a>                 ObjectGenerator.CONTENT_KIND.LoremIpsumText);
<a class="jxr_linenumber" name="615" href="#615">615</a>         String rootFolderId = createFolder();
<a class="jxr_linenumber" name="616" href="#616">616</a>         <em class="jxr_comment">// Set the type id for all created documents:</em>
<a class="jxr_linenumber" name="617" href="#617">617</a>         gen.setDocumentTypeId(InMemoryDocumentTypeDefinition.getRootDocumentType().getId());
<a class="jxr_linenumber" name="618" href="#618">618</a>         <em class="jxr_comment">// Set the type id for all created folders:</em>
<a class="jxr_linenumber" name="619" href="#619">619</a>         gen.setFolderTypeId(InMemoryFolderTypeDefinition.getRootFolderType().getId());
<a class="jxr_linenumber" name="620" href="#620">620</a>         gen.setNumberOfDocumentsToCreatePerFolder(2); <em class="jxr_comment">// create two documents in</em>
<a class="jxr_linenumber" name="621" href="#621">621</a>         <em class="jxr_comment">// each folder</em>
<a class="jxr_linenumber" name="622" href="#622">622</a>         gen.createFolderHierachy(1, 1, rootFolderId);
<a class="jxr_linenumber" name="623" href="#623">623</a>         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="624" href="#624">624</a>             fObjSvc.deleteTree(fRepositoryId, rootFolderId, <strong class="jxr_keyword">null</strong> <em class="jxr_comment">/*<em class="jxr_comment"> true */</em>, UnfileObject.DELETE, <strong class="jxr_keyword">true</strong>, <strong class="jxr_keyword">null</strong>);</em>
<a class="jxr_linenumber" name="625" href="#625">625</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a class="jxr_linenumber" name="626" href="#626">626</a>             fail(<span class="jxr_string">"deleteTree failed unexpected. "</span> + e);
<a class="jxr_linenumber" name="627" href="#627">627</a>         }
<a class="jxr_linenumber" name="628" href="#628">628</a>         log.info(<span class="jxr_string">"Dumping folder, should only contain one empty folder under root"</span>);
<a class="jxr_linenumber" name="629" href="#629">629</a>         gen.dumpFolder(fRootFolderId, <span class="jxr_string">"*"</span>);
<a class="jxr_linenumber" name="630" href="#630">630</a> 
<a class="jxr_linenumber" name="631" href="#631">631</a>         <em class="jxr_comment">// After that we should be not be able to get the root folder, because</em>
<a class="jxr_linenumber" name="632" href="#632">632</a>         <em class="jxr_comment">// it should be deleted</em>
<a class="jxr_linenumber" name="633" href="#633">633</a>         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="634" href="#634">634</a>             fObjSvc.getObject(fRepositoryId, rootFolderId, <span class="jxr_string">"*"</span>, false, IncludeRelationships.NONE, <strong class="jxr_keyword">null</strong>, false, false,
<a class="jxr_linenumber" name="635" href="#635">635</a>                     <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="636" href="#636">636</a>             fail(<span class="jxr_string">"object should not longer exist after it was deleted."</span>);
<a class="jxr_linenumber" name="637" href="#637">637</a>         } <strong class="jxr_keyword">catch</strong> (CmisObjectNotFoundException e) {
<a class="jxr_linenumber" name="638" href="#638">638</a>             assertTrue(e instanceof CmisObjectNotFoundException);
<a class="jxr_linenumber" name="639" href="#639">639</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a class="jxr_linenumber" name="640" href="#640">640</a>             fail(<span class="jxr_string">"getting deleted object should raise CMISObjectNotFoundException, but got "</span> + e);
<a class="jxr_linenumber" name="641" href="#641">641</a>         }
<a class="jxr_linenumber" name="642" href="#642">642</a>         log.info(<span class="jxr_string">"... testDeleteTree() finished."</span>);
<a class="jxr_linenumber" name="643" href="#643">643</a>     }
<a class="jxr_linenumber" name="644" href="#644">644</a> 
<a class="jxr_linenumber" name="645" href="#645">645</a>     @Test
<a class="jxr_linenumber" name="646" href="#646">646</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testMoveFolder() {
<a class="jxr_linenumber" name="647" href="#647">647</a>         log.info(<span class="jxr_string">"starting testMoveFolder() ..."</span>);
<a class="jxr_linenumber" name="648" href="#648">648</a>         moveObjectTest(<strong class="jxr_keyword">true</strong>);
<a class="jxr_linenumber" name="649" href="#649">649</a>         log.info(<span class="jxr_string">"... testMoveFolder() finished."</span>);
<a class="jxr_linenumber" name="650" href="#650">650</a>     }
<a class="jxr_linenumber" name="651" href="#651">651</a> 
<a class="jxr_linenumber" name="652" href="#652">652</a>     @Test
<a class="jxr_linenumber" name="653" href="#653">653</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testMoveDocument() {
<a class="jxr_linenumber" name="654" href="#654">654</a>         log.info(<span class="jxr_string">"starting testMoveDocument() ..."</span>);
<a class="jxr_linenumber" name="655" href="#655">655</a>         moveObjectTest(false);
<a class="jxr_linenumber" name="656" href="#656">656</a>         log.info(<span class="jxr_string">"... testMoveDocument() finished."</span>);
<a class="jxr_linenumber" name="657" href="#657">657</a>     }
<a class="jxr_linenumber" name="658" href="#658">658</a> 
<a class="jxr_linenumber" name="659" href="#659">659</a>     @Test
<a class="jxr_linenumber" name="660" href="#660">660</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testUpdateProperties() {
<a class="jxr_linenumber" name="661" href="#661">661</a>         log.info(<span class="jxr_string">"starting testUpdateProperties() ..."</span>);
<a class="jxr_linenumber" name="662" href="#662">662</a>         String oldChangeToken, newChangeToken;
<a class="jxr_linenumber" name="663" href="#663">663</a>         String id = createDocumentWithCustomType(MY_CUSTOM_NAME, fRootFolderId, false);
<a class="jxr_linenumber" name="664" href="#664">664</a>         <strong class="jxr_keyword">if</strong> (id != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="665" href="#665">665</a>             log.info(<span class="jxr_string">"createDocument succeeded with created id: "</span> + id);
<a class="jxr_linenumber" name="666" href="#666">666</a>         }
<a class="jxr_linenumber" name="667" href="#667">667</a> 
<a class="jxr_linenumber" name="668" href="#668">668</a>         log.info(<span class="jxr_string">"  getting object"</span>);
<a class="jxr_linenumber" name="669" href="#669">669</a>         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="670" href="#670">670</a>             ObjectData res = fObjSvc.getObject(fRepositoryId, id, <span class="jxr_string">"*"</span>, false, IncludeRelationships.NONE, <strong class="jxr_keyword">null</strong>, false,
<a class="jxr_linenumber" name="671" href="#671">671</a>                     false, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="672" href="#672">672</a>             assertNotNull(res);
<a class="jxr_linenumber" name="673" href="#673">673</a>             Map&lt;String, PropertyData&lt;?&gt;&gt; props = res.getProperties().getProperties();
<a class="jxr_linenumber" name="674" href="#674">674</a> 
<a class="jxr_linenumber" name="675" href="#675">675</a>             <em class="jxr_comment">// check returned properties</em>
<a class="jxr_linenumber" name="676" href="#676">676</a>             <strong class="jxr_keyword">for</strong> (PropertyData&lt;?&gt; pd : props.values()) {
<a class="jxr_linenumber" name="677" href="#677">677</a>                 log.info(<span class="jxr_string">"  return property id: "</span> + pd.getId() + <span class="jxr_string">", value: "</span> + pd.getValues());
<a class="jxr_linenumber" name="678" href="#678">678</a>             }
<a class="jxr_linenumber" name="679" href="#679">679</a> 
<a class="jxr_linenumber" name="680" href="#680">680</a>             String returnedId = res.getId();
<a class="jxr_linenumber" name="681" href="#681">681</a>             assertEquals(id, returnedId);
<a class="jxr_linenumber" name="682" href="#682">682</a>             PropertyData&lt;?&gt; pd = props.get(PropertyIds.NAME);
<a class="jxr_linenumber" name="683" href="#683">683</a>             assertNotNull(pd);
<a class="jxr_linenumber" name="684" href="#684">684</a>             assertEquals(MY_CUSTOM_NAME, pd.getFirstValue());
<a class="jxr_linenumber" name="685" href="#685">685</a>             pd = props.get(PropertyIds.OBJECT_TYPE_ID);
<a class="jxr_linenumber" name="686" href="#686">686</a>             assertEquals(TEST_CUSTOM_DOCUMENT_TYPE_ID, pd.getFirstValue());
<a class="jxr_linenumber" name="687" href="#687">687</a>             pd = props.get(TEST_DOCUMENT_MY_STRING_PROP_ID);
<a class="jxr_linenumber" name="688" href="#688">688</a>             assertEquals(<span class="jxr_string">"My pretty string"</span>, pd.getFirstValue());
<a class="jxr_linenumber" name="689" href="#689">689</a>             pd = props.get(TEST_DOCUMENT_MY_INT_PROP_ID);
<a class="jxr_linenumber" name="690" href="#690">690</a>             assertEquals(BigInteger.valueOf(4711), pd.getFirstValue());
<a class="jxr_linenumber" name="691" href="#691">691</a> 
<a class="jxr_linenumber" name="692" href="#692">692</a>             <em class="jxr_comment">// update properties:</em>
<a class="jxr_linenumber" name="693" href="#693">693</a>             log.info(<span class="jxr_string">"updating property"</span>);
<a class="jxr_linenumber" name="694" href="#694">694</a>             List&lt;PropertyData&lt;?&gt;&gt; properties = <strong class="jxr_keyword">new</strong> ArrayList&lt;PropertyData&lt;?&gt;&gt;();
<a class="jxr_linenumber" name="695" href="#695">695</a>             <em class="jxr_comment">// properties.add(fFactory.createPropertyIdData(PropertyIds.CMIS_NAME</em>
<a class="jxr_linenumber" name="696" href="#696">696</a>             <em class="jxr_comment">// , MY_CUSTOM_NAME));</em>
<a class="jxr_linenumber" name="697" href="#697">697</a>             <em class="jxr_comment">// properties.add(fFactory.createPropertyIdData(PropertyIds.</em>
<a class="jxr_linenumber" name="698" href="#698">698</a>             <em class="jxr_comment">// CMIS_OBJECT_TYPE_ID, TEST_CUSTOM_DOCUMENT_TYPE_ID));</em>
<a class="jxr_linenumber" name="699" href="#699">699</a>             <em class="jxr_comment">// Generate some property values for custom attributes</em>
<a class="jxr_linenumber" name="700" href="#700">700</a>             properties.add(fFactory.createPropertyStringData(TEST_DOCUMENT_MY_STRING_PROP_ID, NEW_STRING_PROP_VAL));
<a class="jxr_linenumber" name="701" href="#701">701</a>             properties.add(fFactory.createPropertyIntegerData(TEST_DOCUMENT_MY_INT_PROP_ID, NEW_INT_PROP_VAL));
<a class="jxr_linenumber" name="702" href="#702">702</a>             Properties newProps = fFactory.createPropertiesData(properties);
<a class="jxr_linenumber" name="703" href="#703">703</a> 
<a class="jxr_linenumber" name="704" href="#704">704</a>             Holder&lt;String&gt; idHolder = <strong class="jxr_keyword">new</strong> Holder&lt;String&gt;(id);
<a class="jxr_linenumber" name="705" href="#705">705</a>             Holder&lt;String&gt; changeTokenHolder = <strong class="jxr_keyword">new</strong> Holder&lt;String&gt;();
<a class="jxr_linenumber" name="706" href="#706">706</a>             fObjSvc.updateProperties(fRepositoryId, idHolder, changeTokenHolder, newProps, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="707" href="#707">707</a>             oldChangeToken = changeTokenHolder.getValue(); <em class="jxr_comment">// store for later</em>
<a class="jxr_linenumber" name="708" href="#708">708</a>             verifyUpdatedProperties(id, MY_CUSTOM_NAME);
<a class="jxr_linenumber" name="709" href="#709">709</a> 
<a class="jxr_linenumber" name="710" href="#710">710</a>             <em class="jxr_comment">// Test delete properties</em>
<a class="jxr_linenumber" name="711" href="#711">711</a>             log.info(<span class="jxr_string">"deleting property"</span>);
<a class="jxr_linenumber" name="712" href="#712">712</a>             properties = <strong class="jxr_keyword">new</strong> ArrayList&lt;PropertyData&lt;?&gt;&gt;();
<a class="jxr_linenumber" name="713" href="#713">713</a>             properties.add(fFactory.createPropertyStringData(TEST_DOCUMENT_MY_STRING_PROP_ID, (String) <strong class="jxr_keyword">null</strong>));
<a class="jxr_linenumber" name="714" href="#714">714</a>             newProps = fFactory.createPropertiesData(properties);
<a class="jxr_linenumber" name="715" href="#715">715</a>             Thread.sleep(100); <em class="jxr_comment">// ensure new change token, timer resolution is</em>
<a class="jxr_linenumber" name="716" href="#716">716</a>             <em class="jxr_comment">// not good enough</em>
<a class="jxr_linenumber" name="717" href="#717">717</a>             fObjSvc.updateProperties(fRepositoryId, idHolder, changeTokenHolder, newProps, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="718" href="#718">718</a>             res = fObjSvc.getObject(fRepositoryId, id, <span class="jxr_string">"*"</span>, false, IncludeRelationships.NONE, <strong class="jxr_keyword">null</strong>, false, false, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="719" href="#719">719</a>             assertNotNull(res);
<a class="jxr_linenumber" name="720" href="#720">720</a>             props = res.getProperties().getProperties();
<a class="jxr_linenumber" name="721" href="#721">721</a>             <strong class="jxr_keyword">for</strong> (PropertyData&lt;?&gt; pd2 : props.values()) {
<a class="jxr_linenumber" name="722" href="#722">722</a>                 log.info(<span class="jxr_string">"  return property id: "</span> + pd2.getId() + <span class="jxr_string">", value: "</span> + pd2.getValues());
<a class="jxr_linenumber" name="723" href="#723">723</a>             }
<a class="jxr_linenumber" name="724" href="#724">724</a>             pd = props.get(TEST_DOCUMENT_MY_STRING_PROP_ID);
<a class="jxr_linenumber" name="725" href="#725">725</a>             assertNull(pd.getFirstValue());
<a class="jxr_linenumber" name="726" href="#726">726</a>             <em class="jxr_comment">// delete a required property and expect exception:</em>
<a class="jxr_linenumber" name="727" href="#727">727</a>             properties = <strong class="jxr_keyword">new</strong> ArrayList&lt;PropertyData&lt;?&gt;&gt;();
<a class="jxr_linenumber" name="728" href="#728">728</a>             properties.add(fFactory.createPropertyIntegerData(TEST_DOCUMENT_MY_INT_PROP_ID, (BigInteger) <strong class="jxr_keyword">null</strong>));
<a class="jxr_linenumber" name="729" href="#729">729</a>             newProps = fFactory.createPropertiesData(properties);
<a class="jxr_linenumber" name="730" href="#730">730</a>             idHolder = <strong class="jxr_keyword">new</strong> Holder&lt;String&gt;(id);
<a class="jxr_linenumber" name="731" href="#731">731</a>             <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="732" href="#732">732</a>                 fObjSvc.updateProperties(fRepositoryId, idHolder, changeTokenHolder, newProps, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="733" href="#733">733</a>                 fail(<span class="jxr_string">"Deleteing a required property should fail."</span>);
<a class="jxr_linenumber" name="734" href="#734">734</a>             } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a class="jxr_linenumber" name="735" href="#735">735</a>                 assertTrue(e instanceof CmisConstraintException);
<a class="jxr_linenumber" name="736" href="#736">736</a>             }
<a class="jxr_linenumber" name="737" href="#737">737</a> 
<a class="jxr_linenumber" name="738" href="#738">738</a>             <em class="jxr_comment">// Test violation of property definition constraints</em>
<a class="jxr_linenumber" name="739" href="#739">739</a>             log.info(<span class="jxr_string">"Test violation of property definition constraints"</span>);
<a class="jxr_linenumber" name="740" href="#740">740</a>             properties = <strong class="jxr_keyword">new</strong> ArrayList&lt;PropertyData&lt;?&gt;&gt;();
<a class="jxr_linenumber" name="741" href="#741">741</a>             properties.add(fFactory.createPropertyStringData(TEST_DOCUMENT_MY_STRING_PROP_ID,
<a class="jxr_linenumber" name="742" href="#742">742</a>                     <span class="jxr_string">"A very long String ABCDEFHIJKLMNOPQRSTUVWXYZ"</span>));
<a class="jxr_linenumber" name="743" href="#743">743</a>             newProps = fFactory.createPropertiesData(properties);
<a class="jxr_linenumber" name="744" href="#744">744</a>             idHolder = <strong class="jxr_keyword">new</strong> Holder&lt;String&gt;(id);
<a class="jxr_linenumber" name="745" href="#745">745</a>             <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="746" href="#746">746</a>                 fObjSvc.updateProperties(fRepositoryId, idHolder, changeTokenHolder, newProps, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="747" href="#747">747</a>                 fail(<span class="jxr_string">"Exceeding max String lengt h should fail."</span>);
<a class="jxr_linenumber" name="748" href="#748">748</a>             } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a class="jxr_linenumber" name="749" href="#749">749</a>                 assertTrue(e instanceof CmisConstraintException);
<a class="jxr_linenumber" name="750" href="#750">750</a>             }
<a class="jxr_linenumber" name="751" href="#751">751</a>             <em class="jxr_comment">// Test stale token</em>
<a class="jxr_linenumber" name="752" href="#752">752</a>             log.info(<span class="jxr_string">"Test stale token"</span>);
<a class="jxr_linenumber" name="753" href="#753">753</a>             properties = <strong class="jxr_keyword">new</strong> ArrayList&lt;PropertyData&lt;?&gt;&gt;();
<a class="jxr_linenumber" name="754" href="#754">754</a>             properties.add(fFactory.createPropertyStringData(TEST_DOCUMENT_MY_STRING_PROP_ID, <span class="jxr_string">"ABC"</span>));
<a class="jxr_linenumber" name="755" href="#755">755</a>             newProps = fFactory.createPropertiesData(properties);
<a class="jxr_linenumber" name="756" href="#756">756</a>             <em class="jxr_comment">// set outdated token</em>
<a class="jxr_linenumber" name="757" href="#757">757</a>             newChangeToken = changeTokenHolder.getValue();
<a class="jxr_linenumber" name="758" href="#758">758</a>             changeTokenHolder.setValue(oldChangeToken);
<a class="jxr_linenumber" name="759" href="#759">759</a>             assertFalse(oldChangeToken.equals(newChangeToken));
<a class="jxr_linenumber" name="760" href="#760">760</a>             <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="761" href="#761">761</a>                 fObjSvc.updateProperties(fRepositoryId, idHolder, changeTokenHolder, newProps, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="762" href="#762">762</a>                 fail(<span class="jxr_string">"Update with an outdated changeToken should fail."</span>);
<a class="jxr_linenumber" name="763" href="#763">763</a>             } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a class="jxr_linenumber" name="764" href="#764">764</a>                 assertTrue(e instanceof CmisUpdateConflictException);
<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>             <em class="jxr_comment">// test a rename</em>
<a class="jxr_linenumber" name="768" href="#768">768</a>             log.info(<span class="jxr_string">"Test renaming"</span>);
<a class="jxr_linenumber" name="769" href="#769">769</a>             <strong class="jxr_keyword">final</strong> String newName = <span class="jxr_string">"My Renamed Document"</span>; <em class="jxr_comment">// MY_CUSTOM_NAME</em>
<a class="jxr_linenumber" name="770" href="#770">770</a>             properties = <strong class="jxr_keyword">new</strong> ArrayList&lt;PropertyData&lt;?&gt;&gt;();
<a class="jxr_linenumber" name="771" href="#771">771</a>             properties.add(fFactory.createPropertyIdData(PropertyIds.NAME, newName));
<a class="jxr_linenumber" name="772" href="#772">772</a>             newProps = fFactory.createPropertiesData(properties);
<a class="jxr_linenumber" name="773" href="#773">773</a>             changeTokenHolder.setValue(newChangeToken);
<a class="jxr_linenumber" name="774" href="#774">774</a>             fObjSvc.updateProperties(fRepositoryId, idHolder, changeTokenHolder, newProps, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="775" href="#775">775</a>             id = idHolder.getValue(); <em class="jxr_comment">// note that id is path and has changed!</em>
<a class="jxr_linenumber" name="776" href="#776">776</a>             res = fObjSvc.getObject(fRepositoryId, id, <span class="jxr_string">"*"</span>, false, IncludeRelationships.NONE, <strong class="jxr_keyword">null</strong>, false, false, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="777" href="#777">777</a>             assertNotNull(res);
<a class="jxr_linenumber" name="778" href="#778">778</a>             props = res.getProperties().getProperties();
<a class="jxr_linenumber" name="779" href="#779">779</a>             pd = props.get(PropertyIds.NAME);
<a class="jxr_linenumber" name="780" href="#780">780</a>             assertNotNull(pd);
<a class="jxr_linenumber" name="781" href="#781">781</a>             assertEquals(newName, pd.getFirstValue());
<a class="jxr_linenumber" name="782" href="#782">782</a> 
<a class="jxr_linenumber" name="783" href="#783">783</a>             <em class="jxr_comment">// test rename with a conflicting name</em>
<a class="jxr_linenumber" name="784" href="#784">784</a>             createDocumentWithCustomType(MY_CUSTOM_NAME, fRootFolderId, false);
<a class="jxr_linenumber" name="785" href="#785">785</a>             properties = <strong class="jxr_keyword">new</strong> ArrayList&lt;PropertyData&lt;?&gt;&gt;();
<a class="jxr_linenumber" name="786" href="#786">786</a>             properties.add(fFactory.createPropertyIdData(PropertyIds.NAME, MY_CUSTOM_NAME));
<a class="jxr_linenumber" name="787" href="#787">787</a>             newProps = fFactory.createPropertiesData(properties);
<a class="jxr_linenumber" name="788" href="#788">788</a>             <em class="jxr_comment">// now rename to old name</em>
<a class="jxr_linenumber" name="789" href="#789">789</a>             <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="790" href="#790">790</a>                 fObjSvc.updateProperties(fRepositoryId, idHolder, changeTokenHolder, newProps, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="791" href="#791">791</a>                 fail(<span class="jxr_string">"Update with a conflicting name should fail."</span>);
<a class="jxr_linenumber" name="792" href="#792">792</a>             } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a class="jxr_linenumber" name="793" href="#793">793</a>                 assertTrue(e instanceof CmisNameConstraintViolationException);
<a class="jxr_linenumber" name="794" href="#794">794</a>             }
<a class="jxr_linenumber" name="795" href="#795">795</a> 
<a class="jxr_linenumber" name="796" href="#796">796</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a class="jxr_linenumber" name="797" href="#797">797</a>             fail(<span class="jxr_string">"getObject() failed with exception: "</span> + e);
<a class="jxr_linenumber" name="798" href="#798">798</a>         }
<a class="jxr_linenumber" name="799" href="#799">799</a>         log.info(<span class="jxr_string">"... testUpdateProperties() finished."</span>);
<a class="jxr_linenumber" name="800" href="#800">800</a>     }
<a class="jxr_linenumber" name="801" href="#801">801</a> 
<a class="jxr_linenumber" name="802" href="#802">802</a>     @Test
<a class="jxr_linenumber" name="803" href="#803">803</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testAllowableActions() {
<a class="jxr_linenumber" name="804" href="#804">804</a>         log.info(<span class="jxr_string">"starting testAllowableActions() ..."</span>);
<a class="jxr_linenumber" name="805" href="#805">805</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">boolean</strong> withContent = false;
<a class="jxr_linenumber" name="806" href="#806">806</a>         String id = createDocument(fRootFolderId, withContent);
<a class="jxr_linenumber" name="807" href="#807">807</a> 
<a class="jxr_linenumber" name="808" href="#808">808</a>         <em class="jxr_comment">// get allowable actions via getObject</em>
<a class="jxr_linenumber" name="809" href="#809">809</a>         ObjectData res = fObjSvc.getObject(fRepositoryId, id, <span class="jxr_string">"*"</span>, <strong class="jxr_keyword">true</strong>, IncludeRelationships.NONE, <strong class="jxr_keyword">null</strong>, false, false,
<a class="jxr_linenumber" name="810" href="#810">810</a>                 <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="811" href="#811">811</a>         assertNotNull(res.getAllowableActions());
<a class="jxr_linenumber" name="812" href="#812">812</a>         Set&lt;Action&gt; actions = res.getAllowableActions().getAllowableActions();
<a class="jxr_linenumber" name="813" href="#813">813</a>         assertNotNull(actions);
<a class="jxr_linenumber" name="814" href="#814">814</a>         verifyAllowableActionsDocument(actions, false, withContent);
<a class="jxr_linenumber" name="815" href="#815">815</a> 
<a class="jxr_linenumber" name="816" href="#816">816</a>         <em class="jxr_comment">// get allowable actions via getAllowableActions</em>
<a class="jxr_linenumber" name="817" href="#817">817</a>         AllowableActions allowableActions = fObjSvc.getAllowableActions(fRepositoryId, id, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="818" href="#818">818</a>         assertNotNull(allowableActions);
<a class="jxr_linenumber" name="819" href="#819">819</a>         actions = allowableActions.getAllowableActions();
<a class="jxr_linenumber" name="820" href="#820">820</a>         assertNotNull(actions);
<a class="jxr_linenumber" name="821" href="#821">821</a>         verifyAllowableActionsDocument(actions, false, withContent);
<a class="jxr_linenumber" name="822" href="#822">822</a> 
<a class="jxr_linenumber" name="823" href="#823">823</a>         <em class="jxr_comment">// cleanup</em>
<a class="jxr_linenumber" name="824" href="#824">824</a>         fObjSvc.deleteObject(fRepositoryId, id, <strong class="jxr_keyword">true</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="825" href="#825">825</a>         log.info(<span class="jxr_string">"... testAllowableActions() finished."</span>);
<a class="jxr_linenumber" name="826" href="#826">826</a>     }
<a class="jxr_linenumber" name="827" href="#827">827</a> 
<a class="jxr_linenumber" name="828" href="#828">828</a>     @Test
<a class="jxr_linenumber" name="829" href="#829">829</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testDefaultPropertiesDocument() {
<a class="jxr_linenumber" name="830" href="#830">830</a>         log.info(<span class="jxr_string">"starting testDefaultPropertiesDocument() ..."</span>);
<a class="jxr_linenumber" name="831" href="#831">831</a>         String id = createDocument(<span class="jxr_string">"DefPropDoc"</span>, fRootFolderId, TEST_DOC_TYPE_WITH_DEFAULTS_ID, false);
<a class="jxr_linenumber" name="832" href="#832">832</a>         <strong class="jxr_keyword">if</strong> (id != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="833" href="#833">833</a>             log.info(<span class="jxr_string">"createDocument succeeded with created id: "</span> + id);
<a class="jxr_linenumber" name="834" href="#834">834</a>         }
<a class="jxr_linenumber" name="835" href="#835">835</a>         ObjectData res = getDocumentObjectData(id);
<a class="jxr_linenumber" name="836" href="#836">836</a>         Map&lt;String, PropertyData&lt;?&gt;&gt; props = res.getProperties().getProperties();
<a class="jxr_linenumber" name="837" href="#837">837</a>         PropertyData&lt;?&gt; pd =  props.get(TEST_DOCUMENT_MY_INT_PROP_ID);
<a class="jxr_linenumber" name="838" href="#838">838</a>         assertNotNull(pd);
<a class="jxr_linenumber" name="839" href="#839">839</a>         Object bi = pd.getFirstValue();
<a class="jxr_linenumber" name="840" href="#840">840</a>         assertNotNull(bi);
<a class="jxr_linenumber" name="841" href="#841">841</a>         assertEquals(BigInteger.valueOf(100), bi);
<a class="jxr_linenumber" name="842" href="#842">842</a> 
<a class="jxr_linenumber" name="843" href="#843">843</a>         pd =  props.get(TEST_DOCUMENT_MY_MULTI_STRING_PROP_ID);
<a class="jxr_linenumber" name="844" href="#844">844</a>         assertNotNull(pd);
<a class="jxr_linenumber" name="845" href="#845">845</a>         List&lt;String&gt; valueList = (List&lt;String&gt;) pd.getValues();
<a class="jxr_linenumber" name="846" href="#846">846</a>         assertNotNull(valueList);
<a class="jxr_linenumber" name="847" href="#847">847</a>         assertTrue(valueList.contains(<span class="jxr_string">"Apache"</span>));
<a class="jxr_linenumber" name="848" href="#848">848</a>         assertTrue(valueList.contains(<span class="jxr_string">"CMIS"</span>));
<a class="jxr_linenumber" name="849" href="#849">849</a> 
<a class="jxr_linenumber" name="850" href="#850">850</a>         pd =  props.get(TEST_DOCUMENT_MY_INT_PROP_ID_MANDATORY_DEFAULT);
<a class="jxr_linenumber" name="851" href="#851">851</a>         assertNotNull(pd);
<a class="jxr_linenumber" name="852" href="#852">852</a>         bi = pd.getFirstValue();
<a class="jxr_linenumber" name="853" href="#853">853</a>         assertNotNull(bi);
<a class="jxr_linenumber" name="854" href="#854">854</a>         assertEquals(BigInteger.valueOf(100), bi);
<a class="jxr_linenumber" name="855" href="#855">855</a> 
<a class="jxr_linenumber" name="856" href="#856">856</a>         log.info(<span class="jxr_string">"... testDefaultPropertiesDocument() finished."</span>);
<a class="jxr_linenumber" name="857" href="#857">857</a>     }
<a class="jxr_linenumber" name="858" href="#858">858</a> 
<a class="jxr_linenumber" name="859" href="#859">859</a>     @Test
<a class="jxr_linenumber" name="860" href="#860">860</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testDefaultPropertiesFolder() {
<a class="jxr_linenumber" name="861" href="#861">861</a>         log.info(<span class="jxr_string">"starting testDefaultPropertiesFolder() ..."</span>);
<a class="jxr_linenumber" name="862" href="#862">862</a>         String id = createFolder(<span class="jxr_string">"DefPropFolder"</span>, fRootFolderId, TEST_FOLDER_TYPE_WITH_DEFAULTS_ID);
<a class="jxr_linenumber" name="863" href="#863">863</a>         <strong class="jxr_keyword">if</strong> (id != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="864" href="#864">864</a>             log.info(<span class="jxr_string">"createDocument succeeded with created id: "</span> + id);
<a class="jxr_linenumber" name="865" href="#865">865</a>         }
<a class="jxr_linenumber" name="866" href="#866">866</a>         ObjectData res = getDocumentObjectData(id);
<a class="jxr_linenumber" name="867" href="#867">867</a>         Map&lt;String, PropertyData&lt;?&gt;&gt; props = res.getProperties().getProperties();
<a class="jxr_linenumber" name="868" href="#868">868</a>         PropertyData&lt;?&gt; pd =  props.get(TEST_FOLDER_MY_INT_PROP_ID);
<a class="jxr_linenumber" name="869" href="#869">869</a>         assertNotNull(pd);
<a class="jxr_linenumber" name="870" href="#870">870</a>         Object bi = pd.getFirstValue();
<a class="jxr_linenumber" name="871" href="#871">871</a>         assertNotNull(bi);
<a class="jxr_linenumber" name="872" href="#872">872</a>         assertEquals(BigInteger.valueOf(100), bi);
<a class="jxr_linenumber" name="873" href="#873">873</a> 
<a class="jxr_linenumber" name="874" href="#874">874</a>         pd =  props.get(TEST_FOLDER_MY_MULTI_STRING_PROP_ID);
<a class="jxr_linenumber" name="875" href="#875">875</a>         assertNotNull(pd);
<a class="jxr_linenumber" name="876" href="#876">876</a>         List&lt;String&gt; valueList = (List&lt;String&gt;) pd.getValues();
<a class="jxr_linenumber" name="877" href="#877">877</a>         assertNotNull(valueList);
<a class="jxr_linenumber" name="878" href="#878">878</a>         assertTrue(valueList.contains(<span class="jxr_string">"Apache"</span>));
<a class="jxr_linenumber" name="879" href="#879">879</a>         assertTrue(valueList.contains(<span class="jxr_string">"CMIS"</span>));
<a class="jxr_linenumber" name="880" href="#880">880</a> 
<a class="jxr_linenumber" name="881" href="#881">881</a>         pd =  props.get(TEST_FOLDER_MY_INT_PROP_ID_MANDATORY_DEFAULT);
<a class="jxr_linenumber" name="882" href="#882">882</a>         assertNotNull(pd);
<a class="jxr_linenumber" name="883" href="#883">883</a>         bi = pd.getFirstValue();
<a class="jxr_linenumber" name="884" href="#884">884</a>         assertNotNull(bi);
<a class="jxr_linenumber" name="885" href="#885">885</a>         assertEquals(BigInteger.valueOf(100), bi);
<a class="jxr_linenumber" name="886" href="#886">886</a> 
<a class="jxr_linenumber" name="887" href="#887">887</a>         log.info(<span class="jxr_string">"... testDefaultPropertiesFolder() finished."</span>);
<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>     @Test
<a class="jxr_linenumber" name="891" href="#891">891</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testGetObjectNoObjectIdInFilter() {
<a class="jxr_linenumber" name="892" href="#892">892</a>         log.info(<span class="jxr_string">"starting testGetObjectNoObjectIdInFilter() ..."</span>);
<a class="jxr_linenumber" name="893" href="#893">893</a>         log.info(<span class="jxr_string">"  creating object"</span>);
<a class="jxr_linenumber" name="894" href="#894">894</a>         String id = createDocument(fRootFolderId, false);
<a class="jxr_linenumber" name="895" href="#895">895</a>         <strong class="jxr_keyword">if</strong> (id != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="896" href="#896">896</a>             log.info(<span class="jxr_string">"  createDocument succeeded with created id: "</span> + id);
<a class="jxr_linenumber" name="897" href="#897">897</a>         }
<a class="jxr_linenumber" name="898" href="#898">898</a> 
<a class="jxr_linenumber" name="899" href="#899">899</a>         log.info(<span class="jxr_string">"  getting object"</span>);
<a class="jxr_linenumber" name="900" href="#900">900</a>         String filter = PropertyIds.NAME + <span class="jxr_string">","</span> + PropertyIds.CREATION_DATE + <span class="jxr_string">","</span> + PropertyIds.LAST_MODIFICATION_DATE;
<a class="jxr_linenumber" name="901" href="#901">901</a>         ObjectData res = fObjSvc.getObject(fRepositoryId, id, filter, false, IncludeRelationships.NONE, <strong class="jxr_keyword">null</strong>, false, false, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="902" href="#902">902</a> 
<a class="jxr_linenumber" name="903" href="#903">903</a>         String returnedId = res.getId();
<a class="jxr_linenumber" name="904" href="#904">904</a>         assertEquals(id, returnedId);
<a class="jxr_linenumber" name="905" href="#905">905</a>         log.info(<span class="jxr_string">"... testGetObjectNoObjectIdInFilter() finished."</span>);
<a class="jxr_linenumber" name="906" href="#906">906</a>     }
<a class="jxr_linenumber" name="907" href="#907">907</a>     
<a class="jxr_linenumber" name="908" href="#908">908</a>     @Test
<a class="jxr_linenumber" name="909" href="#909">909</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testSpecialChars() {
<a class="jxr_linenumber" name="910" href="#910">910</a> 
<a class="jxr_linenumber" name="911" href="#911">911</a>             log.info(<span class="jxr_string">"starting testGetObjectByPath() with specal chars..."</span>);
<a class="jxr_linenumber" name="912" href="#912">912</a>             log.info(<span class="jxr_string">"  creating object"</span>);
<a class="jxr_linenumber" name="913" href="#913">913</a> 
<a class="jxr_linenumber" name="914" href="#914">914</a>             String docID = createDocument(<span class="jxr_string">"H������nschen"</span>, fRootFolderId, false);
<a class="jxr_linenumber" name="915" href="#915">915</a>             log.info(<span class="jxr_string">"  getting object by path with special chars"</span>);
<a class="jxr_linenumber" name="916" href="#916">916</a>             <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="917" href="#917">917</a>                 ObjectData res = fObjSvc.getObjectByPath(fRepositoryId, <span class="jxr_string">"/H������nschen"</span>, <span class="jxr_string">"*"</span>, false, IncludeRelationships.NONE, <strong class="jxr_keyword">null</strong>, false,
<a class="jxr_linenumber" name="918" href="#918">918</a>                         false, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="919" href="#919">919</a>                 assertNotNull(res);
<a class="jxr_linenumber" name="920" href="#920">920</a>                assertNotNull(res.getId());
<a class="jxr_linenumber" name="921" href="#921">921</a>              } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a class="jxr_linenumber" name="922" href="#922">922</a>                 fail(<span class="jxr_string">"getObject() failed with exception: "</span> + e);
<a class="jxr_linenumber" name="923" href="#923">923</a>             }
<a class="jxr_linenumber" name="924" href="#924">924</a>     }
<a class="jxr_linenumber" name="925" href="#925">925</a>     
<a class="jxr_linenumber" name="926" href="#926">926</a>     @Test
<a class="jxr_linenumber" name="927" href="#927">927</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testNoContentAllowed() {
<a class="jxr_linenumber" name="928" href="#928">928</a>         log.info(<span class="jxr_string">"starting testNoContentAllowed() ..."</span>);
<a class="jxr_linenumber" name="929" href="#929">929</a>         String id = createDocument(<span class="jxr_string">"NoContentAllowedDoc1"</span>, fRootFolderId, TEST_CUSTOM_NO_CONTENT_TYPE_ID, false);
<a class="jxr_linenumber" name="930" href="#930">930</a>         assertNotNull (id);
<a class="jxr_linenumber" name="931" href="#931">931</a> 
<a class="jxr_linenumber" name="932" href="#932">932</a>         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="933" href="#933">933</a>             id = createDocumentNoCatch(<span class="jxr_string">"NoContentAllowedDoc2"</span>, fRootFolderId, TEST_CUSTOM_NO_CONTENT_TYPE_ID, VersioningState.NONE, <strong class="jxr_keyword">true</strong>);
<a class="jxr_linenumber" name="934" href="#934">934</a>             fail(<span class="jxr_string">"Creating  document with content and type allows no content should fail."</span>);
<a class="jxr_linenumber" name="935" href="#935">935</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a class="jxr_linenumber" name="936" href="#936">936</a>             assertTrue(e instanceof CmisConstraintException);
<a class="jxr_linenumber" name="937" href="#937">937</a>             log.info(<span class="jxr_string">"Creating  document with content for no-content type failed as expected."</span>);
<a class="jxr_linenumber" name="938" href="#938">938</a>         }
<a class="jxr_linenumber" name="939" href="#939">939</a>         log.info(<span class="jxr_string">"... testNoContentAllowed finished."</span>);
<a class="jxr_linenumber" name="940" href="#940">940</a>     }
<a class="jxr_linenumber" name="941" href="#941">941</a> 
<a class="jxr_linenumber" name="942" href="#942">942</a>     @Test
<a class="jxr_linenumber" name="943" href="#943">943</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testMustHaveContent() {
<a class="jxr_linenumber" name="944" href="#944">944</a>         log.info(<span class="jxr_string">"starting testMustHaveContent() ..."</span>);
<a class="jxr_linenumber" name="945" href="#945">945</a>         String id = createDocument(<span class="jxr_string">"MustHaveContentAllowedDoc1"</span>, fRootFolderId, TEST_CUSTOM_MUST_CONTENT_TYPE_ID, <strong class="jxr_keyword">true</strong>);
<a class="jxr_linenumber" name="946" href="#946">946</a>         assertNotNull (id);
<a class="jxr_linenumber" name="947" href="#947">947</a> 
<a class="jxr_linenumber" name="948" href="#948">948</a>         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="949" href="#949">949</a>             id = createDocumentNoCatch(<span class="jxr_string">"MustHaveContentAllowedDoc2"</span>, fRootFolderId, TEST_CUSTOM_MUST_CONTENT_TYPE_ID, VersioningState.NONE, false);
<a class="jxr_linenumber" name="950" href="#950">950</a>             fail(<span class="jxr_string">"Creating document without content and type requires content should fail."</span>);
<a class="jxr_linenumber" name="951" href="#951">951</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a class="jxr_linenumber" name="952" href="#952">952</a>             assertTrue(e instanceof CmisConstraintException);
<a class="jxr_linenumber" name="953" href="#953">953</a>             log.info(<span class="jxr_string">"Creating document with content for must-have-content type failed as expected."</span>);
<a class="jxr_linenumber" name="954" href="#954">954</a>         }
<a class="jxr_linenumber" name="955" href="#955">955</a>         log.info(<span class="jxr_string">"... testMustHaveContent finished."</span>);
<a class="jxr_linenumber" name="956" href="#956">956</a>     }
<a class="jxr_linenumber" name="957" href="#957">957</a>     
<a class="jxr_linenumber" name="958" href="#958">958</a>     @Test
<a class="jxr_linenumber" name="959" href="#959">959</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testMaxContentSize() {
<a class="jxr_linenumber" name="960" href="#960">960</a>         log.info(<span class="jxr_string">"starting testMaxContentSize() ..."</span>);
<a class="jxr_linenumber" name="961" href="#961">961</a>         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="962" href="#962">962</a>             createContent(MAX_SIZE + 1, MAX_SIZE, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="963" href="#963">963</a>             fail(<span class="jxr_string">"createContent with exceeded content size should fail."</span>);
<a class="jxr_linenumber" name="964" href="#964">964</a>         } <strong class="jxr_keyword">catch</strong> (CmisInvalidArgumentException e) {
<a class="jxr_linenumber" name="965" href="#965">965</a>             log.debug(<span class="jxr_string">"createDocument with exceeded failed as excpected."</span>);
<a class="jxr_linenumber" name="966" href="#966">966</a>         } <strong class="jxr_keyword">catch</strong> (Exception e1) {
<a class="jxr_linenumber" name="967" href="#967">967</a>             log.debug(<span class="jxr_string">"createDocument with exceeded failed with wrong exception (expected CmisInvalidArgumentException, got "</span>
<a class="jxr_linenumber" name="968" href="#968">968</a>                     + e1.getClass().getName() + <span class="jxr_string">")."</span>);
<a class="jxr_linenumber" name="969" href="#969">969</a>         }
<a class="jxr_linenumber" name="970" href="#970">970</a> 
<a class="jxr_linenumber" name="971" href="#971">971</a>         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="972" href="#972">972</a>             ContentStream contentStream = createContent(MAX_SIZE + 1);
<a class="jxr_linenumber" name="973" href="#973">973</a>             Properties props = createDocumentProperties(<span class="jxr_string">"TestMaxContentSize"</span>, DOCUMENT_TYPE_ID);
<a class="jxr_linenumber" name="974" href="#974">974</a>             fObjSvc.createDocument(fRepositoryId, props, fRootFolderId, contentStream, VersioningState.NONE, <strong class="jxr_keyword">null</strong>,
<a class="jxr_linenumber" name="975" href="#975">975</a>                     <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="976" href="#976">976</a>             fail(<span class="jxr_string">"createDocument with exceeded content size should fail."</span>);
<a class="jxr_linenumber" name="977" href="#977">977</a>         } <strong class="jxr_keyword">catch</strong> (CmisInvalidArgumentException e) {
<a class="jxr_linenumber" name="978" href="#978">978</a>             log.debug(<span class="jxr_string">"createDocument with exceeded failed as excpected."</span>);
<a class="jxr_linenumber" name="979" href="#979">979</a>         } <strong class="jxr_keyword">catch</strong> (Exception e1) {
<a class="jxr_linenumber" name="980" href="#980">980</a>             log.debug(<span class="jxr_string">"createDocument with exceeded failed with wrong exception (expected CmisInvalidArgumentException, got "</span>
<a class="jxr_linenumber" name="981" href="#981">981</a>                     + e1.getClass().getName() + <span class="jxr_string">")."</span>);
<a class="jxr_linenumber" name="982" href="#982">982</a>         }
<a class="jxr_linenumber" name="983" href="#983">983</a>     }
<a class="jxr_linenumber" name="984" href="#984">984</a> 
<a class="jxr_linenumber" name="985" href="#985">985</a>     @Test
<a class="jxr_linenumber" name="986" href="#986">986</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testRenditionImage() {
<a class="jxr_linenumber" name="987" href="#987">987</a>         <em class="jxr_comment">// upload an image as JPEG picture</em>
<a class="jxr_linenumber" name="988" href="#988">988</a>         log.info(<span class="jxr_string">"starting testRendition() ..."</span>);
<a class="jxr_linenumber" name="989" href="#989">989</a>         
<a class="jxr_linenumber" name="990" href="#990">990</a>         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="991" href="#991">991</a>             InputStream imageStream = <strong class="jxr_keyword">this</strong>.getClass().getResourceAsStream(<span class="jxr_string">"/image.jpg"</span>);
<a class="jxr_linenumber" name="992" href="#992">992</a>             assertNotNull(<span class="jxr_string">"Test setup failure no 'image.jpg' in test resources, getResourceAsStream failed"</span>, imageStream);
<a class="jxr_linenumber" name="993" href="#993">993</a>             String id = createDocumentFromStream(<span class="jxr_string">"TestJpegImage"</span>, fRootFolderId, DOCUMENT_TYPE_ID, imageStream,
<a class="jxr_linenumber" name="994" href="#994">994</a>                     JPEG);            
<a class="jxr_linenumber" name="995" href="#995">995</a> 
<a class="jxr_linenumber" name="996" href="#996">996</a>             assertNotNull (id);
<a class="jxr_linenumber" name="997" href="#997">997</a>             String renditionFilter = <span class="jxr_string">"*"</span>;
<a class="jxr_linenumber" name="998" href="#998">998</a>             List&lt;RenditionData&gt; renditions = fObjSvc.getRenditions(fRepositoryId, id, renditionFilter, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="999" href="#999">999</a>             assertNotNull(renditions);
<a class="jxr_linenumber" name="1000" href="#1000">1000</a>             assertEquals(1, renditions.size());
<a class="jxr_linenumber" name="1001" href="#1001">1001</a>             RenditionData rd = renditions.get(0);
<a class="jxr_linenumber" name="1002" href="#1002">1002</a>             assertEquals(JPEG, rd.getMimeType());
<a class="jxr_linenumber" name="1003" href="#1003">1003</a>             assertEquals(<span class="jxr_string">"cmis:thumbnail"</span>, rd.getKind());
<a class="jxr_linenumber" name="1004" href="#1004">1004</a>             assertEquals(id, rd.getRenditionDocumentId());
<a class="jxr_linenumber" name="1005" href="#1005">1005</a>             assertNotNull(rd.getBigHeight());
<a class="jxr_linenumber" name="1006" href="#1006">1006</a>             assertNotNull(rd.getBigWidth());
<a class="jxr_linenumber" name="1007" href="#1007">1007</a>             assertEquals(DocumentImpl.THUMBNAIL_SIZE, rd.getBigHeight().longValue());
<a class="jxr_linenumber" name="1008" href="#1008">1008</a>             assertEquals(DocumentImpl.THUMBNAIL_SIZE, rd.getBigWidth().longValue());
<a class="jxr_linenumber" name="1009" href="#1009">1009</a>             assertNotNull(rd.getStreamId());
<a class="jxr_linenumber" name="1010" href="#1010">1010</a>             ContentStream renditionContent = fObjSvc.getContentStream(fRepositoryId, id, rd.getStreamId(), <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="1011" href="#1011">1011</a>             assertEquals(rd.getMimeType(), renditionContent.getMimeType());
<a class="jxr_linenumber" name="1012" href="#1012">1012</a>             readThumbnailStream(renditionContent.getStream());
<a class="jxr_linenumber" name="1013" href="#1013">1013</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a class="jxr_linenumber" name="1014" href="#1014">1014</a>             log.error(<span class="jxr_string">"testRendition failed with exception "</span>, e);
<a class="jxr_linenumber" name="1015" href="#1015">1015</a>             fail(<span class="jxr_string">"testRendition failed with exceetion "</span> + e);
<a class="jxr_linenumber" name="1016" href="#1016">1016</a>         }
<a class="jxr_linenumber" name="1017" href="#1017">1017</a>         log.info(<span class="jxr_string">"... testRendition finished."</span>);   
<a class="jxr_linenumber" name="1018" href="#1018">1018</a>     }
<a class="jxr_linenumber" name="1019" href="#1019">1019</a>     
<a class="jxr_linenumber" name="1020" href="#1020">1020</a>     @Test
<a class="jxr_linenumber" name="1021" href="#1021">1021</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testRenditionIcon() {
<a class="jxr_linenumber" name="1022" href="#1022">1022</a>         <em class="jxr_comment">// fake an office document</em>
<a class="jxr_linenumber" name="1023" href="#1023">1023</a>         log.info(<span class="jxr_string">"starting testRendition() ..."</span>);
<a class="jxr_linenumber" name="1024" href="#1024">1024</a>         
<a class="jxr_linenumber" name="1025" href="#1025">1025</a>         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="1026" href="#1026">1026</a>             ContentStream content = createContent(4, 0, <span class="jxr_string">"application/vnd.openxmlformats-officedocument.wordprocessingml.document"</span>); 
<a class="jxr_linenumber" name="1027" href="#1027">1027</a>             Properties props = createDocumentProperties(<span class="jxr_string">"TestJOffice"</span>, DOCUMENT_TYPE_ID);
<a class="jxr_linenumber" name="1028" href="#1028">1028</a>             String id = fObjSvc.createDocument(fRepositoryId, props, fRootFolderId, content, VersioningState.NONE,
<a class="jxr_linenumber" name="1029" href="#1029">1029</a>                     <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="1030" href="#1030">1030</a> 
<a class="jxr_linenumber" name="1031" href="#1031">1031</a>             assertNotNull (id);
<a class="jxr_linenumber" name="1032" href="#1032">1032</a>             String renditionFilter = <span class="jxr_string">"*"</span>;
<a class="jxr_linenumber" name="1033" href="#1033">1033</a>             List&lt;RenditionData&gt; renditions = fObjSvc.getRenditions(fRepositoryId, id, renditionFilter, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="1034" href="#1034">1034</a>             assertNotNull(renditions);
<a class="jxr_linenumber" name="1035" href="#1035">1035</a>             assertEquals(1, renditions.size());
<a class="jxr_linenumber" name="1036" href="#1036">1036</a>             RenditionData rd = renditions.get(0);
<a class="jxr_linenumber" name="1037" href="#1037">1037</a>             assertEquals(PNG, rd.getMimeType());
<a class="jxr_linenumber" name="1038" href="#1038">1038</a>             assertEquals(<span class="jxr_string">"cmis:thumbnail"</span>, rd.getKind());
<a class="jxr_linenumber" name="1039" href="#1039">1039</a>             assertEquals(id, rd.getRenditionDocumentId());
<a class="jxr_linenumber" name="1040" href="#1040">1040</a>             assertNotNull(rd.getBigHeight());
<a class="jxr_linenumber" name="1041" href="#1041">1041</a>             assertNotNull(rd.getBigWidth());
<a class="jxr_linenumber" name="1042" href="#1042">1042</a>             assertEquals(DocumentImpl.ICON_SIZE, rd.getBigHeight().longValue());
<a class="jxr_linenumber" name="1043" href="#1043">1043</a>             assertEquals(DocumentImpl.ICON_SIZE, rd.getBigWidth().longValue());
<a class="jxr_linenumber" name="1044" href="#1044">1044</a>             assertNotNull(rd.getStreamId());
<a class="jxr_linenumber" name="1045" href="#1045">1045</a>             ContentStream renditionContent = fObjSvc.getContentStream(fRepositoryId, id, rd.getStreamId(), <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="1046" href="#1046">1046</a>             assertEquals(rd.getMimeType(), renditionContent.getMimeType());
<a class="jxr_linenumber" name="1047" href="#1047">1047</a>             readThumbnailStream(renditionContent.getStream());
<a class="jxr_linenumber" name="1048" href="#1048">1048</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a class="jxr_linenumber" name="1049" href="#1049">1049</a>             log.error(<span class="jxr_string">"testRendition failed with exception "</span>, e);
<a class="jxr_linenumber" name="1050" href="#1050">1050</a>             fail(<span class="jxr_string">"testRendition failed with exceetion "</span> + e);
<a class="jxr_linenumber" name="1051" href="#1051">1051</a>         }
<a class="jxr_linenumber" name="1052" href="#1052">1052</a>         log.info(<span class="jxr_string">"... testRendition finished."</span>);   
<a class="jxr_linenumber" name="1053" href="#1053">1053</a>     }
<a class="jxr_linenumber" name="1054" href="#1054">1054</a>     @Test
<a class="jxr_linenumber" name="1055" href="#1055">1055</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testFolderRendition() {
<a class="jxr_linenumber" name="1056" href="#1056">1056</a>         <em class="jxr_comment">// upload an image as JPEG picture</em>
<a class="jxr_linenumber" name="1057" href="#1057">1057</a>         log.info(<span class="jxr_string">"starting testFolderRendition() ..."</span>);
<a class="jxr_linenumber" name="1058" href="#1058">1058</a>         
<a class="jxr_linenumber" name="1059" href="#1059">1059</a>         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="1060" href="#1060">1060</a>             InputStream imageStream = <strong class="jxr_keyword">this</strong>.getClass().getResourceAsStream(<span class="jxr_string">"/image.jpg"</span>);
<a class="jxr_linenumber" name="1061" href="#1061">1061</a>             assertNotNull(<span class="jxr_string">"Test setup failure no 'image.jpg' in test resources, getResourceAsStream failed"</span>, imageStream);
<a class="jxr_linenumber" name="1062" href="#1062">1062</a>             String id = createFolder();           
<a class="jxr_linenumber" name="1063" href="#1063">1063</a> 
<a class="jxr_linenumber" name="1064" href="#1064">1064</a>             assertNotNull (id);
<a class="jxr_linenumber" name="1065" href="#1065">1065</a>             String renditionFilter = <span class="jxr_string">"*"</span>;
<a class="jxr_linenumber" name="1066" href="#1066">1066</a>             List&lt;RenditionData&gt; renditions = fObjSvc.getRenditions(fRepositoryId, id, renditionFilter, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="1067" href="#1067">1067</a>             assertNotNull(renditions);
<a class="jxr_linenumber" name="1068" href="#1068">1068</a>             assertEquals(1, renditions.size());
<a class="jxr_linenumber" name="1069" href="#1069">1069</a>             RenditionData rd = renditions.get(0);
<a class="jxr_linenumber" name="1070" href="#1070">1070</a>             assertEquals(PNG, rd.getMimeType());
<a class="jxr_linenumber" name="1071" href="#1071">1071</a>             assertEquals(<span class="jxr_string">"cmis:thumbnail"</span>, rd.getKind());
<a class="jxr_linenumber" name="1072" href="#1072">1072</a>             assertEquals(id, rd.getRenditionDocumentId());
<a class="jxr_linenumber" name="1073" href="#1073">1073</a>             assertNotNull(rd.getBigHeight());
<a class="jxr_linenumber" name="1074" href="#1074">1074</a>             assertNotNull(rd.getBigWidth());
<a class="jxr_linenumber" name="1075" href="#1075">1075</a>             assertEquals(DocumentImpl.ICON_SIZE, rd.getBigHeight().longValue());
<a class="jxr_linenumber" name="1076" href="#1076">1076</a>             assertEquals(DocumentImpl.ICON_SIZE, rd.getBigWidth().longValue());
<a class="jxr_linenumber" name="1077" href="#1077">1077</a>             assertNotNull(rd.getStreamId());
<a class="jxr_linenumber" name="1078" href="#1078">1078</a>             ContentStream renditionContent = fObjSvc.getContentStream(fRepositoryId, id, rd.getStreamId(), <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="1079" href="#1079">1079</a>             assertEquals(rd.getMimeType(), renditionContent.getMimeType());
<a class="jxr_linenumber" name="1080" href="#1080">1080</a>             readThumbnailStream(renditionContent.getStream());
<a class="jxr_linenumber" name="1081" href="#1081">1081</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a class="jxr_linenumber" name="1082" href="#1082">1082</a>             log.error(<span class="jxr_string">"testFolderRendition failed with exception "</span>, e);
<a class="jxr_linenumber" name="1083" href="#1083">1083</a>             fail(<span class="jxr_string">"testFolderRendition failed with exceetion "</span> + e);
<a class="jxr_linenumber" name="1084" href="#1084">1084</a>         }
<a class="jxr_linenumber" name="1085" href="#1085">1085</a>         log.info(<span class="jxr_string">"... testFolderRendition finished."</span>);
<a class="jxr_linenumber" name="1086" href="#1086">1086</a>    
<a class="jxr_linenumber" name="1087" href="#1087">1087</a>     }
<a class="jxr_linenumber" name="1088" href="#1088">1088</a>     
<a class="jxr_linenumber" name="1089" href="#1089">1089</a>     @Test
<a class="jxr_linenumber" name="1090" href="#1090">1090</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testAppendContent() {
<a class="jxr_linenumber" name="1091" href="#1091">1091</a>         log.info(<span class="jxr_string">"starting testAppendContent() ..."</span>);
<a class="jxr_linenumber" name="1092" href="#1092">1092</a>         String id = createDocument(fRootFolderId, <strong class="jxr_keyword">true</strong>);
<a class="jxr_linenumber" name="1093" href="#1093">1093</a>         <strong class="jxr_keyword">if</strong> (id != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="1094" href="#1094">1094</a>             log.info(<span class="jxr_string">"createDocument succeeded with created id: "</span> + id);
<a class="jxr_linenumber" name="1095" href="#1095">1095</a>         }
<a class="jxr_linenumber" name="1096" href="#1096">1096</a> 
<a class="jxr_linenumber" name="1097" href="#1097">1097</a>         <em class="jxr_comment">// append content again in a second call</em>
<a class="jxr_linenumber" name="1098" href="#1098">1098</a>         Holder&lt;String&gt; idHolder = <strong class="jxr_keyword">new</strong> Holder&lt;String&gt;(id);
<a class="jxr_linenumber" name="1099" href="#1099">1099</a>         
<a class="jxr_linenumber" name="1100" href="#1100">1100</a>         ContentStream contentStream = createContent();
<a class="jxr_linenumber" name="1101" href="#1101">1101</a>         fObjSvc.appendContentStream(fRepositoryId, idHolder, <strong class="jxr_keyword">null</strong>, contentStream, false, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="1102" href="#1102">1102</a>         ContentStream sd = fObjSvc.getContentStream(fRepositoryId, id, <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="1103" href="#1103">1103</a>         verifyContentResult(sd, 64);
<a class="jxr_linenumber" name="1104" href="#1104">1104</a> 
<a class="jxr_linenumber" name="1105" href="#1105">1105</a>         <em class="jxr_comment">// cleanup</em>
<a class="jxr_linenumber" name="1106" href="#1106">1106</a>         fObjSvc.deleteObject(fRepositoryId, id, <strong class="jxr_keyword">true</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="1107" href="#1107">1107</a> 
<a class="jxr_linenumber" name="1108" href="#1108">1108</a>         log.info(<span class="jxr_string">"... testAppendContent() finished."</span>);
<a class="jxr_linenumber" name="1109" href="#1109">1109</a>     }
<a class="jxr_linenumber" name="1110" href="#1110">1110</a> 
<a class="jxr_linenumber" name="1111" href="#1111">1111</a>     @Test
<a class="jxr_linenumber" name="1112" href="#1112">1112</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testBulkUpdateProperties() {
<a class="jxr_linenumber" name="1113" href="#1113">1113</a>         log.info(<span class="jxr_string">"starting testBulkUpdateProperties() ..."</span>);
<a class="jxr_linenumber" name="1114" href="#1114">1114</a>         String MY_CUSTOM_NAME_2 = MY_CUSTOM_NAME + <span class="jxr_string">"_2"</span>;
<a class="jxr_linenumber" name="1115" href="#1115">1115</a>         String id1 = createDocumentWithCustomType(MY_CUSTOM_NAME, fRootFolderId, false);
<a class="jxr_linenumber" name="1116" href="#1116">1116</a>         String id2 = createDocumentWithCustomType(MY_CUSTOM_NAME_2, fRootFolderId, false);
<a class="jxr_linenumber" name="1117" href="#1117">1117</a>         String changeToken1, changeToken2;
<a class="jxr_linenumber" name="1118" href="#1118">1118</a>         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="1119" href="#1119">1119</a>             ObjectData res = fObjSvc.getObject(fRepositoryId, id1, <span class="jxr_string">"*"</span>, false, IncludeRelationships.NONE, <strong class="jxr_keyword">null</strong>, false,
<a class="jxr_linenumber" name="1120" href="#1120">1120</a>                     false, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="1121" href="#1121">1121</a>             assertNotNull(res);
<a class="jxr_linenumber" name="1122" href="#1122">1122</a>             Map&lt;String, PropertyData&lt;?&gt;&gt; props = res.getProperties().getProperties();
<a class="jxr_linenumber" name="1123" href="#1123">1123</a>             changeToken1 = (String) props.get(PropertyIds.CHANGE_TOKEN).getFirstValue();
<a class="jxr_linenumber" name="1124" href="#1124">1124</a> 
<a class="jxr_linenumber" name="1125" href="#1125">1125</a>             res = fObjSvc.getObject(fRepositoryId, id2, <span class="jxr_string">"*"</span>, false, IncludeRelationships.NONE, <strong class="jxr_keyword">null</strong>, false,
<a class="jxr_linenumber" name="1126" href="#1126">1126</a>                     false, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="1127" href="#1127">1127</a>             assertNotNull(res);
<a class="jxr_linenumber" name="1128" href="#1128">1128</a>             props = res.getProperties().getProperties();
<a class="jxr_linenumber" name="1129" href="#1129">1129</a>             changeToken2 = (String) props.get(PropertyIds.CHANGE_TOKEN).getFirstValue();
<a class="jxr_linenumber" name="1130" href="#1130">1130</a> 
<a class="jxr_linenumber" name="1131" href="#1131">1131</a>             <em class="jxr_comment">// check returned properties</em>
<a class="jxr_linenumber" name="1132" href="#1132">1132</a>             <strong class="jxr_keyword">for</strong> (PropertyData&lt;?&gt; pd : props.values()) {
<a class="jxr_linenumber" name="1133" href="#1133">1133</a>                 log.info(<span class="jxr_string">"  return property id: "</span> + pd.getId() + <span class="jxr_string">", value: "</span> + pd.getValues());
<a class="jxr_linenumber" name="1134" href="#1134">1134</a>             }
<a class="jxr_linenumber" name="1135" href="#1135">1135</a> 
<a class="jxr_linenumber" name="1136" href="#1136">1136</a> 
<a class="jxr_linenumber" name="1137" href="#1137">1137</a>             <em class="jxr_comment">// update properties:</em>
<a class="jxr_linenumber" name="1138" href="#1138">1138</a>             log.info(<span class="jxr_string">"updating property"</span>);
<a class="jxr_linenumber" name="1139" href="#1139">1139</a>             List&lt;PropertyData&lt;?&gt;&gt; properties = <strong class="jxr_keyword">new</strong> ArrayList&lt;PropertyData&lt;?&gt;&gt;();
<a class="jxr_linenumber" name="1140" href="#1140">1140</a>             properties.add(fFactory.createPropertyStringData(TEST_DOCUMENT_MY_STRING_PROP_ID, NEW_STRING_PROP_VAL));
<a class="jxr_linenumber" name="1141" href="#1141">1141</a>             properties.add(fFactory.createPropertyIntegerData(TEST_DOCUMENT_MY_INT_PROP_ID, NEW_INT_PROP_VAL));
<a class="jxr_linenumber" name="1142" href="#1142">1142</a>             Properties newProps = fFactory.createPropertiesData(properties);
<a class="jxr_linenumber" name="1143" href="#1143">1143</a>             <em class="jxr_comment">// wait some time to get a newer change token</em>
<a class="jxr_linenumber" name="1144" href="#1144">1144</a>             
<a class="jxr_linenumber" name="1145" href="#1145">1145</a>             List&lt;BulkUpdateObjectIdAndChangeToken&gt; objs = <strong class="jxr_keyword">new</strong> ArrayList&lt;BulkUpdateObjectIdAndChangeToken&gt;();
<a class="jxr_linenumber" name="1146" href="#1146">1146</a>             objs.add(<strong class="jxr_keyword">new</strong> BulkUpdateObjectIdAndChangeTokenImpl(id1, changeToken1));
<a class="jxr_linenumber" name="1147" href="#1147">1147</a>             objs.add(<strong class="jxr_keyword">new</strong> BulkUpdateObjectIdAndChangeTokenImpl(id2, changeToken2));
<a class="jxr_linenumber" name="1148" href="#1148">1148</a> 
<a class="jxr_linenumber" name="1149" href="#1149">1149</a>             List&lt;BulkUpdateObjectIdAndChangeToken&gt; newObjs;
<a class="jxr_linenumber" name="1150" href="#1150">1150</a>             newObjs = fObjSvc.bulkUpdateProperties(fRepositoryId, objs, newProps, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="1151" href="#1151">1151</a>             assertNotNull(newObjs);
<a class="jxr_linenumber" name="1152" href="#1152">1152</a>             assertEquals(objs.size(), newObjs.size());
<a class="jxr_linenumber" name="1153" href="#1153">1153</a>             <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i=0; i&lt;newObjs.size(); i++) {
<a class="jxr_linenumber" name="1154" href="#1154">1154</a>                 assertEquals(objs.get(i).getId(), newObjs.get(i).getId());
<a class="jxr_linenumber" name="1155" href="#1155">1155</a>                 assertTrue(! objs.get(i).getChangeToken().equals(newObjs.get(i).getChangeToken()));
<a class="jxr_linenumber" name="1156" href="#1156">1156</a>             }
<a class="jxr_linenumber" name="1157" href="#1157">1157</a>             <em class="jxr_comment">// check that new propertie are set</em>
<a class="jxr_linenumber" name="1158" href="#1158">1158</a>             verifyUpdatedProperties(id1, MY_CUSTOM_NAME);
<a class="jxr_linenumber" name="1159" href="#1159">1159</a>             verifyUpdatedProperties(id2, MY_CUSTOM_NAME_2);
<a class="jxr_linenumber" name="1160" href="#1160">1160</a> 
<a class="jxr_linenumber" name="1161" href="#1161">1161</a> 
<a class="jxr_linenumber" name="1162" href="#1162">1162</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a class="jxr_linenumber" name="1163" href="#1163">1163</a>             fail(<span class="jxr_string">"testBulkUpdateProperties() failed with exception: "</span> + e);
<a class="jxr_linenumber" name="1164" href="#1164">1164</a>         }
<a class="jxr_linenumber" name="1165" href="#1165">1165</a>         log.info(<span class="jxr_string">"... testBulkUpdateProperties() finished."</span>);
<a class="jxr_linenumber" name="1166" href="#1166">1166</a>     }
<a class="jxr_linenumber" name="1167" href="#1167">1167</a> 
<a class="jxr_linenumber" name="1168" href="#1168">1168</a>     <em class="jxr_comment">// CMIS 1.1: test item typpe</em>
<a class="jxr_linenumber" name="1169" href="#1169">1169</a>     @Test
<a class="jxr_linenumber" name="1170" href="#1170">1170</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testItemCreation() {
<a class="jxr_linenumber" name="1171" href="#1171">1171</a>  
<a class="jxr_linenumber" name="1172" href="#1172">1172</a>         log.info(<span class="jxr_string">"starting testItemCreation() ..."</span>);
<a class="jxr_linenumber" name="1173" href="#1173">1173</a>         String propVal = <span class="jxr_string">"abc123"</span>;
<a class="jxr_linenumber" name="1174" href="#1174">1174</a>         String name = <span class="jxr_string">"CoolItem"</span>;
<a class="jxr_linenumber" name="1175" href="#1175">1175</a>         String id = createItem(name, fRootFolderId, propVal);
<a class="jxr_linenumber" name="1176" href="#1176">1176</a>         <strong class="jxr_keyword">if</strong> (id != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="1177" href="#1177">1177</a>             log.info(<span class="jxr_string">"testItemCreation succeeded with created id: "</span> + id);
<a class="jxr_linenumber" name="1178" href="#1178">1178</a>         }
<a class="jxr_linenumber" name="1179" href="#1179">1179</a>         log.info(<span class="jxr_string">"... testCreateObject() finished."</span>);
<a class="jxr_linenumber" name="1180" href="#1180">1180</a>         
<a class="jxr_linenumber" name="1181" href="#1181">1181</a>         <em class="jxr_comment">// read document again and check properties</em>
<a class="jxr_linenumber" name="1182" href="#1182">1182</a>         ObjectData res = getDocumentObjectData(id);
<a class="jxr_linenumber" name="1183" href="#1183">1183</a>         String returnedId = res.getId();
<a class="jxr_linenumber" name="1184" href="#1184">1184</a>         Map&lt;String, PropertyData&lt;?&gt;&gt; props = res.getProperties().getProperties();
<a class="jxr_linenumber" name="1185" href="#1185">1185</a>         testReturnedProperties(returnedId, name, TEST_ITEM_TYPE_ID, props);
<a class="jxr_linenumber" name="1186" href="#1186">1186</a>         PropertyData&lt;?&gt; pd = props.get(ITEM_STRING_PROP);
<a class="jxr_linenumber" name="1187" href="#1187">1187</a>         assertEquals(propVal, pd.getFirstValue());
<a class="jxr_linenumber" name="1188" href="#1188">1188</a>         assertEquals(12, props.size()); <em class="jxr_comment">// should not contain all the document properties</em>
<a class="jxr_linenumber" name="1189" href="#1189">1189</a>         log.info(<span class="jxr_string">"... finished testItemCreation()"</span>);
<a class="jxr_linenumber" name="1190" href="#1190">1190</a>     }
<a class="jxr_linenumber" name="1191" href="#1191">1191</a>     
<a class="jxr_linenumber" name="1192" href="#1192">1192</a>     @Test
<a class="jxr_linenumber" name="1193" href="#1193">1193</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testSecondaryTypes() {
<a class="jxr_linenumber" name="1194" href="#1194">1194</a>         log.info(<span class="jxr_string">"starting testItemCreation() ..."</span>);
<a class="jxr_linenumber" name="1195" href="#1195">1195</a>         <strong class="jxr_keyword">final</strong> String strPropVal = <span class="jxr_string">"Secondary"</span>;
<a class="jxr_linenumber" name="1196" href="#1196">1196</a>         <strong class="jxr_keyword">final</strong> BigInteger intPropVal = BigInteger.valueOf(100);
<a class="jxr_linenumber" name="1197" href="#1197">1197</a>         <strong class="jxr_keyword">final</strong> String primaryPropVal = <span class="jxr_string">"Sample Doc String Property"</span>;
<a class="jxr_linenumber" name="1198" href="#1198">1198</a>         
<a class="jxr_linenumber" name="1199" href="#1199">1199</a>         List&lt;PropertyData&lt;?&gt;&gt; properties = <strong class="jxr_keyword">new</strong> ArrayList&lt;PropertyData&lt;?&gt;&gt;();
<a class="jxr_linenumber" name="1200" href="#1200">1200</a>         properties.add(fFactory.createPropertyStringData(PropertyIds.NAME, <span class="jxr_string">"ObjectWithSecondaryType"</span>));
<a class="jxr_linenumber" name="1201" href="#1201">1201</a>         properties.add(fFactory.createPropertyIdData(PropertyIds.OBJECT_TYPE_ID, TEST_DOCUMENT_TYPE_ID));
<a class="jxr_linenumber" name="1202" href="#1202">1202</a>         properties.add(fFactory.createPropertyStringData(TEST_DOCUMENT_STRING_PROP_ID, primaryPropVal));
<a class="jxr_linenumber" name="1203" href="#1203">1203</a>         properties.add(fFactory.createPropertyIdData(PropertyIds.SECONDARY_OBJECT_TYPE_IDS, TEST_SECONDARY_TYPE_ID));
<a class="jxr_linenumber" name="1204" href="#1204">1204</a>         properties.add(fFactory.createPropertyStringData(SECONDARY_STRING_PROP, strPropVal));
<a class="jxr_linenumber" name="1205" href="#1205">1205</a>         properties.add(fFactory.createPropertyIntegerData(SECONDARY_INTEGER_PROP, intPropVal));
<a class="jxr_linenumber" name="1206" href="#1206">1206</a>         Properties props = fFactory.createPropertiesData(properties);
<a class="jxr_linenumber" name="1207" href="#1207">1207</a>         
<a class="jxr_linenumber" name="1208" href="#1208">1208</a>         String id = fObjSvc.createDocument(fRepositoryId, props, fRootFolderId, <strong class="jxr_keyword">null</strong>, VersioningState.NONE, <strong class="jxr_keyword">null</strong>,
<a class="jxr_linenumber" name="1209" href="#1209">1209</a>                 <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="1210" href="#1210">1210</a>         assertNotNull(id);
<a class="jxr_linenumber" name="1211" href="#1211">1211</a>         
<a class="jxr_linenumber" name="1212" href="#1212">1212</a>         Properties res = fObjSvc.getProperties(fRepositoryId, id, <span class="jxr_string">"*"</span>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="1213" href="#1213">1213</a>         assertNotNull(res.getProperties());
<a class="jxr_linenumber" name="1214" href="#1214">1214</a>         Map&lt;String, PropertyData&lt;?&gt;&gt; returnedProps = res.getProperties();
<a class="jxr_linenumber" name="1215" href="#1215">1215</a>         assertNotNull(returnedProps);
<a class="jxr_linenumber" name="1216" href="#1216">1216</a>         String returnedValueStr = (String) returnedProps.get(SECONDARY_STRING_PROP).getFirstValue();
<a class="jxr_linenumber" name="1217" href="#1217">1217</a>         BigInteger returnedValueInt = (BigInteger) returnedProps.get(SECONDARY_INTEGER_PROP).getFirstValue();
<a class="jxr_linenumber" name="1218" href="#1218">1218</a>         assertEquals(strPropVal, returnedValueStr);
<a class="jxr_linenumber" name="1219" href="#1219">1219</a>         assertEquals(intPropVal, returnedValueInt);
<a class="jxr_linenumber" name="1220" href="#1220">1220</a>         String returnedPrimaryPropVal = (String) returnedProps.get(TEST_DOCUMENT_STRING_PROP_ID).getFirstValue();
<a class="jxr_linenumber" name="1221" href="#1221">1221</a>         assertEquals(primaryPropVal, returnedPrimaryPropVal);
<a class="jxr_linenumber" name="1222" href="#1222">1222</a>         
<a class="jxr_linenumber" name="1223" href="#1223">1223</a>         <em class="jxr_comment">// test updating properties</em>
<a class="jxr_linenumber" name="1224" href="#1224">1224</a>         <strong class="jxr_keyword">final</strong> String strPropVal2 = <span class="jxr_string">"Secondary updated"</span>;
<a class="jxr_linenumber" name="1225" href="#1225">1225</a>         <strong class="jxr_keyword">final</strong> String primaryPropVal2 = <span class="jxr_string">"Sample Doc String Property updated"</span>;
<a class="jxr_linenumber" name="1226" href="#1226">1226</a>         properties = <strong class="jxr_keyword">new</strong> ArrayList&lt;PropertyData&lt;?&gt;&gt;();
<a class="jxr_linenumber" name="1227" href="#1227">1227</a>         properties.add(fFactory.createPropertyStringData(SECONDARY_STRING_PROP, strPropVal2));
<a class="jxr_linenumber" name="1228" href="#1228">1228</a>         properties.add(fFactory.createPropertyStringData(TEST_DOCUMENT_STRING_PROP_ID, primaryPropVal2));
<a class="jxr_linenumber" name="1229" href="#1229">1229</a>         props = fFactory.createPropertiesData(properties);
<a class="jxr_linenumber" name="1230" href="#1230">1230</a>         fObjSvc.updateProperties(fRepositoryId, <strong class="jxr_keyword">new</strong> Holder&lt;String&gt;(id), <strong class="jxr_keyword">new</strong> Holder&lt;String&gt;(), props, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="1231" href="#1231">1231</a>         
<a class="jxr_linenumber" name="1232" href="#1232">1232</a>         res = fObjSvc.getProperties(fRepositoryId, id, <span class="jxr_string">"*"</span>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="1233" href="#1233">1233</a>         assertNotNull(res.getProperties());
<a class="jxr_linenumber" name="1234" href="#1234">1234</a>         returnedProps = res.getProperties();
<a class="jxr_linenumber" name="1235" href="#1235">1235</a>         assertNotNull(returnedProps);
<a class="jxr_linenumber" name="1236" href="#1236">1236</a>         returnedValueStr = (String) returnedProps.get(SECONDARY_STRING_PROP).getFirstValue();
<a class="jxr_linenumber" name="1237" href="#1237">1237</a>         returnedValueInt = (BigInteger) returnedProps.get(SECONDARY_INTEGER_PROP).getFirstValue();
<a class="jxr_linenumber" name="1238" href="#1238">1238</a>         assertEquals(strPropVal2, returnedValueStr);
<a class="jxr_linenumber" name="1239" href="#1239">1239</a>         assertEquals(intPropVal, returnedValueInt);
<a class="jxr_linenumber" name="1240" href="#1240">1240</a>         returnedPrimaryPropVal = (String) returnedProps.get(TEST_DOCUMENT_STRING_PROP_ID).getFirstValue();
<a class="jxr_linenumber" name="1241" href="#1241">1241</a>         assertEquals(primaryPropVal2, returnedPrimaryPropVal);
<a class="jxr_linenumber" name="1242" href="#1242">1242</a>       
<a class="jxr_linenumber" name="1243" href="#1243">1243</a>         log.info(<span class="jxr_string">"... finished testSecondaryTypes()"</span>);        
<a class="jxr_linenumber" name="1244" href="#1244">1244</a>     }
<a class="jxr_linenumber" name="1245" href="#1245">1245</a>     @Test
<a class="jxr_linenumber" name="1246" href="#1246">1246</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testSecondaryTypePropertiesNotSet() {
<a class="jxr_linenumber" name="1247" href="#1247">1247</a>         log.info(<span class="jxr_string">"starting testSecondaryTypePropertiesNotSet() ..."</span>);
<a class="jxr_linenumber" name="1248" href="#1248">1248</a> 
<a class="jxr_linenumber" name="1249" href="#1249">1249</a>         <strong class="jxr_keyword">final</strong> String primaryPropVal = <span class="jxr_string">"Sample Doc String Property"</span>;
<a class="jxr_linenumber" name="1250" href="#1250">1250</a>         
<a class="jxr_linenumber" name="1251" href="#1251">1251</a>         List&lt;PropertyData&lt;?&gt;&gt; properties = <strong class="jxr_keyword">new</strong> ArrayList&lt;PropertyData&lt;?&gt;&gt;();
<a class="jxr_linenumber" name="1252" href="#1252">1252</a>         properties.add(fFactory.createPropertyStringData(PropertyIds.NAME, <span class="jxr_string">"ObjectWithSecondaryType"</span>));
<a class="jxr_linenumber" name="1253" href="#1253">1253</a>         properties.add(fFactory.createPropertyIdData(PropertyIds.OBJECT_TYPE_ID, TEST_DOCUMENT_TYPE_ID));
<a class="jxr_linenumber" name="1254" href="#1254">1254</a>         properties.add(fFactory.createPropertyStringData(TEST_DOCUMENT_STRING_PROP_ID, primaryPropVal));
<a class="jxr_linenumber" name="1255" href="#1255">1255</a>         properties.add(fFactory.createPropertyIdData(PropertyIds.SECONDARY_OBJECT_TYPE_IDS, TEST_SECONDARY_TYPE_ID));
<a class="jxr_linenumber" name="1256" href="#1256">1256</a>         Properties props = fFactory.createPropertiesData(properties);
<a class="jxr_linenumber" name="1257" href="#1257">1257</a>         
<a class="jxr_linenumber" name="1258" href="#1258">1258</a>         String id = fObjSvc.createDocument(fRepositoryId, props, fRootFolderId, <strong class="jxr_keyword">null</strong>, VersioningState.NONE, <strong class="jxr_keyword">null</strong>,
<a class="jxr_linenumber" name="1259" href="#1259">1259</a>                 <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="1260" href="#1260">1260</a>         assertNotNull(id);
<a class="jxr_linenumber" name="1261" href="#1261">1261</a>         
<a class="jxr_linenumber" name="1262" href="#1262">1262</a>         Properties res = fObjSvc.getProperties(fRepositoryId, id, <span class="jxr_string">"*"</span>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="1263" href="#1263">1263</a>         assertNotNull(res.getProperties());
<a class="jxr_linenumber" name="1264" href="#1264">1264</a>         Map&lt;String, PropertyData&lt;?&gt;&gt; returnedProps = res.getProperties();
<a class="jxr_linenumber" name="1265" href="#1265">1265</a>         assertNotNull(returnedProps);
<a class="jxr_linenumber" name="1266" href="#1266">1266</a>         <strong class="jxr_keyword">boolean</strong> hasProp = returnedProps.containsKey(SECONDARY_STRING_PROP);
<a class="jxr_linenumber" name="1267" href="#1267">1267</a>         assertTrue(hasProp);
<a class="jxr_linenumber" name="1268" href="#1268">1268</a>         hasProp = returnedProps.containsKey(SECONDARY_INTEGER_PROP);
<a class="jxr_linenumber" name="1269" href="#1269">1269</a>         assertTrue(hasProp);
<a class="jxr_linenumber" name="1270" href="#1270">1270</a>         PropertyData&lt;?&gt; returnedValue = returnedProps.get(SECONDARY_STRING_PROP);
<a class="jxr_linenumber" name="1271" href="#1271">1271</a>         assertNotNull(returnedValue);
<a class="jxr_linenumber" name="1272" href="#1272">1272</a>         assertTrue(returnedValue.getValues().isEmpty());
<a class="jxr_linenumber" name="1273" href="#1273">1273</a>         returnedValue = returnedProps.get(SECONDARY_INTEGER_PROP);
<a class="jxr_linenumber" name="1274" href="#1274">1274</a>         assertNotNull(returnedValue);
<a class="jxr_linenumber" name="1275" href="#1275">1275</a>         assertTrue(returnedValue.getValues().isEmpty());
<a class="jxr_linenumber" name="1276" href="#1276">1276</a>         
<a class="jxr_linenumber" name="1277" href="#1277">1277</a>         log.info(<span class="jxr_string">"... finished testSecondaryTypePropertiesNotSet()"</span>);        
<a class="jxr_linenumber" name="1278" href="#1278">1278</a>     } 
<a class="jxr_linenumber" name="1279" href="#1279">1279</a>     
<a class="jxr_linenumber" name="1280" href="#1280">1280</a>     @Test
<a class="jxr_linenumber" name="1281" href="#1281">1281</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testUpdatePropertiesWithTypeCreation () {
<a class="jxr_linenumber" name="1282" href="#1282">1282</a>         <strong class="jxr_keyword">final</strong> String strPropVal = <span class="jxr_string">"Secondary"</span>;
<a class="jxr_linenumber" name="1283" href="#1283">1283</a>         <strong class="jxr_keyword">final</strong> BigInteger intPropVal = BigInteger.valueOf(100);
<a class="jxr_linenumber" name="1284" href="#1284">1284</a>         <strong class="jxr_keyword">final</strong> String primaryPropVal = <span class="jxr_string">"Sample Doc String Property"</span>;
<a class="jxr_linenumber" name="1285" href="#1285">1285</a>         <strong class="jxr_keyword">final</strong> String primaryPropVal2 = <span class="jxr_string">"Sample Doc String Property updated"</span>;
<a class="jxr_linenumber" name="1286" href="#1286">1286</a> 
<a class="jxr_linenumber" name="1287" href="#1287">1287</a>         log.info(<span class="jxr_string">"starting testUpdatePropertiesWithTypeCreation() ..."</span>);
<a class="jxr_linenumber" name="1288" href="#1288">1288</a>         
<a class="jxr_linenumber" name="1289" href="#1289">1289</a>         List&lt;PropertyData&lt;?&gt;&gt; properties = <strong class="jxr_keyword">new</strong> ArrayList&lt;PropertyData&lt;?&gt;&gt;();
<a class="jxr_linenumber" name="1290" href="#1290">1290</a>         properties.add(fFactory.createPropertyStringData(PropertyIds.NAME, <span class="jxr_string">"SimpleDocument"</span>));
<a class="jxr_linenumber" name="1291" href="#1291">1291</a>         properties.add(fFactory.createPropertyIdData(PropertyIds.OBJECT_TYPE_ID, TEST_DOCUMENT_TYPE_ID));
<a class="jxr_linenumber" name="1292" href="#1292">1292</a>         properties.add(fFactory.createPropertyStringData(TEST_DOCUMENT_STRING_PROP_ID, primaryPropVal));
<a class="jxr_linenumber" name="1293" href="#1293">1293</a>         Properties props = fFactory.createPropertiesData(properties);
<a class="jxr_linenumber" name="1294" href="#1294">1294</a>         
<a class="jxr_linenumber" name="1295" href="#1295">1295</a>         String id = fObjSvc.createDocument(fRepositoryId, props, fRootFolderId, <strong class="jxr_keyword">null</strong>, VersioningState.NONE, <strong class="jxr_keyword">null</strong>,
<a class="jxr_linenumber" name="1296" href="#1296">1296</a>                 <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="1297" href="#1297">1297</a>         assertNotNull(id);
<a class="jxr_linenumber" name="1298" href="#1298">1298</a> 
<a class="jxr_linenumber" name="1299" href="#1299">1299</a>         properties = <strong class="jxr_keyword">new</strong> ArrayList&lt;PropertyData&lt;?&gt;&gt;();
<a class="jxr_linenumber" name="1300" href="#1300">1300</a>         properties.add(fFactory.createPropertyStringData(TEST_DOCUMENT_STRING_PROP_ID, primaryPropVal2));
<a class="jxr_linenumber" name="1301" href="#1301">1301</a>         properties.add(fFactory.createPropertyIdData(PropertyIds.SECONDARY_OBJECT_TYPE_IDS, TEST_SECONDARY_TYPE_ID));
<a class="jxr_linenumber" name="1302" href="#1302">1302</a>         properties.add(fFactory.createPropertyStringData(SECONDARY_STRING_PROP, strPropVal));
<a class="jxr_linenumber" name="1303" href="#1303">1303</a>         properties.add(fFactory.createPropertyIntegerData(SECONDARY_INTEGER_PROP, intPropVal));
<a class="jxr_linenumber" name="1304" href="#1304">1304</a>         props = fFactory.createPropertiesData(properties);
<a class="jxr_linenumber" name="1305" href="#1305">1305</a>         fObjSvc.updateProperties(fRepositoryId, <strong class="jxr_keyword">new</strong> Holder&lt;String&gt;(id), <strong class="jxr_keyword">new</strong> Holder&lt;String&gt;(), props, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="1306" href="#1306">1306</a>         
<a class="jxr_linenumber" name="1307" href="#1307">1307</a>         Properties res = fObjSvc.getProperties(fRepositoryId, id, <span class="jxr_string">"*"</span>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="1308" href="#1308">1308</a>         assertNotNull(res.getProperties());
<a class="jxr_linenumber" name="1309" href="#1309">1309</a>         Map&lt;String, PropertyData&lt;?&gt;&gt; returnedProps = res.getProperties();
<a class="jxr_linenumber" name="1310" href="#1310">1310</a>         assertNotNull(returnedProps);
<a class="jxr_linenumber" name="1311" href="#1311">1311</a>         assertEquals(1, returnedProps.get(PropertyIds.SECONDARY_OBJECT_TYPE_IDS).getValues().size());
<a class="jxr_linenumber" name="1312" href="#1312">1312</a>         String secIds = (String) returnedProps.get(PropertyIds.SECONDARY_OBJECT_TYPE_IDS).getFirstValue();
<a class="jxr_linenumber" name="1313" href="#1313">1313</a>         assertEquals(TEST_SECONDARY_TYPE_ID, secIds);
<a class="jxr_linenumber" name="1314" href="#1314">1314</a>         String returnedValueStr = (String) returnedProps.get(SECONDARY_STRING_PROP).getFirstValue();
<a class="jxr_linenumber" name="1315" href="#1315">1315</a>         BigInteger returnedValueInt = (BigInteger) returnedProps.get(SECONDARY_INTEGER_PROP).getFirstValue();
<a class="jxr_linenumber" name="1316" href="#1316">1316</a>         assertEquals(strPropVal, returnedValueStr);
<a class="jxr_linenumber" name="1317" href="#1317">1317</a>         assertEquals(intPropVal, returnedValueInt);
<a class="jxr_linenumber" name="1318" href="#1318">1318</a>         String returnedPrimaryPropVal = (String) returnedProps.get(TEST_DOCUMENT_STRING_PROP_ID).getFirstValue();
<a class="jxr_linenumber" name="1319" href="#1319">1319</a>         assertEquals(primaryPropVal2, returnedPrimaryPropVal);
<a class="jxr_linenumber" name="1320" href="#1320">1320</a>       
<a class="jxr_linenumber" name="1321" href="#1321">1321</a>         log.info(<span class="jxr_string">"... finished testUpdatePropertiesWithTypeCreation()"</span>);        
<a class="jxr_linenumber" name="1322" href="#1322">1322</a>     }
<a class="jxr_linenumber" name="1323" href="#1323">1323</a>     
<a class="jxr_linenumber" name="1324" href="#1324">1324</a>     @Test
<a class="jxr_linenumber" name="1325" href="#1325">1325</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testDeleteSecondaryType () {
<a class="jxr_linenumber" name="1326" href="#1326">1326</a>         <strong class="jxr_keyword">final</strong> String primaryPropVal = <span class="jxr_string">"Sample Doc String Property"</span>;
<a class="jxr_linenumber" name="1327" href="#1327">1327</a>         <strong class="jxr_keyword">final</strong> String primaryPropVal2 = <span class="jxr_string">"Sample Doc String Property updated"</span>;
<a class="jxr_linenumber" name="1328" href="#1328">1328</a>         <strong class="jxr_keyword">final</strong> String strPropVal = <span class="jxr_string">"Secondary"</span>;
<a class="jxr_linenumber" name="1329" href="#1329">1329</a>         <strong class="jxr_keyword">final</strong> BigInteger intPropVal = BigInteger.valueOf(100);
<a class="jxr_linenumber" name="1330" href="#1330">1330</a> 
<a class="jxr_linenumber" name="1331" href="#1331">1331</a>         log.info(<span class="jxr_string">"starting testDeleteSecondaryType() ..."</span>);
<a class="jxr_linenumber" name="1332" href="#1332">1332</a>         
<a class="jxr_linenumber" name="1333" href="#1333">1333</a>         <em class="jxr_comment">// create a document with a secondary type</em>
<a class="jxr_linenumber" name="1334" href="#1334">1334</a>         List&lt;PropertyData&lt;?&gt;&gt; properties = <strong class="jxr_keyword">new</strong> ArrayList&lt;PropertyData&lt;?&gt;&gt;();
<a class="jxr_linenumber" name="1335" href="#1335">1335</a>         properties.add(fFactory.createPropertyStringData(PropertyIds.NAME, <span class="jxr_string">"ObjectWithSecondaryType"</span>));
<a class="jxr_linenumber" name="1336" href="#1336">1336</a>         properties.add(fFactory.createPropertyIdData(PropertyIds.OBJECT_TYPE_ID, TEST_DOCUMENT_TYPE_ID));
<a class="jxr_linenumber" name="1337" href="#1337">1337</a>         properties.add(fFactory.createPropertyStringData(TEST_DOCUMENT_STRING_PROP_ID, primaryPropVal));
<a class="jxr_linenumber" name="1338" href="#1338">1338</a>         properties.add(fFactory.createPropertyIdData(PropertyIds.SECONDARY_OBJECT_TYPE_IDS, TEST_SECONDARY_TYPE_ID));
<a class="jxr_linenumber" name="1339" href="#1339">1339</a>         properties.add(fFactory.createPropertyStringData(SECONDARY_STRING_PROP, strPropVal));
<a class="jxr_linenumber" name="1340" href="#1340">1340</a>         properties.add(fFactory.createPropertyIntegerData(SECONDARY_INTEGER_PROP, intPropVal));
<a class="jxr_linenumber" name="1341" href="#1341">1341</a>         Properties props = fFactory.createPropertiesData(properties);
<a class="jxr_linenumber" name="1342" href="#1342">1342</a>         
<a class="jxr_linenumber" name="1343" href="#1343">1343</a>         String id = fObjSvc.createDocument(fRepositoryId, props, fRootFolderId, <strong class="jxr_keyword">null</strong>, VersioningState.NONE, <strong class="jxr_keyword">null</strong>,
<a class="jxr_linenumber" name="1344" href="#1344">1344</a>                 <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="1345" href="#1345">1345</a>         assertNotNull(id);
<a class="jxr_linenumber" name="1346" href="#1346">1346</a> 
<a class="jxr_linenumber" name="1347" href="#1347">1347</a>         <em class="jxr_comment">// delete the secondary type</em>
<a class="jxr_linenumber" name="1348" href="#1348">1348</a>         properties = <strong class="jxr_keyword">new</strong> ArrayList&lt;PropertyData&lt;?&gt;&gt;();
<a class="jxr_linenumber" name="1349" href="#1349">1349</a>         properties.add(fFactory.createPropertyStringData(TEST_DOCUMENT_STRING_PROP_ID, primaryPropVal2));
<a class="jxr_linenumber" name="1350" href="#1350">1350</a>         properties.add(fFactory.createPropertyIdData(PropertyIds.SECONDARY_OBJECT_TYPE_IDS, (String)<strong class="jxr_keyword">null</strong>)); <em class="jxr_comment">// set list to empty</em>
<a class="jxr_linenumber" name="1351" href="#1351">1351</a>         props = fFactory.createPropertiesData(properties);
<a class="jxr_linenumber" name="1352" href="#1352">1352</a>         fObjSvc.updateProperties(fRepositoryId, <strong class="jxr_keyword">new</strong> Holder&lt;String&gt;(id), <strong class="jxr_keyword">new</strong> Holder&lt;String&gt;(), props, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="1353" href="#1353">1353</a>         
<a class="jxr_linenumber" name="1354" href="#1354">1354</a>         <em class="jxr_comment">// test that properties are gone</em>
<a class="jxr_linenumber" name="1355" href="#1355">1355</a>         Properties res = fObjSvc.getProperties(fRepositoryId, id, <span class="jxr_string">"*"</span>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="1356" href="#1356">1356</a>         assertNotNull(res.getProperties());
<a class="jxr_linenumber" name="1357" href="#1357">1357</a>         Map&lt;String, PropertyData&lt;?&gt;&gt; returnedProps = res.getProperties();
<a class="jxr_linenumber" name="1358" href="#1358">1358</a>         assertNotNull(returnedProps);
<a class="jxr_linenumber" name="1359" href="#1359">1359</a>         assertEquals(0, returnedProps.get(PropertyIds.SECONDARY_OBJECT_TYPE_IDS).getValues().size());
<a class="jxr_linenumber" name="1360" href="#1360">1360</a>         PropertyData&lt;?&gt; pd = returnedProps.get(SECONDARY_STRING_PROP);
<a class="jxr_linenumber" name="1361" href="#1361">1361</a>         assertNull(pd); <em class="jxr_comment">// property must not exist any longer</em>
<a class="jxr_linenumber" name="1362" href="#1362">1362</a>         pd =  returnedProps.get(SECONDARY_INTEGER_PROP);
<a class="jxr_linenumber" name="1363" href="#1363">1363</a>         assertNull(pd); <em class="jxr_comment">// property must not exist any longer        </em>
<a class="jxr_linenumber" name="1364" href="#1364">1364</a>         String returnedPrimaryPropVal = (String) returnedProps.get(TEST_DOCUMENT_STRING_PROP_ID).getFirstValue();
<a class="jxr_linenumber" name="1365" href="#1365">1365</a>         assertEquals(primaryPropVal2, returnedPrimaryPropVal); <em class="jxr_comment">// other properties should be updated</em>
<a class="jxr_linenumber" name="1366" href="#1366">1366</a>         <em class="jxr_comment">// test that system properties are there</em>
<a class="jxr_linenumber" name="1367" href="#1367">1367</a>         pd = returnedProps.get(PropertyIds.NAME);
<a class="jxr_linenumber" name="1368" href="#1368">1368</a>         assertNotNull(pd); 
<a class="jxr_linenumber" name="1369" href="#1369">1369</a>         pd = returnedProps.get(PropertyIds.OBJECT_ID);
<a class="jxr_linenumber" name="1370" href="#1370">1370</a>         assertNotNull(pd); 
<a class="jxr_linenumber" name="1371" href="#1371">1371</a>         pd = returnedProps.get(PropertyIds.OBJECT_TYPE_ID);
<a class="jxr_linenumber" name="1372" href="#1372">1372</a>         assertNotNull(pd); 
<a class="jxr_linenumber" name="1373" href="#1373">1373</a>      
<a class="jxr_linenumber" name="1374" href="#1374">1374</a>         log.info(<span class="jxr_string">"... finished testDeleteSecondaryType()"</span>);        
<a class="jxr_linenumber" name="1375" href="#1375">1375</a>     }
<a class="jxr_linenumber" name="1376" href="#1376">1376</a>     
<a class="jxr_linenumber" name="1377" href="#1377">1377</a>     <em class="jxr_comment">// TODO: test constraints on secondary types</em>
<a class="jxr_linenumber" name="1378" href="#1378">1378</a>     
<a class="jxr_linenumber" name="1379" href="#1379">1379</a>     
<a class="jxr_linenumber" name="1380" href="#1380">1380</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> verifyUpdatedProperties(String id, String name) {
<a class="jxr_linenumber" name="1381" href="#1381">1381</a>         
<a class="jxr_linenumber" name="1382" href="#1382">1382</a>         ObjectData res = fObjSvc.getObject(fRepositoryId, id, <span class="jxr_string">"*"</span>, false, IncludeRelationships.NONE, <strong class="jxr_keyword">null</strong>, false, false, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="1383" href="#1383">1383</a>         assertNotNull(res);
<a class="jxr_linenumber" name="1384" href="#1384">1384</a>         Map&lt;String, PropertyData&lt;?&gt;&gt; props = res.getProperties().getProperties();
<a class="jxr_linenumber" name="1385" href="#1385">1385</a>         <strong class="jxr_keyword">for</strong> (PropertyData&lt;?&gt; pd2 : props.values()) {
<a class="jxr_linenumber" name="1386" href="#1386">1386</a>             log.info(<span class="jxr_string">"  return property id: "</span> + pd2.getId() + <span class="jxr_string">", value: "</span> + pd2.getValues());
<a class="jxr_linenumber" name="1387" href="#1387">1387</a>         }
<a class="jxr_linenumber" name="1388" href="#1388">1388</a>         
<a class="jxr_linenumber" name="1389" href="#1389">1389</a>         PropertyData&lt;?&gt; pd;
<a class="jxr_linenumber" name="1390" href="#1390">1390</a>         pd = props.get(PropertyIds.NAME);
<a class="jxr_linenumber" name="1391" href="#1391">1391</a>         assertNotNull(pd);
<a class="jxr_linenumber" name="1392" href="#1392">1392</a>         assertEquals(name, pd.getFirstValue());
<a class="jxr_linenumber" name="1393" href="#1393">1393</a>         pd = props.get(PropertyIds.OBJECT_TYPE_ID);
<a class="jxr_linenumber" name="1394" href="#1394">1394</a>         assertEquals(TEST_CUSTOM_DOCUMENT_TYPE_ID, pd.getFirstValue());
<a class="jxr_linenumber" name="1395" href="#1395">1395</a>         pd = props.get(TEST_DOCUMENT_MY_STRING_PROP_ID);
<a class="jxr_linenumber" name="1396" href="#1396">1396</a>         assertEquals(NEW_STRING_PROP_VAL, pd.getFirstValue());
<a class="jxr_linenumber" name="1397" href="#1397">1397</a>         pd = props.get(TEST_DOCUMENT_MY_INT_PROP_ID);
<a class="jxr_linenumber" name="1398" href="#1398">1398</a>         assertEquals(NEW_INT_PROP_VAL, pd.getFirstValue());
<a class="jxr_linenumber" name="1399" href="#1399">1399</a>     }
<a class="jxr_linenumber" name="1400" href="#1400">1400</a> 
<a class="jxr_linenumber" name="1401" href="#1401">1401</a>     <strong class="jxr_keyword">protected</strong> String createDocumentFromStream(String name, String folderId, String typeId, InputStream is,
<a class="jxr_linenumber" name="1402" href="#1402">1402</a>             String contentType) <strong class="jxr_keyword">throws</strong> IOException {
<a class="jxr_linenumber" name="1403" href="#1403">1403</a> 
<a class="jxr_linenumber" name="1404" href="#1404">1404</a>         Properties props = createDocumentProperties(name, typeId);
<a class="jxr_linenumber" name="1405" href="#1405">1405</a> 
<a class="jxr_linenumber" name="1406" href="#1406">1406</a>         ContentStreamDataImpl content = <strong class="jxr_keyword">new</strong> ContentStreamDataImpl(0);
<a class="jxr_linenumber" name="1407" href="#1407">1407</a>         content.setFileName(name);
<a class="jxr_linenumber" name="1408" href="#1408">1408</a>         content.setMimeType(contentType);
<a class="jxr_linenumber" name="1409" href="#1409">1409</a> 
<a class="jxr_linenumber" name="1410" href="#1410">1410</a>         ByteArrayOutputStream ba = <strong class="jxr_keyword">new</strong> ByteArrayOutputStream();
<a class="jxr_linenumber" name="1411" href="#1411">1411</a>         byte[] buffer = <strong class="jxr_keyword">new</strong> byte [65536];
<a class="jxr_linenumber" name="1412" href="#1412">1412</a>         <strong class="jxr_keyword">int</strong> noBytesRead = 0;
<a class="jxr_linenumber" name="1413" href="#1413">1413</a> 
<a class="jxr_linenumber" name="1414" href="#1414">1414</a>         <strong class="jxr_keyword">while</strong> ((noBytesRead = is.read(buffer)) &gt;=0 ) {
<a class="jxr_linenumber" name="1415" href="#1415">1415</a>             ba.write(buffer, 0, noBytesRead);
<a class="jxr_linenumber" name="1416" href="#1416">1416</a>         }
<a class="jxr_linenumber" name="1417" href="#1417">1417</a>         
<a class="jxr_linenumber" name="1418" href="#1418">1418</a>         content.setContent(<strong class="jxr_keyword">new</strong> ByteArrayInputStream(ba.toByteArray()));
<a class="jxr_linenumber" name="1419" href="#1419">1419</a> 
<a class="jxr_linenumber" name="1420" href="#1420">1420</a>         String id = fObjSvc.createDocument(fRepositoryId, props, folderId, content, VersioningState.NONE, <strong class="jxr_keyword">null</strong>,
<a class="jxr_linenumber" name="1421" href="#1421">1421</a>                 <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="1422" href="#1422">1422</a>         <strong class="jxr_keyword">return</strong> id;
<a class="jxr_linenumber" name="1423" href="#1423">1423</a>     }
<a class="jxr_linenumber" name="1424" href="#1424">1424</a> 
<a class="jxr_linenumber" name="1425" href="#1425">1425</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> readThumbnailStream(InputStream stream) {
<a class="jxr_linenumber" name="1426" href="#1426">1426</a>         
<a class="jxr_linenumber" name="1427" href="#1427">1427</a>         byte[] buffer = <strong class="jxr_keyword">new</strong> byte [65536];
<a class="jxr_linenumber" name="1428" href="#1428">1428</a>         <strong class="jxr_keyword">int</strong> noBytesRead = 0;
<a class="jxr_linenumber" name="1429" href="#1429">1429</a>         <strong class="jxr_keyword">int</strong> count = 0;
<a class="jxr_linenumber" name="1430" href="#1430">1430</a>         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="1431" href="#1431">1431</a>             <strong class="jxr_keyword">while</strong> ((noBytesRead = stream.read(buffer)) &gt;=0 ) {
<a class="jxr_linenumber" name="1432" href="#1432">1432</a>                 count += noBytesRead;
<a class="jxr_linenumber" name="1433" href="#1433">1433</a>             }
<a class="jxr_linenumber" name="1434" href="#1434">1434</a>         } <strong class="jxr_keyword">catch</strong> (IOException e) {
<a class="jxr_linenumber" name="1435" href="#1435">1435</a>             e.printStackTrace();
<a class="jxr_linenumber" name="1436" href="#1436">1436</a>             fail(<span class="jxr_string">"Reading rendition stream failed with exception "</span> + e);
<a class="jxr_linenumber" name="1437" href="#1437">1437</a>         }
<a class="jxr_linenumber" name="1438" href="#1438">1438</a>         assertTrue(count &gt; 0);
<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>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> verifyAllowableActionsDocument(Set&lt;Action&gt; actions, <strong class="jxr_keyword">boolean</strong> isVersioned, <strong class="jxr_keyword">boolean</strong> hasContent) {
<a class="jxr_linenumber" name="1442" href="#1442">1442</a>         assertTrue(actions.contains(Action.CAN_DELETE_OBJECT));
<a class="jxr_linenumber" name="1443" href="#1443">1443</a>         assertTrue(actions.contains(Action.CAN_UPDATE_PROPERTIES));
<a class="jxr_linenumber" name="1444" href="#1444">1444</a>         assertTrue(actions.contains(Action.CAN_GET_PROPERTIES));
<a class="jxr_linenumber" name="1445" href="#1445">1445</a>         assertFalse(actions.contains(Action.CAN_GET_OBJECT_RELATIONSHIPS));
<a class="jxr_linenumber" name="1446" href="#1446">1446</a>         assertTrue(actions.contains(Action.CAN_GET_OBJECT_PARENTS));
<a class="jxr_linenumber" name="1447" href="#1447">1447</a> 
<a class="jxr_linenumber" name="1448" href="#1448">1448</a>         assertFalse(actions.contains(Action.CAN_GET_FOLDER_PARENT));
<a class="jxr_linenumber" name="1449" href="#1449">1449</a>         assertFalse(actions.contains(Action.CAN_GET_FOLDER_TREE));
<a class="jxr_linenumber" name="1450" href="#1450">1450</a>         assertFalse(actions.contains(Action.CAN_GET_DESCENDANTS));
<a class="jxr_linenumber" name="1451" href="#1451">1451</a>         assertTrue(actions.contains(Action.CAN_MOVE_OBJECT));
<a class="jxr_linenumber" name="1452" href="#1452">1452</a>         <strong class="jxr_keyword">if</strong> (hasContent) {
<a class="jxr_linenumber" name="1453" href="#1453">1453</a>             assertTrue(actions.contains(Action.CAN_DELETE_CONTENT_STREAM));
<a class="jxr_linenumber" name="1454" href="#1454">1454</a>             assertTrue(actions.contains(Action.CAN_GET_CONTENT_STREAM));
<a class="jxr_linenumber" name="1455" href="#1455">1455</a>             assertTrue(actions.contains(Action.CAN_GET_RENDITIONS));
<a class="jxr_linenumber" name="1456" href="#1456">1456</a>         } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="1457" href="#1457">1457</a>             assertFalse(actions.contains(Action.CAN_DELETE_CONTENT_STREAM));
<a class="jxr_linenumber" name="1458" href="#1458">1458</a>             assertFalse(actions.contains(Action.CAN_GET_CONTENT_STREAM));
<a class="jxr_linenumber" name="1459" href="#1459">1459</a>             assertFalse(actions.contains(Action.CAN_GET_RENDITIONS));
<a class="jxr_linenumber" name="1460" href="#1460">1460</a>         }
<a class="jxr_linenumber" name="1461" href="#1461">1461</a>         assertTrue(actions.contains(Action.CAN_ADD_OBJECT_TO_FOLDER));
<a class="jxr_linenumber" name="1462" href="#1462">1462</a>         assertTrue(actions.contains(Action.CAN_REMOVE_OBJECT_FROM_FOLDER));
<a class="jxr_linenumber" name="1463" href="#1463">1463</a> 
<a class="jxr_linenumber" name="1464" href="#1464">1464</a>         <strong class="jxr_keyword">if</strong> (isVersioned) {
<a class="jxr_linenumber" name="1465" href="#1465">1465</a>             assertTrue(actions.contains(Action.CAN_CANCEL_CHECK_OUT));
<a class="jxr_linenumber" name="1466" href="#1466">1466</a>             assertTrue(actions.contains(Action.CAN_CHECK_IN));
<a class="jxr_linenumber" name="1467" href="#1467">1467</a>             assertTrue(actions.contains(Action.CAN_CHECK_OUT));
<a class="jxr_linenumber" name="1468" href="#1468">1468</a>             assertTrue(actions.contains(Action.CAN_GET_ALL_VERSIONS));
<a class="jxr_linenumber" name="1469" href="#1469">1469</a> 
<a class="jxr_linenumber" name="1470" href="#1470">1470</a>         } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="1471" href="#1471">1471</a>             assertFalse(actions.contains(Action.CAN_CANCEL_CHECK_OUT));
<a class="jxr_linenumber" name="1472" href="#1472">1472</a>             assertFalse(actions.contains(Action.CAN_CHECK_IN));
<a class="jxr_linenumber" name="1473" href="#1473">1473</a>             assertFalse(actions.contains(Action.CAN_CHECK_OUT));
<a class="jxr_linenumber" name="1474" href="#1474">1474</a>             assertFalse(actions.contains(Action.CAN_GET_ALL_VERSIONS));
<a class="jxr_linenumber" name="1475" href="#1475">1475</a>         }
<a class="jxr_linenumber" name="1476" href="#1476">1476</a>         assertTrue(actions.contains(Action.CAN_SET_CONTENT_STREAM));
<a class="jxr_linenumber" name="1477" href="#1477">1477</a>         assertTrue(actions.contains(Action.CAN_APPLY_POLICY));
<a class="jxr_linenumber" name="1478" href="#1478">1478</a>         assertTrue(actions.contains(Action.CAN_GET_APPLIED_POLICIES));
<a class="jxr_linenumber" name="1479" href="#1479">1479</a>         assertFalse(actions.contains(Action.CAN_REMOVE_POLICY));
<a class="jxr_linenumber" name="1480" href="#1480">1480</a>         assertFalse(actions.contains(Action.CAN_GET_CHILDREN));
<a class="jxr_linenumber" name="1481" href="#1481">1481</a>         assertFalse(actions.contains(Action.CAN_CREATE_DOCUMENT));
<a class="jxr_linenumber" name="1482" href="#1482">1482</a>         assertFalse(actions.contains(Action.CAN_CREATE_FOLDER));
<a class="jxr_linenumber" name="1483" href="#1483">1483</a>         assertFalse(actions.contains(Action.CAN_CREATE_RELATIONSHIP));
<a class="jxr_linenumber" name="1484" href="#1484">1484</a>         assertFalse(actions.contains(Action.CAN_DELETE_TREE));
<a class="jxr_linenumber" name="1485" href="#1485">1485</a>         assertTrue(actions.contains(Action.CAN_GET_ACL));
<a class="jxr_linenumber" name="1486" href="#1486">1486</a>         assertTrue(actions.contains(Action.CAN_APPLY_ACL));
<a class="jxr_linenumber" name="1487" href="#1487">1487</a>     }
<a class="jxr_linenumber" name="1488" href="#1488">1488</a> 
<a class="jxr_linenumber" name="1489" href="#1489">1489</a>     <strong class="jxr_keyword">private</strong> String retrieveDocument(String id) {
<a class="jxr_linenumber" name="1490" href="#1490">1490</a>         ObjectData res = getDocumentObjectData(id);
<a class="jxr_linenumber" name="1491" href="#1491">1491</a>         String returnedId = res.getId();
<a class="jxr_linenumber" name="1492" href="#1492">1492</a>         testReturnedProperties(returnedId, DOCUMENT_ID, DOCUMENT_TYPE_ID, res.getProperties().getProperties());
<a class="jxr_linenumber" name="1493" href="#1493">1493</a>         <strong class="jxr_keyword">return</strong> returnedId;
<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>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> moveObjectTest(<strong class="jxr_keyword">boolean</strong> isFolder) {
<a class="jxr_linenumber" name="1497" href="#1497">1497</a>         <strong class="jxr_keyword">final</strong> String propertyFilter = PropertyIds.OBJECT_ID + <span class="jxr_string">","</span> + PropertyIds.NAME; <em class="jxr_comment">// +</em>
<a class="jxr_linenumber" name="1498" href="#1498">1498</a>         <em class="jxr_comment">// ","</em>
<a class="jxr_linenumber" name="1499" href="#1499">1499</a>         <em class="jxr_comment">// +</em>
<a class="jxr_linenumber" name="1500" href="#1500">1500</a>         <em class="jxr_comment">// PropertyIds</em>
<a class="jxr_linenumber" name="1501" href="#1501">1501</a>         <em class="jxr_comment">// .</em>
<a class="jxr_linenumber" name="1502" href="#1502">1502</a>         <em class="jxr_comment">// CMIS_OBJECT_TYPE_ID</em>
<a class="jxr_linenumber" name="1503" href="#1503">1503</a>         <em class="jxr_comment">// +</em>
<a class="jxr_linenumber" name="1504" href="#1504">1504</a>         <em class="jxr_comment">// ","</em>
<a class="jxr_linenumber" name="1505" href="#1505">1505</a>         <em class="jxr_comment">// +</em>
<a class="jxr_linenumber" name="1506" href="#1506">1506</a>         <em class="jxr_comment">// PropertyIds</em>
<a class="jxr_linenumber" name="1507" href="#1507">1507</a>         <em class="jxr_comment">// .</em>
<a class="jxr_linenumber" name="1508" href="#1508">1508</a>         <em class="jxr_comment">// CMIS_BASE_TYPE_ID</em>
<a class="jxr_linenumber" name="1509" href="#1509">1509</a>         <em class="jxr_comment">// ;</em>
<a class="jxr_linenumber" name="1510" href="#1510">1510</a>         String rootFolderId = createFolder();
<a class="jxr_linenumber" name="1511" href="#1511">1511</a>         ObjectGenerator gen = <strong class="jxr_keyword">new</strong> ObjectGenerator(fFactory, fNavSvc, fObjSvc, fRepSvc, fRepositoryId,
<a class="jxr_linenumber" name="1512" href="#1512">1512</a>                 ObjectGenerator.CONTENT_KIND.LoremIpsumText);
<a class="jxr_linenumber" name="1513" href="#1513">1513</a>         <em class="jxr_comment">// Set the type id for all created documents:</em>
<a class="jxr_linenumber" name="1514" href="#1514">1514</a>         gen.setDocumentTypeId(InMemoryDocumentTypeDefinition.getRootDocumentType().getId());
<a class="jxr_linenumber" name="1515" href="#1515">1515</a>         <em class="jxr_comment">// Set the type id for all created folders:</em>
<a class="jxr_linenumber" name="1516" href="#1516">1516</a>         gen.setNumberOfDocumentsToCreatePerFolder(1); <em class="jxr_comment">// create one document in</em>
<a class="jxr_linenumber" name="1517" href="#1517">1517</a>         <em class="jxr_comment">// each folder</em>
<a class="jxr_linenumber" name="1518" href="#1518">1518</a>         gen.createFolderHierachy(3, 2, rootFolderId);
<a class="jxr_linenumber" name="1519" href="#1519">1519</a>         gen.setFolderTypeId(InMemoryFolderTypeDefinition.getRootFolderType().getId());
<a class="jxr_linenumber" name="1520" href="#1520">1520</a>         gen.dumpFolder(fRootFolderId, propertyFilter);
<a class="jxr_linenumber" name="1521" href="#1521">1521</a>         Holder&lt;String&gt; holder = <strong class="jxr_keyword">new</strong> Holder&lt;String&gt;();
<a class="jxr_linenumber" name="1522" href="#1522">1522</a>         String sourceIdToMove = gen.getFolderId(rootFolderId, 2, 1);
<a class="jxr_linenumber" name="1523" href="#1523">1523</a>         <strong class="jxr_keyword">if</strong> (!isFolder) {
<a class="jxr_linenumber" name="1524" href="#1524">1524</a>             sourceIdToMove = gen.getDocumentId(sourceIdToMove, 0);
<a class="jxr_linenumber" name="1525" href="#1525">1525</a>         }
<a class="jxr_linenumber" name="1526" href="#1526">1526</a>         holder.setValue(sourceIdToMove); <em class="jxr_comment">// "/Folder_1/My Folder 0/My Folder 1");</em>
<a class="jxr_linenumber" name="1527" href="#1527">1527</a>         String sourceFolderId = getSourceFolder(sourceIdToMove);
<a class="jxr_linenumber" name="1528" href="#1528">1528</a>         log.info(<span class="jxr_string">"Id before moveObject: "</span> + holder.getValue());
<a class="jxr_linenumber" name="1529" href="#1529">1529</a>         fObjSvc.moveObject(fRepositoryId, holder, rootFolderId, sourceFolderId, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="1530" href="#1530">1530</a>         log.info(<span class="jxr_string">"Id after moveObject: "</span> + holder.getValue());
<a class="jxr_linenumber" name="1531" href="#1531">1531</a>         gen.dumpFolder(fRootFolderId, propertyFilter);
<a class="jxr_linenumber" name="1532" href="#1532">1532</a> 
<a class="jxr_linenumber" name="1533" href="#1533">1533</a>         List&lt;ObjectParentData&gt; result = fNavSvc.getObjectParents(fRepositoryId, holder.getValue(), <strong class="jxr_keyword">null</strong>, Boolean.FALSE,
<a class="jxr_linenumber" name="1534" href="#1534">1534</a>                 IncludeRelationships.NONE, <strong class="jxr_keyword">null</strong>, Boolean.FALSE, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="1535" href="#1535">1535</a>         <em class="jxr_comment">// check that new parent is set correctly</em>
<a class="jxr_linenumber" name="1536" href="#1536">1536</a>         String newParentId = result.get(0).getObject().getId();
<a class="jxr_linenumber" name="1537" href="#1537">1537</a>         assertEquals(rootFolderId, newParentId);
<a class="jxr_linenumber" name="1538" href="#1538">1538</a> 
<a class="jxr_linenumber" name="1539" href="#1539">1539</a>         <strong class="jxr_keyword">if</strong> (isFolder) {
<a class="jxr_linenumber" name="1540" href="#1540">1540</a>             log.info(<span class="jxr_string">"testing moveFolder to a subfolder"</span>);
<a class="jxr_linenumber" name="1541" href="#1541">1541</a>             ObjectInFolderList ch = fNavSvc.getChildren(fRepositoryId, holder.getValue(), propertyFilter, <strong class="jxr_keyword">null</strong>, false,
<a class="jxr_linenumber" name="1542" href="#1542">1542</a>                     IncludeRelationships.NONE, <strong class="jxr_keyword">null</strong>, false, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="1543" href="#1543">1543</a>             String subFolderId = ch.getObjects().get(0).getObject().getId();
<a class="jxr_linenumber" name="1544" href="#1544">1544</a> 
<a class="jxr_linenumber" name="1545" href="#1545">1545</a>             <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="1546" href="#1546">1546</a>                 fObjSvc.moveObject(fRepositoryId, holder, subFolderId, sourceFolderId, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="1547" href="#1547">1547</a>                 fail(<span class="jxr_string">"moveObject to a folder that is a descendant of the source must fail."</span>);
<a class="jxr_linenumber" name="1548" href="#1548">1548</a>             } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a class="jxr_linenumber" name="1549" href="#1549">1549</a>                 assertTrue(e instanceof CmisNotSupportedException);
<a class="jxr_linenumber" name="1550" href="#1550">1550</a>             }
<a class="jxr_linenumber" name="1551" href="#1551">1551</a>         }
<a class="jxr_linenumber" name="1552" href="#1552">1552</a>     }
<a class="jxr_linenumber" name="1553" href="#1553">1553</a> 
<a class="jxr_linenumber" name="1554" href="#1554">1554</a>     <strong class="jxr_keyword">private</strong> String createFolder() {
<a class="jxr_linenumber" name="1555" href="#1555">1555</a>         <strong class="jxr_keyword">return</strong> createFolder(FOLDER_ID, fRootFolderId, FOLDER_TYPE_ID);
<a class="jxr_linenumber" name="1556" href="#1556">1556</a>     }
<a class="jxr_linenumber" name="1557" href="#1557">1557</a> 
<a class="jxr_linenumber" name="1558" href="#1558">1558</a>     <strong class="jxr_keyword">private</strong> String createDocument(String folderId, <strong class="jxr_keyword">boolean</strong> withContent) {
<a class="jxr_linenumber" name="1559" href="#1559">1559</a>         <strong class="jxr_keyword">return</strong> createDocument(DOCUMENT_ID, folderId, withContent);
<a class="jxr_linenumber" name="1560" href="#1560">1560</a>     }
<a class="jxr_linenumber" name="1561" href="#1561">1561</a> 
<a class="jxr_linenumber" name="1562" href="#1562">1562</a>     <strong class="jxr_keyword">private</strong> String createDocument(String name, String folderId, <strong class="jxr_keyword">boolean</strong> withContent) {
<a class="jxr_linenumber" name="1563" href="#1563">1563</a>         <strong class="jxr_keyword">return</strong> createDocument(name, folderId, DOCUMENT_TYPE_ID, withContent);
<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">private</strong> String createItem(String name, String folderId, String itemPropVal) {
<a class="jxr_linenumber" name="1567" href="#1567">1567</a>         
<a class="jxr_linenumber" name="1568" href="#1568">1568</a>         <em class="jxr_comment">// create the properties:</em>
<a class="jxr_linenumber" name="1569" href="#1569">1569</a>         List&lt;PropertyData&lt;?&gt;&gt; properties = <strong class="jxr_keyword">new</strong> ArrayList&lt;PropertyData&lt;?&gt;&gt;();
<a class="jxr_linenumber" name="1570" href="#1570">1570</a>         properties.add(fFactory.createPropertyStringData(PropertyIds.NAME, name));
<a class="jxr_linenumber" name="1571" href="#1571">1571</a>         properties.add(fFactory.createPropertyStringData(ITEM_STRING_PROP, itemPropVal));
<a class="jxr_linenumber" name="1572" href="#1572">1572</a>         properties.add(fFactory.createPropertyIdData(PropertyIds.OBJECT_TYPE_ID, TEST_ITEM_TYPE_ID));
<a class="jxr_linenumber" name="1573" href="#1573">1573</a>         Properties props = fFactory.createPropertiesData(properties);
<a class="jxr_linenumber" name="1574" href="#1574">1574</a> 
<a class="jxr_linenumber" name="1575" href="#1575">1575</a>         <strong class="jxr_keyword">return</strong> fObjSvc.createItem(fRepositoryId, props, folderId, <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="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>     <strong class="jxr_keyword">private</strong> Properties createDocumentPropertiesForDocumentFromSource(String name) {
<a class="jxr_linenumber" name="1579" href="#1579">1579</a>         <em class="jxr_comment">// We only provide a name but not a type id, as spec says to copy</em>
<a class="jxr_linenumber" name="1580" href="#1580">1580</a>         <em class="jxr_comment">// missing attributes</em>
<a class="jxr_linenumber" name="1581" href="#1581">1581</a>         <em class="jxr_comment">// from the existing one</em>
<a class="jxr_linenumber" name="1582" href="#1582">1582</a>         List&lt;PropertyData&lt;?&gt;&gt; properties = <strong class="jxr_keyword">new</strong> ArrayList&lt;PropertyData&lt;?&gt;&gt;();
<a class="jxr_linenumber" name="1583" href="#1583">1583</a>         properties.add(fFactory.createPropertyIdData(PropertyIds.NAME, name));
<a class="jxr_linenumber" name="1584" href="#1584">1584</a>         Properties props = fFactory.createPropertiesData(properties);
<a class="jxr_linenumber" name="1585" href="#1585">1585</a>         <strong class="jxr_keyword">return</strong> props;
<a class="jxr_linenumber" name="1586" href="#1586">1586</a>     }
<a class="jxr_linenumber" name="1587" href="#1587">1587</a> 
<a class="jxr_linenumber" name="1588" href="#1588">1588</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> testReturnedProperties(String objectId, String objectName, String typeId,
<a class="jxr_linenumber" name="1589" href="#1589">1589</a>             Map&lt;String, PropertyData&lt;?&gt;&gt; props) {
<a class="jxr_linenumber" name="1590" href="#1590">1590</a>         <strong class="jxr_keyword">super</strong>.testReturnedProperties(objectId, props);
<a class="jxr_linenumber" name="1591" href="#1591">1591</a> 
<a class="jxr_linenumber" name="1592" href="#1592">1592</a>         <strong class="jxr_keyword">if</strong> (<strong class="jxr_keyword">null</strong> != objectName) {
<a class="jxr_linenumber" name="1593" href="#1593">1593</a>             PropertyData&lt;?&gt; pd = props.get(PropertyIds.NAME);
<a class="jxr_linenumber" name="1594" href="#1594">1594</a>             assertNotNull(pd);
<a class="jxr_linenumber" name="1595" href="#1595">1595</a>             assertEquals(objectName, pd.getFirstValue());
<a class="jxr_linenumber" name="1596" href="#1596">1596</a>         }
<a class="jxr_linenumber" name="1597" href="#1597">1597</a>         <strong class="jxr_keyword">if</strong> (<strong class="jxr_keyword">null</strong> != typeId) {
<a class="jxr_linenumber" name="1598" href="#1598">1598</a>             PropertyData&lt;?&gt; pd = props.get(PropertyIds.OBJECT_TYPE_ID);
<a class="jxr_linenumber" name="1599" href="#1599">1599</a>             assertEquals(typeId, pd.getFirstValue());
<a class="jxr_linenumber" name="1600" href="#1600">1600</a>         }
<a class="jxr_linenumber" name="1601" href="#1601">1601</a>     }
<a class="jxr_linenumber" name="1602" href="#1602">1602</a> 
<a class="jxr_linenumber" name="1603" href="#1603">1603</a>     <strong class="jxr_keyword">private</strong> String createDocumentWithCustomType(String name, String folderId, <strong class="jxr_keyword">boolean</strong> withContent) {
<a class="jxr_linenumber" name="1604" href="#1604">1604</a>         ContentStream contentStream = <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="1605" href="#1605">1605</a>         VersioningState versioningState = VersioningState.NONE;
<a class="jxr_linenumber" name="1606" href="#1606">1606</a>         List&lt;String&gt; policies = <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="1607" href="#1607">1607</a>         Acl addACEs = <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="1608" href="#1608">1608</a>         Acl removeACEs = <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="1609" href="#1609">1609</a>         ExtensionsData extension = <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="1610" href="#1610">1610</a> 
<a class="jxr_linenumber" name="1611" href="#1611">1611</a>         <em class="jxr_comment">// create the properties:</em>
<a class="jxr_linenumber" name="1612" href="#1612">1612</a>         List&lt;PropertyData&lt;?&gt;&gt; properties = <strong class="jxr_keyword">new</strong> ArrayList&lt;PropertyData&lt;?&gt;&gt;();
<a class="jxr_linenumber" name="1613" href="#1613">1613</a>         properties.add(fFactory.createPropertyIdData(PropertyIds.NAME, name));
<a class="jxr_linenumber" name="1614" href="#1614">1614</a>         properties.add(fFactory.createPropertyIdData(PropertyIds.OBJECT_TYPE_ID, TEST_CUSTOM_DOCUMENT_TYPE_ID));
<a class="jxr_linenumber" name="1615" href="#1615">1615</a>         <em class="jxr_comment">// Generate some property values for custom attributes</em>
<a class="jxr_linenumber" name="1616" href="#1616">1616</a>         properties.add(fFactory.createPropertyStringData(TEST_DOCUMENT_MY_STRING_PROP_ID, <span class="jxr_string">"My pretty string"</span>));
<a class="jxr_linenumber" name="1617" href="#1617">1617</a>         properties.add(fFactory.createPropertyIntegerData(TEST_DOCUMENT_MY_INT_PROP_ID, BigInteger.valueOf(4711)));
<a class="jxr_linenumber" name="1618" href="#1618">1618</a> 
<a class="jxr_linenumber" name="1619" href="#1619">1619</a>         Properties props = fFactory.createPropertiesData(properties);
<a class="jxr_linenumber" name="1620" href="#1620">1620</a> 
<a class="jxr_linenumber" name="1621" href="#1621">1621</a>         <strong class="jxr_keyword">if</strong> (withContent) {
<a class="jxr_linenumber" name="1622" href="#1622">1622</a>             contentStream = createContent();
<a class="jxr_linenumber" name="1623" href="#1623">1623</a>         }
<a class="jxr_linenumber" name="1624" href="#1624">1624</a> 
<a class="jxr_linenumber" name="1625" href="#1625">1625</a>         <em class="jxr_comment">// create the document</em>
<a class="jxr_linenumber" name="1626" href="#1626">1626</a>         String id = <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="1627" href="#1627">1627</a>         id = fObjSvc.createDocument(fRepositoryId, props, folderId, contentStream, versioningState, policies, addACEs,
<a class="jxr_linenumber" name="1628" href="#1628">1628</a>                 removeACEs, extension);
<a class="jxr_linenumber" name="1629" href="#1629">1629</a>         <strong class="jxr_keyword">if</strong> (<strong class="jxr_keyword">null</strong> == id) {
<a class="jxr_linenumber" name="1630" href="#1630">1630</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> RuntimeException(<span class="jxr_string">"createDocument failed."</span>);
<a class="jxr_linenumber" name="1631" href="#1631">1631</a>         }
<a class="jxr_linenumber" name="1632" href="#1632">1632</a>         <strong class="jxr_keyword">return</strong> id;
<a class="jxr_linenumber" name="1633" href="#1633">1633</a>     }
<a class="jxr_linenumber" name="1634" href="#1634">1634</a> 
<a class="jxr_linenumber" name="1635" href="#1635">1635</a>     <strong class="jxr_keyword">private</strong> String createDocumentInheritedProperties(String folderId, <strong class="jxr_keyword">boolean</strong> withContent) {
<a class="jxr_linenumber" name="1636" href="#1636">1636</a>         ContentStream contentStream = <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="1637" href="#1637">1637</a>         VersioningState versioningState = VersioningState.NONE;
<a class="jxr_linenumber" name="1638" href="#1638">1638</a>         List&lt;String&gt; policies = <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="1639" href="#1639">1639</a>         Acl addACEs = <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="1640" href="#1640">1640</a>         Acl removeACEs = <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="1641" href="#1641">1641</a>         ExtensionsData extension = <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="1642" href="#1642">1642</a> 
<a class="jxr_linenumber" name="1643" href="#1643">1643</a>         <em class="jxr_comment">// create the properties:</em>
<a class="jxr_linenumber" name="1644" href="#1644">1644</a>         List&lt;PropertyData&lt;?&gt;&gt; properties = <strong class="jxr_keyword">new</strong> ArrayList&lt;PropertyData&lt;?&gt;&gt;();
<a class="jxr_linenumber" name="1645" href="#1645">1645</a>         properties.add(fFactory.createPropertyIdData(PropertyIds.NAME, MY_CUSTOM_NAME));
<a class="jxr_linenumber" name="1646" href="#1646">1646</a>         properties.add(fFactory
<a class="jxr_linenumber" name="1647" href="#1647">1647</a>                 .createPropertyIdData(PropertyIds.OBJECT_TYPE_ID, TEST_INHERITED_CUSTOM_DOCUMENT_TYPE_ID));
<a class="jxr_linenumber" name="1648" href="#1648">1648</a>         <em class="jxr_comment">// Generate some property values for custom attributes</em>
<a class="jxr_linenumber" name="1649" href="#1649">1649</a>         properties.add(fFactory.createPropertyStringData(TEST_DOCUMENT_MY_STRING_PROP_ID, <span class="jxr_string">"My pretty string"</span>));
<a class="jxr_linenumber" name="1650" href="#1650">1650</a>         properties.add(fFactory.createPropertyIntegerData(TEST_DOCUMENT_MY_INT_PROP_ID, BigInteger.valueOf(4711)));
<a class="jxr_linenumber" name="1651" href="#1651">1651</a>         properties.add(fFactory.createPropertyStringData(TEST_DOCUMENT_MY_SUB_STRING_PROP_ID, <span class="jxr_string">"another cool string"</span>));
<a class="jxr_linenumber" name="1652" href="#1652">1652</a>         properties.add(fFactory.createPropertyIntegerData(TEST_DOCUMENT_MY_SUB_INT_PROP_ID, BigInteger.valueOf(4712)));
<a class="jxr_linenumber" name="1653" href="#1653">1653</a> 
<a class="jxr_linenumber" name="1654" href="#1654">1654</a>         Properties props = fFactory.createPropertiesData(properties);
<a class="jxr_linenumber" name="1655" href="#1655">1655</a> 
<a class="jxr_linenumber" name="1656" href="#1656">1656</a>         <strong class="jxr_keyword">if</strong> (withContent) {
<a class="jxr_linenumber" name="1657" href="#1657">1657</a>             contentStream = createContent();
<a class="jxr_linenumber" name="1658" href="#1658">1658</a>         }
<a class="jxr_linenumber" name="1659" href="#1659">1659</a> 
<a class="jxr_linenumber" name="1660" href="#1660">1660</a>         <em class="jxr_comment">// create the document</em>
<a class="jxr_linenumber" name="1661" href="#1661">1661</a>         String id = <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="1662" href="#1662">1662</a>         id = fObjSvc.createDocument(fRepositoryId, props, folderId, contentStream, versioningState, policies, addACEs,
<a class="jxr_linenumber" name="1663" href="#1663">1663</a>                 removeACEs, extension);
<a class="jxr_linenumber" name="1664" href="#1664">1664</a>         <strong class="jxr_keyword">if</strong> (<strong class="jxr_keyword">null</strong> == id) {
<a class="jxr_linenumber" name="1665" href="#1665">1665</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> RuntimeException(<span class="jxr_string">"createDocument failed."</span>);
<a class="jxr_linenumber" name="1666" href="#1666">1666</a>         }
<a class="jxr_linenumber" name="1667" href="#1667">1667</a>         <strong class="jxr_keyword">return</strong> id;
<a class="jxr_linenumber" name="1668" href="#1668">1668</a>     }
<a class="jxr_linenumber" name="1669" href="#1669">1669</a> 
<a class="jxr_linenumber" name="1670" href="#1670">1670</a>     <strong class="jxr_keyword">private</strong> String getSourceFolder(String objectId) {
<a class="jxr_linenumber" name="1671" href="#1671">1671</a>         <em class="jxr_comment">// return the first parent found in the result list of all parents</em>
<a class="jxr_linenumber" name="1672" href="#1672">1672</a>         List&lt;ObjectParentData&gt; parents = fNavSvc.getObjectParents(fRepositoryId, objectId, <span class="jxr_string">"*"</span>, false,
<a class="jxr_linenumber" name="1673" href="#1673">1673</a>                 IncludeRelationships.NONE, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">true</strong>, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="1674" href="#1674">1674</a>         <strong class="jxr_keyword">return</strong> parents.get(0).getObject().getId();
<a class="jxr_linenumber" name="1675" href="#1675">1675</a>     }
<a class="jxr_linenumber" name="1676" href="#1676">1676</a> 
<a class="jxr_linenumber" name="1677" href="#1677">1677</a>     <em class="jxr_comment">// Helper class to create some type for testing the ObjectService</em>
<a class="jxr_linenumber" name="1678" href="#1678">1678</a> 
<a class="jxr_linenumber" name="1679" href="#1679">1679</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/chemistry/opencmis/inmemory/ObjectServiceTest.html">ObjectTestTypeSystemCreator</a> <strong class="jxr_keyword">implements</strong> TypeCreator {
<a class="jxr_linenumber" name="1680" href="#1680">1680</a> 
<a class="jxr_linenumber" name="1681" href="#1681">1681</a>         <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="1682" href="#1682">1682</a> <em class="jxr_javadoccomment">         * create root types and a sample type for folder and document</em>
<a class="jxr_linenumber" name="1683" href="#1683">1683</a> <em class="jxr_javadoccomment">         *</em>
<a class="jxr_linenumber" name="1684" href="#1684">1684</a> <em class="jxr_javadoccomment">         * @return typesMap map filled with created types</em>
<a class="jxr_linenumber" name="1685" href="#1685">1685</a> <em class="jxr_javadoccomment">         */</em>
<a class="jxr_linenumber" name="1686" href="#1686">1686</a>         <strong class="jxr_keyword">public</strong> List&lt;TypeDefinition&gt; createTypesList() {
<a class="jxr_linenumber" name="1687" href="#1687">1687</a>             List&lt;TypeDefinition&gt; typesList = <strong class="jxr_keyword">new</strong> LinkedList&lt;TypeDefinition&gt;();
<a class="jxr_linenumber" name="1688" href="#1688">1688</a>             InMemoryDocumentTypeDefinition cmisDocumentType = <strong class="jxr_keyword">new</strong> InMemoryDocumentTypeDefinition(TEST_DOCUMENT_TYPE_ID,
<a class="jxr_linenumber" name="1689" href="#1689">1689</a>                     <span class="jxr_string">"My Document Type"</span>, InMemoryDocumentTypeDefinition.getRootDocumentType());
<a class="jxr_linenumber" name="1690" href="#1690">1690</a> 
<a class="jxr_linenumber" name="1691" href="#1691">1691</a>             InMemoryFolderTypeDefinition cmisFolderType = <strong class="jxr_keyword">new</strong> InMemoryFolderTypeDefinition(TEST_FOLDER_TYPE_ID,
<a class="jxr_linenumber" name="1692" href="#1692">1692</a>                     <span class="jxr_string">"My Folder Type"</span>, InMemoryFolderTypeDefinition.getRootFolderType());
<a class="jxr_linenumber" name="1693" href="#1693">1693</a>             <em class="jxr_comment">// create a simple string property type and</em>
<a class="jxr_linenumber" name="1694" href="#1694">1694</a>             <em class="jxr_comment">// attach the property definition to the type definition for</em>
<a class="jxr_linenumber" name="1695" href="#1695">1695</a>             <em class="jxr_comment">// document and folder type</em>
<a class="jxr_linenumber" name="1696" href="#1696">1696</a>             Map&lt;String, PropertyDefinition&lt;?&gt;&gt; propertyDefinitions = <strong class="jxr_keyword">new</strong> HashMap&lt;String, PropertyDefinition&lt;?&gt;&gt;();
<a class="jxr_linenumber" name="1697" href="#1697">1697</a>             PropertyStringDefinitionImpl prop = PropertyCreationHelper.createStringDefinition(
<a class="jxr_linenumber" name="1698" href="#1698">1698</a>                     TEST_DOCUMENT_STRING_PROP_ID, <span class="jxr_string">"Sample Doc String Property"</span>, Updatability.READWRITE);
<a class="jxr_linenumber" name="1699" href="#1699">1699</a>             propertyDefinitions.put(prop.getId(), prop);
<a class="jxr_linenumber" name="1700" href="#1700">1700</a>             cmisDocumentType.addCustomPropertyDefinitions(propertyDefinitions);
<a class="jxr_linenumber" name="1701" href="#1701">1701</a> 
<a class="jxr_linenumber" name="1702" href="#1702">1702</a>             propertyDefinitions = <strong class="jxr_keyword">new</strong> HashMap&lt;String, PropertyDefinition&lt;?&gt;&gt;();
<a class="jxr_linenumber" name="1703" href="#1703">1703</a>             prop = PropertyCreationHelper.createStringDefinition(TEST_FOLDER_STRING_PROP_ID,
<a class="jxr_linenumber" name="1704" href="#1704">1704</a>                     <span class="jxr_string">"Sample Folder String Property"</span>, Updatability.READWRITE);
<a class="jxr_linenumber" name="1705" href="#1705">1705</a>             propertyDefinitions.put(prop.getId(), prop);
<a class="jxr_linenumber" name="1706" href="#1706">1706</a>             cmisFolderType.addCustomPropertyDefinitions(propertyDefinitions);
<a class="jxr_linenumber" name="1707" href="#1707">1707</a> 
<a class="jxr_linenumber" name="1708" href="#1708">1708</a>             InMemoryDocumentTypeDefinition customDocType = createCustomTypeWithStringIntProperty();
<a class="jxr_linenumber" name="1709" href="#1709">1709</a>             InMemoryDocumentTypeDefinition noContentType = createCustomTypeNoContent();
<a class="jxr_linenumber" name="1710" href="#1710">1710</a>             InMemoryDocumentTypeDefinition mustHaveContentType = createCustomTypeMustHaveContent();
<a class="jxr_linenumber" name="1711" href="#1711">1711</a>             InMemoryRelationshipTypeDefinition relType = createRelationshipType();
<a class="jxr_linenumber" name="1712" href="#1712">1712</a>             InMemoryRelationshipTypeDefinition relTypeRestricted = createRelationshipTypeRestricted();
<a class="jxr_linenumber" name="1713" href="#1713">1713</a>             InMemoryDocumentTypeDefinition verType = createVersionableType();
<a class="jxr_linenumber" name="1714" href="#1714">1714</a>             InMemoryPolicyTypeDefinition polType = createPolicyType();
<a class="jxr_linenumber" name="1715" href="#1715">1715</a>             
<a class="jxr_linenumber" name="1716" href="#1716">1716</a>             <em class="jxr_comment">// add type to types collection</em>
<a class="jxr_linenumber" name="1717" href="#1717">1717</a>             typesList.add(cmisDocumentType);
<a class="jxr_linenumber" name="1718" href="#1718">1718</a>             typesList.add(cmisFolderType);
<a class="jxr_linenumber" name="1719" href="#1719">1719</a>             typesList.add(customDocType);
<a class="jxr_linenumber" name="1720" href="#1720">1720</a>             typesList.add(noContentType);
<a class="jxr_linenumber" name="1721" href="#1721">1721</a>             typesList.add(mustHaveContentType);
<a class="jxr_linenumber" name="1722" href="#1722">1722</a>             typesList.add(createCustomInheritedType(customDocType));
<a class="jxr_linenumber" name="1723" href="#1723">1723</a>             typesList.add(createDocumentTypeWithDefault());
<a class="jxr_linenumber" name="1724" href="#1724">1724</a>             typesList.add(createFolderTypeWithDefault());
<a class="jxr_linenumber" name="1725" href="#1725">1725</a>             typesList.add(createItemType());
<a class="jxr_linenumber" name="1726" href="#1726">1726</a>             typesList.add(createSecondaryType());
<a class="jxr_linenumber" name="1727" href="#1727">1727</a>             typesList.add(relType);
<a class="jxr_linenumber" name="1728" href="#1728">1728</a>             typesList.add(relTypeRestricted);
<a class="jxr_linenumber" name="1729" href="#1729">1729</a>             typesList.add(verType);
<a class="jxr_linenumber" name="1730" href="#1730">1730</a>             typesList.add(polType);
<a class="jxr_linenumber" name="1731" href="#1731">1731</a>             <strong class="jxr_keyword">return</strong> typesList;
<a class="jxr_linenumber" name="1732" href="#1732">1732</a>         }
<a class="jxr_linenumber" name="1733" href="#1733">1733</a> 
<a class="jxr_linenumber" name="1734" href="#1734">1734</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> InMemoryDocumentTypeDefinition createCustomTypeWithStringIntProperty() {
<a class="jxr_linenumber" name="1735" href="#1735">1735</a>             InMemoryDocumentTypeDefinition cmisDocumentType = <strong class="jxr_keyword">new</strong> InMemoryDocumentTypeDefinition(
<a class="jxr_linenumber" name="1736" href="#1736">1736</a>                     TEST_CUSTOM_DOCUMENT_TYPE_ID, <span class="jxr_string">"My Custom Document Type"</span>, InMemoryDocumentTypeDefinition
<a class="jxr_linenumber" name="1737" href="#1737">1737</a>                             .getRootDocumentType());
<a class="jxr_linenumber" name="1738" href="#1738">1738</a>             Map&lt;String, PropertyDefinition&lt;?&gt;&gt; propertyDefinitions = <strong class="jxr_keyword">new</strong> HashMap&lt;String, PropertyDefinition&lt;?&gt;&gt;();
<a class="jxr_linenumber" name="1739" href="#1739">1739</a>             PropertyStringDefinitionImpl prop = PropertyCreationHelper.createStringDefinition(
<a class="jxr_linenumber" name="1740" href="#1740">1740</a>                     TEST_DOCUMENT_MY_STRING_PROP_ID, <span class="jxr_string">"My String Property"</span>, Updatability.READWRITE);
<a class="jxr_linenumber" name="1741" href="#1741">1741</a>             prop.setIsRequired(false);
<a class="jxr_linenumber" name="1742" href="#1742">1742</a>             prop.setMaxLength(BigInteger.valueOf(20)); <em class="jxr_comment">// max len to 20</em>
<a class="jxr_linenumber" name="1743" href="#1743">1743</a>             propertyDefinitions.put(prop.getId(), prop);
<a class="jxr_linenumber" name="1744" href="#1744">1744</a> 
<a class="jxr_linenumber" name="1745" href="#1745">1745</a>             PropertyIntegerDefinitionImpl prop2 = PropertyCreationHelper.createIntegerDefinition(
<a class="jxr_linenumber" name="1746" href="#1746">1746</a>                     TEST_DOCUMENT_MY_INT_PROP_ID, <span class="jxr_string">"My Integer Property"</span>, Updatability.READWRITE);
<a class="jxr_linenumber" name="1747" href="#1747">1747</a>             prop2.setIsRequired(<strong class="jxr_keyword">true</strong>);
<a class="jxr_linenumber" name="1748" href="#1748">1748</a>             prop2.setMinValue(BigInteger.valueOf(-10000));
<a class="jxr_linenumber" name="1749" href="#1749">1749</a>             prop2.setMaxValue(BigInteger.valueOf(10000));
<a class="jxr_linenumber" name="1750" href="#1750">1750</a>             propertyDefinitions.put(prop2.getId(), prop2);
<a class="jxr_linenumber" name="1751" href="#1751">1751</a>             cmisDocumentType.addCustomPropertyDefinitions(propertyDefinitions);
<a class="jxr_linenumber" name="1752" href="#1752">1752</a>             <strong class="jxr_keyword">return</strong> cmisDocumentType;
<a class="jxr_linenumber" name="1753" href="#1753">1753</a>         }
<a class="jxr_linenumber" name="1754" href="#1754">1754</a> 
<a class="jxr_linenumber" name="1755" href="#1755">1755</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> InMemoryDocumentTypeDefinition createCustomInheritedType(InMemoryDocumentTypeDefinition baseType) {
<a class="jxr_linenumber" name="1756" href="#1756">1756</a>             InMemoryDocumentTypeDefinition cmisDocumentType = <strong class="jxr_keyword">new</strong> InMemoryDocumentTypeDefinition(
<a class="jxr_linenumber" name="1757" href="#1757">1757</a>                     TEST_INHERITED_CUSTOM_DOCUMENT_TYPE_ID, <span class="jxr_string">"My Custom Document Type"</span>, baseType);
<a class="jxr_linenumber" name="1758" href="#1758">1758</a>             Map&lt;String, PropertyDefinition&lt;?&gt;&gt; propertyDefinitions = <strong class="jxr_keyword">new</strong> HashMap&lt;String, PropertyDefinition&lt;?&gt;&gt;();
<a class="jxr_linenumber" name="1759" href="#1759">1759</a>             PropertyStringDefinitionImpl prop = PropertyCreationHelper.createStringDefinition(
<a class="jxr_linenumber" name="1760" href="#1760">1760</a>                     TEST_DOCUMENT_MY_SUB_STRING_PROP_ID, <span class="jxr_string">"Subtype String Property"</span>, Updatability.READWRITE);
<a class="jxr_linenumber" name="1761" href="#1761">1761</a>             prop.setIsRequired(false);
<a class="jxr_linenumber" name="1762" href="#1762">1762</a>             propertyDefinitions.put(prop.getId(), prop);
<a class="jxr_linenumber" name="1763" href="#1763">1763</a> 
<a class="jxr_linenumber" name="1764" href="#1764">1764</a>             PropertyIntegerDefinitionImpl prop2 = PropertyCreationHelper.createIntegerDefinition(
<a class="jxr_linenumber" name="1765" href="#1765">1765</a>                     TEST_DOCUMENT_MY_SUB_INT_PROP_ID, <span class="jxr_string">"Subtype"</span>, Updatability.READWRITE);
<a class="jxr_linenumber" name="1766" href="#1766">1766</a>             prop2.setIsRequired(<strong class="jxr_keyword">true</strong>);
<a class="jxr_linenumber" name="1767" href="#1767">1767</a>             propertyDefinitions.put(prop2.getId(), prop2);
<a class="jxr_linenumber" name="1768" href="#1768">1768</a>             cmisDocumentType.addCustomPropertyDefinitions(propertyDefinitions);
<a class="jxr_linenumber" name="1769" href="#1769">1769</a>             <strong class="jxr_keyword">return</strong> cmisDocumentType;
<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>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> InMemoryDocumentTypeDefinition createDocumentTypeWithDefault() {
<a class="jxr_linenumber" name="1773" href="#1773">1773</a>             InMemoryDocumentTypeDefinition cmisDocumentType = <strong class="jxr_keyword">new</strong> InMemoryDocumentTypeDefinition(
<a class="jxr_linenumber" name="1774" href="#1774">1774</a>                     TEST_DOC_TYPE_WITH_DEFAULTS_ID, <span class="jxr_string">"Document Type With default values"</span>, InMemoryDocumentTypeDefinition
<a class="jxr_linenumber" name="1775" href="#1775">1775</a>                     .getRootDocumentType());
<a class="jxr_linenumber" name="1776" href="#1776">1776</a>             Map&lt;String, PropertyDefinition&lt;?&gt;&gt; propertyDefinitions = <strong class="jxr_keyword">new</strong> HashMap&lt;String, PropertyDefinition&lt;?&gt;&gt;();
<a class="jxr_linenumber" name="1777" href="#1777">1777</a>             PropertyStringDefinitionImpl prop = PropertyCreationHelper.createStringMultiDefinition(
<a class="jxr_linenumber" name="1778" href="#1778">1778</a>                     TEST_DOCUMENT_MY_MULTI_STRING_PROP_ID, <span class="jxr_string">"Test Multi String Property"</span>, Updatability.READWRITE);
<a class="jxr_linenumber" name="1779" href="#1779">1779</a>             prop.setIsRequired(false);
<a class="jxr_linenumber" name="1780" href="#1780">1780</a>             List&lt;String&gt; defValS = <strong class="jxr_keyword">new</strong> ArrayList&lt;String&gt;() {{ add(<span class="jxr_string">"Apache"</span>); add(<span class="jxr_string">"CMIS"</span>); }};
<a class="jxr_linenumber" name="1781" href="#1781">1781</a>             prop.setDefaultValue(defValS);
<a class="jxr_linenumber" name="1782" href="#1782">1782</a>             propertyDefinitions.put(prop.getId(), prop);
<a class="jxr_linenumber" name="1783" href="#1783">1783</a> 
<a class="jxr_linenumber" name="1784" href="#1784">1784</a>             PropertyIntegerDefinitionImpl prop2 = PropertyCreationHelper.createIntegerDefinition(
<a class="jxr_linenumber" name="1785" href="#1785">1785</a>                     TEST_DOCUMENT_MY_INT_PROP_ID, <span class="jxr_string">"Test Integer Property"</span>, Updatability.READWRITE);
<a class="jxr_linenumber" name="1786" href="#1786">1786</a>             prop2.setIsRequired(false);
<a class="jxr_linenumber" name="1787" href="#1787">1787</a>             List&lt;BigInteger&gt; defVal = <strong class="jxr_keyword">new</strong> ArrayList&lt;BigInteger&gt;() {{ add(BigInteger.valueOf(100)); }};
<a class="jxr_linenumber" name="1788" href="#1788">1788</a>             prop2.setDefaultValue(defVal);
<a class="jxr_linenumber" name="1789" href="#1789">1789</a>             propertyDefinitions.put(prop2.getId(), prop2);
<a class="jxr_linenumber" name="1790" href="#1790">1790</a> 
<a class="jxr_linenumber" name="1791" href="#1791">1791</a>             PropertyIntegerDefinitionImpl prop3 = PropertyCreationHelper.createIntegerDefinition(
<a class="jxr_linenumber" name="1792" href="#1792">1792</a>                     TEST_DOCUMENT_MY_INT_PROP_ID_MANDATORY_DEFAULT, <span class="jxr_string">"Test Integer Property Mandatory default"</span>, Updatability.READWRITE);
<a class="jxr_linenumber" name="1793" href="#1793">1793</a>             prop3.setIsRequired(<strong class="jxr_keyword">true</strong>);
<a class="jxr_linenumber" name="1794" href="#1794">1794</a>             List&lt;BigInteger&gt; defVal2 = <strong class="jxr_keyword">new</strong> ArrayList&lt;BigInteger&gt;() {{ add(BigInteger.valueOf(100)); }};
<a class="jxr_linenumber" name="1795" href="#1795">1795</a>             prop3.setDefaultValue(defVal2);
<a class="jxr_linenumber" name="1796" href="#1796">1796</a>             propertyDefinitions.put(prop3.getId(), prop3);
<a class="jxr_linenumber" name="1797" href="#1797">1797</a> 
<a class="jxr_linenumber" name="1798" href="#1798">1798</a>             cmisDocumentType.addCustomPropertyDefinitions(propertyDefinitions);
<a class="jxr_linenumber" name="1799" href="#1799">1799</a> 
<a class="jxr_linenumber" name="1800" href="#1800">1800</a>             <strong class="jxr_keyword">return</strong> cmisDocumentType;
<a class="jxr_linenumber" name="1801" href="#1801">1801</a>         }
<a class="jxr_linenumber" name="1802" href="#1802">1802</a> 
<a class="jxr_linenumber" name="1803" href="#1803">1803</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> InMemoryDocumentTypeDefinition createCustomTypeNoContent() {
<a class="jxr_linenumber" name="1804" href="#1804">1804</a>             InMemoryDocumentTypeDefinition cmisDocumentType = <strong class="jxr_keyword">new</strong> InMemoryDocumentTypeDefinition(
<a class="jxr_linenumber" name="1805" href="#1805">1805</a>                     TEST_CUSTOM_NO_CONTENT_TYPE_ID, <span class="jxr_string">"No Content Document Type"</span>, InMemoryDocumentTypeDefinition
<a class="jxr_linenumber" name="1806" href="#1806">1806</a>                             .getRootDocumentType());
<a class="jxr_linenumber" name="1807" href="#1807">1807</a>             Map&lt;String, PropertyDefinition&lt;?&gt;&gt; propertyDefinitions = <strong class="jxr_keyword">new</strong> HashMap&lt;String, PropertyDefinition&lt;?&gt;&gt;();
<a class="jxr_linenumber" name="1808" href="#1808">1808</a>             cmisDocumentType.addCustomPropertyDefinitions(propertyDefinitions);
<a class="jxr_linenumber" name="1809" href="#1809">1809</a>             cmisDocumentType.setContentStreamAllowed(ContentStreamAllowed.NOTALLOWED);
<a class="jxr_linenumber" name="1810" href="#1810">1810</a>             <strong class="jxr_keyword">return</strong> cmisDocumentType;
<a class="jxr_linenumber" name="1811" href="#1811">1811</a>         }
<a class="jxr_linenumber" name="1812" href="#1812">1812</a>         
<a class="jxr_linenumber" name="1813" href="#1813">1813</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> InMemoryDocumentTypeDefinition createCustomTypeMustHaveContent() {
<a class="jxr_linenumber" name="1814" href="#1814">1814</a>             InMemoryDocumentTypeDefinition cmisDocumentType = <strong class="jxr_keyword">new</strong> InMemoryDocumentTypeDefinition(
<a class="jxr_linenumber" name="1815" href="#1815">1815</a>                     TEST_CUSTOM_MUST_CONTENT_TYPE_ID, <span class="jxr_string">"Must Have Content Document Type"</span>, InMemoryDocumentTypeDefinition
<a class="jxr_linenumber" name="1816" href="#1816">1816</a>                             .getRootDocumentType());
<a class="jxr_linenumber" name="1817" href="#1817">1817</a>             cmisDocumentType.setContentStreamAllowed(ContentStreamAllowed.REQUIRED);
<a class="jxr_linenumber" name="1818" href="#1818">1818</a>             <strong class="jxr_keyword">return</strong> cmisDocumentType;
<a class="jxr_linenumber" name="1819" href="#1819">1819</a>         }
<a class="jxr_linenumber" name="1820" href="#1820">1820</a>         
<a class="jxr_linenumber" name="1821" href="#1821">1821</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> InMemoryFolderTypeDefinition createFolderTypeWithDefault() {
<a class="jxr_linenumber" name="1822" href="#1822">1822</a>             InMemoryFolderTypeDefinition cmisFolderType = <strong class="jxr_keyword">new</strong> InMemoryFolderTypeDefinition(
<a class="jxr_linenumber" name="1823" href="#1823">1823</a>                     TEST_FOLDER_TYPE_WITH_DEFAULTS_ID, <span class="jxr_string">"Folder Type With default values"</span>, InMemoryFolderTypeDefinition.
<a class="jxr_linenumber" name="1824" href="#1824">1824</a>                     getRootFolderType());
<a class="jxr_linenumber" name="1825" href="#1825">1825</a>             Map&lt;String, PropertyDefinition&lt;?&gt;&gt; propertyDefinitions = <strong class="jxr_keyword">new</strong> HashMap&lt;String, PropertyDefinition&lt;?&gt;&gt;();
<a class="jxr_linenumber" name="1826" href="#1826">1826</a>             PropertyStringDefinitionImpl prop = PropertyCreationHelper.createStringMultiDefinition(
<a class="jxr_linenumber" name="1827" href="#1827">1827</a>                     TEST_FOLDER_MY_MULTI_STRING_PROP_ID, <span class="jxr_string">"Test Multi String Property"</span>, Updatability.READWRITE);
<a class="jxr_linenumber" name="1828" href="#1828">1828</a>             prop.setIsRequired(false);
<a class="jxr_linenumber" name="1829" href="#1829">1829</a>             List&lt;String&gt; defValS = <strong class="jxr_keyword">new</strong> ArrayList&lt;String&gt;() {{ add(<span class="jxr_string">"Apache"</span>); add(<span class="jxr_string">"CMIS"</span>); }};
<a class="jxr_linenumber" name="1830" href="#1830">1830</a>             prop.setDefaultValue(defValS);
<a class="jxr_linenumber" name="1831" href="#1831">1831</a>             propertyDefinitions.put(prop.getId(), prop);
<a class="jxr_linenumber" name="1832" href="#1832">1832</a> 
<a class="jxr_linenumber" name="1833" href="#1833">1833</a>             PropertyIntegerDefinitionImpl prop2 = PropertyCreationHelper.createIntegerDefinition(
<a class="jxr_linenumber" name="1834" href="#1834">1834</a>                     TEST_FOLDER_MY_INT_PROP_ID, <span class="jxr_string">"Test Integer Property"</span>, Updatability.READWRITE);
<a class="jxr_linenumber" name="1835" href="#1835">1835</a>             prop2.setIsRequired(false);
<a class="jxr_linenumber" name="1836" href="#1836">1836</a>             List&lt;BigInteger&gt; defVal = <strong class="jxr_keyword">new</strong> ArrayList&lt;BigInteger&gt;() {{ add(BigInteger.valueOf(100)); }};
<a class="jxr_linenumber" name="1837" href="#1837">1837</a>             prop2.setDefaultValue(defVal);
<a class="jxr_linenumber" name="1838" href="#1838">1838</a>             propertyDefinitions.put(prop2.getId(), prop2);
<a class="jxr_linenumber" name="1839" href="#1839">1839</a> 
<a class="jxr_linenumber" name="1840" href="#1840">1840</a>             PropertyIntegerDefinitionImpl prop3 = PropertyCreationHelper.createIntegerDefinition(
<a class="jxr_linenumber" name="1841" href="#1841">1841</a>                     TEST_FOLDER_MY_INT_PROP_ID_MANDATORY_DEFAULT, <span class="jxr_string">"Test Integer Property Mandatory default"</span>, Updatability.READWRITE);
<a class="jxr_linenumber" name="1842" href="#1842">1842</a>             prop3.setIsRequired(<strong class="jxr_keyword">true</strong>);
<a class="jxr_linenumber" name="1843" href="#1843">1843</a>             List&lt;BigInteger&gt; defVal2 = <strong class="jxr_keyword">new</strong> ArrayList&lt;BigInteger&gt;() {{ add(BigInteger.valueOf(100)); }};
<a class="jxr_linenumber" name="1844" href="#1844">1844</a>             prop3.setDefaultValue(defVal2);
<a class="jxr_linenumber" name="1845" href="#1845">1845</a>             propertyDefinitions.put(prop3.getId(), prop3);
<a class="jxr_linenumber" name="1846" href="#1846">1846</a> 
<a class="jxr_linenumber" name="1847" href="#1847">1847</a>             cmisFolderType.addCustomPropertyDefinitions(propertyDefinitions);
<a class="jxr_linenumber" name="1848" href="#1848">1848</a> 
<a class="jxr_linenumber" name="1849" href="#1849">1849</a>             <strong class="jxr_keyword">return</strong> cmisFolderType;
<a class="jxr_linenumber" name="1850" href="#1850">1850</a>         }
<a class="jxr_linenumber" name="1851" href="#1851">1851</a>         
<a class="jxr_linenumber" name="1852" href="#1852">1852</a>         <strong class="jxr_keyword">private</strong> InMemoryRelationshipTypeDefinition createRelationshipType() {
<a class="jxr_linenumber" name="1853" href="#1853">1853</a>             InMemoryRelationshipTypeDefinition cmisRelType = <strong class="jxr_keyword">new</strong> InMemoryRelationshipTypeDefinition(
<a class="jxr_linenumber" name="1854" href="#1854">1854</a>                     TEST_RELATION_TYPE_ID, <span class="jxr_string">"MyRelationshipType"</span>);
<a class="jxr_linenumber" name="1855" href="#1855">1855</a>             <em class="jxr_comment">// create a single String property definition</em>
<a class="jxr_linenumber" name="1856" href="#1856">1856</a> 
<a class="jxr_linenumber" name="1857" href="#1857">1857</a>             Map&lt;String, PropertyDefinition&lt;?&gt;&gt; propertyDefinitions = <strong class="jxr_keyword">new</strong> HashMap&lt;String, PropertyDefinition&lt;?&gt;&gt;();
<a class="jxr_linenumber" name="1858" href="#1858">1858</a>             propertyDefinitions = <strong class="jxr_keyword">new</strong> HashMap&lt;String, PropertyDefinition&lt;?&gt;&gt;();
<a class="jxr_linenumber" name="1859" href="#1859">1859</a>             PropertyStringDefinitionImpl prop1 = PropertyCreationHelper.createStringDefinition(REL_STRING_PROP,
<a class="jxr_linenumber" name="1860" href="#1860">1860</a>                     <span class="jxr_string">"CrossReferenceType"</span>, Updatability.READWRITE);
<a class="jxr_linenumber" name="1861" href="#1861">1861</a>             propertyDefinitions.put(prop1.getId(), prop1);
<a class="jxr_linenumber" name="1862" href="#1862">1862</a>             cmisRelType.addCustomPropertyDefinitions(propertyDefinitions);
<a class="jxr_linenumber" name="1863" href="#1863">1863</a>             
<a class="jxr_linenumber" name="1864" href="#1864">1864</a>             <strong class="jxr_keyword">return</strong> cmisRelType;            
<a class="jxr_linenumber" name="1865" href="#1865">1865</a>         }
<a class="jxr_linenumber" name="1866" href="#1866">1866</a> 
<a class="jxr_linenumber" name="1867" href="#1867">1867</a>         <strong class="jxr_keyword">private</strong> InMemoryRelationshipTypeDefinition createRelationshipTypeRestricted() {
<a class="jxr_linenumber" name="1868" href="#1868">1868</a>             InMemoryRelationshipTypeDefinition cmisRelType = <strong class="jxr_keyword">new</strong> InMemoryRelationshipTypeDefinition(
<a class="jxr_linenumber" name="1869" href="#1869">1869</a>                     TEST_RESTRICTED_RELATION_TYPE_ID, <span class="jxr_string">"RestrictedRelationshipType"</span>);
<a class="jxr_linenumber" name="1870" href="#1870">1870</a> 
<a class="jxr_linenumber" name="1871" href="#1871">1871</a>             List&lt;String&gt; allowedTypeIds = Collections.singletonList(TEST_CUSTOM_DOCUMENT_TYPE_ID);
<a class="jxr_linenumber" name="1872" href="#1872">1872</a>             cmisRelType.setAllowedSourceTypes(allowedTypeIds);
<a class="jxr_linenumber" name="1873" href="#1873">1873</a>             cmisRelType.setAllowedTargetTypes(allowedTypeIds);
<a class="jxr_linenumber" name="1874" href="#1874">1874</a>             <strong class="jxr_keyword">return</strong> cmisRelType;            
<a class="jxr_linenumber" name="1875" href="#1875">1875</a>         }
<a class="jxr_linenumber" name="1876" href="#1876">1876</a> 
<a class="jxr_linenumber" name="1877" href="#1877">1877</a>        <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> InMemoryItemTypeDefinition createItemType() {
<a class="jxr_linenumber" name="1878" href="#1878">1878</a>             <em class="jxr_comment">//CMIS 1.1 create an item item type</em>
<a class="jxr_linenumber" name="1879" href="#1879">1879</a> 
<a class="jxr_linenumber" name="1880" href="#1880">1880</a>             InMemoryItemTypeDefinition cmisItemType = <strong class="jxr_keyword">new</strong> InMemoryItemTypeDefinition(TEST_ITEM_TYPE_ID, <span class="jxr_string">"MyItemType"</span>);
<a class="jxr_linenumber" name="1881" href="#1881">1881</a>             <em class="jxr_comment">// create a single String property definition</em>
<a class="jxr_linenumber" name="1882" href="#1882">1882</a> 
<a class="jxr_linenumber" name="1883" href="#1883">1883</a>             Map&lt;String, PropertyDefinition&lt;?&gt;&gt; propertyDefinitions = <strong class="jxr_keyword">new</strong> HashMap&lt;String, PropertyDefinition&lt;?&gt;&gt;();
<a class="jxr_linenumber" name="1884" href="#1884">1884</a>             propertyDefinitions = <strong class="jxr_keyword">new</strong> HashMap&lt;String, PropertyDefinition&lt;?&gt;&gt;();
<a class="jxr_linenumber" name="1885" href="#1885">1885</a>             PropertyStringDefinitionImpl prop1 = PropertyCreationHelper.createStringDefinition(ITEM_STRING_PROP,
<a class="jxr_linenumber" name="1886" href="#1886">1886</a>                     <span class="jxr_string">"Item String Property"</span>, Updatability.READWRITE);
<a class="jxr_linenumber" name="1887" href="#1887">1887</a>             propertyDefinitions.put(prop1.getId(), prop1);
<a class="jxr_linenumber" name="1888" href="#1888">1888</a>             cmisItemType.addCustomPropertyDefinitions(propertyDefinitions);
<a class="jxr_linenumber" name="1889" href="#1889">1889</a>             <em class="jxr_comment">// add type to types collection</em>
<a class="jxr_linenumber" name="1890" href="#1890">1890</a>             <strong class="jxr_keyword">return</strong> cmisItemType;            
<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>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> InMemorySecondaryTypeDefinition createSecondaryType() {
<a class="jxr_linenumber" name="1894" href="#1894">1894</a>             <em class="jxr_comment">//CMIS 1.1 create an item item type</em>
<a class="jxr_linenumber" name="1895" href="#1895">1895</a> 
<a class="jxr_linenumber" name="1896" href="#1896">1896</a>             InMemorySecondaryTypeDefinition cmisSecondaryType = <strong class="jxr_keyword">new</strong> InMemorySecondaryTypeDefinition(TEST_SECONDARY_TYPE_ID, 
<a class="jxr_linenumber" name="1897" href="#1897">1897</a>                     <span class="jxr_string">"MySecondaryType"</span>);
<a class="jxr_linenumber" name="1898" href="#1898">1898</a>             <em class="jxr_comment">// create a single String property definition</em>
<a class="jxr_linenumber" name="1899" href="#1899">1899</a> 
<a class="jxr_linenumber" name="1900" href="#1900">1900</a>             Map&lt;String, PropertyDefinition&lt;?&gt;&gt; propertyDefinitions = <strong class="jxr_keyword">new</strong> HashMap&lt;String, PropertyDefinition&lt;?&gt;&gt;();
<a class="jxr_linenumber" name="1901" href="#1901">1901</a>             propertyDefinitions = <strong class="jxr_keyword">new</strong> HashMap&lt;String, PropertyDefinition&lt;?&gt;&gt;();
<a class="jxr_linenumber" name="1902" href="#1902">1902</a>             PropertyStringDefinitionImpl prop1 = PropertyCreationHelper.createStringDefinition(SECONDARY_STRING_PROP,
<a class="jxr_linenumber" name="1903" href="#1903">1903</a>                     <span class="jxr_string">"Secondary String Property"</span>, Updatability.READWRITE);
<a class="jxr_linenumber" name="1904" href="#1904">1904</a>             propertyDefinitions.put(prop1.getId(), prop1);
<a class="jxr_linenumber" name="1905" href="#1905">1905</a>             PropertyIntegerDefinitionImpl prop2 = PropertyCreationHelper.createIntegerDefinition(SECONDARY_INTEGER_PROP,
<a class="jxr_linenumber" name="1906" href="#1906">1906</a>                     <span class="jxr_string">"Secondary Integer Property"</span>, Updatability.READWRITE);
<a class="jxr_linenumber" name="1907" href="#1907">1907</a>             prop2.setIsRequired(<strong class="jxr_keyword">true</strong>);
<a class="jxr_linenumber" name="1908" href="#1908">1908</a>             propertyDefinitions.put(prop2.getId(), prop2);
<a class="jxr_linenumber" name="1909" href="#1909">1909</a>             cmisSecondaryType.addCustomPropertyDefinitions(propertyDefinitions);
<a class="jxr_linenumber" name="1910" href="#1910">1910</a> 
<a class="jxr_linenumber" name="1911" href="#1911">1911</a>             <strong class="jxr_keyword">return</strong> cmisSecondaryType;            
<a class="jxr_linenumber" name="1912" href="#1912">1912</a>         }
<a class="jxr_linenumber" name="1913" href="#1913">1913</a>         
<a class="jxr_linenumber" name="1914" href="#1914">1914</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> InMemoryDocumentTypeDefinition createVersionableType() {
<a class="jxr_linenumber" name="1915" href="#1915">1915</a>             <em class="jxr_comment">// create a complex type with properties</em>
<a class="jxr_linenumber" name="1916" href="#1916">1916</a>             InMemoryDocumentTypeDefinition verType = <strong class="jxr_keyword">new</strong> InMemoryDocumentTypeDefinition(
<a class="jxr_linenumber" name="1917" href="#1917">1917</a>                     TEST_VERSION_DOCUMENT_TYPE_ID, <span class="jxr_string">"VersionedType"</span>, InMemoryDocumentTypeDefinition.getRootDocumentType());
<a class="jxr_linenumber" name="1918" href="#1918">1918</a> 
<a class="jxr_linenumber" name="1919" href="#1919">1919</a>             <em class="jxr_comment">// create a String property definition</em>
<a class="jxr_linenumber" name="1920" href="#1920">1920</a> 
<a class="jxr_linenumber" name="1921" href="#1921">1921</a>             Map&lt;String, PropertyDefinition&lt;?&gt;&gt; propertyDefinitions = <strong class="jxr_keyword">new</strong> HashMap&lt;String, PropertyDefinition&lt;?&gt;&gt;();
<a class="jxr_linenumber" name="1922" href="#1922">1922</a> 
<a class="jxr_linenumber" name="1923" href="#1923">1923</a>             PropertyStringDefinitionImpl prop1 = PropertyCreationHelper.createStringDefinition(TEST_VER_PROPERTY_ID,
<a class="jxr_linenumber" name="1924" href="#1924">1924</a>                     <span class="jxr_string">"Sample String Property"</span>, Updatability.WHENCHECKEDOUT);
<a class="jxr_linenumber" name="1925" href="#1925">1925</a>             propertyDefinitions.put(prop1.getId(), prop1);
<a class="jxr_linenumber" name="1926" href="#1926">1926</a> 
<a class="jxr_linenumber" name="1927" href="#1927">1927</a>             verType.addCustomPropertyDefinitions(propertyDefinitions);
<a class="jxr_linenumber" name="1928" href="#1928">1928</a>             verType.setIsVersionable(<strong class="jxr_keyword">true</strong>); <em class="jxr_comment">// make it a versionable type;</em>
<a class="jxr_linenumber" name="1929" href="#1929">1929</a>             <strong class="jxr_keyword">return</strong> verType;
<a class="jxr_linenumber" name="1930" href="#1930">1930</a>         }
<a class="jxr_linenumber" name="1931" href="#1931">1931</a>         
<a class="jxr_linenumber" name="1932" href="#1932">1932</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> InMemoryPolicyTypeDefinition createPolicyType() {
<a class="jxr_linenumber" name="1933" href="#1933">1933</a>             
<a class="jxr_linenumber" name="1934" href="#1934">1934</a>             InMemoryPolicyTypeDefinition polType = <strong class="jxr_keyword">new</strong> InMemoryPolicyTypeDefinition(
<a class="jxr_linenumber" name="1935" href="#1935">1935</a>                     TEST_POLICY_TYPE_ID, <span class="jxr_string">"Audit Policy"</span>, InMemoryPolicyTypeDefinition.getRootPolicyType());
<a class="jxr_linenumber" name="1936" href="#1936">1936</a> 
<a class="jxr_linenumber" name="1937" href="#1937">1937</a>             <em class="jxr_comment">// create a String property definition</em>
<a class="jxr_linenumber" name="1938" href="#1938">1938</a> 
<a class="jxr_linenumber" name="1939" href="#1939">1939</a>             Map&lt;String, PropertyDefinition&lt;?&gt;&gt; propertyDefinitions = <strong class="jxr_keyword">new</strong> HashMap&lt;String, PropertyDefinition&lt;?&gt;&gt;();
<a class="jxr_linenumber" name="1940" href="#1940">1940</a> 
<a class="jxr_linenumber" name="1941" href="#1941">1941</a>             PropertyStringDefinitionImpl prop1 = PropertyCreationHelper.createStringDefinition(TEST_POLICY_PROPERTY_ID,
<a class="jxr_linenumber" name="1942" href="#1942">1942</a>                     <span class="jxr_string">"Audit Kind Property"</span>, Updatability.READWRITE);
<a class="jxr_linenumber" name="1943" href="#1943">1943</a>             propertyDefinitions.put(prop1.getId(), prop1);
<a class="jxr_linenumber" name="1944" href="#1944">1944</a> 
<a class="jxr_linenumber" name="1945" href="#1945">1945</a>             polType.addCustomPropertyDefinitions(propertyDefinitions);
<a class="jxr_linenumber" name="1946" href="#1946">1946</a>             <strong class="jxr_keyword">return</strong> polType;            
<a class="jxr_linenumber" name="1947" href="#1947">1947</a>         }
<a class="jxr_linenumber" name="1948" href="#1948">1948</a>     }
<a class="jxr_linenumber" name="1949" href="#1949">1949</a> 
<a class="jxr_linenumber" name="1950" href="#1950">1950</a> }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

