Added: 
oodt/trunk/crawler/src/test/org/apache/oodt/cas/crawl/typedetection/TestMimeExtractorConfigReader.java
URL: 
http://svn.apache.org/viewvc/oodt/trunk/crawler/src/test/org/apache/oodt/cas/crawl/typedetection/TestMimeExtractorConfigReader.java?rev=1305745&view=auto
==============================================================================
--- 
oodt/trunk/crawler/src/test/org/apache/oodt/cas/crawl/typedetection/TestMimeExtractorConfigReader.java
 (added)
+++ 
oodt/trunk/crawler/src/test/org/apache/oodt/cas/crawl/typedetection/TestMimeExtractorConfigReader.java
 Tue Mar 27 06:49:13 2012
@@ -0,0 +1,160 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.oodt.cas.crawl.typedetection;
+
+//JDK imports
+import java.io.File;
+import java.util.List;
+import java.util.UUID;
+
+//Apache imports
+import org.apache.commons.io.FileUtils;
+
+//OODT imports
+import org.apache.oodt.cas.metadata.extractors.CopyAndRewriteExtractor;
+import org.apache.oodt.cas.metadata.extractors.MetReaderExtractor;
+import org.apache.oodt.cas.metadata.filenaming.PathUtilsNamingConvention;
+
+//Google imports
+import com.google.common.collect.Lists;
+
+//JUnit imports
+import junit.framework.TestCase;
+
+/**
+ * Test class for {@link MimeExtractorConfigReader}.
+ *
+ * @author bfoster (Brian Foster)
+ */
+public class TestMimeExtractorConfigReader extends TestCase {
+
+   private File mimeTypesFile;
+   private File defaultExtractorConfig;
+   private File tmpDir;
+
+   @Override
+   public void setUp() throws Exception {
+      File tmpFile = File.createTempFile("bogus", "bogus");
+      tmpDir = new File(tmpFile.getParentFile(), UUID.randomUUID().toString());
+      tmpFile.delete();
+      if (!tmpDir.mkdirs()) {
+         throw new Exception("Failed to create temp directory");
+      }
+      mimeTypesFile = new File(tmpDir, "mime-types.xml");
+      FileUtils.touch(mimeTypesFile);
+      defaultExtractorConfig = new File(tmpDir, 
"default-extractor.properties");
+      FileUtils.touch(defaultExtractorConfig);
+   }
+
+   @Override
+   public void tearDown() throws Exception {
+      FileUtils.forceDelete(tmpDir);
+   }
+
+   public void testReadWithDefaults() throws Exception {
+      String defaultPreconditionId = "TestPrecondition";
+      String preconditionId1 = "Precondition1";
+      String preconditionId2 = "Precondition2";
+      String xmlFileContents =
+           "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+         + "<cas:mimetypemap xmlns:cas=\"http://oodt.jpl.nassa.gov/1.0/cas\"";
+               + " magic=\"false\" mimeRepo=\""
+               + mimeTypesFile.getAbsolutePath() + "\">\n"
+         + "<default>\n"
+         + "   <namingConvention class=\""
+               + PathUtilsNamingConvention.class.getCanonicalName() + "\" />\n"
+         + "   <extractor class=\""
+               + CopyAndRewriteExtractor.class.getCanonicalName() + "\">\n"
+         + "      <config file=\"" + defaultExtractorConfig.getAbsolutePath()
+                     + "\"/>\n"
+         + "      <preCondComparators>\n"
+         + "         <preCondComparator id=\"" + defaultPreconditionId + 
"\"/>\n"
+         + "      </preCondComparators>\n"
+         + "   </extractor>\n"
+         + "</default>\n"
+         + "<mime type=\"some/mime-type\">\n"
+         + "   <extractor class=\""
+               + MetReaderExtractor.class.getCanonicalName() + "\">\n"
+         + "      <config file=\"" + defaultExtractorConfig.getAbsolutePath()
+                     + "\"/>\n"
+         + "      <preCondComparators>\n"
+         + "         <preCondComparator id=\"" + preconditionId1 + "\"/>\n"
+         + "         <preCondComparator id=\"" + preconditionId2 + "\"/>\n"
+         + "      </preCondComparators>\n"
+         + "   </extractor>\n"
+         + "</mime>\n"
+         + "</cas:mimetypemap>\n";
+      File xmlMimeRepo = new File(tmpDir, "mime-repo.xml");
+      FileUtils.writeStringToFile(xmlMimeRepo, xmlFileContents, "UTF-8");
+      assertTrue(xmlMimeRepo.exists());
+      MimeExtractorRepo mimeRepo = MimeExtractorConfigReader.read(
+            xmlMimeRepo.getAbsolutePath());
+      assertEquals(PathUtilsNamingConvention.class,
+            mimeRepo.getNamingConvention("some/mime-type").getClass());
+      List<MetExtractorSpec> specs = 
mimeRepo.getExtractorSpecsForMimeType("some/mime-type");
+      assertEquals(1, specs.size());
+      assertEquals(MetReaderExtractor.class,
+            specs.get(0).getMetExtractor().getClass());
+      assertEquals(Lists.newArrayList(preconditionId1, preconditionId2),
+            specs.get(0).getPreCondComparatorIds());
+      specs = mimeRepo.getExtractorSpecsForMimeType("someother/mime-type");
+      assertEquals(1, specs.size());
+      assertEquals(CopyAndRewriteExtractor.class,
+            specs.get(0).getMetExtractor().getClass());
+      assertEquals(Lists.newArrayList(defaultPreconditionId),
+            specs.get(0).getPreCondComparatorIds());
+   }
+
+   public void testReadWithoutDefaults() throws Exception {
+      String preconditionId1 = "Precondition1";
+      String preconditionId2 = "Precondition2";
+      String xmlFileContents =
+           "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+         + "<cas:mimetypemap xmlns:cas=\"http://oodt.jpl.nassa.gov/1.0/cas\"";
+               + " magic=\"false\" mimeRepo=\""
+               + mimeTypesFile.getAbsolutePath() + "\">\n"
+         + "<mime type=\"some/mime-type\">\n"
+         + "   <namingConvention class=\""
+                  + PathUtilsNamingConvention.class.getCanonicalName() + "\" 
/>\n"
+         + "   <extractor class=\""
+               + MetReaderExtractor.class.getCanonicalName() + "\">\n"
+         + "      <config file=\"" + defaultExtractorConfig.getAbsolutePath()
+                     + "\"/>\n"
+         + "      <preCondComparators>\n"
+         + "         <preCondComparator id=\"" + preconditionId1 + "\"/>\n"
+         + "         <preCondComparator id=\"" + preconditionId2 + "\"/>\n"
+         + "      </preCondComparators>\n"
+         + "   </extractor>\n"
+         + "</mime>\n"
+         + "</cas:mimetypemap>\n";
+      File xmlMimeRepo = new File(tmpDir, "mime-repo.xml");
+      FileUtils.writeStringToFile(xmlMimeRepo, xmlFileContents, "UTF-8");
+      assertTrue(xmlMimeRepo.exists());
+      MimeExtractorRepo mimeRepo = MimeExtractorConfigReader.read(
+            xmlMimeRepo.getAbsolutePath());
+      assertEquals(PathUtilsNamingConvention.class,
+            mimeRepo.getNamingConvention("some/mime-type").getClass());
+      List<MetExtractorSpec> specs = 
mimeRepo.getExtractorSpecsForMimeType("some/mime-type");
+      assertEquals(1, specs.size());
+      assertEquals(MetReaderExtractor.class,
+            specs.get(0).getMetExtractor().getClass());
+      assertEquals(Lists.newArrayList(preconditionId1, preconditionId2),
+            specs.get(0).getPreCondComparatorIds());
+      specs = mimeRepo.getExtractorSpecsForMimeType("someother/mime-type");
+      assertEquals(0, specs.size());
+   }
+}

Propchange: 
oodt/trunk/crawler/src/test/org/apache/oodt/cas/crawl/typedetection/TestMimeExtractorConfigReader.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain


Reply via email to