This project has retired. For details please refer to its Attic page.
ConfiguratorTest xref

1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   * http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.apache.chemistry.opencmis.client.mapper;
20  
21  import static org.junit.Assert.assertEquals;
22  import static org.junit.Assert.assertNotNull;
23  import static org.junit.Assert.assertNull;
24  import static org.junit.Assert.assertTrue;
25  
26  import java.util.Properties;
27  
28  import org.apache.chemistry.opencmis.client.parser.MetadataParser;
29  import org.apache.chemistry.opencmis.client.parser.MetadataParserExif;
30  import org.apache.chemistry.opencmis.client.parser.MetadataParserTika;
31  import org.apache.commons.logging.Log;
32  import org.apache.commons.logging.LogFactory;
33  import org.junit.After;
34  import org.junit.Before;
35  import org.junit.Test;
36  
37  public class ConfiguratorTest {
38  
39      private static final Log LOG = LogFactory.getLog(ConfiguratorTest.class.getName());
40      Properties properties;
41      
42      @Before
43      public void setUp() throws Exception {
44          properties = new Properties();  
45          properties.setProperty(Configurator.PREFIX + "s", "image, audio");  
46          
47          properties.setProperty(Configurator.PREFIX + ".audio.typeId", "apache:audio");
48          properties.setProperty(Configurator.PREFIX + ".audio", "audio/mp3");  
49          properties.setProperty(Configurator.PREFIX + ".audio.class", "TikaPropertyMapper.class");  
50          properties.setProperty(Configurator.PREFIX + ".audio.id.artist", "artist");  
51          properties.setProperty(Configurator.PREFIX + ".audio.id.album", "album");  
52          properties.setProperty(Configurator.PREFIX + ".audio.id.title", "title");  
53          properties.setProperty(Configurator.PREFIX + ".audio.mapperClass",
54                  "org.apache.chemistry.opencmis.client.mapper.PropertyMapperTika");
55          properties.setProperty(Configurator.PREFIX + ".audio.parserClass",
56                  "org.apache.chemistry.opencmis.client.parser.MetadataParserTika");
57  
58          properties.setProperty(Configurator.PREFIX + ".image", "image/jpeg");  
59          properties.setProperty(Configurator.PREFIX + ".image.typeId", "apache:image");
60          properties.setProperty(Configurator.PREFIX + ".image.id.model", "model");
61          properties.setProperty(Configurator.PREFIX + ".image.id.imageWidth", "width");
62          properties.setProperty(Configurator.PREFIX + ".image.id.imageHeight", "height");
63          properties.setProperty(Configurator.PREFIX + ".image.mapperClass",
64                  "org.apache.chemistry.opencmis.client.mapper.PropertyMapperTika");
65          properties.setProperty(Configurator.PREFIX + ".image.parserClass",
66                  "org.apache.chemistry.opencmis.client.parser.MetadataParserExif");
67      }
68  
69      @After
70      public void tearDown() throws Exception {
71      }
72  
73      @Test
74      public void  testLoad() {
75          Configurator cfg = new Configurator(properties);        
76          assertTrue(cfg.getProperties().size() > 0);
77      }
78      
79      @Test
80      public void  testGetTypes() {
81          Configurator cfg = new Configurator(properties);        
82          String[] types = cfg.getTypeKeys();
83          assertEquals(2, types.length);
84          assertEquals("image", types[0]);
85          assertEquals("audio", types[1]);
86      }
87  
88      @Test
89      public void  testLoadClass() {
90          Configurator cfg = new Configurator(properties);
91          PropertyMapper mapper = cfg.loadMapperClass("image");
92          assertNotNull(mapper);
93      }
94      
95      @Test
96      public void testLoadMaps() {
97          PropertyMapperTika mapper = new PropertyMapperTika();
98          String typeKey = "image";
99          String contentType = "image/jpeg";
100         assertTrue(mapper.initialize(Configurator.PREFIX, typeKey, properties));
101         mapper.buildIdMap(typeKey, properties);
102         assertEquals(3, mapper.getSize());
103         assertEquals(contentType, mapper.getContentTypes()[0]);
104         assertEquals("apache:image", mapper.getMappedTypeId());
105         assertEquals("model", mapper.getMappedPropertyId("model"));
106         assertEquals("width", mapper.getMappedPropertyId("imageWidth"));
107         assertEquals("height", mapper.getMappedPropertyId("imageHeight"));
108         
109         mapper = new PropertyMapperTika();
110         typeKey = "audio";
111         contentType = "audio/mp3";
112         assertTrue(mapper.initialize(Configurator.PREFIX, typeKey, properties));
113         mapper.buildIdMap(typeKey, properties);
114         assertEquals(3, mapper.getSize());
115         assertEquals(contentType, mapper.getContentTypes()[0]);
116         assertEquals("apache:audio", mapper.getMappedTypeId());
117         assertEquals("artist", mapper.getMappedPropertyId("artist"));
118         assertEquals("album", mapper.getMappedPropertyId("album"));
119         assertEquals("title", mapper.getMappedPropertyId("title"));
120     }
121     
122     @Test
123     public void testBuildMapperMap() {
124         Configurator cfg = new Configurator(properties);
125         cfg.buildMapperMap();
126         cfg.createParsers();
127         PropertyMapper mapper = cfg.getPropertyMapper("image/jpeg");
128         assertNotNull(mapper);
129         assertEquals("model", mapper.getMappedPropertyId("model"));
130         assertEquals("width", mapper.getMappedPropertyId("imageWidth"));
131         assertEquals("height", mapper.getMappedPropertyId("imageHeight"));
132         assertNull(mapper.getMappedPropertyId("artist"));
133         
134         mapper = cfg.getPropertyMapper("audio/mp3");
135         assertNotNull(mapper);
136         assertEquals("artist", mapper.getMappedPropertyId("artist"));
137         assertEquals("album", mapper.getMappedPropertyId("album"));
138         assertEquals("title", mapper.getMappedPropertyId("title"));
139         assertNull(mapper.getMappedPropertyId("model"));
140     }
141     
142     @Test
143     public void testParserMap() {
144         Configurator cfg = new Configurator(properties);
145         cfg.buildMapperMap();
146         cfg.createParsers();
147         MetadataParser parser = cfg.getParser("image/jpeg");
148         assertNotNull(parser);
149         assertEquals(MetadataParserExif.class, parser.getClass());
150         
151         parser = cfg.getParser("audio/mp3");
152         assertNotNull(parser);
153         assertEquals(MetadataParserTika.class, parser.getClass());
154     }
155 
156     @Test
157     public void testParseContentTypeConfiguration() {
158         String typeId = "apache:image";
159         properties = new Properties();  
160         properties.setProperty(Configurator.PREFIX + "s", "image");          
161         properties.setProperty(Configurator.PREFIX + ".image", "image/jpeg");  
162         properties.setProperty(Configurator.PREFIX + ".image.typeId", typeId);
163         Configurator cfg = new Configurator(properties);
164         cfg.buildMapperMap();
165         cfg.createParsers();
166         assertNotNull(cfg.getParser("image/jpeg"));
167         assertEquals(typeId, cfg.getParser("image/jpeg").getMappedTypeId());
168         assertNull(cfg.getParser("audio/mp3"));
169         assertNull(cfg.getParser("image/x-something"));
170         
171         properties.setProperty(Configurator.PREFIX + ".image", "image/jpeg : image/tiff:image/png");  
172         cfg = new Configurator(properties);
173         cfg.buildMapperMap();
174         cfg.createParsers();
175         assertNotNull(cfg.getParser("image/jpeg"));
176         assertNotNull(cfg.getParser("image/tiff"));
177         assertNotNull(cfg.getParser("image/png"));
178         assertEquals(typeId, cfg.getParser("image/jpeg").getMappedTypeId());
179         assertEquals(typeId, cfg.getParser("image/tiff").getMappedTypeId());
180         assertEquals(typeId, cfg.getParser("image/png").getMappedTypeId());
181         assertNull(cfg.getParser("audio/mp3"));
182         assertNull(cfg.getParser("image/x-something"));
183         
184         properties.setProperty(Configurator.PREFIX + ".image", "image/*:audio/mpeg:audio/ogg");  
185         cfg = new Configurator(properties);
186         cfg.buildMapperMap();
187         cfg.createParsers();
188         assertNotNull(cfg.getParser("image/jpeg"));
189         assertEquals(typeId, cfg.getParser("image/jpeg").getMappedTypeId());
190         assertNotNull(cfg.getParser("image/tiff"));
191         assertEquals(typeId, cfg.getParser("image/tiff").getMappedTypeId());
192         assertNotNull(cfg.getParser("image/png"));
193         assertEquals(typeId, cfg.getParser("image/png").getMappedTypeId());
194         assertNotNull(cfg.getParser("image/x-something"));
195         assertEquals(typeId, cfg.getParser("image/x-something").getMappedTypeId());
196         assertNotNull(cfg.getParser("audio/mpeg"));
197         assertEquals(typeId, cfg.getParser("audio/mpeg").getMappedTypeId());
198         assertNotNull(cfg.getParser("audio/ogg"));
199         assertEquals(typeId, cfg.getParser("audio/ogg").getMappedTypeId());
200         assertNull(cfg.getParser("audio/mp3"));
201         assertNull(cfg.getParser("text/plain"));
202     }
203 }