<!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=ISO-8859-1" />
<title>FolderTest xref</title>
<link type="text/css" rel="stylesheet" href="../../../../../stylesheet.css" />
</head>
<body>
<pre>

<a name="1" href="#1">1</a>   <em class="jxr_comment">/*</em>
<a name="2" href="#2">2</a>   <em class="jxr_comment"> * Licensed to the Apache Software Foundation (ASF) under one</em>
<a name="3" href="#3">3</a>   <em class="jxr_comment"> * or more contributor license agreements.  See the NOTICE file</em>
<a name="4" href="#4">4</a>   <em class="jxr_comment"> * distributed with this work for additional information</em>
<a name="5" href="#5">5</a>   <em class="jxr_comment"> * regarding copyright ownership.  The ASF licenses this file</em>
<a name="6" href="#6">6</a>   <em class="jxr_comment"> * to you under the Apache License, Version 2.0 (the</em>
<a name="7" href="#7">7</a>   <em class="jxr_comment"> * "License"); you may not use this file except in compliance</em>
<a name="8" href="#8">8</a>   <em class="jxr_comment"> * with the License.  You may obtain a copy of the License at</em>
<a name="9" href="#9">9</a>   <em class="jxr_comment"> *</em>
<a 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 name="11" href="#11">11</a>  <em class="jxr_comment"> *</em>
<a name="12" href="#12">12</a>  <em class="jxr_comment"> * Unless required by applicable law or agreed to in writing,</em>
<a name="13" href="#13">13</a>  <em class="jxr_comment"> * software distributed under the License is distributed on an</em>
<a name="14" href="#14">14</a>  <em class="jxr_comment"> * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</em>
<a name="15" href="#15">15</a>  <em class="jxr_comment"> * KIND, either express or implied.  See the License for the</em>
<a name="16" href="#16">16</a>  <em class="jxr_comment"> * specific language governing permissions and limitations</em>
<a name="17" href="#17">17</a>  <em class="jxr_comment"> * under the License.</em>
<a name="18" href="#18">18</a>  <em class="jxr_comment"> */</em>
<a name="19" href="#19">19</a>  <strong class="jxr_keyword">package</strong> org.apache.chemistry.opencmis.inmemory;
<a name="20" href="#20">20</a>  
<a name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> java.util.List;
<a name="22" href="#22">22</a>  
<a name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> junit.framework.TestCase;
<a name="24" href="#24">24</a>  
<a name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.inmemory.storedobj.api.Filing;
<a name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.inmemory.storedobj.api.Folder;
<a name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.inmemory.storedobj.api.ObjectStore;
<a name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.inmemory.storedobj.api.StoredObject;
<a name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.inmemory.storedobj.impl.FolderImpl;
<a name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.inmemory.storedobj.impl.ObjectStoreImpl;
<a name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.junit.Before;
<a name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.junit.Test;
<a name="33" href="#33">33</a>  
<a name="34" href="#34">34</a>  <em class="jxr_javadoccomment">/**</em>
<a name="35" href="#35">35</a>  <em class="jxr_javadoccomment"> * @author &lt;a href="<a href="mailto:fmueller@opentext.com" target="alexandria_uri">mailto:fmueller@opentext.com</a>"&gt;Florian M&amp;uuml;ller&lt;/a&gt;</em>
<a name="36" href="#36">36</a>  <em class="jxr_javadoccomment"> * @author Jens</em>
<a name="37" href="#37">37</a>  <em class="jxr_javadoccomment"> */</em>
<a name="38" href="#38">38</a>  
<a name="39" href="#39">39</a>  <em class="jxr_javadoccomment">/**</em>
<a name="40" href="#40">40</a>  <em class="jxr_javadoccomment"> * Some test directly against the in-memory folder object.</em>
<a name="41" href="#41">41</a>  <em class="jxr_javadoccomment"> */</em>
<a name="42" href="#42">42</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/chemistry/opencmis/inmemory/FolderTest.html">FolderTest</a> <strong class="jxr_keyword">extends</strong> TestCase {
<a name="43" href="#43">43</a>  
<a name="44" href="#44">44</a>      <strong class="jxr_keyword">private</strong> ObjectStore fStore;
<a name="45" href="#45">45</a>      <strong class="jxr_keyword">private</strong> FolderImpl fRoot;
<a name="46" href="#46">46</a>      <strong class="jxr_keyword">private</strong> FolderImpl f1;
<a name="47" href="#47">47</a>      <strong class="jxr_keyword">private</strong> FolderImpl f2;
<a name="48" href="#48">48</a>      <strong class="jxr_keyword">private</strong> FolderImpl f3;
<a name="49" href="#49">49</a>      <strong class="jxr_keyword">private</strong> FolderImpl f4;
<a name="50" href="#50">50</a>      <strong class="jxr_keyword">private</strong> FolderImpl f11;
<a name="51" href="#51">51</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String TEST_REPOSITORY_ID = <span class="jxr_string">"TestRepositoryId"</span>;
<a name="52" href="#52">52</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String USER = <span class="jxr_string">"user"</span>;
<a name="53" href="#53">53</a>  
<a name="54" href="#54">54</a>      @Before
<a name="55" href="#55">55</a>      <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> setUp() <strong class="jxr_keyword">throws</strong> Exception {
<a name="56" href="#56">56</a>          fStore = <strong class="jxr_keyword">new</strong> ObjectStoreImpl(TEST_REPOSITORY_ID);
<a name="57" href="#57">57</a>          createFolders();
<a name="58" href="#58">58</a>      }
<a name="59" href="#59">59</a>  
<a name="60" href="#60">60</a>      @Test
<a name="61" href="#61">61</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testCreatAndGetFolders() {
<a name="62" href="#62">62</a>          <strong class="jxr_keyword">try</strong> {
<a name="63" href="#63">63</a>              Folder childFolder = createFolder(<span class="jxr_string">"Folder 1"</span>);
<a name="64" href="#64">64</a>              fRoot.addChildFolder(childFolder);
<a name="65" href="#65">65</a>              fail(<span class="jxr_string">"Should throw exception if folder already exists."</span>);
<a name="66" href="#66">66</a>          } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a name="67" href="#67">67</a>          }
<a name="68" href="#68">68</a>          assertEquals(f1.getName(), <span class="jxr_string">"Folder 1"</span>);
<a name="69" href="#69">69</a>          assertEquals(f11.getName(), <span class="jxr_string">"Folder 1.1"</span>);
<a name="70" href="#70">70</a>          assertNull(fRoot.getParent());
<a name="71" href="#71">71</a>          assertEquals(fRoot, f1.getParent());
<a name="72" href="#72">72</a>          assertEquals(f1, f11.getParent());
<a name="73" href="#73">73</a>          assertEquals(Filing.PATH_SEPARATOR, fRoot.getPath());
<a name="74" href="#74">74</a>          assertEquals(<span class="jxr_string">"/Folder 1"</span>, f1.getPath());
<a name="75" href="#75">75</a>          assertEquals(<span class="jxr_string">"/Folder 1/Folder 1.1"</span>, f11.getPath());
<a name="76" href="#76">76</a>          StoredObject fTest = fStore.getObjectByPath(<span class="jxr_string">"/"</span>, USER);
<a name="77" href="#77">77</a>          assertEquals(fRoot, fTest);
<a name="78" href="#78">78</a>          fTest = fStore.getObjectByPath(<span class="jxr_string">"/Folder 1"</span>, USER);
<a name="79" href="#79">79</a>          assertEquals(f1, fTest);
<a name="80" href="#80">80</a>          fTest = fStore.getObjectByPath(<span class="jxr_string">"/Folder 1/Folder 1.1"</span>, USER);
<a name="81" href="#81">81</a>          assertEquals(f11, fTest);
<a name="82" href="#82">82</a>          List&lt;StoredObject&gt; subFolders = fRoot.getChildren(-1, -1, <span class="jxr_string">"user"</span>);
<a name="83" href="#83">83</a>          assertEquals(4, subFolders.size());
<a name="84" href="#84">84</a>          subFolders = f2.getChildren(-1, -1, <span class="jxr_string">"user"</span>);
<a name="85" href="#85">85</a>          assertEquals(0, subFolders.size());
<a name="86" href="#86">86</a>          subFolders = f1.getChildren(-1, -1, <span class="jxr_string">"user"</span>);
<a name="87" href="#87">87</a>          assertEquals(1, subFolders.size());
<a name="88" href="#88">88</a>      }
<a name="89" href="#89">89</a>  
<a name="90" href="#90">90</a>      @Test
<a name="91" href="#91">91</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testRenameFolder() {
<a name="92" href="#92">92</a>          <em class="jxr_comment">// rename top level folder</em>
<a name="93" href="#93">93</a>          String newName = <span class="jxr_string">"Folder B"</span>;
<a name="94" href="#94">94</a>          String oldPath = f2.getPath();
<a name="95" href="#95">95</a>          f2.rename(newName);
<a name="96" href="#96">96</a>          assertEquals(f2.getName(), newName);
<a name="97" href="#97">97</a>          assertEquals(f2.getPath(), Filing.PATH_SEPARATOR + newName);
<a name="98" href="#98">98</a>          assertNull(fStore.getObjectByPath(oldPath, USER));
<a name="99" href="#99">99</a>          assertEquals(f2, fStore.getObjectByPath(Filing.PATH_SEPARATOR + newName, USER));
<a name="100" href="#100">100</a>         <strong class="jxr_keyword">try</strong> {
<a name="101" href="#101">101</a>             f2.rename(<span class="jxr_string">"Folder 3"</span>);
<a name="102" href="#102">102</a>             fail(<span class="jxr_string">"Should not allow to rename a folder to an existing name"</span>);
<a name="103" href="#103">103</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a name="104" href="#104">104</a>         }
<a name="105" href="#105">105</a> 
<a name="106" href="#106">106</a>         <em class="jxr_comment">// rename sub folder</em>
<a name="107" href="#107">107</a>         oldPath = f11.getPath();
<a name="108" href="#108">108</a>         f11.rename(newName);
<a name="109" href="#109">109</a>         assertEquals(f11.getName(), newName);
<a name="110" href="#110">110</a>         assertEquals(f11.getPath(), <span class="jxr_string">"/Folder 1/Folder B"</span>);
<a name="111" href="#111">111</a>         assertNull(fStore.getObjectByPath(oldPath, USER));
<a name="112" href="#112">112</a>         assertEquals(f11, fStore.getObjectByPath(<span class="jxr_string">"/Folder 1/Folder B"</span>, USER));
<a name="113" href="#113">113</a>         <strong class="jxr_keyword">try</strong> {
<a name="114" href="#114">114</a>             f2.rename(newName);
<a name="115" href="#115">115</a>             fail(<span class="jxr_string">"Should not allow to rename a folder to an existing name"</span>);
<a name="116" href="#116">116</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a name="117" href="#117">117</a>         }
<a name="118" href="#118">118</a>         <strong class="jxr_keyword">try</strong> {
<a name="119" href="#119">119</a>             f2.rename(<span class="jxr_string">"illegal/name"</span>);
<a name="120" href="#120">120</a>             fail(<span class="jxr_string">"Should not allow to rename a folder to a name with illegal name"</span>);
<a name="121" href="#121">121</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a name="122" href="#122">122</a>         }
<a name="123" href="#123">123</a> 
<a name="124" href="#124">124</a>         <em class="jxr_comment">// rename root folder</em>
<a name="125" href="#125">125</a>         <strong class="jxr_keyword">try</strong> {
<a name="126" href="#126">126</a>             fRoot.rename(<span class="jxr_string">"abc"</span>);
<a name="127" href="#127">127</a>             fail(<span class="jxr_string">"Should not be possible to rename root folder"</span>);
<a name="128" href="#128">128</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a name="129" href="#129">129</a>         }
<a name="130" href="#130">130</a>     }
<a name="131" href="#131">131</a> 
<a name="132" href="#132">132</a>     @Test
<a name="133" href="#133">133</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testMoveFolder() {
<a name="134" href="#134">134</a>         String oldPath = f1.getPath();
<a name="135" href="#135">135</a>         Folder f1Parent = f1.getParent();
<a name="136" href="#136">136</a>         f1.move(f1Parent, f3);
<a name="137" href="#137">137</a>         assertNull(fStore.getObjectByPath(oldPath, USER));
<a name="138" href="#138">138</a>         assertEquals(f1.getPath(), <span class="jxr_string">"/Folder 3/Folder 1"</span>);
<a name="139" href="#139">139</a>         assertEquals(f1, fStore.getObjectByPath(<span class="jxr_string">"/Folder 3/Folder 1"</span>, USER));
<a name="140" href="#140">140</a> 
<a name="141" href="#141">141</a>         f2.rename(<span class="jxr_string">"Folder 1"</span>);
<a name="142" href="#142">142</a>         <strong class="jxr_keyword">try</strong> {
<a name="143" href="#143">143</a>             Folder f2Parent = f2.getParent();
<a name="144" href="#144">144</a>             f2.move(f2Parent, f3);
<a name="145" href="#145">145</a>             fail(<span class="jxr_string">"Should not be possible to move folder to a folder that has a child with same name"</span>);
<a name="146" href="#146">146</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a name="147" href="#147">147</a>         }
<a name="148" href="#148">148</a>     }
<a name="149" href="#149">149</a> 
<a name="150" href="#150">150</a>     @Test
<a name="151" href="#151">151</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testDeleteFolder() {
<a name="152" href="#152">152</a>         String oldPath = f2.getPath();
<a name="153" href="#153">153</a>         fStore.deleteObject(f2.getId(), <strong class="jxr_keyword">true</strong>, <span class="jxr_string">"TestUser"</span>);
<a name="154" href="#154">154</a>         assertNull(fStore.getObjectByPath(oldPath, USER));
<a name="155" href="#155">155</a> 
<a name="156" href="#156">156</a>         <strong class="jxr_keyword">try</strong> {
<a name="157" href="#157">157</a>             fStore.deleteObject(f1.getId(), <strong class="jxr_keyword">true</strong>, <span class="jxr_string">"TestUser"</span>);
<a name="158" href="#158">158</a>             fail(<span class="jxr_string">"Should not be possible to move folder that has children"</span>);
<a name="159" href="#159">159</a>         } <strong class="jxr_keyword">catch</strong> (Exception e) {
<a name="160" href="#160">160</a>         }
<a name="161" href="#161">161</a>     }
<a name="162" href="#162">162</a> 
<a name="163" href="#163">163</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> createFolders() {
<a name="164" href="#164">164</a>         fRoot = (FolderImpl) fStore.getRootFolder();
<a name="165" href="#165">165</a>         f1 = (FolderImpl) createFolder(<span class="jxr_string">"Folder 1"</span>);
<a name="166" href="#166">166</a>         fRoot.addChildFolder(f1);
<a name="167" href="#167">167</a>         f1.persist();
<a name="168" href="#168">168</a> 
<a name="169" href="#169">169</a>         f2 = (FolderImpl) createFolder(<span class="jxr_string">"Folder 2"</span>);
<a name="170" href="#170">170</a>         fRoot.addChildFolder(f2);
<a name="171" href="#171">171</a>         f2.persist();
<a name="172" href="#172">172</a> 
<a name="173" href="#173">173</a>         f3 = (FolderImpl) createFolder(<span class="jxr_string">"Folder 3"</span>);
<a name="174" href="#174">174</a>         fRoot.addChildFolder(f3);
<a name="175" href="#175">175</a>         f3.persist();
<a name="176" href="#176">176</a> 
<a name="177" href="#177">177</a>         f4 = (FolderImpl) createFolder(<span class="jxr_string">"Folder 4"</span>);
<a name="178" href="#178">178</a>         fRoot.addChildFolder(f4);
<a name="179" href="#179">179</a>         f4.persist();
<a name="180" href="#180">180</a> 
<a name="181" href="#181">181</a>         f11 = (FolderImpl) createFolder(<span class="jxr_string">"Folder 1.1"</span>);
<a name="182" href="#182">182</a>         f1.addChildFolder(f11);
<a name="183" href="#183">183</a>         f11.persist();
<a name="184" href="#184">184</a>     }
<a name="185" href="#185">185</a>     
<a name="186" href="#186">186</a>     <strong class="jxr_keyword">private</strong> Folder createFolder(String name) {
<a name="187" href="#187">187</a>     	<strong class="jxr_keyword">return</strong> fStore.createFolder(name, <strong class="jxr_keyword">null</strong>, <span class="jxr_string">"user"</span>, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>);    	
<a name="188" href="#188">188</a>     }
<a name="189" href="#189">189</a> }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

