<!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>ContentTypeCacheLevelImpl 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.client.bindings.cache.impl;
<a name="20" href="#20">20</a>  
<a name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> java.util.Map;
<a name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> java.util.SortedMap;
<a name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> java.util.TreeMap;
<a name="24" href="#24">24</a>  
<a name="25" href="#25">25</a>  <em class="jxr_javadoccomment">/**</em>
<a name="26" href="#26">26</a>  <em class="jxr_javadoccomment"> * Content type cache.</em>
<a name="27" href="#27">27</a>  <em class="jxr_javadoccomment"> *</em>
<a name="28" href="#28">28</a>  <em class="jxr_javadoccomment"> * @author &lt;a href="<a href="mailto:fmueller@opentext.com" target="alexandria_uri">mailto:fmueller@opentext.com</a>"&gt;Florian M&amp;uuml;ller&lt;/a&gt;</em>
<a name="29" href="#29">29</a>  <em class="jxr_javadoccomment"> *</em>
<a name="30" href="#30">30</a>  <em class="jxr_javadoccomment"> */</em>
<a name="31" href="#31">31</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../../../../org/apache/chemistry/opencmis/client/bindings/cache/impl/ContentTypeCacheLevelImpl.html">ContentTypeCacheLevelImpl</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../../../../../org/apache/chemistry/opencmis/client/bindings/cache/impl/MapCacheLevelImpl.html">MapCacheLevelImpl</a> {
<a name="32" href="#32">32</a>  
<a name="33" href="#33">33</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> serialVersionUID = 1L;
<a name="34" href="#34">34</a>  
<a name="35" href="#35">35</a>      <em class="jxr_javadoccomment">/**</em>
<a name="36" href="#36">36</a>  <em class="jxr_javadoccomment">     * Constructor.</em>
<a name="37" href="#37">37</a>  <em class="jxr_javadoccomment">     */</em>
<a name="38" href="#38">38</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../../../../../org/apache/chemistry/opencmis/client/bindings/cache/impl/ContentTypeCacheLevelImpl.html">ContentTypeCacheLevelImpl</a>() {
<a name="39" href="#39">39</a>          enableKeyFallback(<strong class="jxr_keyword">null</strong>);
<a name="40" href="#40">40</a>      }
<a name="41" href="#41">41</a>  
<a name="42" href="#42">42</a>      @Override
<a name="43" href="#43">43</a>      <strong class="jxr_keyword">public</strong> Object get(String key) {
<a name="44" href="#44">44</a>          <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">super</strong>.get(normalize(key));
<a name="45" href="#45">45</a>      }
<a name="46" href="#46">46</a>  
<a name="47" href="#47">47</a>      @Override
<a name="48" href="#48">48</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> put(Object value, String key) {
<a name="49" href="#49">49</a>          <strong class="jxr_keyword">super</strong>.put(value, normalize(key));
<a name="50" href="#50">50</a>      }
<a name="51" href="#51">51</a>  
<a name="52" href="#52">52</a>      @Override
<a name="53" href="#53">53</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> remove(String key) {
<a name="54" href="#54">54</a>          <strong class="jxr_keyword">super</strong>.remove(normalize(key));
<a name="55" href="#55">55</a>      }
<a name="56" href="#56">56</a>  
<a name="57" href="#57">57</a>      <em class="jxr_javadoccomment">/**</em>
<a name="58" href="#58">58</a>  <em class="jxr_javadoccomment">     * Normalizes the key which should be a content type. It's quite simple at</em>
<a name="59" href="#59">59</a>  <em class="jxr_javadoccomment">     * the moment but should cover most cases.</em>
<a name="60" href="#60">60</a>  <em class="jxr_javadoccomment">     */</em>
<a name="61" href="#61">61</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> String normalize(String key) {
<a name="62" href="#62">62</a>          <strong class="jxr_keyword">if</strong> (key == <strong class="jxr_keyword">null</strong>) {
<a name="63" href="#63">63</a>              <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
<a name="64" href="#64">64</a>          }
<a name="65" href="#65">65</a>  
<a name="66" href="#66">66</a>          StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder();
<a name="67" href="#67">67</a>          <strong class="jxr_keyword">int</strong> parameterStart = 0;
<a name="68" href="#68">68</a>  
<a name="69" href="#69">69</a>          <em class="jxr_comment">// first, get the MIME type</em>
<a name="70" href="#70">70</a>          <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; key.length(); i++) {
<a name="71" href="#71">71</a>              <strong class="jxr_keyword">char</strong> c = key.charAt(i);
<a name="72" href="#72">72</a>  
<a name="73" href="#73">73</a>              <strong class="jxr_keyword">if</strong> (Character.isWhitespace(c)) {
<a name="74" href="#74">74</a>                  <strong class="jxr_keyword">continue</strong>;
<a name="75" href="#75">75</a>              } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (c == ';') {
<a name="76" href="#76">76</a>                  parameterStart = i;
<a name="77" href="#77">77</a>                  <strong class="jxr_keyword">break</strong>;
<a name="78" href="#78">78</a>              }
<a name="79" href="#79">79</a>  
<a name="80" href="#80">80</a>              sb.append(Character.toLowerCase(c));
<a name="81" href="#81">81</a>          }
<a name="82" href="#82">82</a>  
<a name="83" href="#83">83</a>          <em class="jxr_comment">// if parameters have been found, gather them</em>
<a name="84" href="#84">84</a>          <strong class="jxr_keyword">if</strong> (parameterStart &gt; 0) {
<a name="85" href="#85">85</a>              SortedMap&lt;String, String&gt; parameter = <strong class="jxr_keyword">new</strong> TreeMap&lt;String, String&gt;();
<a name="86" href="#86">86</a>              StringBuilder ksb = <strong class="jxr_keyword">new</strong> StringBuilder();
<a name="87" href="#87">87</a>              StringBuilder vsb = <strong class="jxr_keyword">new</strong> StringBuilder();
<a name="88" href="#88">88</a>              <strong class="jxr_keyword">boolean</strong> isKey = <strong class="jxr_keyword">true</strong>;
<a name="89" href="#89">89</a>  
<a name="90" href="#90">90</a>              <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = parameterStart + 1; i &lt; key.length(); i++) {
<a name="91" href="#91">91</a>                  <strong class="jxr_keyword">char</strong> c = key.charAt(i);
<a name="92" href="#92">92</a>                  <strong class="jxr_keyword">if</strong> (Character.isWhitespace(c)) {
<a name="93" href="#93">93</a>                      <strong class="jxr_keyword">continue</strong>;
<a name="94" href="#94">94</a>                  }
<a name="95" href="#95">95</a>  
<a name="96" href="#96">96</a>                  <strong class="jxr_keyword">if</strong> (isKey) {
<a name="97" href="#97">97</a>                      <strong class="jxr_keyword">if</strong> (c == '=') {
<a name="98" href="#98">98</a>                          <em class="jxr_comment">// value start</em>
<a name="99" href="#99">99</a>                          isKey = false;
<a name="100" href="#100">100</a>                         <strong class="jxr_keyword">continue</strong>;
<a name="101" href="#101">101</a>                     }
<a name="102" href="#102">102</a> 
<a name="103" href="#103">103</a>                     ksb.append(Character.toLowerCase(c));
<a name="104" href="#104">104</a>                 } <strong class="jxr_keyword">else</strong> {
<a name="105" href="#105">105</a>                     <strong class="jxr_keyword">if</strong> (c == ';') {
<a name="106" href="#106">106</a>                         <em class="jxr_comment">// next key</em>
<a name="107" href="#107">107</a>                         isKey = <strong class="jxr_keyword">true</strong>;
<a name="108" href="#108">108</a> 
<a name="109" href="#109">109</a>                         parameter.put(ksb.toString(), vsb.toString());
<a name="110" href="#110">110</a> 
<a name="111" href="#111">111</a>                         ksb = <strong class="jxr_keyword">new</strong> StringBuilder();
<a name="112" href="#112">112</a>                         vsb = <strong class="jxr_keyword">new</strong> StringBuilder();
<a name="113" href="#113">113</a> 
<a name="114" href="#114">114</a>                         <strong class="jxr_keyword">continue</strong>;
<a name="115" href="#115">115</a>                     } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (c == '&quot;') {
<a name="116" href="#116">116</a>                         <em class="jxr_comment">// filter quotes</em>
<a name="117" href="#117">117</a>                         <strong class="jxr_keyword">continue</strong>;
<a name="118" href="#118">118</a>                     }
<a name="119" href="#119">119</a> 
<a name="120" href="#120">120</a>                     vsb.append(Character.toLowerCase(c));
<a name="121" href="#121">121</a>                 }
<a name="122" href="#122">122</a>             }
<a name="123" href="#123">123</a> 
<a name="124" href="#124">124</a>             <em class="jxr_comment">// add last parameter</em>
<a name="125" href="#125">125</a>             <strong class="jxr_keyword">if</strong> (ksb.length() &gt; 0) {
<a name="126" href="#126">126</a>                 parameter.put(ksb.toString(), vsb.toString());
<a name="127" href="#127">127</a>             }
<a name="128" href="#128">128</a> 
<a name="129" href="#129">129</a>             <em class="jxr_comment">// write parameters sorted by key</em>
<a name="130" href="#130">130</a>             <strong class="jxr_keyword">for</strong> (Map.Entry&lt;String, String&gt; entry : parameter.entrySet()) {
<a name="131" href="#131">131</a>                 sb.append(<span class="jxr_string">";"</span>);
<a name="132" href="#132">132</a>                 sb.append(entry.getKey());
<a name="133" href="#133">133</a>                 sb.append(<span class="jxr_string">"="</span>);
<a name="134" href="#134">134</a>                 sb.append(entry.getValue());
<a name="135" href="#135">135</a>             }
<a name="136" href="#136">136</a>         }
<a name="137" href="#137">137</a> 
<a name="138" href="#138">138</a>         <strong class="jxr_keyword">return</strong> sb.toString();
<a name="139" href="#139">139</a>     }
<a name="140" href="#140">140</a> }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

