<!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>RepositoryService 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.atompub;
<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.server.impl.atompub.AtomPubUtils.PAGE_SIZE;
<a name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.chemistry.opencmis.server.impl.atompub.AtomPubUtils.RESOURCE_CHANGES;
<a name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.chemistry.opencmis.server.impl.atompub.AtomPubUtils.RESOURCE_CHECKEDOUT;
<a name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.chemistry.opencmis.server.impl.atompub.AtomPubUtils.RESOURCE_CHILDREN;
<a name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.chemistry.opencmis.server.impl.atompub.AtomPubUtils.RESOURCE_DESCENDANTS;
<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_FOLDERTREE;
<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.RESOURCE_OBJECTBYID;
<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.RESOURCE_OBJECTBYPATH;
<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.atompub.AtomPubUtils.RESOURCE_QUERY;
<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.atompub.AtomPubUtils.RESOURCE_TYPE;
<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.atompub.AtomPubUtils.RESOURCE_TYPES;
<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.atompub.AtomPubUtils.RESOURCE_TYPESDESC;
<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.atompub.AtomPubUtils.RESOURCE_UNFILED;
<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.atompub.AtomPubUtils.TYPE_AUTHOR;
<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.compileBaseUrl;
<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.compileUrl;
<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.compileUrlBuilder;
<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.atompub.AtomPubUtils.writeTypeEntry;
<a name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.chemistry.opencmis.server.shared.HttpUtils.getBigIntegerParameter;
<a name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.chemistry.opencmis.server.shared.HttpUtils.getBooleanParameter;
<a name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.chemistry.opencmis.server.shared.HttpUtils.getStringParameter;
<a name="42" href="#42">42</a>  
<a name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> java.math.BigInteger;
<a name="44" href="#44">44</a>  <strong class="jxr_keyword">import</strong> java.util.Collections;
<a name="45" href="#45">45</a>  <strong class="jxr_keyword">import</strong> java.util.GregorianCalendar;
<a name="46" href="#46">46</a>  <strong class="jxr_keyword">import</strong> java.util.List;
<a name="47" href="#47">47</a>  
<a name="48" href="#48">48</a>  <strong class="jxr_keyword">import</strong> javax.servlet.http.HttpServletRequest;
<a name="49" href="#49">49</a>  <strong class="jxr_keyword">import</strong> javax.servlet.http.HttpServletResponse;
<a name="50" href="#50">50</a>  
<a name="51" href="#51">51</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.data.RepositoryCapabilities;
<a name="52" href="#52">52</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.data.RepositoryInfo;
<a name="53" href="#53">53</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.definitions.TypeDefinition;
<a name="54" href="#54">54</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.definitions.TypeDefinitionContainer;
<a name="55" href="#55">55</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.definitions.TypeDefinitionList;
<a name="56" href="#56">56</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.enums.CapabilityChanges;
<a name="57" href="#57">57</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.enums.CapabilityQuery;
<a name="58" href="#58">58</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.impl.Constants;
<a name="59" href="#59">59</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.impl.UrlBuilder;
<a name="60" href="#60">60</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.server.CallContext;
<a name="61" href="#61">61</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.commons.server.CmisService;
<a name="62" href="#62">62</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.server.impl.CallContextImpl;
<a name="63" href="#63">63</a>  
<a name="64" href="#64">64</a>  <em class="jxr_javadoccomment">/**</em>
<a name="65" href="#65">65</a>  <em class="jxr_javadoccomment"> * Repository Service operations.</em>
<a name="66" href="#66">66</a>  <em class="jxr_javadoccomment"> */</em>
<a name="67" href="#67">67</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/atompub/RepositoryService.html">RepositoryService</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">     * Private constructor.</em>
<a name="71" href="#71">71</a>  <em class="jxr_javadoccomment">     */</em>
<a name="72" href="#72">72</a>      <strong class="jxr_keyword">private</strong> <a href="../../../../../../../org/apache/chemistry/opencmis/server/impl/atompub/RepositoryService.html">RepositoryService</a>() {
<a name="73" href="#73">73</a>      }
<a name="74" href="#74">74</a>  
<a name="75" href="#75">75</a>      <em class="jxr_javadoccomment">/**</em>
<a name="76" href="#76">76</a>  <em class="jxr_javadoccomment">     * Renders the service document.</em>
<a name="77" href="#77">77</a>  <em class="jxr_javadoccomment">     */</em>
<a name="78" href="#78">78</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> getRepositories(CallContext context, CmisService service, HttpServletRequest request,
<a name="79" href="#79">79</a>              HttpServletResponse response) <strong class="jxr_keyword">throws</strong> Exception {
<a name="80" href="#80">80</a>          <em class="jxr_comment">// get parameters</em>
<a name="81" href="#81">81</a>          String repositoryId = getStringParameter(request, Constants.PARAM_REPOSITORY_ID);
<a name="82" href="#82">82</a>  
<a name="83" href="#83">83</a>          <em class="jxr_comment">// execute</em>
<a name="84" href="#84">84</a>          List&lt;RepositoryInfo&gt; infoDataList = <strong class="jxr_keyword">null</strong>;
<a name="85" href="#85">85</a>  
<a name="86" href="#86">86</a>          <strong class="jxr_keyword">if</strong> (repositoryId == <strong class="jxr_keyword">null</strong>) {
<a name="87" href="#87">87</a>              infoDataList = service.getRepositoryInfos(<strong class="jxr_keyword">null</strong>);
<a name="88" href="#88">88</a>          } <strong class="jxr_keyword">else</strong> {
<a name="89" href="#89">89</a>              infoDataList = Collections.singletonList(service.getRepositoryInfo(repositoryId, <strong class="jxr_keyword">null</strong>));
<a name="90" href="#90">90</a>              <strong class="jxr_keyword">if</strong> (context instanceof CallContextImpl) {
<a name="91" href="#91">91</a>                  ((<a href="../../../../../../../org/apache/chemistry/opencmis/server/impl/CallContextImpl.html">CallContextImpl</a>) context).put(CallContext.REPOSITORY_ID, repositoryId);
<a name="92" href="#92">92</a>              }
<a name="93" href="#93">93</a>          }
<a name="94" href="#94">94</a>  
<a name="95" href="#95">95</a>          <em class="jxr_comment">// set headers</em>
<a name="96" href="#96">96</a>          response.setStatus(HttpServletResponse.SC_OK);
<a name="97" href="#97">97</a>          response.setContentType(Constants.MEDIATYPE_SERVICE);
<a name="98" href="#98">98</a>  
<a name="99" href="#99">99</a>          <em class="jxr_comment">// write XML</em>
<a name="100" href="#100">100</a>         <a href="../../../../../../../org/apache/chemistry/opencmis/server/impl/atompub/ServiceDocument.html">ServiceDocument</a> serviceDoc = <strong class="jxr_keyword">new</strong> <a href="../../../../../../../org/apache/chemistry/opencmis/server/impl/atompub/ServiceDocument.html">ServiceDocument</a>();
<a name="101" href="#101">101</a> 
<a name="102" href="#102">102</a>         serviceDoc.startDocument(response.getOutputStream());
<a name="103" href="#103">103</a>         serviceDoc.startServiceDocument();
<a name="104" href="#104">104</a> 
<a name="105" href="#105">105</a>         <strong class="jxr_keyword">if</strong> (infoDataList != <strong class="jxr_keyword">null</strong>) {
<a name="106" href="#106">106</a>             <strong class="jxr_keyword">for</strong> (RepositoryInfo infoData : infoDataList) {
<a name="107" href="#107">107</a>                 <strong class="jxr_keyword">if</strong> (infoData == <strong class="jxr_keyword">null</strong>) {
<a name="108" href="#108">108</a>                     <strong class="jxr_keyword">continue</strong>;
<a name="109" href="#109">109</a>                 }
<a name="110" href="#110">110</a> 
<a name="111" href="#111">111</a>                 String repId = infoData.getId();
<a name="112" href="#112">112</a>                 UrlBuilder baseUrl = compileBaseUrl(request, repId);
<a name="113" href="#113">113</a> 
<a name="114" href="#114">114</a>                 <strong class="jxr_keyword">boolean</strong> supportsQuery = false;
<a name="115" href="#115">115</a>                 <strong class="jxr_keyword">boolean</strong> supportsUnFiling = false;
<a name="116" href="#116">116</a>                 <strong class="jxr_keyword">boolean</strong> supportsMultifiling = false;
<a name="117" href="#117">117</a>                 <strong class="jxr_keyword">boolean</strong> supportsFolderTree = false;
<a name="118" href="#118">118</a>                 <strong class="jxr_keyword">boolean</strong> supportsRootDescendants = false;
<a name="119" href="#119">119</a>                 <strong class="jxr_keyword">boolean</strong> supportsChanges = false;
<a name="120" href="#120">120</a> 
<a name="121" href="#121">121</a>                 <strong class="jxr_keyword">if</strong> (infoData.getCapabilities() != <strong class="jxr_keyword">null</strong>) {
<a name="122" href="#122">122</a>                     RepositoryCapabilities cap = infoData.getCapabilities();
<a name="123" href="#123">123</a> 
<a name="124" href="#124">124</a>                     <strong class="jxr_keyword">if</strong> (cap.getQueryCapability() != <strong class="jxr_keyword">null</strong>) {
<a name="125" href="#125">125</a>                         supportsQuery = (cap.getQueryCapability() != CapabilityQuery.NONE);
<a name="126" href="#126">126</a>                     }
<a name="127" href="#127">127</a> 
<a name="128" href="#128">128</a>                     <strong class="jxr_keyword">if</strong> (cap.isUnfilingSupported() != <strong class="jxr_keyword">null</strong>) {
<a name="129" href="#129">129</a>                         supportsUnFiling = cap.isUnfilingSupported();
<a name="130" href="#130">130</a>                     }
<a name="131" href="#131">131</a> 
<a name="132" href="#132">132</a>                     <strong class="jxr_keyword">if</strong> (cap.isMultifilingSupported() != <strong class="jxr_keyword">null</strong>) {
<a name="133" href="#133">133</a>                         supportsMultifiling = cap.isMultifilingSupported();
<a name="134" href="#134">134</a>                     }
<a name="135" href="#135">135</a> 
<a name="136" href="#136">136</a>                     <strong class="jxr_keyword">if</strong> (cap.isGetFolderTreeSupported() != <strong class="jxr_keyword">null</strong>) {
<a name="137" href="#137">137</a>                         supportsFolderTree = cap.isGetFolderTreeSupported();
<a name="138" href="#138">138</a>                     }
<a name="139" href="#139">139</a> 
<a name="140" href="#140">140</a>                     <strong class="jxr_keyword">if</strong> (cap.isGetDescendantsSupported() != <strong class="jxr_keyword">null</strong>) {
<a name="141" href="#141">141</a>                         supportsRootDescendants = cap.isGetDescendantsSupported();
<a name="142" href="#142">142</a>                     }
<a name="143" href="#143">143</a> 
<a name="144" href="#144">144</a>                     <strong class="jxr_keyword">if</strong> (cap.getChangesCapability() != <strong class="jxr_keyword">null</strong>) {
<a name="145" href="#145">145</a>                         supportsChanges = (cap.getChangesCapability() != CapabilityChanges.NONE);
<a name="146" href="#146">146</a>                     }
<a name="147" href="#147">147</a>                 }
<a name="148" href="#148">148</a> 
<a name="149" href="#149">149</a>                 serviceDoc.startWorkspace(infoData.getId());
<a name="150" href="#150">150</a> 
<a name="151" href="#151">151</a>                 <em class="jxr_comment">// add collections</em>
<a name="152" href="#152">152</a> 
<a name="153" href="#153">153</a>                 <em class="jxr_comment">// - root collection</em>
<a name="154" href="#154">154</a>                 serviceDoc.writeCollection(compileUrl(baseUrl, RESOURCE_CHILDREN, infoData.getRootFolderId()),
<a name="155" href="#155">155</a>                         Constants.COLLECTION_ROOT, <span class="jxr_string">"Root Collection"</span>, Constants.MEDIATYPE_ENTRY,
<a name="156" href="#156">156</a>                         Constants.MEDIATYPE_CMISATOM);
<a name="157" href="#157">157</a> 
<a name="158" href="#158">158</a>                 <em class="jxr_comment">// - types collection</em>
<a name="159" href="#159">159</a>                 serviceDoc.writeCollection(compileUrl(baseUrl, RESOURCE_TYPES, <strong class="jxr_keyword">null</strong>), Constants.COLLECTION_TYPES,
<a name="160" href="#160">160</a>                         <span class="jxr_string">"Types Collection"</span>, <span class="jxr_string">""</span>);
<a name="161" href="#161">161</a> 
<a name="162" href="#162">162</a>                 <em class="jxr_comment">// - query collection</em>
<a name="163" href="#163">163</a>                 <strong class="jxr_keyword">if</strong> (supportsQuery) {
<a name="164" href="#164">164</a>                     serviceDoc.writeCollection(compileUrl(baseUrl, RESOURCE_QUERY, <strong class="jxr_keyword">null</strong>), Constants.COLLECTION_QUERY,
<a name="165" href="#165">165</a>                             <span class="jxr_string">"Query Collection"</span>, Constants.MEDIATYPE_QUERY);
<a name="166" href="#166">166</a>                 }
<a name="167" href="#167">167</a> 
<a name="168" href="#168">168</a>                 <em class="jxr_comment">// - checked out collection collection</em>
<a name="169" href="#169">169</a>                 serviceDoc.writeCollection(compileUrl(baseUrl, RESOURCE_CHECKEDOUT, <strong class="jxr_keyword">null</strong>),
<a name="170" href="#170">170</a>                         Constants.COLLECTION_CHECKEDOUT, <span class="jxr_string">"Checked Out Collection"</span>, Constants.MEDIATYPE_CMISATOM);
<a name="171" href="#171">171</a> 
<a name="172" href="#172">172</a>                 <em class="jxr_comment">// - unfiled collection collection</em>
<a name="173" href="#173">173</a>                 <strong class="jxr_keyword">if</strong> (supportsUnFiling || supportsMultifiling) {
<a name="174" href="#174">174</a>                     serviceDoc.writeCollection(compileUrl(baseUrl, RESOURCE_UNFILED, <strong class="jxr_keyword">null</strong>),
<a name="175" href="#175">175</a>                             Constants.COLLECTION_UNFILED, <span class="jxr_string">"Unfiled Collection"</span>, Constants.MEDIATYPE_CMISATOM);
<a name="176" href="#176">176</a> 
<a name="177" href="#177">177</a>                 }
<a name="178" href="#178">178</a> 
<a name="179" href="#179">179</a>                 <em class="jxr_comment">// add repository info</em>
<a name="180" href="#180">180</a>                 serviceDoc.writeRepositoryInfo(infoData);
<a name="181" href="#181">181</a> 
<a name="182" href="#182">182</a>                 <em class="jxr_comment">// add links</em>
<a name="183" href="#183">183</a> 
<a name="184" href="#184">184</a>                 <em class="jxr_comment">// - types descendants</em>
<a name="185" href="#185">185</a>                 serviceDoc.writeLink(Constants.REP_REL_TYPEDESC, compileUrl(baseUrl, RESOURCE_TYPESDESC, <strong class="jxr_keyword">null</strong>),
<a name="186" href="#186">186</a>                         Constants.MEDIATYPE_FEED, <strong class="jxr_keyword">null</strong>);
<a name="187" href="#187">187</a> 
<a name="188" href="#188">188</a>                 <em class="jxr_comment">// - folder tree</em>
<a name="189" href="#189">189</a>                 <strong class="jxr_keyword">if</strong> (supportsFolderTree) {
<a name="190" href="#190">190</a>                     serviceDoc.writeLink(Constants.REP_REL_FOLDERTREE,
<a name="191" href="#191">191</a>                             compileUrl(baseUrl, RESOURCE_FOLDERTREE, infoData.getRootFolderId()),
<a name="192" href="#192">192</a>                             Constants.MEDIATYPE_DESCENDANTS, <strong class="jxr_keyword">null</strong>);
<a name="193" href="#193">193</a>                 }
<a name="194" href="#194">194</a> 
<a name="195" href="#195">195</a>                 <em class="jxr_comment">// - root descendants</em>
<a name="196" href="#196">196</a>                 <strong class="jxr_keyword">if</strong> (supportsRootDescendants) {
<a name="197" href="#197">197</a>                     serviceDoc.writeLink(Constants.REP_REL_ROOTDESC,
<a name="198" href="#198">198</a>                             compileUrl(baseUrl, RESOURCE_DESCENDANTS, infoData.getRootFolderId()),
<a name="199" href="#199">199</a>                             Constants.MEDIATYPE_DESCENDANTS, infoData.getRootFolderId());
<a name="200" href="#200">200</a>                 }
<a name="201" href="#201">201</a> 
<a name="202" href="#202">202</a>                 <em class="jxr_comment">// - changes</em>
<a name="203" href="#203">203</a>                 <strong class="jxr_keyword">if</strong> (supportsChanges) {
<a name="204" href="#204">204</a>                     serviceDoc.writeLink(Constants.REP_REL_CHANGES, compileUrl(baseUrl, RESOURCE_CHANGES, <strong class="jxr_keyword">null</strong>),
<a name="205" href="#205">205</a>                             Constants.MEDIATYPE_FEED, <strong class="jxr_keyword">null</strong>);
<a name="206" href="#206">206</a>                 }
<a name="207" href="#207">207</a> 
<a name="208" href="#208">208</a>                 <em class="jxr_comment">// add URI templates</em>
<a name="209" href="#209">209</a> 
<a name="210" href="#210">210</a>                 <em class="jxr_comment">// - object by id</em>
<a name="211" href="#211">211</a>                 String url = compileUrl(baseUrl, RESOURCE_OBJECTBYID, <strong class="jxr_keyword">null</strong>)
<a name="212" href="#212">212</a>                         + <span class="jxr_string">"?id={id}&amp;filter={filter}&amp;includeAllowableActions={includeAllowableActions}&amp;includeACL={includeACL}&amp;includePolicyIds={includePolicyIds}&amp;includeRelationships={includeRelationships}&amp;renditionFilter={renditionFilter}"</span>;
<a name="213" href="#213">213</a>                 serviceDoc.writeUriTemplate(url, Constants.TEMPLATE_OBJECT_BY_ID, Constants.MEDIATYPE_ENTRY);
<a name="214" href="#214">214</a> 
<a name="215" href="#215">215</a>                 <em class="jxr_comment">// - object by path</em>
<a name="216" href="#216">216</a>                 url = compileUrl(baseUrl, RESOURCE_OBJECTBYPATH, <strong class="jxr_keyword">null</strong>)
<a name="217" href="#217">217</a>                         + <span class="jxr_string">"?path={path}&amp;filter={filter}&amp;includeAllowableActions={includeAllowableActions}&amp;includeACL={includeACL}&amp;includePolicyIds={includePolicyIds}&amp;includeRelationships={includeRelationships}&amp;renditionFilter={renditionFilter}"</span>;
<a name="218" href="#218">218</a>                 serviceDoc.writeUriTemplate(url, Constants.TEMPLATE_OBJECT_BY_PATH, Constants.MEDIATYPE_ENTRY);
<a name="219" href="#219">219</a> 
<a name="220" href="#220">220</a>                 <em class="jxr_comment">// - type by id</em>
<a name="221" href="#221">221</a>                 url = compileUrl(baseUrl, RESOURCE_TYPE, <strong class="jxr_keyword">null</strong>) + <span class="jxr_string">"?id={id}"</span>;
<a name="222" href="#222">222</a>                 serviceDoc.writeUriTemplate(url, Constants.TEMPLATE_TYPE_BY_ID, Constants.MEDIATYPE_ENTRY);
<a name="223" href="#223">223</a> 
<a name="224" href="#224">224</a>                 <em class="jxr_comment">// - query</em>
<a name="225" href="#225">225</a>                 <strong class="jxr_keyword">if</strong> (supportsQuery) {
<a name="226" href="#226">226</a>                     url = compileUrl(baseUrl, RESOURCE_QUERY, <strong class="jxr_keyword">null</strong>)
<a name="227" href="#227">227</a>                             + <span class="jxr_string">"?q={q}&amp;searchAllVersions={searchAllVersions}&amp;includeAllowableActions={includeAllowableActions}&amp;includeRelationships={includeRelationships}&amp;maxItems={maxItems}&amp;skipCount={skipCount}"</span>;
<a name="228" href="#228">228</a>                     serviceDoc.writeUriTemplate(url, Constants.TEMPLATE_QUERY, Constants.MEDIATYPE_FEED);
<a name="229" href="#229">229</a>                 }
<a name="230" href="#230">230</a> 
<a name="231" href="#231">231</a>                 serviceDoc.endWorkspace();
<a name="232" href="#232">232</a>             }
<a name="233" href="#233">233</a>         }
<a name="234" href="#234">234</a> 
<a name="235" href="#235">235</a>         serviceDoc.endServiceDocument();
<a name="236" href="#236">236</a>         serviceDoc.endDocument();
<a name="237" href="#237">237</a>     }
<a name="238" href="#238">238</a> 
<a name="239" href="#239">239</a>     <em class="jxr_javadoccomment">/**</em>
<a name="240" href="#240">240</a> <em class="jxr_javadoccomment">     * Renders a type children collection.</em>
<a name="241" href="#241">241</a> <em class="jxr_javadoccomment">     */</em>
<a name="242" href="#242">242</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> getTypeChildren(CallContext context, CmisService service, String repositoryId,
<a name="243" href="#243">243</a>             HttpServletRequest request, HttpServletResponse response) <strong class="jxr_keyword">throws</strong> Exception {
<a name="244" href="#244">244</a>         <em class="jxr_comment">// get parameters</em>
<a name="245" href="#245">245</a>         String typeId = getStringParameter(request, Constants.PARAM_TYPE_ID);
<a name="246" href="#246">246</a>         <strong class="jxr_keyword">boolean</strong> includePropertyDefinitions = getBooleanParameter(request, Constants.PARAM_PROPERTY_DEFINITIONS, false);
<a name="247" href="#247">247</a>         BigInteger maxItems = getBigIntegerParameter(request, Constants.PARAM_MAX_ITEMS);
<a name="248" href="#248">248</a>         BigInteger skipCount = getBigIntegerParameter(request, Constants.PARAM_SKIP_COUNT);
<a name="249" href="#249">249</a> 
<a name="250" href="#250">250</a>         <em class="jxr_comment">// execute</em>
<a name="251" href="#251">251</a>         TypeDefinitionList typeList = service.getTypeChildren(repositoryId, typeId, includePropertyDefinitions,
<a name="252" href="#252">252</a>                 maxItems, skipCount, <strong class="jxr_keyword">null</strong>);
<a name="253" href="#253">253</a> 
<a name="254" href="#254">254</a>         BigInteger numItems = (typeList == <strong class="jxr_keyword">null</strong> ? <strong class="jxr_keyword">null</strong> : typeList.getNumItems());
<a name="255" href="#255">255</a>         Boolean hasMoreItems = (typeList == <strong class="jxr_keyword">null</strong> ? <strong class="jxr_keyword">null</strong> : typeList.hasMoreItems());
<a name="256" href="#256">256</a> 
<a name="257" href="#257">257</a>         String parentTypeId = <strong class="jxr_keyword">null</strong>;
<a name="258" href="#258">258</a>         String typeName = <span class="jxr_string">"Type Children"</span>;
<a name="259" href="#259">259</a> 
<a name="260" href="#260">260</a>         <em class="jxr_comment">// in order to get the parent type, we need the type definition of this</em>
<a name="261" href="#261">261</a>         <em class="jxr_comment">// type as well</em>
<a name="262" href="#262">262</a>         <strong class="jxr_keyword">if</strong> (typeId != <strong class="jxr_keyword">null</strong>) {
<a name="263" href="#263">263</a>             TypeDefinition typeDefinition = service.getTypeDefinition(repositoryId, typeId, <strong class="jxr_keyword">null</strong>);
<a name="264" href="#264">264</a> 
<a name="265" href="#265">265</a>             parentTypeId = (typeDefinition == <strong class="jxr_keyword">null</strong> ? <strong class="jxr_keyword">null</strong> : typeDefinition.getParentTypeId());
<a name="266" href="#266">266</a>             typeName = (typeDefinition == <strong class="jxr_keyword">null</strong> ? typeId : typeDefinition.getDisplayName());
<a name="267" href="#267">267</a>         }
<a name="268" href="#268">268</a> 
<a name="269" href="#269">269</a>         <em class="jxr_comment">// write XML</em>
<a name="270" href="#270">270</a>         response.setStatus(HttpServletResponse.SC_OK);
<a name="271" href="#271">271</a>         response.setContentType(Constants.MEDIATYPE_FEED);
<a name="272" href="#272">272</a> 
<a name="273" href="#273">273</a>         <a href="../../../../../../../org/apache/chemistry/opencmis/server/impl/atompub/AtomFeed.html">AtomFeed</a> feed = <strong class="jxr_keyword">new</strong> <a href="../../../../../../../org/apache/chemistry/opencmis/server/impl/atompub/AtomFeed.html">AtomFeed</a>();
<a name="274" href="#274">274</a>         feed.startDocument(response.getOutputStream());
<a name="275" href="#275">275</a>         feed.startFeed(<strong class="jxr_keyword">true</strong>);
<a name="276" href="#276">276</a> 
<a name="277" href="#277">277</a>         <em class="jxr_comment">// write basic Atom feed elements</em>
<a name="278" href="#278">278</a>         feed.writeFeedElements(typeId, TYPE_AUTHOR, typeName, <strong class="jxr_keyword">new</strong> GregorianCalendar(), <strong class="jxr_keyword">null</strong>, numItems);
<a name="279" href="#279">279</a> 
<a name="280" href="#280">280</a>         <em class="jxr_comment">// write links</em>
<a name="281" href="#281">281</a>         UrlBuilder baseUrl = compileBaseUrl(request, repositoryId);
<a name="282" href="#282">282</a> 
<a name="283" href="#283">283</a>         feed.writeServiceLink(baseUrl.toString(), repositoryId);
<a name="284" href="#284">284</a> 
<a name="285" href="#285">285</a>         UrlBuilder selfLink = compileUrlBuilder(baseUrl, RESOURCE_TYPES, <strong class="jxr_keyword">null</strong>);
<a name="286" href="#286">286</a>         selfLink.addParameter(Constants.PARAM_TYPE_ID, typeId);
<a name="287" href="#287">287</a>         selfLink.addParameter(Constants.PARAM_PROPERTY_DEFINITIONS, includePropertyDefinitions);
<a name="288" href="#288">288</a>         feed.writeSelfLink(selfLink.toString(), typeId);
<a name="289" href="#289">289</a> 
<a name="290" href="#290">290</a>         feed.writeViaLink(compileUrl(baseUrl, RESOURCE_TYPE, typeId));
<a name="291" href="#291">291</a> 
<a name="292" href="#292">292</a>         UrlBuilder downLink = compileUrlBuilder(baseUrl, RESOURCE_TYPESDESC, <strong class="jxr_keyword">null</strong>);
<a name="293" href="#293">293</a>         downLink.addParameter(Constants.PARAM_TYPE_ID, typeId);
<a name="294" href="#294">294</a>         feed.writeDownLink(downLink.toString(), Constants.MEDIATYPE_DESCENDANTS);
<a name="295" href="#295">295</a> 
<a name="296" href="#296">296</a>         <strong class="jxr_keyword">if</strong> (parentTypeId != <strong class="jxr_keyword">null</strong>) {
<a name="297" href="#297">297</a>             feed.writeUpLink(compileUrl(baseUrl, RESOURCE_TYPE, parentTypeId), Constants.MEDIATYPE_ENTRY);
<a name="298" href="#298">298</a>         }
<a name="299" href="#299">299</a> 
<a name="300" href="#300">300</a>         <em class="jxr_comment">// write paging links</em>
<a name="301" href="#301">301</a>         UrlBuilder pagingUrl = compileUrlBuilder(baseUrl, RESOURCE_TYPES, <strong class="jxr_keyword">null</strong>);
<a name="302" href="#302">302</a>         pagingUrl.addParameter(Constants.PARAM_TYPE_ID, typeId);
<a name="303" href="#303">303</a>         pagingUrl.addParameter(Constants.PARAM_PROPERTY_DEFINITIONS, includePropertyDefinitions);
<a name="304" href="#304">304</a>         feed.writePagingLinks(pagingUrl, maxItems, skipCount, numItems, hasMoreItems, PAGE_SIZE);
<a name="305" href="#305">305</a> 
<a name="306" href="#306">306</a>         <em class="jxr_comment">// write collection</em>
<a name="307" href="#307">307</a>         UrlBuilder collectionUrl = compileUrlBuilder(baseUrl, RESOURCE_TYPES, <strong class="jxr_keyword">null</strong>);
<a name="308" href="#308">308</a>         collectionUrl.addParameter(Constants.PARAM_TYPE_ID, typeId);
<a name="309" href="#309">309</a>         feed.writeCollection(collectionUrl.toString(), <strong class="jxr_keyword">null</strong>, <span class="jxr_string">"Types Collection"</span>, <span class="jxr_string">""</span>);
<a name="310" href="#310">310</a> 
<a name="311" href="#311">311</a>         <em class="jxr_comment">// write type entries</em>
<a name="312" href="#312">312</a>         <strong class="jxr_keyword">if</strong> ((typeList != <strong class="jxr_keyword">null</strong>) &amp;&amp; (typeList.getList() != <strong class="jxr_keyword">null</strong>)) {
<a name="313" href="#313">313</a>             <a href="../../../../../../../org/apache/chemistry/opencmis/server/impl/atompub/AtomEntry.html">AtomEntry</a> entry = <strong class="jxr_keyword">new</strong> <a href="../../../../../../../org/apache/chemistry/opencmis/server/impl/atompub/AtomEntry.html">AtomEntry</a>(feed.getWriter());
<a name="314" href="#314">314</a>             <strong class="jxr_keyword">for</strong> (TypeDefinition type : typeList.getList()) {
<a name="315" href="#315">315</a>                 writeTypeEntry(entry, type, <strong class="jxr_keyword">null</strong>, repositoryId, baseUrl, false);
<a name="316" href="#316">316</a>             }
<a name="317" href="#317">317</a>         }
<a name="318" href="#318">318</a> 
<a name="319" href="#319">319</a>         <em class="jxr_comment">// we are done</em>
<a name="320" href="#320">320</a>         feed.endFeed();
<a name="321" href="#321">321</a>         feed.endDocument();
<a name="322" href="#322">322</a>     }
<a name="323" href="#323">323</a> 
<a name="324" href="#324">324</a>     <em class="jxr_javadoccomment">/**</em>
<a name="325" href="#325">325</a> <em class="jxr_javadoccomment">     * Renders a type descendants feed.</em>
<a name="326" href="#326">326</a> <em class="jxr_javadoccomment">     */</em>
<a name="327" href="#327">327</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> getTypeDescendants(CallContext context, CmisService service, String repositoryId,
<a name="328" href="#328">328</a>             HttpServletRequest request, HttpServletResponse response) <strong class="jxr_keyword">throws</strong> Exception {
<a name="329" href="#329">329</a>         <em class="jxr_comment">// get parameters</em>
<a name="330" href="#330">330</a>         String typeId = getStringParameter(request, Constants.PARAM_TYPE_ID);
<a name="331" href="#331">331</a>         BigInteger depth = getBigIntegerParameter(request, Constants.PARAM_DEPTH);
<a name="332" href="#332">332</a>         <strong class="jxr_keyword">boolean</strong> includePropertyDefinitions = getBooleanParameter(request, Constants.PARAM_PROPERTY_DEFINITIONS, false);
<a name="333" href="#333">333</a> 
<a name="334" href="#334">334</a>         <em class="jxr_comment">// execute</em>
<a name="335" href="#335">335</a>         List&lt;TypeDefinitionContainer&gt; typeTree = service.getTypeDescendants(repositoryId, typeId, depth,
<a name="336" href="#336">336</a>                 includePropertyDefinitions, <strong class="jxr_keyword">null</strong>);
<a name="337" href="#337">337</a> 
<a name="338" href="#338">338</a>         String parentTypeId = <strong class="jxr_keyword">null</strong>;
<a name="339" href="#339">339</a>         String typeName = <span class="jxr_string">"Type Children"</span>;
<a name="340" href="#340">340</a> 
<a name="341" href="#341">341</a>         <em class="jxr_comment">// in order to get the parent type, we need the type definition of this</em>
<a name="342" href="#342">342</a>         <em class="jxr_comment">// type as well</em>
<a name="343" href="#343">343</a>         <strong class="jxr_keyword">if</strong> (typeId != <strong class="jxr_keyword">null</strong>) {
<a name="344" href="#344">344</a>             TypeDefinition typeDefinition = service.getTypeDefinition(repositoryId, typeId, <strong class="jxr_keyword">null</strong>);
<a name="345" href="#345">345</a> 
<a name="346" href="#346">346</a>             parentTypeId = (typeDefinition == <strong class="jxr_keyword">null</strong> ? <strong class="jxr_keyword">null</strong> : typeDefinition.getParentTypeId());
<a name="347" href="#347">347</a>             typeName = (typeDefinition == <strong class="jxr_keyword">null</strong> ? typeId : typeDefinition.getDisplayName());
<a name="348" href="#348">348</a>         }
<a name="349" href="#349">349</a> 
<a name="350" href="#350">350</a>         <em class="jxr_comment">// write XML</em>
<a name="351" href="#351">351</a>         response.setStatus(HttpServletResponse.SC_OK);
<a name="352" href="#352">352</a>         response.setContentType(Constants.MEDIATYPE_FEED);
<a name="353" href="#353">353</a> 
<a name="354" href="#354">354</a>         <a href="../../../../../../../org/apache/chemistry/opencmis/server/impl/atompub/AtomFeed.html">AtomFeed</a> feed = <strong class="jxr_keyword">new</strong> <a href="../../../../../../../org/apache/chemistry/opencmis/server/impl/atompub/AtomFeed.html">AtomFeed</a>();
<a name="355" href="#355">355</a>         feed.startDocument(response.getOutputStream());
<a name="356" href="#356">356</a>         feed.startFeed(<strong class="jxr_keyword">true</strong>);
<a name="357" href="#357">357</a> 
<a name="358" href="#358">358</a>         <em class="jxr_comment">// write basic Atom feed elements</em>
<a name="359" href="#359">359</a>         feed.writeFeedElements(typeId, TYPE_AUTHOR, typeName, <strong class="jxr_keyword">new</strong> GregorianCalendar(), <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>);
<a name="360" href="#360">360</a> 
<a name="361" href="#361">361</a>         <em class="jxr_comment">// write links</em>
<a name="362" href="#362">362</a>         UrlBuilder baseUrl = compileBaseUrl(request, repositoryId);
<a name="363" href="#363">363</a> 
<a name="364" href="#364">364</a>         feed.writeServiceLink(baseUrl.toString(), repositoryId);
<a name="365" href="#365">365</a> 
<a name="366" href="#366">366</a>         UrlBuilder selfLink = compileUrlBuilder(baseUrl, RESOURCE_TYPESDESC, <strong class="jxr_keyword">null</strong>);
<a name="367" href="#367">367</a>         selfLink.addParameter(Constants.PARAM_TYPE_ID, typeId);
<a name="368" href="#368">368</a>         selfLink.addParameter(Constants.PARAM_DEPTH, depth);
<a name="369" href="#369">369</a>         selfLink.addParameter(Constants.PARAM_PROPERTY_DEFINITIONS, includePropertyDefinitions);
<a name="370" href="#370">370</a>         feed.writeSelfLink(selfLink.toString(), typeId);
<a name="371" href="#371">371</a> 
<a name="372" href="#372">372</a>         feed.writeViaLink(compileUrl(baseUrl, RESOURCE_TYPE, typeId));
<a name="373" href="#373">373</a> 
<a name="374" href="#374">374</a>         UrlBuilder downLink = compileUrlBuilder(baseUrl, RESOURCE_TYPES, <strong class="jxr_keyword">null</strong>);
<a name="375" href="#375">375</a>         downLink.addParameter(Constants.PARAM_TYPE_ID, typeId);
<a name="376" href="#376">376</a>         feed.writeDownLink(downLink.toString(), Constants.MEDIATYPE_FEED);
<a name="377" href="#377">377</a> 
<a name="378" href="#378">378</a>         <strong class="jxr_keyword">if</strong> (parentTypeId != <strong class="jxr_keyword">null</strong>) {
<a name="379" href="#379">379</a>             feed.writeUpLink(compileUrl(baseUrl, RESOURCE_TYPE, parentTypeId), Constants.MEDIATYPE_ENTRY);
<a name="380" href="#380">380</a>         }
<a name="381" href="#381">381</a> 
<a name="382" href="#382">382</a>         <em class="jxr_comment">// write tree</em>
<a name="383" href="#383">383</a>         <strong class="jxr_keyword">if</strong> (typeTree != <strong class="jxr_keyword">null</strong>) {
<a name="384" href="#384">384</a>             <a href="../../../../../../../org/apache/chemistry/opencmis/server/impl/atompub/AtomEntry.html">AtomEntry</a> entry = <strong class="jxr_keyword">new</strong> <a href="../../../../../../../org/apache/chemistry/opencmis/server/impl/atompub/AtomEntry.html">AtomEntry</a>(feed.getWriter());
<a name="385" href="#385">385</a> 
<a name="386" href="#386">386</a>             <strong class="jxr_keyword">for</strong> (TypeDefinitionContainer container : typeTree) {
<a name="387" href="#387">387</a>                 <strong class="jxr_keyword">if</strong> ((container != <strong class="jxr_keyword">null</strong>) &amp;&amp; (container.getTypeDefinition() != <strong class="jxr_keyword">null</strong>)) {
<a name="388" href="#388">388</a>                     writeTypeEntry(entry, container.getTypeDefinition(), container.getChildren(), repositoryId,
<a name="389" href="#389">389</a>                             baseUrl, false);
<a name="390" href="#390">390</a>                 }
<a name="391" href="#391">391</a>             }
<a name="392" href="#392">392</a>         }
<a name="393" href="#393">393</a> 
<a name="394" href="#394">394</a>         <em class="jxr_comment">// we are done</em>
<a name="395" href="#395">395</a>         feed.endFeed();
<a name="396" href="#396">396</a>         feed.endDocument();
<a name="397" href="#397">397</a>     }
<a name="398" href="#398">398</a> 
<a name="399" href="#399">399</a>     <em class="jxr_javadoccomment">/**</em>
<a name="400" href="#400">400</a> <em class="jxr_javadoccomment">     * Renders a type definition.</em>
<a name="401" href="#401">401</a> <em class="jxr_javadoccomment">     */</em>
<a name="402" href="#402">402</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> getTypeDefinition(CallContext context, CmisService service, String repositoryId,
<a name="403" href="#403">403</a>             HttpServletRequest request, HttpServletResponse response) <strong class="jxr_keyword">throws</strong> Exception {
<a name="404" href="#404">404</a>         <em class="jxr_comment">// get parameters</em>
<a name="405" href="#405">405</a>         String typeId = getStringParameter(request, Constants.PARAM_ID);
<a name="406" href="#406">406</a> 
<a name="407" href="#407">407</a>         <em class="jxr_comment">// execute</em>
<a name="408" href="#408">408</a>         TypeDefinition type = service.getTypeDefinition(repositoryId, typeId, <strong class="jxr_keyword">null</strong>);
<a name="409" href="#409">409</a> 
<a name="410" href="#410">410</a>         <em class="jxr_comment">// write XML</em>
<a name="411" href="#411">411</a>         response.setStatus(HttpServletResponse.SC_OK);
<a name="412" href="#412">412</a>         response.setContentType(Constants.MEDIATYPE_ENTRY);
<a name="413" href="#413">413</a> 
<a name="414" href="#414">414</a>         <a href="../../../../../../../org/apache/chemistry/opencmis/server/impl/atompub/AtomEntry.html">AtomEntry</a> entry = <strong class="jxr_keyword">new</strong> <a href="../../../../../../../org/apache/chemistry/opencmis/server/impl/atompub/AtomEntry.html">AtomEntry</a>();
<a name="415" href="#415">415</a>         entry.startDocument(response.getOutputStream());
<a name="416" href="#416">416</a>         writeTypeEntry(entry, type, <strong class="jxr_keyword">null</strong>, repositoryId, compileBaseUrl(request, repositoryId), <strong class="jxr_keyword">true</strong>);
<a name="417" href="#417">417</a>         entry.endDocument();
<a name="418" href="#418">418</a>     }
<a name="419" href="#419">419</a> }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

