<!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>VersioningService 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.server.impl.browser;
<a name="20" href="#20">20</a>  
<a name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.chemistry.opencmis.commons.impl.Constants.PARAM_ALLOWABLE_ACTIONS;
<a name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.chemistry.opencmis.commons.impl.Constants.PARAM_CHECKIN_COMMENT;
<a name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.chemistry.opencmis.commons.impl.Constants.PARAM_FILTER;
<a name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.chemistry.opencmis.commons.impl.Constants.PARAM_MAJOR;
<a name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.chemistry.opencmis.commons.impl.Constants.PARAM_TRANSACTION;
<a name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.chemistry.opencmis.server.impl.atompub.AtomPubUtils.RESOURCE_CONTENT;
<a name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.chemistry.opencmis.server.impl.atompub.AtomPubUtils.compileBaseUrl;
<a name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.chemistry.opencmis.server.impl.atompub.AtomPubUtils.compileUrl;
<a name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.chemistry.opencmis.server.impl.browser.BrowserBindingUtils.CONTEXT_OBJECT_ID;
<a name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.chemistry.opencmis.server.impl.browser.BrowserBindingUtils.CONTEXT_OBJECT_TYPE_ID;
<a name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.chemistry.opencmis.server.impl.browser.BrowserBindingUtils.createAddAcl;
<a name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.chemistry.opencmis.server.impl.browser.BrowserBindingUtils.createContentStream;
<a name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.chemistry.opencmis.server.impl.browser.BrowserBindingUtils.createCookieValue;
<a name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.chemistry.opencmis.server.impl.browser.BrowserBindingUtils.createPolicies;
<a name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.chemistry.opencmis.server.impl.browser.BrowserBindingUtils.createProperties;
<a name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.chemistry.opencmis.server.impl.browser.BrowserBindingUtils.createRemoveAcl;
<a name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.chemistry.opencmis.server.impl.browser.BrowserBindingUtils.getSimpleObject;
<a name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.chemistry.opencmis.server.impl.browser.BrowserBindingUtils.setCookie;
<a name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.chemistry.opencmis.server.impl.browser.BrowserBindingUtils.setStatus;
<a name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.chemistry.opencmis.server.impl.browser.BrowserBindingUtils.writeEmpty;
<a name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.chemistry.opencmis.server.impl.browser.BrowserBindingUtils.writeJSON;
<a name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.chemistry.opencmis.server.shared.HttpUtils.getBooleanParameter;
<a name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.chemistry.opencmis.server.shared.HttpUtils.getStringParameter;
<a name="44" href="#44">44</a>  
<a name="45" href="#45">45</a>  <strong class="jxr_keyword">import</strong> java.util.List;
<a name="46" href="#46">46</a>  
<a name="47" href="#47">47</a>  <strong class="jxr_keyword">import</strong> javax.servlet.http.HttpServletRequest;
<a name="48" href="#48">48</a>  <strong class="jxr_keyword">import</strong> javax.servlet.http.HttpServletResponse;
<a name="49" href="#49">49</a>  
<a name="50" href="#50">50</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.data.ObjectData;
<a name="51" href="#51">51</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.exceptions.CmisRuntimeException;
<a name="52" href="#52">52</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.impl.JSONConverter;
<a name="53" href="#53">53</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.impl.TypeCache;
<a name="54" href="#54">54</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.impl.json.JSONArray;
<a name="55" href="#55">55</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.impl.json.JSONObject;
<a name="56" href="#56">56</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.impl.server.TypeCacheImpl;
<a name="57" href="#57">57</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.server.CallContext;
<a name="58" href="#58">58</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.server.CmisService;
<a name="59" href="#59">59</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.spi.Holder;
<a name="60" href="#60">60</a>  
<a name="61" href="#61">61</a>  <em class="jxr_javadoccomment">/**</em>
<a name="62" href="#62">62</a>  <em class="jxr_javadoccomment"> * Versioning Service operations.</em>
<a name="63" href="#63">63</a>  <em class="jxr_javadoccomment"> */</em>
<a name="64" href="#64">64</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../../../org/apache/chemistry/opencmis/server/impl/browser/VersioningService.html">VersioningService</a> {
<a name="65" href="#65">65</a>  
<a name="66" href="#66">66</a>      <strong class="jxr_keyword">private</strong> <a href="../../../../../../../org/apache/chemistry/opencmis/server/impl/browser/VersioningService.html">VersioningService</a>() {
<a name="67" href="#67">67</a>      }
<a name="68" href="#68">68</a>  
<a name="69" href="#69">69</a>      <em class="jxr_javadoccomment">/**</em>
<a name="70" href="#70">70</a>  <em class="jxr_javadoccomment">     * checkOut.</em>
<a name="71" href="#71">71</a>  <em class="jxr_javadoccomment">     */</em>
<a name="72" href="#72">72</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> checkOut(CallContext context, CmisService service, String repositoryId,
<a name="73" href="#73">73</a>              HttpServletRequest request, HttpServletResponse response) <strong class="jxr_keyword">throws</strong> Exception {
<a name="74" href="#74">74</a>          <em class="jxr_comment">// get parameters</em>
<a name="75" href="#75">75</a>          String objectId = (String) context.get(CONTEXT_OBJECT_ID);
<a name="76" href="#76">76</a>          String transaction = getStringParameter(request, PARAM_TRANSACTION);
<a name="77" href="#77">77</a>  
<a name="78" href="#78">78</a>          <em class="jxr_comment">// execute</em>
<a name="79" href="#79">79</a>          Holder&lt;String&gt; checkOutId = <strong class="jxr_keyword">new</strong> Holder&lt;String&gt;(objectId);
<a name="80" href="#80">80</a>          service.checkOut(repositoryId, checkOutId, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>);
<a name="81" href="#81">81</a>  
<a name="82" href="#82">82</a>          ObjectData object = getSimpleObject(service, repositoryId, checkOutId.getValue());
<a name="83" href="#83">83</a>          <strong class="jxr_keyword">if</strong> (object == <strong class="jxr_keyword">null</strong>) {
<a name="84" href="#84">84</a>              <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> CmisRuntimeException(<span class="jxr_string">"PWC is null!"</span>);
<a name="85" href="#85">85</a>          }
<a name="86" href="#86">86</a>  
<a name="87" href="#87">87</a>          <em class="jxr_comment">// return object</em>
<a name="88" href="#88">88</a>          TypeCache typeCache = <strong class="jxr_keyword">new</strong> TypeCacheImpl(repositoryId, service);
<a name="89" href="#89">89</a>          JSONObject jsonObject = JSONConverter.convert(object, typeCache, false);
<a name="90" href="#90">90</a>  
<a name="91" href="#91">91</a>          <em class="jxr_comment">// set headers</em>
<a name="92" href="#92">92</a>          String location = compileUrl(compileBaseUrl(request, repositoryId), RESOURCE_CONTENT, object.getId());
<a name="93" href="#93">93</a>  
<a name="94" href="#94">94</a>          setStatus(request, response, HttpServletResponse.SC_CREATED);
<a name="95" href="#95">95</a>          response.setHeader(<span class="jxr_string">"Location"</span>, location);
<a name="96" href="#96">96</a>  
<a name="97" href="#97">97</a>          setCookie(request, response, repositoryId, transaction,
<a name="98" href="#98">98</a>                  createCookieValue(HttpServletResponse.SC_CREATED, object.getId(), <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>));
<a name="99" href="#99">99</a>  
<a name="100" href="#100">100</a>         writeJSON(jsonObject, request, response);
<a name="101" href="#101">101</a>     }
<a name="102" href="#102">102</a> 
<a name="103" href="#103">103</a>     <em class="jxr_javadoccomment">/**</em>
<a name="104" href="#104">104</a> <em class="jxr_javadoccomment">     * checkOut.</em>
<a name="105" href="#105">105</a> <em class="jxr_javadoccomment">     */</em>
<a name="106" href="#106">106</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> cancelCheckOut(CallContext context, CmisService service, String repositoryId,
<a name="107" href="#107">107</a>             HttpServletRequest request, HttpServletResponse response) <strong class="jxr_keyword">throws</strong> Exception {
<a name="108" href="#108">108</a>         <em class="jxr_comment">// get parameters</em>
<a name="109" href="#109">109</a>         String objectId = (String) context.get(CONTEXT_OBJECT_ID);
<a name="110" href="#110">110</a> 
<a name="111" href="#111">111</a>         <em class="jxr_comment">// execute</em>
<a name="112" href="#112">112</a>         service.cancelCheckOut(repositoryId, objectId, <strong class="jxr_keyword">null</strong>);
<a name="113" href="#113">113</a> 
<a name="114" href="#114">114</a>         response.setStatus(HttpServletResponse.SC_OK);
<a name="115" href="#115">115</a>         writeEmpty(request, response);
<a name="116" href="#116">116</a>     }
<a name="117" href="#117">117</a> 
<a name="118" href="#118">118</a>     <em class="jxr_javadoccomment">/**</em>
<a name="119" href="#119">119</a> <em class="jxr_javadoccomment">     * checkIn.</em>
<a name="120" href="#120">120</a> <em class="jxr_javadoccomment">     */</em>
<a name="121" href="#121">121</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> checkIn(CallContext context, CmisService service, String repositoryId,
<a name="122" href="#122">122</a>             HttpServletRequest request, HttpServletResponse response) <strong class="jxr_keyword">throws</strong> Exception {
<a name="123" href="#123">123</a>         <em class="jxr_comment">// get parameters</em>
<a name="124" href="#124">124</a>         String objectId = (String) context.get(CONTEXT_OBJECT_ID);
<a name="125" href="#125">125</a>         String typeId = (String) context.get(CONTEXT_OBJECT_TYPE_ID);
<a name="126" href="#126">126</a>         Boolean major = getBooleanParameter(request, PARAM_MAJOR);
<a name="127" href="#127">127</a>         String checkinComment = getStringParameter(request, PARAM_CHECKIN_COMMENT);
<a name="128" href="#128">128</a>         String transaction = getStringParameter(request, PARAM_TRANSACTION);
<a name="129" href="#129">129</a> 
<a name="130" href="#130">130</a>         <em class="jxr_comment">// execute</em>
<a name="131" href="#131">131</a>         <a href="../../../../../../../org/apache/chemistry/opencmis/server/impl/browser/ControlParser.html">ControlParser</a> cp = <strong class="jxr_keyword">new</strong> <a href="../../../../../../../org/apache/chemistry/opencmis/server/impl/browser/ControlParser.html">ControlParser</a>(request);
<a name="132" href="#132">132</a>         TypeCache typeCache = <strong class="jxr_keyword">new</strong> TypeCacheImpl(repositoryId, service);
<a name="133" href="#133">133</a>         Holder&lt;String&gt; objectIdHolder = <strong class="jxr_keyword">new</strong> Holder&lt;String&gt;(objectId);
<a name="134" href="#134">134</a> 
<a name="135" href="#135">135</a>         service.checkIn(repositoryId, objectIdHolder, major, createProperties(cp, typeId, typeCache),
<a name="136" href="#136">136</a>                 createContentStream(request), checkinComment, createPolicies(cp), createAddAcl(cp),
<a name="137" href="#137">137</a>                 createRemoveAcl(cp), <strong class="jxr_keyword">null</strong>);
<a name="138" href="#138">138</a> 
<a name="139" href="#139">139</a>         String newObjectId = (objectIdHolder.getValue() == <strong class="jxr_keyword">null</strong> ? objectId : objectIdHolder.getValue());
<a name="140" href="#140">140</a> 
<a name="141" href="#141">141</a>         ObjectData object = getSimpleObject(service, repositoryId, newObjectId);
<a name="142" href="#142">142</a>         <strong class="jxr_keyword">if</strong> (object == <strong class="jxr_keyword">null</strong>) {
<a name="143" href="#143">143</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> CmisRuntimeException(<span class="jxr_string">"New version is null!"</span>);
<a name="144" href="#144">144</a>         }
<a name="145" href="#145">145</a> 
<a name="146" href="#146">146</a>         <em class="jxr_comment">// return object</em>
<a name="147" href="#147">147</a>         JSONObject jsonObject = JSONConverter.convert(object, typeCache, false);
<a name="148" href="#148">148</a> 
<a name="149" href="#149">149</a>         String location = compileUrl(compileBaseUrl(request, repositoryId), RESOURCE_CONTENT, object.getId());
<a name="150" href="#150">150</a> 
<a name="151" href="#151">151</a>         setStatus(request, response, HttpServletResponse.SC_CREATED);
<a name="152" href="#152">152</a>         response.setHeader(<span class="jxr_string">"Location"</span>, location);
<a name="153" href="#153">153</a> 
<a name="154" href="#154">154</a>         setCookie(request, response, repositoryId, transaction,
<a name="155" href="#155">155</a>                 createCookieValue(HttpServletResponse.SC_CREATED, object.getId(), <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>));
<a name="156" href="#156">156</a> 
<a name="157" href="#157">157</a>         writeJSON(jsonObject, request, response);
<a name="158" href="#158">158</a>     }
<a name="159" href="#159">159</a> 
<a name="160" href="#160">160</a>     <em class="jxr_javadoccomment">/**</em>
<a name="161" href="#161">161</a> <em class="jxr_javadoccomment">     * getAllVersions.</em>
<a name="162" href="#162">162</a> <em class="jxr_javadoccomment">     */</em>
<a name="163" href="#163">163</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> getAllVersions(CallContext context, CmisService service, String repositoryId,
<a name="164" href="#164">164</a>             HttpServletRequest request, HttpServletResponse response) <strong class="jxr_keyword">throws</strong> Exception {
<a name="165" href="#165">165</a>         <em class="jxr_comment">// get parameters</em>
<a name="166" href="#166">166</a>         String objectId = (String) context.get(CONTEXT_OBJECT_ID);
<a name="167" href="#167">167</a>         String filter = getStringParameter(request, PARAM_FILTER);
<a name="168" href="#168">168</a>         Boolean includeAllowableActions = getBooleanParameter(request, PARAM_ALLOWABLE_ACTIONS);
<a name="169" href="#169">169</a> 
<a name="170" href="#170">170</a>         <em class="jxr_comment">// execute</em>
<a name="171" href="#171">171</a>         List&lt;ObjectData&gt; versions = service.getAllVersions(repositoryId, objectId, <strong class="jxr_keyword">null</strong>, filter,
<a name="172" href="#172">172</a>                 includeAllowableActions, <strong class="jxr_keyword">null</strong>);
<a name="173" href="#173">173</a> 
<a name="174" href="#174">174</a>         <strong class="jxr_keyword">if</strong> (versions == <strong class="jxr_keyword">null</strong>) {
<a name="175" href="#175">175</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> CmisRuntimeException(<span class="jxr_string">"Versions are null!"</span>);
<a name="176" href="#176">176</a>         }
<a name="177" href="#177">177</a> 
<a name="178" href="#178">178</a>         TypeCache typeCache = <strong class="jxr_keyword">new</strong> TypeCacheImpl(repositoryId, service);
<a name="179" href="#179">179</a>         JSONArray jsonVersions = <strong class="jxr_keyword">new</strong> JSONArray();
<a name="180" href="#180">180</a>         <strong class="jxr_keyword">for</strong> (ObjectData version : versions) {
<a name="181" href="#181">181</a>             jsonVersions.add(JSONConverter.convert(version, typeCache, false));
<a name="182" href="#182">182</a>         }
<a name="183" href="#183">183</a> 
<a name="184" href="#184">184</a>         response.setStatus(HttpServletResponse.SC_OK);
<a name="185" href="#185">185</a>         writeJSON(jsonVersions, request, response);
<a name="186" href="#186">186</a>     }
<a name="187" href="#187">187</a> }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

