<!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>ObjectService 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.MEDIATYPE_OCTETSTREAM;
<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_ACL;
<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_ALLOWABLE_ACTIONS;
<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_FILTER;
<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_POLICY_IDS;
<a name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.chemistry.opencmis.commons.impl.Constants.PARAM_RELATIONSHIPS;
<a name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.chemistry.opencmis.commons.impl.Constants.PARAM_RENDITION_FILTER;
<a name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.chemistry.opencmis.commons.impl.Constants.PARAM_RETURN_VERSION;
<a name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.chemistry.opencmis.commons.impl.Constants.PARAM_SOURCE_FOLDER_ID;
<a name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.chemistry.opencmis.commons.impl.Constants.PARAM_SOURCE_ID;
<a name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.chemistry.opencmis.commons.impl.Constants.PARAM_STREAM_ID;
<a name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.chemistry.opencmis.commons.impl.Constants.PARAM_TARGET_FOLDER_ID;
<a name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.chemistry.opencmis.commons.impl.Constants.PARAM_TRANSACTION;
<a name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.chemistry.opencmis.commons.impl.Constants.PARAM_VERSIONIG_STATE;
<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.atompub.AtomPubUtils.RESOURCE_CONTENT;
<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.atompub.AtomPubUtils.compileBaseUrl;
<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.atompub.AtomPubUtils.compileUrl;
<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.CONTEXT_OBJECT_ID;
<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.CONTEXT_OBJECT_TYPE_ID;
<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.createAddAcl;
<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.createContentStream;
<a name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.chemistry.opencmis.server.impl.browser.BrowserBindingUtils.createCookieValue;
<a name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.chemistry.opencmis.server.impl.browser.BrowserBindingUtils.createPolicies;
<a name="44" href="#44">44</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.chemistry.opencmis.server.impl.browser.BrowserBindingUtils.createProperties;
<a name="45" href="#45">45</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.chemistry.opencmis.server.impl.browser.BrowserBindingUtils.createRemoveAcl;
<a name="46" href="#46">46</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.chemistry.opencmis.server.impl.browser.BrowserBindingUtils.getSimpleObject;
<a name="47" href="#47">47</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.chemistry.opencmis.server.impl.browser.BrowserBindingUtils.setCookie;
<a name="48" href="#48">48</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.chemistry.opencmis.server.impl.browser.BrowserBindingUtils.setStatus;
<a name="49" href="#49">49</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.chemistry.opencmis.server.impl.browser.BrowserBindingUtils.writeEmpty;
<a name="50" href="#50">50</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.chemistry.opencmis.server.impl.browser.BrowserBindingUtils.writeJSON;
<a name="51" href="#51">51</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.chemistry.opencmis.server.shared.HttpUtils.getBigIntegerParameter;
<a name="52" href="#52">52</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.chemistry.opencmis.server.shared.HttpUtils.getBooleanParameter;
<a name="53" href="#53">53</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.chemistry.opencmis.server.shared.HttpUtils.getEnumParameter;
<a name="54" href="#54">54</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.chemistry.opencmis.server.shared.HttpUtils.getStringParameter;
<a name="55" href="#55">55</a>  
<a name="56" href="#56">56</a>  <strong class="jxr_keyword">import</strong> java.io.BufferedInputStream;
<a name="57" href="#57">57</a>  <strong class="jxr_keyword">import</strong> java.io.BufferedOutputStream;
<a name="58" href="#58">58</a>  <strong class="jxr_keyword">import</strong> java.io.InputStream;
<a name="59" href="#59">59</a>  <strong class="jxr_keyword">import</strong> java.io.OutputStream;
<a name="60" href="#60">60</a>  <strong class="jxr_keyword">import</strong> java.math.BigInteger;
<a name="61" href="#61">61</a>  <strong class="jxr_keyword">import</strong> java.util.List;
<a name="62" href="#62">62</a>  
<a name="63" href="#63">63</a>  <strong class="jxr_keyword">import</strong> javax.servlet.http.HttpServletRequest;
<a name="64" href="#64">64</a>  <strong class="jxr_keyword">import</strong> javax.servlet.http.HttpServletResponse;
<a name="65" href="#65">65</a>  
<a name="66" href="#66">66</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.PropertyIds;
<a name="67" href="#67">67</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.data.AllowableActions;
<a name="68" href="#68">68</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.data.ContentStream;
<a name="69" href="#69">69</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.data.FailedToDeleteData;
<a name="70" href="#70">70</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.data.ObjectData;
<a name="71" href="#71">71</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.data.Properties;
<a name="72" href="#72">72</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.data.PropertyData;
<a name="73" href="#73">73</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.data.RenditionData;
<a name="74" href="#74">74</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.enums.IncludeRelationships;
<a name="75" href="#75">75</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.enums.UnfileObject;
<a name="76" href="#76">76</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.enums.VersioningState;
<a name="77" href="#77">77</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.exceptions.CmisRuntimeException;
<a name="78" href="#78">78</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.impl.Constants;
<a name="79" href="#79">79</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.impl.JSONConverter;
<a name="80" href="#80">80</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.impl.MimeHelper;
<a name="81" href="#81">81</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.impl.ReturnVersion;
<a name="82" href="#82">82</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.impl.TypeCache;
<a name="83" href="#83">83</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.impl.json.JSONArray;
<a name="84" href="#84">84</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.impl.json.JSONObject;
<a name="85" href="#85">85</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.impl.server.TypeCacheImpl;
<a name="86" href="#86">86</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.server.CallContext;
<a name="87" href="#87">87</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.server.CmisService;
<a name="88" href="#88">88</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.spi.Holder;
<a name="89" href="#89">89</a>  
<a name="90" href="#90">90</a>  <em class="jxr_javadoccomment">/**</em>
<a name="91" href="#91">91</a>  <em class="jxr_javadoccomment"> * Object Service operations.</em>
<a name="92" href="#92">92</a>  <em class="jxr_javadoccomment"> */</em>
<a name="93" href="#93">93</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../../../org/apache/chemistry/opencmis/server/impl/browser/ObjectService.html">ObjectService</a> {
<a name="94" href="#94">94</a>  
<a name="95" href="#95">95</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> BUFFER_SIZE = 64 * 1024;
<a name="96" href="#96">96</a>  
<a name="97" href="#97">97</a>      <strong class="jxr_keyword">private</strong> <a href="../../../../../../../org/apache/chemistry/opencmis/server/impl/browser/ObjectService.html">ObjectService</a>() {
<a name="98" href="#98">98</a>      }
<a name="99" href="#99">99</a>  
<a name="100" href="#100">100</a>     <em class="jxr_javadoccomment">/**</em>
<a name="101" href="#101">101</a> <em class="jxr_javadoccomment">     * Create document.</em>
<a name="102" href="#102">102</a> <em class="jxr_javadoccomment">     */</em>
<a name="103" href="#103">103</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> createDocument(CallContext context, CmisService service, String repositoryId,
<a name="104" href="#104">104</a>             HttpServletRequest request, HttpServletResponse response) <strong class="jxr_keyword">throws</strong> Exception {
<a name="105" href="#105">105</a>         <em class="jxr_comment">// get parameters</em>
<a name="106" href="#106">106</a>         String folderId = (String) context.get(CONTEXT_OBJECT_ID);
<a name="107" href="#107">107</a>         VersioningState versioningState = getEnumParameter(request, PARAM_VERSIONIG_STATE, VersioningState.<strong class="jxr_keyword">class</strong>);
<a name="108" href="#108">108</a>         String transaction = getStringParameter(request, PARAM_TRANSACTION);
<a name="109" href="#109">109</a> 
<a name="110" href="#110">110</a>         <em class="jxr_comment">// execute</em>
<a name="111" href="#111">111</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="112" href="#112">112</a>         TypeCache typeCache = <strong class="jxr_keyword">new</strong> TypeCacheImpl(repositoryId, service);
<a name="113" href="#113">113</a> 
<a name="114" href="#114">114</a>         String newObjectId = service.createDocument(repositoryId, createProperties(cp, <strong class="jxr_keyword">null</strong>, typeCache), folderId,
<a name="115" href="#115">115</a>                 createContentStream(request), versioningState, createPolicies(cp), createAddAcl(cp),
<a name="116" href="#116">116</a>                 createRemoveAcl(cp), <strong class="jxr_keyword">null</strong>);
<a name="117" href="#117">117</a> 
<a name="118" href="#118">118</a>         ObjectData object = getSimpleObject(service, repositoryId, newObjectId);
<a name="119" href="#119">119</a>         <strong class="jxr_keyword">if</strong> (object == <strong class="jxr_keyword">null</strong>) {
<a name="120" href="#120">120</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> CmisRuntimeException(<span class="jxr_string">"New document is null!"</span>);
<a name="121" href="#121">121</a>         }
<a name="122" href="#122">122</a> 
<a name="123" href="#123">123</a>         <em class="jxr_comment">// return object</em>
<a name="124" href="#124">124</a>         JSONObject jsonObject = JSONConverter.convert(object, typeCache, false);
<a name="125" href="#125">125</a> 
<a name="126" href="#126">126</a>         setStatus(request, response, HttpServletResponse.SC_CREATED);
<a name="127" href="#127">127</a>         setCookie(request, response, repositoryId, transaction,
<a name="128" href="#128">128</a>                 createCookieValue(HttpServletResponse.SC_CREATED, object.getId(), <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>));
<a name="129" href="#129">129</a> 
<a name="130" href="#130">130</a>         writeJSON(jsonObject, request, response);
<a name="131" href="#131">131</a>     }
<a name="132" href="#132">132</a> 
<a name="133" href="#133">133</a>     <em class="jxr_javadoccomment">/**</em>
<a name="134" href="#134">134</a> <em class="jxr_javadoccomment">     * Create document from source.</em>
<a name="135" href="#135">135</a> <em class="jxr_javadoccomment">     */</em>
<a name="136" href="#136">136</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> createDocumentFromSource(CallContext context, CmisService service, String repositoryId,
<a name="137" href="#137">137</a>             HttpServletRequest request, HttpServletResponse response) <strong class="jxr_keyword">throws</strong> Exception {
<a name="138" href="#138">138</a>         <em class="jxr_comment">// get parameters</em>
<a name="139" href="#139">139</a>         String folderId = (String) context.get(CONTEXT_OBJECT_ID);
<a name="140" href="#140">140</a>         String sourceId = getStringParameter(request, PARAM_SOURCE_ID);
<a name="141" href="#141">141</a>         VersioningState versioningState = getEnumParameter(request, PARAM_VERSIONIG_STATE, VersioningState.<strong class="jxr_keyword">class</strong>);
<a name="142" href="#142">142</a>         String transaction = getStringParameter(request, PARAM_TRANSACTION);
<a name="143" href="#143">143</a> 
<a name="144" href="#144">144</a>         <em class="jxr_comment">// execute</em>
<a name="145" href="#145">145</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="146" href="#146">146</a>         TypeCache typeCache = <strong class="jxr_keyword">new</strong> TypeCacheImpl(repositoryId, service);
<a name="147" href="#147">147</a> 
<a name="148" href="#148">148</a>         ObjectData sourceDoc = getSimpleObject(service, repositoryId, sourceId);
<a name="149" href="#149">149</a>         PropertyData&lt;?&gt; sourceTypeId = sourceDoc.getProperties().getProperties().get(PropertyIds.OBJECT_TYPE_ID);
<a name="150" href="#150">150</a>         <strong class="jxr_keyword">if</strong> (sourceTypeId == <strong class="jxr_keyword">null</strong> || sourceTypeId.getFirstValue() == <strong class="jxr_keyword">null</strong>) {
<a name="151" href="#151">151</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> CmisRuntimeException(<span class="jxr_string">"Source object has no type!?!"</span>);
<a name="152" href="#152">152</a>         }
<a name="153" href="#153">153</a> 
<a name="154" href="#154">154</a>         String newObjectId = service.createDocumentFromSource(repositoryId, sourceId,
<a name="155" href="#155">155</a>                 createProperties(cp, sourceTypeId.getFirstValue().toString(), typeCache), folderId, versioningState,
<a name="156" href="#156">156</a>                 createPolicies(cp), createAddAcl(cp), createRemoveAcl(cp), <strong class="jxr_keyword">null</strong>);
<a name="157" href="#157">157</a> 
<a name="158" href="#158">158</a>         ObjectData object = getSimpleObject(service, repositoryId, newObjectId);
<a name="159" href="#159">159</a>         <strong class="jxr_keyword">if</strong> (object == <strong class="jxr_keyword">null</strong>) {
<a name="160" href="#160">160</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> CmisRuntimeException(<span class="jxr_string">"New document is null!"</span>);
<a name="161" href="#161">161</a>         }
<a name="162" href="#162">162</a> 
<a name="163" href="#163">163</a>         <em class="jxr_comment">// return object</em>
<a name="164" href="#164">164</a>         JSONObject jsonObject = JSONConverter.convert(object, typeCache, false);
<a name="165" href="#165">165</a> 
<a name="166" href="#166">166</a>         setStatus(request, response, HttpServletResponse.SC_CREATED);
<a name="167" href="#167">167</a>         setCookie(request, response, repositoryId, transaction,
<a name="168" href="#168">168</a>                 createCookieValue(HttpServletResponse.SC_CREATED, object.getId(), <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>));
<a name="169" href="#169">169</a> 
<a name="170" href="#170">170</a>         writeJSON(jsonObject, request, response);
<a name="171" href="#171">171</a>     }
<a name="172" href="#172">172</a> 
<a name="173" href="#173">173</a>     <em class="jxr_javadoccomment">/**</em>
<a name="174" href="#174">174</a> <em class="jxr_javadoccomment">     * Create folder.</em>
<a name="175" href="#175">175</a> <em class="jxr_javadoccomment">     */</em>
<a name="176" href="#176">176</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> createFolder(CallContext context, CmisService service, String repositoryId,
<a name="177" href="#177">177</a>             HttpServletRequest request, HttpServletResponse response) <strong class="jxr_keyword">throws</strong> Exception {
<a name="178" href="#178">178</a>         <em class="jxr_comment">// get parameters</em>
<a name="179" href="#179">179</a>         String folderId = (String) context.get(CONTEXT_OBJECT_ID);
<a name="180" href="#180">180</a>         String transaction = getStringParameter(request, PARAM_TRANSACTION);
<a name="181" href="#181">181</a> 
<a name="182" href="#182">182</a>         <em class="jxr_comment">// execute</em>
<a name="183" href="#183">183</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="184" href="#184">184</a>         TypeCache typeCache = <strong class="jxr_keyword">new</strong> TypeCacheImpl(repositoryId, service);
<a name="185" href="#185">185</a> 
<a name="186" href="#186">186</a>         String newObjectId = service.createFolder(repositoryId, createProperties(cp, <strong class="jxr_keyword">null</strong>, typeCache), folderId,
<a name="187" href="#187">187</a>                 createPolicies(cp), createAddAcl(cp), createRemoveAcl(cp), <strong class="jxr_keyword">null</strong>);
<a name="188" href="#188">188</a> 
<a name="189" href="#189">189</a>         ObjectData object = getSimpleObject(service, repositoryId, newObjectId);
<a name="190" href="#190">190</a>         <strong class="jxr_keyword">if</strong> (object == <strong class="jxr_keyword">null</strong>) {
<a name="191" href="#191">191</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> CmisRuntimeException(<span class="jxr_string">"New folder is null!"</span>);
<a name="192" href="#192">192</a>         }
<a name="193" href="#193">193</a> 
<a name="194" href="#194">194</a>         <em class="jxr_comment">// return object</em>
<a name="195" href="#195">195</a>         JSONObject jsonObject = JSONConverter.convert(object, typeCache, false);
<a name="196" href="#196">196</a> 
<a name="197" href="#197">197</a>         setStatus(request, response, HttpServletResponse.SC_CREATED);
<a name="198" href="#198">198</a>         setCookie(request, response, repositoryId, transaction,
<a name="199" href="#199">199</a>                 createCookieValue(HttpServletResponse.SC_CREATED, object.getId(), <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>));
<a name="200" href="#200">200</a> 
<a name="201" href="#201">201</a>         writeJSON(jsonObject, request, response);
<a name="202" href="#202">202</a>     }
<a name="203" href="#203">203</a> 
<a name="204" href="#204">204</a>     <em class="jxr_javadoccomment">/**</em>
<a name="205" href="#205">205</a> <em class="jxr_javadoccomment">     * Create policy.</em>
<a name="206" href="#206">206</a> <em class="jxr_javadoccomment">     */</em>
<a name="207" href="#207">207</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> createPolicy(CallContext context, CmisService service, String repositoryId,
<a name="208" href="#208">208</a>             HttpServletRequest request, HttpServletResponse response) <strong class="jxr_keyword">throws</strong> Exception {
<a name="209" href="#209">209</a>         <em class="jxr_comment">// get parameters</em>
<a name="210" href="#210">210</a>         String folderId = (String) context.get(CONTEXT_OBJECT_ID);
<a name="211" href="#211">211</a>         String transaction = getStringParameter(request, PARAM_TRANSACTION);
<a name="212" href="#212">212</a> 
<a name="213" href="#213">213</a>         <em class="jxr_comment">// execute</em>
<a name="214" href="#214">214</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="215" href="#215">215</a>         TypeCache typeCache = <strong class="jxr_keyword">new</strong> TypeCacheImpl(repositoryId, service);
<a name="216" href="#216">216</a> 
<a name="217" href="#217">217</a>         String newObjectId = service.createPolicy(repositoryId, createProperties(cp, <strong class="jxr_keyword">null</strong>, typeCache), folderId,
<a name="218" href="#218">218</a>                 createPolicies(cp), createAddAcl(cp), createRemoveAcl(cp), <strong class="jxr_keyword">null</strong>);
<a name="219" href="#219">219</a> 
<a name="220" href="#220">220</a>         ObjectData object = getSimpleObject(service, repositoryId, newObjectId);
<a name="221" href="#221">221</a>         <strong class="jxr_keyword">if</strong> (object == <strong class="jxr_keyword">null</strong>) {
<a name="222" href="#222">222</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> CmisRuntimeException(<span class="jxr_string">"New policy is null!"</span>);
<a name="223" href="#223">223</a>         }
<a name="224" href="#224">224</a> 
<a name="225" href="#225">225</a>         <em class="jxr_comment">// return object</em>
<a name="226" href="#226">226</a>         JSONObject jsonObject = JSONConverter.convert(object, typeCache, false);
<a name="227" href="#227">227</a> 
<a name="228" href="#228">228</a>         setStatus(request, response, HttpServletResponse.SC_CREATED);
<a name="229" href="#229">229</a>         setCookie(request, response, repositoryId, transaction,
<a name="230" href="#230">230</a>                 createCookieValue(HttpServletResponse.SC_CREATED, object.getId(), <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>));
<a name="231" href="#231">231</a> 
<a name="232" href="#232">232</a>         writeJSON(jsonObject, request, response);
<a name="233" href="#233">233</a>     }
<a name="234" href="#234">234</a> 
<a name="235" href="#235">235</a>     <em class="jxr_javadoccomment">/**</em>
<a name="236" href="#236">236</a> <em class="jxr_javadoccomment">     * Create relationship.</em>
<a name="237" href="#237">237</a> <em class="jxr_javadoccomment">     */</em>
<a name="238" href="#238">238</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> createRelationship(CallContext context, CmisService service, String repositoryId,
<a name="239" href="#239">239</a>             HttpServletRequest request, HttpServletResponse response) <strong class="jxr_keyword">throws</strong> Exception {
<a name="240" href="#240">240</a>         <em class="jxr_comment">// get parameters</em>
<a name="241" href="#241">241</a>         String transaction = getStringParameter(request, PARAM_TRANSACTION);
<a name="242" href="#242">242</a> 
<a name="243" href="#243">243</a>         <em class="jxr_comment">// execute</em>
<a name="244" href="#244">244</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="245" href="#245">245</a>         TypeCache typeCache = <strong class="jxr_keyword">new</strong> TypeCacheImpl(repositoryId, service);
<a name="246" href="#246">246</a> 
<a name="247" href="#247">247</a>         String newObjectId = service.createRelationship(repositoryId, createProperties(cp, <strong class="jxr_keyword">null</strong>, typeCache),
<a name="248" href="#248">248</a>                 createPolicies(cp), createAddAcl(cp), createRemoveAcl(cp), <strong class="jxr_keyword">null</strong>);
<a name="249" href="#249">249</a> 
<a name="250" href="#250">250</a>         ObjectData object = getSimpleObject(service, repositoryId, newObjectId);
<a name="251" href="#251">251</a>         <strong class="jxr_keyword">if</strong> (object == <strong class="jxr_keyword">null</strong>) {
<a name="252" href="#252">252</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> CmisRuntimeException(<span class="jxr_string">"New relationship is null!"</span>);
<a name="253" href="#253">253</a>         }
<a name="254" href="#254">254</a> 
<a name="255" href="#255">255</a>         <em class="jxr_comment">// return object</em>
<a name="256" href="#256">256</a>         JSONObject jsonObject = JSONConverter.convert(object, typeCache, false);
<a name="257" href="#257">257</a> 
<a name="258" href="#258">258</a>         setStatus(request, response, HttpServletResponse.SC_CREATED);
<a name="259" href="#259">259</a>         setCookie(request, response, repositoryId, transaction,
<a name="260" href="#260">260</a>                 createCookieValue(HttpServletResponse.SC_CREATED, object.getId(), <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>));
<a name="261" href="#261">261</a> 
<a name="262" href="#262">262</a>         writeJSON(jsonObject, request, response);
<a name="263" href="#263">263</a>     }
<a name="264" href="#264">264</a> 
<a name="265" href="#265">265</a>     <em class="jxr_javadoccomment">/**</em>
<a name="266" href="#266">266</a> <em class="jxr_javadoccomment">     * updateProperties.</em>
<a name="267" href="#267">267</a> <em class="jxr_javadoccomment">     */</em>
<a name="268" href="#268">268</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> updateProperties(CallContext context, CmisService service, String repositoryId,
<a name="269" href="#269">269</a>             HttpServletRequest request, HttpServletResponse response) <strong class="jxr_keyword">throws</strong> Exception {
<a name="270" href="#270">270</a>         <em class="jxr_comment">// get parameters</em>
<a name="271" href="#271">271</a>         String objectId = (String) context.get(CONTEXT_OBJECT_ID);
<a name="272" href="#272">272</a>         String typeId = (String) context.get(CONTEXT_OBJECT_TYPE_ID);
<a name="273" href="#273">273</a>         String changeToken = getStringParameter(request, Constants.PARAM_CHANGE_TOKEN);
<a name="274" href="#274">274</a>         String transaction = getStringParameter(request, PARAM_TRANSACTION);
<a name="275" href="#275">275</a> 
<a name="276" href="#276">276</a>         <em class="jxr_comment">// execute</em>
<a name="277" href="#277">277</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="278" href="#278">278</a>         TypeCache typeCache = <strong class="jxr_keyword">new</strong> TypeCacheImpl(repositoryId, service);
<a name="279" href="#279">279</a>         Holder&lt;String&gt; objectIdHolder = <strong class="jxr_keyword">new</strong> Holder&lt;String&gt;(objectId);
<a name="280" href="#280">280</a>         Holder&lt;String&gt; changeTokenHolder = (changeToken == <strong class="jxr_keyword">null</strong> ? <strong class="jxr_keyword">null</strong> : <strong class="jxr_keyword">new</strong> Holder&lt;String&gt;(changeToken));
<a name="281" href="#281">281</a> 
<a name="282" href="#282">282</a>         service.updateProperties(repositoryId, objectIdHolder, changeTokenHolder,
<a name="283" href="#283">283</a>                 createProperties(cp, typeId, typeCache), <strong class="jxr_keyword">null</strong>);
<a name="284" href="#284">284</a> 
<a name="285" href="#285">285</a>         String newObjectId = (objectIdHolder.getValue() == <strong class="jxr_keyword">null</strong> ? objectId : objectIdHolder.getValue());
<a name="286" href="#286">286</a> 
<a name="287" href="#287">287</a>         ObjectData object = getSimpleObject(service, repositoryId, newObjectId);
<a name="288" href="#288">288</a>         <strong class="jxr_keyword">if</strong> (object == <strong class="jxr_keyword">null</strong>) {
<a name="289" href="#289">289</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> CmisRuntimeException(<span class="jxr_string">"Object is null!"</span>);
<a name="290" href="#290">290</a>         }
<a name="291" href="#291">291</a> 
<a name="292" href="#292">292</a>         <em class="jxr_comment">// return object</em>
<a name="293" href="#293">293</a>         JSONObject jsonObject = JSONConverter.convert(object, typeCache, false);
<a name="294" href="#294">294</a> 
<a name="295" href="#295">295</a>         <strong class="jxr_keyword">int</strong> status = HttpServletResponse.SC_OK;
<a name="296" href="#296">296</a>         <strong class="jxr_keyword">if</strong> (!objectId.equals(newObjectId)) {
<a name="297" href="#297">297</a>             status = HttpServletResponse.SC_CREATED;
<a name="298" href="#298">298</a>         }
<a name="299" href="#299">299</a> 
<a name="300" href="#300">300</a>         setStatus(request, response, status);
<a name="301" href="#301">301</a>         setCookie(request, response, repositoryId, transaction, createCookieValue(status, object.getId(), <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>));
<a name="302" href="#302">302</a> 
<a name="303" href="#303">303</a>         writeJSON(jsonObject, request, response);
<a name="304" href="#304">304</a>     }
<a name="305" href="#305">305</a> 
<a name="306" href="#306">306</a>     <em class="jxr_javadoccomment">/**</em>
<a name="307" href="#307">307</a> <em class="jxr_javadoccomment">     * getProperties.</em>
<a name="308" href="#308">308</a> <em class="jxr_javadoccomment">     */</em>
<a name="309" href="#309">309</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> getProperties(CallContext context, CmisService service, String repositoryId,
<a name="310" href="#310">310</a>             HttpServletRequest request, HttpServletResponse response) <strong class="jxr_keyword">throws</strong> Exception {
<a name="311" href="#311">311</a>         <em class="jxr_comment">// get parameters</em>
<a name="312" href="#312">312</a>         String objectId = (String) context.get(CONTEXT_OBJECT_ID);
<a name="313" href="#313">313</a>         ReturnVersion returnVersion = getEnumParameter(request, PARAM_RETURN_VERSION, ReturnVersion.<strong class="jxr_keyword">class</strong>);
<a name="314" href="#314">314</a>         String filter = getStringParameter(request, PARAM_FILTER);
<a name="315" href="#315">315</a> 
<a name="316" href="#316">316</a>         <em class="jxr_comment">// execute</em>
<a name="317" href="#317">317</a>         Properties properties;
<a name="318" href="#318">318</a> 
<a name="319" href="#319">319</a>         <strong class="jxr_keyword">if</strong> (returnVersion == ReturnVersion.LATEST || returnVersion == ReturnVersion.LASTESTMAJOR) {
<a name="320" href="#320">320</a>             properties = service.getPropertiesOfLatestVersion(repositoryId, objectId, <strong class="jxr_keyword">null</strong>,
<a name="321" href="#321">321</a>                     returnVersion == ReturnVersion.LASTESTMAJOR, filter, <strong class="jxr_keyword">null</strong>);
<a name="322" href="#322">322</a>         } <strong class="jxr_keyword">else</strong> {
<a name="323" href="#323">323</a>             properties = service.getProperties(repositoryId, objectId, filter, <strong class="jxr_keyword">null</strong>);
<a name="324" href="#324">324</a>         }
<a name="325" href="#325">325</a> 
<a name="326" href="#326">326</a>         <strong class="jxr_keyword">if</strong> (properties == <strong class="jxr_keyword">null</strong>) {
<a name="327" href="#327">327</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> CmisRuntimeException(<span class="jxr_string">"Properties are null!"</span>);
<a name="328" href="#328">328</a>         }
<a name="329" href="#329">329</a> 
<a name="330" href="#330">330</a>         <em class="jxr_comment">// return object</em>
<a name="331" href="#331">331</a>         TypeCache typeCache = <strong class="jxr_keyword">new</strong> TypeCacheImpl(repositoryId, service);
<a name="332" href="#332">332</a>         JSONObject jsonObject = JSONConverter.convert(properties, objectId, typeCache, false);
<a name="333" href="#333">333</a> 
<a name="334" href="#334">334</a>         response.setStatus(HttpServletResponse.SC_OK);
<a name="335" href="#335">335</a>         writeJSON(jsonObject, request, response);
<a name="336" href="#336">336</a>     }
<a name="337" href="#337">337</a> 
<a name="338" href="#338">338</a>     <em class="jxr_javadoccomment">/**</em>
<a name="339" href="#339">339</a> <em class="jxr_javadoccomment">     * getObject.</em>
<a name="340" href="#340">340</a> <em class="jxr_javadoccomment">     */</em>
<a name="341" href="#341">341</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> getObject(CallContext context, CmisService service, String repositoryId,
<a name="342" href="#342">342</a>             HttpServletRequest request, HttpServletResponse response) <strong class="jxr_keyword">throws</strong> Exception {
<a name="343" href="#343">343</a>         <em class="jxr_comment">// get parameters</em>
<a name="344" href="#344">344</a>         String objectId = (String) context.get(CONTEXT_OBJECT_ID);
<a name="345" href="#345">345</a>         ReturnVersion returnVersion = getEnumParameter(request, PARAM_RETURN_VERSION, ReturnVersion.<strong class="jxr_keyword">class</strong>);
<a name="346" href="#346">346</a>         String filter = getStringParameter(request, PARAM_FILTER);
<a name="347" href="#347">347</a>         Boolean includeAllowableActions = getBooleanParameter(request, PARAM_ALLOWABLE_ACTIONS);
<a name="348" href="#348">348</a>         IncludeRelationships includeRelationships = getEnumParameter(request, PARAM_RELATIONSHIPS,
<a name="349" href="#349">349</a>                 IncludeRelationships.<strong class="jxr_keyword">class</strong>);
<a name="350" href="#350">350</a>         String renditionFilter = getStringParameter(request, PARAM_RENDITION_FILTER);
<a name="351" href="#351">351</a>         Boolean includePolicyIds = getBooleanParameter(request, PARAM_POLICY_IDS);
<a name="352" href="#352">352</a>         Boolean includeAcl = getBooleanParameter(request, PARAM_ACL);
<a name="353" href="#353">353</a> 
<a name="354" href="#354">354</a>         <em class="jxr_comment">// execute</em>
<a name="355" href="#355">355</a>         ObjectData object;
<a name="356" href="#356">356</a> 
<a name="357" href="#357">357</a>         <strong class="jxr_keyword">if</strong> (returnVersion == ReturnVersion.LATEST || returnVersion == ReturnVersion.LASTESTMAJOR) {
<a name="358" href="#358">358</a>             object = service.getObjectOfLatestVersion(repositoryId, objectId, <strong class="jxr_keyword">null</strong>,
<a name="359" href="#359">359</a>                     returnVersion == ReturnVersion.LASTESTMAJOR, filter, includeAllowableActions, includeRelationships,
<a name="360" href="#360">360</a>                     renditionFilter, includePolicyIds, includeAcl, <strong class="jxr_keyword">null</strong>);
<a name="361" href="#361">361</a>         } <strong class="jxr_keyword">else</strong> {
<a name="362" href="#362">362</a>             object = service.getObject(repositoryId, objectId, filter, includeAllowableActions, includeRelationships,
<a name="363" href="#363">363</a>                     renditionFilter, includePolicyIds, includeAcl, <strong class="jxr_keyword">null</strong>);
<a name="364" href="#364">364</a>         }
<a name="365" href="#365">365</a> 
<a name="366" href="#366">366</a>         <strong class="jxr_keyword">if</strong> (object == <strong class="jxr_keyword">null</strong>) {
<a name="367" href="#367">367</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> CmisRuntimeException(<span class="jxr_string">"Object is null!"</span>);
<a name="368" href="#368">368</a>         }
<a name="369" href="#369">369</a> 
<a name="370" href="#370">370</a>         <em class="jxr_comment">// return object</em>
<a name="371" href="#371">371</a>         TypeCache typeCache = <strong class="jxr_keyword">new</strong> TypeCacheImpl(repositoryId, service);
<a name="372" href="#372">372</a>         JSONObject jsonObject = JSONConverter.convert(object, typeCache, false);
<a name="373" href="#373">373</a> 
<a name="374" href="#374">374</a>         response.setStatus(HttpServletResponse.SC_OK);
<a name="375" href="#375">375</a>         writeJSON(jsonObject, request, response);
<a name="376" href="#376">376</a>     }
<a name="377" href="#377">377</a> 
<a name="378" href="#378">378</a>     <em class="jxr_javadoccomment">/**</em>
<a name="379" href="#379">379</a> <em class="jxr_javadoccomment">     * getAllowableActions.</em>
<a name="380" href="#380">380</a> <em class="jxr_javadoccomment">     */</em>
<a name="381" href="#381">381</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> getAllowableActions(CallContext context, CmisService service, String repositoryId,
<a name="382" href="#382">382</a>             HttpServletRequest request, HttpServletResponse response) <strong class="jxr_keyword">throws</strong> Exception {
<a name="383" href="#383">383</a>         <em class="jxr_comment">// get parameters</em>
<a name="384" href="#384">384</a>         String objectId = (String) context.get(CONTEXT_OBJECT_ID);
<a name="385" href="#385">385</a> 
<a name="386" href="#386">386</a>         AllowableActions allowableActions = service.getAllowableActions(repositoryId, objectId, <strong class="jxr_keyword">null</strong>);
<a name="387" href="#387">387</a> 
<a name="388" href="#388">388</a>         JSONObject jsonAllowableActions = JSONConverter.convert(allowableActions);
<a name="389" href="#389">389</a> 
<a name="390" href="#390">390</a>         response.setStatus(HttpServletResponse.SC_OK);
<a name="391" href="#391">391</a>         writeJSON(jsonAllowableActions, request, response);
<a name="392" href="#392">392</a>     }
<a name="393" href="#393">393</a> 
<a name="394" href="#394">394</a>     <em class="jxr_javadoccomment">/**</em>
<a name="395" href="#395">395</a> <em class="jxr_javadoccomment">     * getRenditions.</em>
<a name="396" href="#396">396</a> <em class="jxr_javadoccomment">     */</em>
<a name="397" href="#397">397</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> getRenditions(CallContext context, CmisService service, String repositoryId,
<a name="398" href="#398">398</a>             HttpServletRequest request, HttpServletResponse response) <strong class="jxr_keyword">throws</strong> Exception {
<a name="399" href="#399">399</a>         <em class="jxr_comment">// get parameters</em>
<a name="400" href="#400">400</a>         String objectId = (String) context.get(CONTEXT_OBJECT_ID);
<a name="401" href="#401">401</a>         String renditionFilter = getStringParameter(request, PARAM_RENDITION_FILTER);
<a name="402" href="#402">402</a>         BigInteger maxItems = getBigIntegerParameter(request, Constants.PARAM_MAX_ITEMS);
<a name="403" href="#403">403</a>         BigInteger skipCount = getBigIntegerParameter(request, Constants.PARAM_SKIP_COUNT);
<a name="404" href="#404">404</a> 
<a name="405" href="#405">405</a>         <em class="jxr_comment">// execute</em>
<a name="406" href="#406">406</a>         List&lt;RenditionData&gt; renditions = service.getRenditions(repositoryId, objectId, renditionFilter, maxItems,
<a name="407" href="#407">407</a>                 skipCount, <strong class="jxr_keyword">null</strong>);
<a name="408" href="#408">408</a> 
<a name="409" href="#409">409</a>         JSONArray jsonRenditions = <strong class="jxr_keyword">new</strong> JSONArray();
<a name="410" href="#410">410</a>         <strong class="jxr_keyword">if</strong> (renditions != <strong class="jxr_keyword">null</strong>) {
<a name="411" href="#411">411</a>             <strong class="jxr_keyword">for</strong> (RenditionData rendition : renditions) {
<a name="412" href="#412">412</a>                 jsonRenditions.add(JSONConverter.convert(rendition));
<a name="413" href="#413">413</a>             }
<a name="414" href="#414">414</a>         }
<a name="415" href="#415">415</a> 
<a name="416" href="#416">416</a>         response.setStatus(HttpServletResponse.SC_OK);
<a name="417" href="#417">417</a>         writeJSON(jsonRenditions, request, response);
<a name="418" href="#418">418</a>     }
<a name="419" href="#419">419</a> 
<a name="420" href="#420">420</a>     <em class="jxr_javadoccomment">/**</em>
<a name="421" href="#421">421</a> <em class="jxr_javadoccomment">     * getContentStream.</em>
<a name="422" href="#422">422</a> <em class="jxr_javadoccomment">     */</em>
<a name="423" href="#423">423</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> getContentStream(CallContext context, CmisService service, String repositoryId,
<a name="424" href="#424">424</a>             HttpServletRequest request, HttpServletResponse response) <strong class="jxr_keyword">throws</strong> Exception {
<a name="425" href="#425">425</a>         <em class="jxr_comment">// get parameters</em>
<a name="426" href="#426">426</a>         String objectId = (String) context.get(CONTEXT_OBJECT_ID);
<a name="427" href="#427">427</a>         String streamId = getStringParameter(request, PARAM_STREAM_ID);
<a name="428" href="#428">428</a> 
<a name="429" href="#429">429</a>         BigInteger offset = context.getOffset();
<a name="430" href="#430">430</a>         BigInteger length = context.getLength();
<a name="431" href="#431">431</a> 
<a name="432" href="#432">432</a>         <em class="jxr_comment">// execute</em>
<a name="433" href="#433">433</a>         ContentStream content = service.getContentStream(repositoryId, objectId, streamId, offset, length, <strong class="jxr_keyword">null</strong>);
<a name="434" href="#434">434</a> 
<a name="435" href="#435">435</a>         <strong class="jxr_keyword">if</strong> (content == <strong class="jxr_keyword">null</strong> || content.getStream() == <strong class="jxr_keyword">null</strong>) {
<a name="436" href="#436">436</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> CmisRuntimeException(<span class="jxr_string">"Content stream is null!"</span>);
<a name="437" href="#437">437</a>         }
<a name="438" href="#438">438</a> 
<a name="439" href="#439">439</a>         String contentType = content.getMimeType();
<a name="440" href="#440">440</a>         <strong class="jxr_keyword">if</strong> (contentType == <strong class="jxr_keyword">null</strong>) {
<a name="441" href="#441">441</a>             contentType = MEDIATYPE_OCTETSTREAM;
<a name="442" href="#442">442</a>         }
<a name="443" href="#443">443</a> 
<a name="444" href="#444">444</a>         <em class="jxr_comment">// set headers</em>
<a name="445" href="#445">445</a>         <strong class="jxr_keyword">if</strong> (offset == <strong class="jxr_keyword">null</strong> &amp;&amp; length == <strong class="jxr_keyword">null</strong>) {
<a name="446" href="#446">446</a>             response.setStatus(HttpServletResponse.SC_OK);
<a name="447" href="#447">447</a>         } <strong class="jxr_keyword">else</strong> {
<a name="448" href="#448">448</a>             setStatus(request, response, HttpServletResponse.SC_PARTIAL_CONTENT);
<a name="449" href="#449">449</a>         }
<a name="450" href="#450">450</a>         response.setContentType(contentType);
<a name="451" href="#451">451</a>         <strong class="jxr_keyword">if</strong> (content.getFileName() != <strong class="jxr_keyword">null</strong>) {
<a name="452" href="#452">452</a>             response.setHeader(MimeHelper.CONTENT_DISPOSITION,
<a name="453" href="#453">453</a>                     MimeHelper.encodeContentDisposition(MimeHelper.DISPOSITION_INLINE, content.getFileName()));
<a name="454" href="#454">454</a>         }
<a name="455" href="#455">455</a> 
<a name="456" href="#456">456</a>         <em class="jxr_comment">// send content</em>
<a name="457" href="#457">457</a>         InputStream in = <strong class="jxr_keyword">new</strong> BufferedInputStream(content.getStream(), BUFFER_SIZE);
<a name="458" href="#458">458</a>         OutputStream out = <strong class="jxr_keyword">new</strong> BufferedOutputStream(response.getOutputStream());
<a name="459" href="#459">459</a> 
<a name="460" href="#460">460</a>         byte[] buffer = <strong class="jxr_keyword">new</strong> byte[BUFFER_SIZE];
<a name="461" href="#461">461</a>         <strong class="jxr_keyword">int</strong> b;
<a name="462" href="#462">462</a>         <strong class="jxr_keyword">while</strong> ((b = in.read(buffer)) &gt; -1) {
<a name="463" href="#463">463</a>             out.write(buffer, 0, b);
<a name="464" href="#464">464</a>         }
<a name="465" href="#465">465</a> 
<a name="466" href="#466">466</a>         in.close();
<a name="467" href="#467">467</a>         out.flush();
<a name="468" href="#468">468</a>     }
<a name="469" href="#469">469</a> 
<a name="470" href="#470">470</a>     <em class="jxr_javadoccomment">/**</em>
<a name="471" href="#471">471</a> <em class="jxr_javadoccomment">     * deleteObject.</em>
<a name="472" href="#472">472</a> <em class="jxr_javadoccomment">     */</em>
<a name="473" href="#473">473</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> deleteObject(CallContext context, CmisService service, String repositoryId,
<a name="474" href="#474">474</a>             HttpServletRequest request, HttpServletResponse response) <strong class="jxr_keyword">throws</strong> Exception {
<a name="475" href="#475">475</a>         <em class="jxr_comment">// get parameters</em>
<a name="476" href="#476">476</a>         String objectId = (String) context.get(CONTEXT_OBJECT_ID);
<a name="477" href="#477">477</a>         Boolean allVersions = getBooleanParameter(request, Constants.PARAM_ALL_VERSIONS);
<a name="478" href="#478">478</a> 
<a name="479" href="#479">479</a>         service.deleteObject(repositoryId, objectId, allVersions, <strong class="jxr_keyword">null</strong>);
<a name="480" href="#480">480</a> 
<a name="481" href="#481">481</a>         response.setStatus(HttpServletResponse.SC_OK);
<a name="482" href="#482">482</a>         writeEmpty(request, response);
<a name="483" href="#483">483</a>     }
<a name="484" href="#484">484</a> 
<a name="485" href="#485">485</a>     <em class="jxr_javadoccomment">/**</em>
<a name="486" href="#486">486</a> <em class="jxr_javadoccomment">     * deleteTree.</em>
<a name="487" href="#487">487</a> <em class="jxr_javadoccomment">     */</em>
<a name="488" href="#488">488</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> deleteTree(CallContext context, CmisService service, String repositoryId,
<a name="489" href="#489">489</a>             HttpServletRequest request, HttpServletResponse response) <strong class="jxr_keyword">throws</strong> Exception {
<a name="490" href="#490">490</a>         <em class="jxr_comment">// get parameters</em>
<a name="491" href="#491">491</a>         String objectId = (String) context.get(CONTEXT_OBJECT_ID);
<a name="492" href="#492">492</a>         Boolean allVersions = getBooleanParameter(request, Constants.PARAM_ALL_VERSIONS);
<a name="493" href="#493">493</a>         UnfileObject unfileObjects = getEnumParameter(request, Constants.PARAM_UNFILE_OBJECTS, UnfileObject.<strong class="jxr_keyword">class</strong>);
<a name="494" href="#494">494</a>         Boolean continueOnFailure = getBooleanParameter(request, Constants.PARAM_CONTINUE_ON_FAILURE);
<a name="495" href="#495">495</a> 
<a name="496" href="#496">496</a>         <em class="jxr_comment">// execute</em>
<a name="497" href="#497">497</a>         FailedToDeleteData ftd = service.deleteTree(repositoryId, objectId, allVersions, unfileObjects,
<a name="498" href="#498">498</a>                 continueOnFailure, <strong class="jxr_keyword">null</strong>);
<a name="499" href="#499">499</a> 
<a name="500" href="#500">500</a>         response.setStatus(HttpServletResponse.SC_OK);
<a name="501" href="#501">501</a> 
<a name="502" href="#502">502</a>         <strong class="jxr_keyword">if</strong> ((ftd != <strong class="jxr_keyword">null</strong>) &amp;&amp; (ftd.getIds() != <strong class="jxr_keyword">null</strong>) &amp;&amp; (ftd.getIds().size() &gt; 0)) {
<a name="503" href="#503">503</a>             JSONObject jsonObject = JSONConverter.convert(ftd);
<a name="504" href="#504">504</a>             writeJSON(jsonObject, request, response);
<a name="505" href="#505">505</a>             <strong class="jxr_keyword">return</strong>;
<a name="506" href="#506">506</a>         }
<a name="507" href="#507">507</a> 
<a name="508" href="#508">508</a>         writeEmpty(request, response);
<a name="509" href="#509">509</a>     }
<a name="510" href="#510">510</a> 
<a name="511" href="#511">511</a>     <em class="jxr_javadoccomment">/**</em>
<a name="512" href="#512">512</a> <em class="jxr_javadoccomment">     * Delete content stream.</em>
<a name="513" href="#513">513</a> <em class="jxr_javadoccomment">     */</em>
<a name="514" href="#514">514</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> deleteContentStream(CallContext context, CmisService service, String repositoryId,
<a name="515" href="#515">515</a>             HttpServletRequest request, HttpServletResponse response) <strong class="jxr_keyword">throws</strong> Exception {
<a name="516" href="#516">516</a>         <em class="jxr_comment">// get parameters</em>
<a name="517" href="#517">517</a>         String objectId = (String) context.get(CONTEXT_OBJECT_ID);
<a name="518" href="#518">518</a>         String changeToken = getStringParameter(request, Constants.PARAM_CHANGE_TOKEN);
<a name="519" href="#519">519</a> 
<a name="520" href="#520">520</a>         <em class="jxr_comment">// execute</em>
<a name="521" href="#521">521</a>         Holder&lt;String&gt; objectIdHolder = <strong class="jxr_keyword">new</strong> Holder&lt;String&gt;(objectId);
<a name="522" href="#522">522</a>         Holder&lt;String&gt; changeTokenHolder = (changeToken == <strong class="jxr_keyword">null</strong> ? <strong class="jxr_keyword">null</strong> : <strong class="jxr_keyword">new</strong> Holder&lt;String&gt;(changeToken));
<a name="523" href="#523">523</a>         service.deleteContentStream(repositoryId, objectIdHolder, changeTokenHolder, <strong class="jxr_keyword">null</strong>);
<a name="524" href="#524">524</a> 
<a name="525" href="#525">525</a>         String newObjectId = (objectIdHolder.getValue() == <strong class="jxr_keyword">null</strong> ? objectId : objectIdHolder.getValue());
<a name="526" href="#526">526</a> 
<a name="527" href="#527">527</a>         ObjectData object = getSimpleObject(service, repositoryId, newObjectId);
<a name="528" href="#528">528</a>         <strong class="jxr_keyword">if</strong> (object == <strong class="jxr_keyword">null</strong>) {
<a name="529" href="#529">529</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> CmisRuntimeException(<span class="jxr_string">"Object is null!"</span>);
<a name="530" href="#530">530</a>         }
<a name="531" href="#531">531</a> 
<a name="532" href="#532">532</a>         response.setStatus(HttpServletResponse.SC_OK);
<a name="533" href="#533">533</a> 
<a name="534" href="#534">534</a>         <em class="jxr_comment">// return object</em>
<a name="535" href="#535">535</a>         TypeCache typeCache = <strong class="jxr_keyword">new</strong> TypeCacheImpl(repositoryId, service);
<a name="536" href="#536">536</a>         JSONObject jsonObject = JSONConverter.convert(object, typeCache, false);
<a name="537" href="#537">537</a> 
<a name="538" href="#538">538</a>         writeJSON(jsonObject, request, response);
<a name="539" href="#539">539</a>     }
<a name="540" href="#540">540</a> 
<a name="541" href="#541">541</a>     <em class="jxr_javadoccomment">/**</em>
<a name="542" href="#542">542</a> <em class="jxr_javadoccomment">     * Set content stream.</em>
<a name="543" href="#543">543</a> <em class="jxr_javadoccomment">     */</em>
<a name="544" href="#544">544</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> setContentStream(CallContext context, CmisService service, String repositoryId,
<a name="545" href="#545">545</a>             HttpServletRequest request, HttpServletResponse response) <strong class="jxr_keyword">throws</strong> Exception {
<a name="546" href="#546">546</a>         <em class="jxr_comment">// get parameters</em>
<a name="547" href="#547">547</a>         String objectId = (String) context.get(CONTEXT_OBJECT_ID);
<a name="548" href="#548">548</a>         String changeToken = getStringParameter(request, Constants.PARAM_CHANGE_TOKEN);
<a name="549" href="#549">549</a>         Boolean overwriteFlag = getBooleanParameter(request, Constants.PARAM_OVERWRITE_FLAG);
<a name="550" href="#550">550</a> 
<a name="551" href="#551">551</a>         <em class="jxr_comment">// execute</em>
<a name="552" href="#552">552</a>         Holder&lt;String&gt; objectIdHolder = <strong class="jxr_keyword">new</strong> Holder&lt;String&gt;(objectId);
<a name="553" href="#553">553</a>         Holder&lt;String&gt; changeTokenHolder = (changeToken == <strong class="jxr_keyword">null</strong> ? <strong class="jxr_keyword">null</strong> : <strong class="jxr_keyword">new</strong> Holder&lt;String&gt;(changeToken));
<a name="554" href="#554">554</a>         service.setContentStream(repositoryId, objectIdHolder, overwriteFlag, changeTokenHolder,
<a name="555" href="#555">555</a>                 createContentStream(request), <strong class="jxr_keyword">null</strong>);
<a name="556" href="#556">556</a> 
<a name="557" href="#557">557</a>         String newObjectId = (objectIdHolder.getValue() == <strong class="jxr_keyword">null</strong> ? objectId : objectIdHolder.getValue());
<a name="558" href="#558">558</a> 
<a name="559" href="#559">559</a>         ObjectData object = getSimpleObject(service, repositoryId, newObjectId);
<a name="560" href="#560">560</a>         <strong class="jxr_keyword">if</strong> (object == <strong class="jxr_keyword">null</strong>) {
<a name="561" href="#561">561</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> CmisRuntimeException(<span class="jxr_string">"Object is null!"</span>);
<a name="562" href="#562">562</a>         }
<a name="563" href="#563">563</a> 
<a name="564" href="#564">564</a>         <em class="jxr_comment">// set headers</em>
<a name="565" href="#565">565</a>         String location = compileUrl(compileBaseUrl(request, repositoryId), RESOURCE_CONTENT, newObjectId);
<a name="566" href="#566">566</a> 
<a name="567" href="#567">567</a>         setStatus(request, response, HttpServletResponse.SC_CREATED);
<a name="568" href="#568">568</a>         response.setHeader(<span class="jxr_string">"Location"</span>, location);
<a name="569" href="#569">569</a> 
<a name="570" href="#570">570</a>         <em class="jxr_comment">// return object</em>
<a name="571" href="#571">571</a>         TypeCache typeCache = <strong class="jxr_keyword">new</strong> TypeCacheImpl(repositoryId, service);
<a name="572" href="#572">572</a>         JSONObject jsonObject = JSONConverter.convert(object, typeCache, false);
<a name="573" href="#573">573</a> 
<a name="574" href="#574">574</a>         writeJSON(jsonObject, request, response);
<a name="575" href="#575">575</a>     }
<a name="576" href="#576">576</a> 
<a name="577" href="#577">577</a>     <em class="jxr_javadoccomment">/**</em>
<a name="578" href="#578">578</a> <em class="jxr_javadoccomment">     * moveObject.</em>
<a name="579" href="#579">579</a> <em class="jxr_javadoccomment">     */</em>
<a name="580" href="#580">580</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> moveObject(CallContext context, CmisService service, String repositoryId,
<a name="581" href="#581">581</a>             HttpServletRequest request, HttpServletResponse response) <strong class="jxr_keyword">throws</strong> Exception {
<a name="582" href="#582">582</a>         <em class="jxr_comment">// get parameters</em>
<a name="583" href="#583">583</a>         String objectId = (String) context.get(CONTEXT_OBJECT_ID);
<a name="584" href="#584">584</a>         String targetFolderId = getStringParameter(request, PARAM_TARGET_FOLDER_ID);
<a name="585" href="#585">585</a>         String sourceFolderId = getStringParameter(request, PARAM_SOURCE_FOLDER_ID);
<a name="586" href="#586">586</a> 
<a name="587" href="#587">587</a>         <em class="jxr_comment">// execute</em>
<a name="588" href="#588">588</a>         Holder&lt;String&gt; objectIdHolder = <strong class="jxr_keyword">new</strong> Holder&lt;String&gt;(objectId);
<a name="589" href="#589">589</a>         service.moveObject(repositoryId, objectIdHolder, targetFolderId, sourceFolderId, <strong class="jxr_keyword">null</strong>);
<a name="590" href="#590">590</a> 
<a name="591" href="#591">591</a>         String newObjectId = (objectIdHolder.getValue() == <strong class="jxr_keyword">null</strong> ? objectId : objectIdHolder.getValue());
<a name="592" href="#592">592</a> 
<a name="593" href="#593">593</a>         ObjectData object = getSimpleObject(service, repositoryId, newObjectId);
<a name="594" href="#594">594</a>         <strong class="jxr_keyword">if</strong> (object == <strong class="jxr_keyword">null</strong>) {
<a name="595" href="#595">595</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> CmisRuntimeException(<span class="jxr_string">"Object is null!"</span>);
<a name="596" href="#596">596</a>         }
<a name="597" href="#597">597</a> 
<a name="598" href="#598">598</a>         <em class="jxr_comment">// set headers</em>
<a name="599" href="#599">599</a>         String location = compileUrl(compileBaseUrl(request, repositoryId), RESOURCE_CONTENT, newObjectId);
<a name="600" href="#600">600</a> 
<a name="601" href="#601">601</a>         setStatus(request, response, HttpServletResponse.SC_CREATED);
<a name="602" href="#602">602</a>         response.setHeader(<span class="jxr_string">"Location"</span>, location);
<a name="603" href="#603">603</a> 
<a name="604" href="#604">604</a>         <em class="jxr_comment">// return object</em>
<a name="605" href="#605">605</a>         TypeCache typeCache = <strong class="jxr_keyword">new</strong> TypeCacheImpl(repositoryId, service);
<a name="606" href="#606">606</a>         JSONObject jsonObject = JSONConverter.convert(object, typeCache, false);
<a name="607" href="#607">607</a> 
<a name="608" href="#608">608</a>         writeJSON(jsonObject, request, response);
<a name="609" href="#609">609</a>     }
<a name="610" href="#610">610</a> }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

