<!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>ConfiguratorTest 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.mapper;
<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.junit.Assert.assertEquals;
<a name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.junit.Assert.assertNotNull;
<a name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.junit.Assert.assertNull;
<a name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.junit.Assert.assertTrue;
<a name="25" href="#25">25</a>  
<a name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> java.util.Properties;
<a name="27" href="#27">27</a>  
<a name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.client.parser.MetadataParser;
<a name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.client.parser.MetadataParserExif;
<a name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.chemistry.opencmis.client.parser.MetadataParserTika;
<a name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.commons.logging.Log;
<a name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.commons.logging.LogFactory;
<a name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.junit.After;
<a name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.junit.Before;
<a name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.junit.Test;
<a name="36" href="#36">36</a>  
<a name="37" href="#37">37</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../../org/apache/chemistry/opencmis/client/mapper/ConfiguratorTest.html">ConfiguratorTest</a> {
<a name="38" href="#38">38</a>  
<a name="39" href="#39">39</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Log LOG = LogFactory.getLog(ConfiguratorTest.<strong class="jxr_keyword">class</strong>.getName());
<a name="40" href="#40">40</a>      Properties properties;
<a name="41" href="#41">41</a>      
<a name="42" href="#42">42</a>      @Before
<a name="43" href="#43">43</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setUp() <strong class="jxr_keyword">throws</strong> Exception {
<a name="44" href="#44">44</a>          properties = <strong class="jxr_keyword">new</strong> Properties();  
<a name="45" href="#45">45</a>          properties.setProperty(Configurator.PREFIX + <span class="jxr_string">"s"</span>, <span class="jxr_string">"image, audio"</span>);  
<a name="46" href="#46">46</a>          
<a name="47" href="#47">47</a>          properties.setProperty(Configurator.PREFIX + <span class="jxr_string">".audio.typeId"</span>, <span class="jxr_string">"apache:audio"</span>);
<a name="48" href="#48">48</a>          properties.setProperty(Configurator.PREFIX + <span class="jxr_string">".audio"</span>, <span class="jxr_string">"audio/mp3"</span>);  
<a name="49" href="#49">49</a>          properties.setProperty(Configurator.PREFIX + <span class="jxr_string">".audio.class"</span>, <span class="jxr_string">"TikaPropertyMapper.class"</span>);  
<a name="50" href="#50">50</a>          properties.setProperty(Configurator.PREFIX + <span class="jxr_string">".audio.id.artist"</span>, <span class="jxr_string">"artist"</span>);  
<a name="51" href="#51">51</a>          properties.setProperty(Configurator.PREFIX + <span class="jxr_string">".audio.id.album"</span>, <span class="jxr_string">"album"</span>);  
<a name="52" href="#52">52</a>          properties.setProperty(Configurator.PREFIX + <span class="jxr_string">".audio.id.title"</span>, <span class="jxr_string">"title"</span>);  
<a name="53" href="#53">53</a>          properties.setProperty(Configurator.PREFIX + <span class="jxr_string">".audio.mapperClass"</span>,
<a name="54" href="#54">54</a>                  <span class="jxr_string">"org.apache.chemistry.opencmis.client.mapper.PropertyMapperTika"</span>);
<a name="55" href="#55">55</a>          properties.setProperty(Configurator.PREFIX + <span class="jxr_string">".audio.parserClass"</span>,
<a name="56" href="#56">56</a>                  <span class="jxr_string">"org.apache.chemistry.opencmis.client.parser.MetadataParserTika"</span>);
<a name="57" href="#57">57</a>  
<a name="58" href="#58">58</a>          properties.setProperty(Configurator.PREFIX + <span class="jxr_string">".image"</span>, <span class="jxr_string">"image/jpeg"</span>);  
<a name="59" href="#59">59</a>          properties.setProperty(Configurator.PREFIX + <span class="jxr_string">".image.typeId"</span>, <span class="jxr_string">"apache:image"</span>);
<a name="60" href="#60">60</a>          properties.setProperty(Configurator.PREFIX + <span class="jxr_string">".image.id.model"</span>, <span class="jxr_string">"model"</span>);
<a name="61" href="#61">61</a>          properties.setProperty(Configurator.PREFIX + <span class="jxr_string">".image.id.imageWidth"</span>, <span class="jxr_string">"width"</span>);
<a name="62" href="#62">62</a>          properties.setProperty(Configurator.PREFIX + <span class="jxr_string">".image.id.imageHeight"</span>, <span class="jxr_string">"height"</span>);
<a name="63" href="#63">63</a>          properties.setProperty(Configurator.PREFIX + <span class="jxr_string">".image.mapperClass"</span>,
<a name="64" href="#64">64</a>                  <span class="jxr_string">"org.apache.chemistry.opencmis.client.mapper.PropertyMapperTika"</span>);
<a name="65" href="#65">65</a>          properties.setProperty(Configurator.PREFIX + <span class="jxr_string">".image.parserClass"</span>,
<a name="66" href="#66">66</a>                  <span class="jxr_string">"org.apache.chemistry.opencmis.client.parser.MetadataParserExif"</span>);
<a name="67" href="#67">67</a>      }
<a name="68" href="#68">68</a>  
<a name="69" href="#69">69</a>      @After
<a name="70" href="#70">70</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> tearDown() <strong class="jxr_keyword">throws</strong> Exception {
<a name="71" href="#71">71</a>      }
<a name="72" href="#72">72</a>  
<a name="73" href="#73">73</a>      @Test
<a name="74" href="#74">74</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong>  testLoad() {
<a name="75" href="#75">75</a>          Configurator cfg = <strong class="jxr_keyword">new</strong> Configurator(properties);        
<a name="76" href="#76">76</a>          assertTrue(cfg.getProperties().size() &gt; 0);
<a name="77" href="#77">77</a>      }
<a name="78" href="#78">78</a>      
<a name="79" href="#79">79</a>      @Test
<a name="80" href="#80">80</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong>  testGetTypes() {
<a name="81" href="#81">81</a>          Configurator cfg = <strong class="jxr_keyword">new</strong> Configurator(properties);        
<a name="82" href="#82">82</a>          String[] types = cfg.getTypeKeys();
<a name="83" href="#83">83</a>          assertEquals(2, types.length);
<a name="84" href="#84">84</a>          assertEquals(<span class="jxr_string">"image"</span>, types[0]);
<a name="85" href="#85">85</a>          assertEquals(<span class="jxr_string">"audio"</span>, types[1]);
<a name="86" href="#86">86</a>      }
<a name="87" href="#87">87</a>  
<a name="88" href="#88">88</a>      @Test
<a name="89" href="#89">89</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong>  testLoadClass() {
<a name="90" href="#90">90</a>          Configurator cfg = <strong class="jxr_keyword">new</strong> Configurator(properties);
<a name="91" href="#91">91</a>          PropertyMapper mapper = cfg.loadMapperClass(<span class="jxr_string">"image"</span>);
<a name="92" href="#92">92</a>          assertNotNull(mapper);
<a name="93" href="#93">93</a>      }
<a name="94" href="#94">94</a>      
<a name="95" href="#95">95</a>      @Test
<a name="96" href="#96">96</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testLoadMaps() {
<a name="97" href="#97">97</a>          PropertyMapperTika mapper = <strong class="jxr_keyword">new</strong> PropertyMapperTika();
<a name="98" href="#98">98</a>          String typeKey = <span class="jxr_string">"image"</span>;
<a name="99" href="#99">99</a>          String contentType = <span class="jxr_string">"image/jpeg"</span>;
<a name="100" href="#100">100</a>         assertTrue(mapper.initialize(Configurator.PREFIX, typeKey, properties));
<a name="101" href="#101">101</a>         mapper.buildIdMap(typeKey, properties);
<a name="102" href="#102">102</a>         assertEquals(3, mapper.getSize());
<a name="103" href="#103">103</a>         assertEquals(contentType, mapper.getContentTypes()[0]);
<a name="104" href="#104">104</a>         assertEquals(<span class="jxr_string">"apache:image"</span>, mapper.getMappedTypeId());
<a name="105" href="#105">105</a>         assertEquals(<span class="jxr_string">"model"</span>, mapper.getMappedPropertyId(<span class="jxr_string">"model"</span>));
<a name="106" href="#106">106</a>         assertEquals(<span class="jxr_string">"width"</span>, mapper.getMappedPropertyId(<span class="jxr_string">"imageWidth"</span>));
<a name="107" href="#107">107</a>         assertEquals(<span class="jxr_string">"height"</span>, mapper.getMappedPropertyId(<span class="jxr_string">"imageHeight"</span>));
<a name="108" href="#108">108</a>         
<a name="109" href="#109">109</a>         mapper = <strong class="jxr_keyword">new</strong> PropertyMapperTika();
<a name="110" href="#110">110</a>         typeKey = <span class="jxr_string">"audio"</span>;
<a name="111" href="#111">111</a>         contentType = <span class="jxr_string">"audio/mp3"</span>;
<a name="112" href="#112">112</a>         assertTrue(mapper.initialize(Configurator.PREFIX, typeKey, properties));
<a name="113" href="#113">113</a>         mapper.buildIdMap(typeKey, properties);
<a name="114" href="#114">114</a>         assertEquals(3, mapper.getSize());
<a name="115" href="#115">115</a>         assertEquals(contentType, mapper.getContentTypes()[0]);
<a name="116" href="#116">116</a>         assertEquals(<span class="jxr_string">"apache:audio"</span>, mapper.getMappedTypeId());
<a name="117" href="#117">117</a>         assertEquals(<span class="jxr_string">"artist"</span>, mapper.getMappedPropertyId(<span class="jxr_string">"artist"</span>));
<a name="118" href="#118">118</a>         assertEquals(<span class="jxr_string">"album"</span>, mapper.getMappedPropertyId(<span class="jxr_string">"album"</span>));
<a name="119" href="#119">119</a>         assertEquals(<span class="jxr_string">"title"</span>, mapper.getMappedPropertyId(<span class="jxr_string">"title"</span>));
<a name="120" href="#120">120</a>     }
<a name="121" href="#121">121</a>     
<a name="122" href="#122">122</a>     @Test
<a name="123" href="#123">123</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testBuildMapperMap() {
<a name="124" href="#124">124</a>         Configurator cfg = <strong class="jxr_keyword">new</strong> Configurator(properties);
<a name="125" href="#125">125</a>         cfg.buildMapperMap();
<a name="126" href="#126">126</a>         cfg.createParsers();
<a name="127" href="#127">127</a>         PropertyMapper mapper = cfg.getPropertyMapper(<span class="jxr_string">"image/jpeg"</span>);
<a name="128" href="#128">128</a>         assertNotNull(mapper);
<a name="129" href="#129">129</a>         assertEquals(<span class="jxr_string">"model"</span>, mapper.getMappedPropertyId(<span class="jxr_string">"model"</span>));
<a name="130" href="#130">130</a>         assertEquals(<span class="jxr_string">"width"</span>, mapper.getMappedPropertyId(<span class="jxr_string">"imageWidth"</span>));
<a name="131" href="#131">131</a>         assertEquals(<span class="jxr_string">"height"</span>, mapper.getMappedPropertyId(<span class="jxr_string">"imageHeight"</span>));
<a name="132" href="#132">132</a>         assertNull(mapper.getMappedPropertyId(<span class="jxr_string">"artist"</span>));
<a name="133" href="#133">133</a>         
<a name="134" href="#134">134</a>         mapper = cfg.getPropertyMapper(<span class="jxr_string">"audio/mp3"</span>);
<a name="135" href="#135">135</a>         assertNotNull(mapper);
<a name="136" href="#136">136</a>         assertEquals(<span class="jxr_string">"artist"</span>, mapper.getMappedPropertyId(<span class="jxr_string">"artist"</span>));
<a name="137" href="#137">137</a>         assertEquals(<span class="jxr_string">"album"</span>, mapper.getMappedPropertyId(<span class="jxr_string">"album"</span>));
<a name="138" href="#138">138</a>         assertEquals(<span class="jxr_string">"title"</span>, mapper.getMappedPropertyId(<span class="jxr_string">"title"</span>));
<a name="139" href="#139">139</a>         assertNull(mapper.getMappedPropertyId(<span class="jxr_string">"model"</span>));
<a name="140" href="#140">140</a>     }
<a name="141" href="#141">141</a>     
<a name="142" href="#142">142</a>     @Test
<a name="143" href="#143">143</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testParserMap() {
<a name="144" href="#144">144</a>         Configurator cfg = <strong class="jxr_keyword">new</strong> Configurator(properties);
<a name="145" href="#145">145</a>         cfg.buildMapperMap();
<a name="146" href="#146">146</a>         cfg.createParsers();
<a name="147" href="#147">147</a>         MetadataParser parser = cfg.getParser(<span class="jxr_string">"image/jpeg"</span>);
<a name="148" href="#148">148</a>         assertNotNull(parser);
<a name="149" href="#149">149</a>         assertEquals(MetadataParserExif.<strong class="jxr_keyword">class</strong>, parser.getClass());
<a name="150" href="#150">150</a>         
<a name="151" href="#151">151</a>         parser = cfg.getParser(<span class="jxr_string">"audio/mp3"</span>);
<a name="152" href="#152">152</a>         assertNotNull(parser);
<a name="153" href="#153">153</a>         assertEquals(MetadataParserTika.<strong class="jxr_keyword">class</strong>, parser.getClass());
<a name="154" href="#154">154</a>     }
<a name="155" href="#155">155</a> 
<a name="156" href="#156">156</a>     @Test
<a name="157" href="#157">157</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testParseContentTypeConfiguration() {
<a name="158" href="#158">158</a>         String typeId = <span class="jxr_string">"apache:image"</span>;
<a name="159" href="#159">159</a>         properties = <strong class="jxr_keyword">new</strong> Properties();  
<a name="160" href="#160">160</a>         properties.setProperty(Configurator.PREFIX + <span class="jxr_string">"s"</span>, <span class="jxr_string">"image"</span>);          
<a name="161" href="#161">161</a>         properties.setProperty(Configurator.PREFIX + <span class="jxr_string">".image"</span>, <span class="jxr_string">"image/jpeg"</span>);  
<a name="162" href="#162">162</a>         properties.setProperty(Configurator.PREFIX + <span class="jxr_string">".image.typeId"</span>, typeId);
<a name="163" href="#163">163</a>         Configurator cfg = <strong class="jxr_keyword">new</strong> Configurator(properties);
<a name="164" href="#164">164</a>         cfg.buildMapperMap();
<a name="165" href="#165">165</a>         cfg.createParsers();
<a name="166" href="#166">166</a>         assertNotNull(cfg.getParser(<span class="jxr_string">"image/jpeg"</span>));
<a name="167" href="#167">167</a>         assertEquals(typeId, cfg.getParser(<span class="jxr_string">"image/jpeg"</span>).getMappedTypeId());
<a name="168" href="#168">168</a>         assertNull(cfg.getParser(<span class="jxr_string">"audio/mp3"</span>));
<a name="169" href="#169">169</a>         assertNull(cfg.getParser(<span class="jxr_string">"image/x-something"</span>));
<a name="170" href="#170">170</a>         
<a name="171" href="#171">171</a>         properties.setProperty(Configurator.PREFIX + <span class="jxr_string">".image"</span>, <span class="jxr_string">"image/jpeg : image/tiff:image/png"</span>);  
<a name="172" href="#172">172</a>         cfg = <strong class="jxr_keyword">new</strong> Configurator(properties);
<a name="173" href="#173">173</a>         cfg.buildMapperMap();
<a name="174" href="#174">174</a>         cfg.createParsers();
<a name="175" href="#175">175</a>         assertNotNull(cfg.getParser(<span class="jxr_string">"image/jpeg"</span>));
<a name="176" href="#176">176</a>         assertNotNull(cfg.getParser(<span class="jxr_string">"image/tiff"</span>));
<a name="177" href="#177">177</a>         assertNotNull(cfg.getParser(<span class="jxr_string">"image/png"</span>));
<a name="178" href="#178">178</a>         assertEquals(typeId, cfg.getParser(<span class="jxr_string">"image/jpeg"</span>).getMappedTypeId());
<a name="179" href="#179">179</a>         assertEquals(typeId, cfg.getParser(<span class="jxr_string">"image/tiff"</span>).getMappedTypeId());
<a name="180" href="#180">180</a>         assertEquals(typeId, cfg.getParser(<span class="jxr_string">"image/png"</span>).getMappedTypeId());
<a name="181" href="#181">181</a>         assertNull(cfg.getParser(<span class="jxr_string">"audio/mp3"</span>));
<a name="182" href="#182">182</a>         assertNull(cfg.getParser(<span class="jxr_string">"image/x-something"</span>));
<a name="183" href="#183">183</a>         
<a name="184" href="#184">184</a>         properties.setProperty(Configurator.PREFIX + <span class="jxr_string">".image"</span>, <span class="jxr_string">"image/*:audio/mpeg:audio/ogg"</span>);  
<a name="185" href="#185">185</a>         cfg = <strong class="jxr_keyword">new</strong> Configurator(properties);
<a name="186" href="#186">186</a>         cfg.buildMapperMap();
<a name="187" href="#187">187</a>         cfg.createParsers();
<a name="188" href="#188">188</a>         assertNotNull(cfg.getParser(<span class="jxr_string">"image/jpeg"</span>));
<a name="189" href="#189">189</a>         assertEquals(typeId, cfg.getParser(<span class="jxr_string">"image/jpeg"</span>).getMappedTypeId());
<a name="190" href="#190">190</a>         assertNotNull(cfg.getParser(<span class="jxr_string">"image/tiff"</span>));
<a name="191" href="#191">191</a>         assertEquals(typeId, cfg.getParser(<span class="jxr_string">"image/tiff"</span>).getMappedTypeId());
<a name="192" href="#192">192</a>         assertNotNull(cfg.getParser(<span class="jxr_string">"image/png"</span>));
<a name="193" href="#193">193</a>         assertEquals(typeId, cfg.getParser(<span class="jxr_string">"image/png"</span>).getMappedTypeId());
<a name="194" href="#194">194</a>         assertNotNull(cfg.getParser(<span class="jxr_string">"image/x-something"</span>));
<a name="195" href="#195">195</a>         assertEquals(typeId, cfg.getParser(<span class="jxr_string">"image/x-something"</span>).getMappedTypeId());
<a name="196" href="#196">196</a>         assertNotNull(cfg.getParser(<span class="jxr_string">"audio/mpeg"</span>));
<a name="197" href="#197">197</a>         assertEquals(typeId, cfg.getParser(<span class="jxr_string">"audio/mpeg"</span>).getMappedTypeId());
<a name="198" href="#198">198</a>         assertNotNull(cfg.getParser(<span class="jxr_string">"audio/ogg"</span>));
<a name="199" href="#199">199</a>         assertEquals(typeId, cfg.getParser(<span class="jxr_string">"audio/ogg"</span>).getMappedTypeId());
<a name="200" href="#200">200</a>         assertNull(cfg.getParser(<span class="jxr_string">"audio/mp3"</span>));
<a name="201" href="#201">201</a>         assertNull(cfg.getParser(<span class="jxr_string">"text/plain"</span>));
<a name="202" href="#202">202</a>     }
<a name="203" href="#203">203</a> }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

