<!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>VersioningServiceImpl xref</title>
<link type="text/css" rel="stylesheet" href="../../../../../../../../stylesheet.css" />
</head>
<body>
<div id="overview"><a href="../../../../../../../../../apidocs/org/apache/chemistry/opencmis/client/bindings/spi/atompub/VersioningServiceImpl.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.client.bindings.spi.atompub;
<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> java.io.OutputStream;
<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> java.util.ArrayList;
<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> java.util.List;
<a class="jxr_linenumber" name="24" href="#24">24</a>  
<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.client.bindings.spi.BindingSession;
<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.client.bindings.spi.atompub.objects.AtomElement;
<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.client.bindings.spi.atompub.objects.AtomEntry;
<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.client.bindings.spi.atompub.objects.AtomFeed;
<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.client.bindings.spi.atompub.objects.AtomLink;
<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.client.bindings.spi.http.Output;
<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.client.bindings.spi.http.Response;
<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.data.Acl;
<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.data.ContentStream;
<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.data.ExtensionsData;
<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.data.ObjectData;
<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.data.Properties;
<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.enums.IncludeRelationships;
<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.exceptions.CmisConnectionException;
<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.exceptions.CmisInvalidArgumentException;
<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.exceptions.CmisObjectNotFoundException;
<a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.impl.Constants;
<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.impl.ReturnVersion;
<a class="jxr_linenumber" name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.impl.UrlBuilder;
<a class="jxr_linenumber" name="44" href="#44">44</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.impl.dataobjects.AccessControlListImpl;
<a class="jxr_linenumber" name="45" href="#45">45</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.spi.Holder;
<a class="jxr_linenumber" name="46" href="#46">46</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.spi.VersioningService;
<a class="jxr_linenumber" name="47" href="#47">47</a>  
<a class="jxr_linenumber" name="48" href="#48">48</a>  <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="49" href="#49">49</a>  <em class="jxr_javadoccomment"> * Versioning Service AtomPub client.</em>
<a class="jxr_linenumber" name="50" href="#50">50</a>  <em class="jxr_javadoccomment"> */</em>
<a class="jxr_linenumber" name="51" href="#51">51</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../../../../org/apache/chemistry/opencmis/client/bindings/spi/atompub/VersioningServiceImpl.html">VersioningServiceImpl</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../../../../../org/apache/chemistry/opencmis/client/bindings/spi/atompub/AbstractAtomPubService.html">AbstractAtomPubService</a> <strong class="jxr_keyword">implements</strong> VersioningService {
<a class="jxr_linenumber" name="52" href="#52">52</a>  
<a class="jxr_linenumber" name="53" href="#53">53</a>      <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="54" href="#54">54</a>  <em class="jxr_javadoccomment">     * Constructor.</em>
<a class="jxr_linenumber" name="55" href="#55">55</a>  <em class="jxr_javadoccomment">     */</em>
<a class="jxr_linenumber" name="56" href="#56">56</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../../../../../org/apache/chemistry/opencmis/client/bindings/spi/atompub/VersioningServiceImpl.html">VersioningServiceImpl</a>(<a href="../../../../../../../../org/apache/chemistry/opencmis/client/bindings/spi/BindingSession.html">BindingSession</a> session) {
<a class="jxr_linenumber" name="57" href="#57">57</a>          setSession(session);
<a class="jxr_linenumber" name="58" href="#58">58</a>      }
<a class="jxr_linenumber" name="59" href="#59">59</a>  
<a class="jxr_linenumber" name="60" href="#60">60</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> checkOut(String repositoryId, Holder&lt;String&gt; objectId, ExtensionsData extension,
<a class="jxr_linenumber" name="61" href="#61">61</a>              Holder&lt;Boolean&gt; contentCopied) {
<a class="jxr_linenumber" name="62" href="#62">62</a>          <strong class="jxr_keyword">if</strong> ((objectId == <strong class="jxr_keyword">null</strong>) || (objectId.getValue() == <strong class="jxr_keyword">null</strong>) || (objectId.getValue().length() == 0)) {
<a class="jxr_linenumber" name="63" href="#63">63</a>              <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> CmisInvalidArgumentException(<span class="jxr_string">"Object id must be set!"</span>);
<a class="jxr_linenumber" name="64" href="#64">64</a>          }
<a class="jxr_linenumber" name="65" href="#65">65</a>  
<a class="jxr_linenumber" name="66" href="#66">66</a>          <em class="jxr_comment">// find the link</em>
<a class="jxr_linenumber" name="67" href="#67">67</a>          String link = loadCollection(repositoryId, Constants.COLLECTION_CHECKEDOUT);
<a class="jxr_linenumber" name="68" href="#68">68</a>  
<a class="jxr_linenumber" name="69" href="#69">69</a>          <strong class="jxr_keyword">if</strong> (link == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="70" href="#70">70</a>              <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> CmisObjectNotFoundException(<span class="jxr_string">"Unknown repository or checkedout collection not supported!"</span>);
<a class="jxr_linenumber" name="71" href="#71">71</a>          }
<a class="jxr_linenumber" name="72" href="#72">72</a>  
<a class="jxr_linenumber" name="73" href="#73">73</a>          UrlBuilder url = <strong class="jxr_keyword">new</strong> UrlBuilder(link);
<a class="jxr_linenumber" name="74" href="#74">74</a>  
<a class="jxr_linenumber" name="75" href="#75">75</a>          <em class="jxr_comment">// set up object and writer</em>
<a class="jxr_linenumber" name="76" href="#76">76</a>          <strong class="jxr_keyword">final</strong> <a href="../../../../../../../../org/apache/chemistry/opencmis/client/bindings/spi/atompub/AtomEntryWriter.html">AtomEntryWriter</a> entryWriter = <strong class="jxr_keyword">new</strong> <a href="../../../../../../../../org/apache/chemistry/opencmis/client/bindings/spi/atompub/AtomEntryWriter.html">AtomEntryWriter</a>(createIdObject(objectId.getValue()),
<a class="jxr_linenumber" name="77" href="#77">77</a>                  getCmisVersion(repositoryId));
<a class="jxr_linenumber" name="78" href="#78">78</a>  
<a class="jxr_linenumber" name="79" href="#79">79</a>          <em class="jxr_comment">// post move request</em>
<a class="jxr_linenumber" name="80" href="#80">80</a>          <a href="../../../../../../../../org/apache/chemistry/opencmis/client/bindings/spi/http/Response.html">Response</a> resp = post(url, Constants.MEDIATYPE_ENTRY, <strong class="jxr_keyword">new</strong> <a href="../../../../../../../../org/apache/chemistry/opencmis/client/bindings/spi/http/Output.html">Output</a>() {
<a class="jxr_linenumber" name="81" href="#81">81</a>              <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> write(OutputStream out) <strong class="jxr_keyword">throws</strong> Exception {
<a class="jxr_linenumber" name="82" href="#82">82</a>                  entryWriter.write(out);
<a class="jxr_linenumber" name="83" href="#83">83</a>              }
<a class="jxr_linenumber" name="84" href="#84">84</a>          });
<a class="jxr_linenumber" name="85" href="#85">85</a>  
<a class="jxr_linenumber" name="86" href="#86">86</a>          <em class="jxr_comment">// parse the response</em>
<a class="jxr_linenumber" name="87" href="#87">87</a>          <a href="../../../../../../../../org/apache/chemistry/opencmis/client/bindings/spi/atompub/objects/AtomEntry.html">AtomEntry</a> entry = parse(resp.getStream(), AtomEntry.<strong class="jxr_keyword">class</strong>);
<a class="jxr_linenumber" name="88" href="#88">88</a>  
<a class="jxr_linenumber" name="89" href="#89">89</a>          objectId.setValue(entry.getId());
<a class="jxr_linenumber" name="90" href="#90">90</a>  
<a class="jxr_linenumber" name="91" href="#91">91</a>          lockLinks();
<a class="jxr_linenumber" name="92" href="#92">92</a>          <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="93" href="#93">93</a>              <em class="jxr_comment">// clean up cache</em>
<a class="jxr_linenumber" name="94" href="#94">94</a>              removeLinks(repositoryId, entry.getId());
<a class="jxr_linenumber" name="95" href="#95">95</a>  
<a class="jxr_linenumber" name="96" href="#96">96</a>              <em class="jxr_comment">// walk through the entry</em>
<a class="jxr_linenumber" name="97" href="#97">97</a>              <strong class="jxr_keyword">for</strong> (AtomElement element : entry.getElements()) {
<a class="jxr_linenumber" name="98" href="#98">98</a>                  <strong class="jxr_keyword">if</strong> (element.getObject() instanceof AtomLink) {
<a class="jxr_linenumber" name="99" href="#99">99</a>                      addLink(repositoryId, entry.getId(), (AtomLink) element.getObject());
<a class="jxr_linenumber" name="100" href="#100">100</a>                 }
<a class="jxr_linenumber" name="101" href="#101">101</a>             }
<a class="jxr_linenumber" name="102" href="#102">102</a>         } <strong class="jxr_keyword">finally</strong> {
<a class="jxr_linenumber" name="103" href="#103">103</a>             unlockLinks();
<a class="jxr_linenumber" name="104" href="#104">104</a>         }
<a class="jxr_linenumber" name="105" href="#105">105</a> 
<a class="jxr_linenumber" name="106" href="#106">106</a>         <strong class="jxr_keyword">if</strong> (contentCopied != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="107" href="#107">107</a>             contentCopied.setValue(<strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="108" href="#108">108</a>         }
<a class="jxr_linenumber" name="109" href="#109">109</a>     }
<a class="jxr_linenumber" name="110" href="#110">110</a> 
<a class="jxr_linenumber" name="111" href="#111">111</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> cancelCheckOut(String repositoryId, String objectId, ExtensionsData extension) {
<a class="jxr_linenumber" name="112" href="#112">112</a>         <em class="jxr_comment">// find the link</em>
<a class="jxr_linenumber" name="113" href="#113">113</a>         String link = loadLink(repositoryId, objectId, Constants.REL_SELF, Constants.MEDIATYPE_ENTRY);
<a class="jxr_linenumber" name="114" href="#114">114</a> 
<a class="jxr_linenumber" name="115" href="#115">115</a>         <strong class="jxr_keyword">if</strong> (link == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="116" href="#116">116</a>             throwLinkException(repositoryId, objectId, Constants.REL_SELF, Constants.MEDIATYPE_ENTRY);
<a class="jxr_linenumber" name="117" href="#117">117</a>         }
<a class="jxr_linenumber" name="118" href="#118">118</a> 
<a class="jxr_linenumber" name="119" href="#119">119</a>         <em class="jxr_comment">// prefer working copy link if available</em>
<a class="jxr_linenumber" name="120" href="#120">120</a>         <em class="jxr_comment">// (workaround for non-compliant repositories)</em>
<a class="jxr_linenumber" name="121" href="#121">121</a>         String wcLink = getLink(repositoryId, objectId, Constants.REL_WORKINGCOPY, Constants.MEDIATYPE_ENTRY);
<a class="jxr_linenumber" name="122" href="#122">122</a>         <strong class="jxr_keyword">if</strong> (wcLink != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="123" href="#123">123</a>             link = wcLink;
<a class="jxr_linenumber" name="124" href="#124">124</a>         }
<a class="jxr_linenumber" name="125" href="#125">125</a> 
<a class="jxr_linenumber" name="126" href="#126">126</a>         delete(<strong class="jxr_keyword">new</strong> UrlBuilder(link));
<a class="jxr_linenumber" name="127" href="#127">127</a>     }
<a class="jxr_linenumber" name="128" href="#128">128</a> 
<a class="jxr_linenumber" name="129" href="#129">129</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> checkIn(String repositoryId, Holder&lt;String&gt; objectId, Boolean major, Properties properties,
<a class="jxr_linenumber" name="130" href="#130">130</a>             ContentStream contentStream, String checkinComment, List&lt;String&gt; policies, Acl addAces, Acl removeAces,
<a class="jxr_linenumber" name="131" href="#131">131</a>             ExtensionsData extension) {
<a class="jxr_linenumber" name="132" href="#132">132</a>         <em class="jxr_comment">// we need an object id</em>
<a class="jxr_linenumber" name="133" href="#133">133</a>         <strong class="jxr_keyword">if</strong> ((objectId == <strong class="jxr_keyword">null</strong>) || (objectId.getValue() == <strong class="jxr_keyword">null</strong>) || (objectId.getValue().length() == 0)) {
<a class="jxr_linenumber" name="134" href="#134">134</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> CmisInvalidArgumentException(<span class="jxr_string">"Object id must be set!"</span>);
<a class="jxr_linenumber" name="135" href="#135">135</a>         }
<a class="jxr_linenumber" name="136" href="#136">136</a> 
<a class="jxr_linenumber" name="137" href="#137">137</a>         <em class="jxr_comment">// find the link</em>
<a class="jxr_linenumber" name="138" href="#138">138</a>         String link = loadLink(repositoryId, objectId.getValue(), Constants.REL_SELF, Constants.MEDIATYPE_ENTRY);
<a class="jxr_linenumber" name="139" href="#139">139</a> 
<a class="jxr_linenumber" name="140" href="#140">140</a>         <strong class="jxr_keyword">if</strong> (link == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="141" href="#141">141</a>             throwLinkException(repositoryId, objectId.getValue(), Constants.REL_SELF, Constants.MEDIATYPE_ENTRY);
<a class="jxr_linenumber" name="142" href="#142">142</a>         }
<a class="jxr_linenumber" name="143" href="#143">143</a> 
<a class="jxr_linenumber" name="144" href="#144">144</a>         <em class="jxr_comment">// prefer working copy link if available</em>
<a class="jxr_linenumber" name="145" href="#145">145</a>         <em class="jxr_comment">// (workaround for non-compliant repositories)</em>
<a class="jxr_linenumber" name="146" href="#146">146</a>         String wcLink = getLink(repositoryId, objectId.getValue(), Constants.REL_WORKINGCOPY, Constants.MEDIATYPE_ENTRY);
<a class="jxr_linenumber" name="147" href="#147">147</a>         <strong class="jxr_keyword">if</strong> (wcLink != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="148" href="#148">148</a>             link = wcLink;
<a class="jxr_linenumber" name="149" href="#149">149</a>         }
<a class="jxr_linenumber" name="150" href="#150">150</a> 
<a class="jxr_linenumber" name="151" href="#151">151</a>         UrlBuilder url = <strong class="jxr_keyword">new</strong> UrlBuilder(link);
<a class="jxr_linenumber" name="152" href="#152">152</a>         url.addParameter(Constants.PARAM_CHECKIN_COMMENT, checkinComment);
<a class="jxr_linenumber" name="153" href="#153">153</a>         url.addParameter(Constants.PARAM_MAJOR, major);
<a class="jxr_linenumber" name="154" href="#154">154</a>         url.addParameter(Constants.PARAM_CHECK_IN, <span class="jxr_string">"true"</span>);
<a class="jxr_linenumber" name="155" href="#155">155</a> 
<a class="jxr_linenumber" name="156" href="#156">156</a>         <em class="jxr_comment">// set up writer</em>
<a class="jxr_linenumber" name="157" href="#157">157</a>         <strong class="jxr_keyword">final</strong> <a href="../../../../../../../../org/apache/chemistry/opencmis/client/bindings/spi/atompub/AtomEntryWriter.html">AtomEntryWriter</a> entryWriter = <strong class="jxr_keyword">new</strong> <a href="../../../../../../../../org/apache/chemistry/opencmis/client/bindings/spi/atompub/AtomEntryWriter.html">AtomEntryWriter</a>(createObject(properties, policies),
<a class="jxr_linenumber" name="158" href="#158">158</a>                 getCmisVersion(repositoryId), contentStream);
<a class="jxr_linenumber" name="159" href="#159">159</a> 
<a class="jxr_linenumber" name="160" href="#160">160</a>         <em class="jxr_comment">// update</em>
<a class="jxr_linenumber" name="161" href="#161">161</a>         <a href="../../../../../../../../org/apache/chemistry/opencmis/client/bindings/spi/http/Response.html">Response</a> resp = put(url, Constants.MEDIATYPE_ENTRY, <strong class="jxr_keyword">new</strong> <a href="../../../../../../../../org/apache/chemistry/opencmis/client/bindings/spi/http/Output.html">Output</a>() {
<a class="jxr_linenumber" name="162" href="#162">162</a>             <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> write(OutputStream out) <strong class="jxr_keyword">throws</strong> Exception {
<a class="jxr_linenumber" name="163" href="#163">163</a>                 entryWriter.write(out);
<a class="jxr_linenumber" name="164" href="#164">164</a>             }
<a class="jxr_linenumber" name="165" href="#165">165</a>         });
<a class="jxr_linenumber" name="166" href="#166">166</a> 
<a class="jxr_linenumber" name="167" href="#167">167</a>         <em class="jxr_comment">// parse new entry</em>
<a class="jxr_linenumber" name="168" href="#168">168</a>         <a href="../../../../../../../../org/apache/chemistry/opencmis/client/bindings/spi/atompub/objects/AtomEntry.html">AtomEntry</a> entry = parse(resp.getStream(), AtomEntry.<strong class="jxr_keyword">class</strong>);
<a class="jxr_linenumber" name="169" href="#169">169</a> 
<a class="jxr_linenumber" name="170" href="#170">170</a>         <em class="jxr_comment">// we expect a CMIS entry</em>
<a class="jxr_linenumber" name="171" href="#171">171</a>         <strong class="jxr_keyword">if</strong> (entry.getId() == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="172" href="#172">172</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> CmisConnectionException(<span class="jxr_string">"Received Atom entry is not a CMIS entry!"</span>);
<a class="jxr_linenumber" name="173" href="#173">173</a>         }
<a class="jxr_linenumber" name="174" href="#174">174</a> 
<a class="jxr_linenumber" name="175" href="#175">175</a>         <em class="jxr_comment">// set object id</em>
<a class="jxr_linenumber" name="176" href="#176">176</a>         objectId.setValue(entry.getId());
<a class="jxr_linenumber" name="177" href="#177">177</a> 
<a class="jxr_linenumber" name="178" href="#178">178</a>         AccessControlListImpl originalAces = <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="179" href="#179">179</a> 
<a class="jxr_linenumber" name="180" href="#180">180</a>         lockLinks();
<a class="jxr_linenumber" name="181" href="#181">181</a>         <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="182" href="#182">182</a>             <em class="jxr_comment">// clean up cache</em>
<a class="jxr_linenumber" name="183" href="#183">183</a>             removeLinks(repositoryId, entry.getId());
<a class="jxr_linenumber" name="184" href="#184">184</a> 
<a class="jxr_linenumber" name="185" href="#185">185</a>             <em class="jxr_comment">// walk through the entry</em>
<a class="jxr_linenumber" name="186" href="#186">186</a>             <strong class="jxr_keyword">for</strong> (AtomElement element : entry.getElements()) {
<a class="jxr_linenumber" name="187" href="#187">187</a>                 <strong class="jxr_keyword">if</strong> (element.getObject() instanceof AtomLink) {
<a class="jxr_linenumber" name="188" href="#188">188</a>                     addLink(repositoryId, entry.getId(), (AtomLink) element.getObject());
<a class="jxr_linenumber" name="189" href="#189">189</a>                 } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (element.getObject() instanceof ObjectData) {
<a class="jxr_linenumber" name="190" href="#190">190</a>                     <em class="jxr_comment">// extract current ACL</em>
<a class="jxr_linenumber" name="191" href="#191">191</a>                     ObjectData object = (ObjectData) element.getObject();
<a class="jxr_linenumber" name="192" href="#192">192</a>                     <strong class="jxr_keyword">if</strong> (object.getAcl() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="193" href="#193">193</a>                         originalAces = <strong class="jxr_keyword">new</strong> AccessControlListImpl(object.getAcl().getAces());
<a class="jxr_linenumber" name="194" href="#194">194</a>                         originalAces.setExact(object.isExactAcl());
<a class="jxr_linenumber" name="195" href="#195">195</a>                     }
<a class="jxr_linenumber" name="196" href="#196">196</a>                 }
<a class="jxr_linenumber" name="197" href="#197">197</a>             }
<a class="jxr_linenumber" name="198" href="#198">198</a>         } <strong class="jxr_keyword">finally</strong> {
<a class="jxr_linenumber" name="199" href="#199">199</a>             unlockLinks();
<a class="jxr_linenumber" name="200" href="#200">200</a>         }
<a class="jxr_linenumber" name="201" href="#201">201</a> 
<a class="jxr_linenumber" name="202" href="#202">202</a>         <em class="jxr_comment">// handle ACL modifications</em>
<a class="jxr_linenumber" name="203" href="#203">203</a>         <strong class="jxr_keyword">if</strong> ((originalAces != <strong class="jxr_keyword">null</strong>) &amp;&amp; (isAclMergeRequired(addAces, removeAces))) {
<a class="jxr_linenumber" name="204" href="#204">204</a>             <em class="jxr_comment">// merge and update ACL</em>
<a class="jxr_linenumber" name="205" href="#205">205</a>             Acl newACL = mergeAcls(originalAces, addAces, removeAces);
<a class="jxr_linenumber" name="206" href="#206">206</a>             <strong class="jxr_keyword">if</strong> (newACL != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="207" href="#207">207</a>                 updateAcl(repositoryId, entry.getId(), newACL, <strong class="jxr_keyword">null</strong>);
<a class="jxr_linenumber" name="208" href="#208">208</a>             }
<a class="jxr_linenumber" name="209" href="#209">209</a>         }
<a class="jxr_linenumber" name="210" href="#210">210</a>     }
<a class="jxr_linenumber" name="211" href="#211">211</a> 
<a class="jxr_linenumber" name="212" href="#212">212</a>     <strong class="jxr_keyword">public</strong> List&lt;ObjectData&gt; getAllVersions(String repositoryId, String objectId, String versionSeriesId, String filter,
<a class="jxr_linenumber" name="213" href="#213">213</a>             Boolean includeAllowableActions, ExtensionsData extension) {
<a class="jxr_linenumber" name="214" href="#214">214</a>         List&lt;ObjectData&gt; result = <strong class="jxr_keyword">new</strong> ArrayList&lt;ObjectData&gt;();
<a class="jxr_linenumber" name="215" href="#215">215</a> 
<a class="jxr_linenumber" name="216" href="#216">216</a>         <em class="jxr_comment">// find the link</em>
<a class="jxr_linenumber" name="217" href="#217">217</a>         String link = loadLink(repositoryId, objectId, Constants.REL_VERSIONHISTORY, Constants.MEDIATYPE_FEED);
<a class="jxr_linenumber" name="218" href="#218">218</a> 
<a class="jxr_linenumber" name="219" href="#219">219</a>         <strong class="jxr_keyword">if</strong> (link == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="220" href="#220">220</a>             throwLinkException(repositoryId, objectId, Constants.REL_VERSIONHISTORY, Constants.MEDIATYPE_FEED);
<a class="jxr_linenumber" name="221" href="#221">221</a>         }
<a class="jxr_linenumber" name="222" href="#222">222</a> 
<a class="jxr_linenumber" name="223" href="#223">223</a>         UrlBuilder url = <strong class="jxr_keyword">new</strong> UrlBuilder(link);
<a class="jxr_linenumber" name="224" href="#224">224</a>         url.addParameter(Constants.PARAM_FILTER, filter);
<a class="jxr_linenumber" name="225" href="#225">225</a>         url.addParameter(Constants.PARAM_ALLOWABLE_ACTIONS, includeAllowableActions);
<a class="jxr_linenumber" name="226" href="#226">226</a> 
<a class="jxr_linenumber" name="227" href="#227">227</a>         <em class="jxr_comment">// read and parse</em>
<a class="jxr_linenumber" name="228" href="#228">228</a>         <a href="../../../../../../../../org/apache/chemistry/opencmis/client/bindings/spi/http/Response.html">Response</a> resp = read(url);
<a class="jxr_linenumber" name="229" href="#229">229</a>         <a href="../../../../../../../../org/apache/chemistry/opencmis/client/bindings/spi/atompub/objects/AtomFeed.html">AtomFeed</a> feed = parse(resp.getStream(), AtomFeed.<strong class="jxr_keyword">class</strong>);
<a class="jxr_linenumber" name="230" href="#230">230</a> 
<a class="jxr_linenumber" name="231" href="#231">231</a>         <em class="jxr_comment">// get the versions</em>
<a class="jxr_linenumber" name="232" href="#232">232</a>         <strong class="jxr_keyword">if</strong> (!feed.getEntries().isEmpty()) {
<a class="jxr_linenumber" name="233" href="#233">233</a>             <strong class="jxr_keyword">for</strong> (AtomEntry entry : feed.getEntries()) {
<a class="jxr_linenumber" name="234" href="#234">234</a>                 ObjectData version = <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="235" href="#235">235</a> 
<a class="jxr_linenumber" name="236" href="#236">236</a>                 lockLinks();
<a class="jxr_linenumber" name="237" href="#237">237</a>                 <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="238" href="#238">238</a>                     <em class="jxr_comment">// clean up cache</em>
<a class="jxr_linenumber" name="239" href="#239">239</a>                     removeLinks(repositoryId, entry.getId());
<a class="jxr_linenumber" name="240" href="#240">240</a> 
<a class="jxr_linenumber" name="241" href="#241">241</a>                     <em class="jxr_comment">// walk through the entry</em>
<a class="jxr_linenumber" name="242" href="#242">242</a>                     <strong class="jxr_keyword">for</strong> (AtomElement element : entry.getElements()) {
<a class="jxr_linenumber" name="243" href="#243">243</a>                         <strong class="jxr_keyword">if</strong> (element.getObject() instanceof AtomLink) {
<a class="jxr_linenumber" name="244" href="#244">244</a>                             addLink(repositoryId, entry.getId(), (AtomLink) element.getObject());
<a class="jxr_linenumber" name="245" href="#245">245</a>                         } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (element.getObject() instanceof ObjectData) {
<a class="jxr_linenumber" name="246" href="#246">246</a>                             version = (ObjectData) element.getObject();
<a class="jxr_linenumber" name="247" href="#247">247</a>                         }
<a class="jxr_linenumber" name="248" href="#248">248</a>                     }
<a class="jxr_linenumber" name="249" href="#249">249</a>                 } <strong class="jxr_keyword">finally</strong> {
<a class="jxr_linenumber" name="250" href="#250">250</a>                     unlockLinks();
<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>                 <strong class="jxr_keyword">if</strong> (version != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="254" href="#254">254</a>                     result.add(version);
<a class="jxr_linenumber" name="255" href="#255">255</a>                 }
<a class="jxr_linenumber" name="256" href="#256">256</a>             }
<a class="jxr_linenumber" name="257" href="#257">257</a>         }
<a class="jxr_linenumber" name="258" href="#258">258</a> 
<a class="jxr_linenumber" name="259" href="#259">259</a>         <strong class="jxr_keyword">return</strong> result;
<a class="jxr_linenumber" name="260" href="#260">260</a>     }
<a class="jxr_linenumber" name="261" href="#261">261</a> 
<a class="jxr_linenumber" name="262" href="#262">262</a>     <strong class="jxr_keyword">public</strong> ObjectData getObjectOfLatestVersion(String repositoryId, String objectId, String versionSeriesId,
<a class="jxr_linenumber" name="263" href="#263">263</a>             Boolean major, String filter, Boolean includeAllowableActions, IncludeRelationships includeRelationships,
<a class="jxr_linenumber" name="264" href="#264">264</a>             String renditionFilter, Boolean includePolicyIds, Boolean includeACL, ExtensionsData extension) {
<a class="jxr_linenumber" name="265" href="#265">265</a> 
<a class="jxr_linenumber" name="266" href="#266">266</a>         ReturnVersion returnVersion = ReturnVersion.LATEST;
<a class="jxr_linenumber" name="267" href="#267">267</a>         <strong class="jxr_keyword">if</strong> ((major != <strong class="jxr_keyword">null</strong>) &amp;&amp; (major.booleanValue())) {
<a class="jxr_linenumber" name="268" href="#268">268</a>             returnVersion = ReturnVersion.LASTESTMAJOR;
<a class="jxr_linenumber" name="269" href="#269">269</a>         }
<a class="jxr_linenumber" name="270" href="#270">270</a> 
<a class="jxr_linenumber" name="271" href="#271">271</a>         <strong class="jxr_keyword">return</strong> getObjectInternal(repositoryId, IdentifierType.ID, objectId, returnVersion, filter,
<a class="jxr_linenumber" name="272" href="#272">272</a>                 includeAllowableActions, includeRelationships, renditionFilter, includePolicyIds, includeACL, extension);
<a class="jxr_linenumber" name="273" href="#273">273</a>     }
<a class="jxr_linenumber" name="274" href="#274">274</a> 
<a class="jxr_linenumber" name="275" href="#275">275</a>     <strong class="jxr_keyword">public</strong> Properties getPropertiesOfLatestVersion(String repositoryId, String objectId, String versionSeriesId,
<a class="jxr_linenumber" name="276" href="#276">276</a>             Boolean major, String filter, ExtensionsData extension) {
<a class="jxr_linenumber" name="277" href="#277">277</a> 
<a class="jxr_linenumber" name="278" href="#278">278</a>         ReturnVersion returnVersion = ReturnVersion.LATEST;
<a class="jxr_linenumber" name="279" href="#279">279</a>         <strong class="jxr_keyword">if</strong> ((major != <strong class="jxr_keyword">null</strong>) &amp;&amp; (major.booleanValue())) {
<a class="jxr_linenumber" name="280" href="#280">280</a>             returnVersion = ReturnVersion.LASTESTMAJOR;
<a class="jxr_linenumber" name="281" href="#281">281</a>         }
<a class="jxr_linenumber" name="282" href="#282">282</a> 
<a class="jxr_linenumber" name="283" href="#283">283</a>         ObjectData object = getObjectInternal(repositoryId, IdentifierType.ID, objectId, returnVersion, filter,
<a class="jxr_linenumber" name="284" href="#284">284</a>                 Boolean.FALSE, IncludeRelationships.NONE, <span class="jxr_string">"cmis:none"</span>, Boolean.FALSE, Boolean.FALSE, extension);
<a class="jxr_linenumber" name="285" href="#285">285</a> 
<a class="jxr_linenumber" name="286" href="#286">286</a>         <strong class="jxr_keyword">return</strong> object.getProperties();
<a class="jxr_linenumber" name="287" href="#287">287</a>     }
<a class="jxr_linenumber" name="288" href="#288">288</a> }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

