Author: jukka
Date: Tue Oct 23 04:05:58 2007
New Revision: 587456

URL: http://svn.apache.org/viewvc?rev=587456&view=rev
Log:
TIKA-87 - MimeTypes should allow modification of MIME types
    - Reversed the MimeTypes -> MimeTypesReader dependency
    - Work in progress

Modified:
    incubator/tika/trunk/src/main/java/org/apache/tika/mime/MimeTypes.java
    incubator/tika/trunk/src/main/java/org/apache/tika/mime/MimeTypesReader.java
    incubator/tika/trunk/src/main/java/org/apache/tika/mime/MimeUtils.java

Modified: incubator/tika/trunk/src/main/java/org/apache/tika/mime/MimeTypes.java
URL: 
http://svn.apache.org/viewvc/incubator/tika/trunk/src/main/java/org/apache/tika/mime/MimeTypes.java?rev=587456&r1=587455&r2=587456&view=diff
==============================================================================
--- incubator/tika/trunk/src/main/java/org/apache/tika/mime/MimeTypes.java 
(original)
+++ incubator/tika/trunk/src/main/java/org/apache/tika/mime/MimeTypes.java Tue 
Oct 23 04:05:58 2007
@@ -28,10 +28,6 @@
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
-import org.w3c.dom.Document;
-
-// Commons Logging imports
-import org.apache.commons.logging.Log;
 
 /**
  * This class is a MimeType repository. It gathers a set of MimeTypes and
@@ -95,53 +91,6 @@
 
     /** The minimum length of data to provide to check all MimeTypes */
     private int minLength = 0;
-
-    /**
-     * Creates a new MimeTypes instance.
-     * 
-     * @param filepath
-     *            is the mime-types definitions xml file.
-     * @param logger
-     *            is it Logger to uses for ouput messages.
-     */
-    public MimeTypes(String filepath, Log logger) {
-        MimeTypesReader reader = new MimeTypesReader(logger);
-        add(reader.read(filepath));
-    }
-
-    /**
-     * Creates a new MimeTypes instance.
-     * 
-     * @param filepath
-     *            is the mime-types definitions xml file.
-     * @return A MimeTypes instance for the specified filepath xml file.
-     */
-    public MimeTypes(String filepath) {
-        this(filepath, (Log) null);
-    }
-
-    /**
-     * Creates a new MimeTypes instance.
-     * 
-     * @param is
-     *            the document of the mime types definition file.
-     * @param logger
-     *            is it Logger to uses for ouput messages.
-     */
-    public MimeTypes(Document doc, Log logger) {
-        MimeTypesReader reader = new MimeTypesReader(logger);
-        add(reader.read(doc));
-    }
-
-    /**
-     * Creates a new MimeTypes instance.
-     * 
-     * @param is
-     *            the document of the mime types definition file.
-     */
-    public MimeTypes(Document doc) {
-        this(doc, (Log) null);
-    }
 
     /**
      * Find the Mime Content Type of a file.

Modified: 
incubator/tika/trunk/src/main/java/org/apache/tika/mime/MimeTypesReader.java
URL: 
http://svn.apache.org/viewvc/incubator/tika/trunk/src/main/java/org/apache/tika/mime/MimeTypesReader.java?rev=587456&r1=587455&r2=587456&view=diff
==============================================================================
--- 
incubator/tika/trunk/src/main/java/org/apache/tika/mime/MimeTypesReader.java 
(original)
+++ 
incubator/tika/trunk/src/main/java/org/apache/tika/mime/MimeTypesReader.java 
Tue Oct 23 04:05:58 2007
@@ -94,11 +94,14 @@
     /** The logger to use */
     private Log logger = null;
 
-    MimeTypesReader() {
-        this(null);
+    private final MimeTypes types;
+
+    MimeTypesReader(MimeTypes types) {
+        this(types, null);
     }
 
-    MimeTypesReader(Log logger) {
+    MimeTypesReader(MimeTypes types, Log logger) {
+        this.types = types;
         if (logger == null) {
             this.logger = LogFactory.getLog(this.getClass());
         } else {
@@ -106,35 +109,28 @@
         }
     }
 
-    MimeType[] read(String filepath) {
-        return read(MimeTypesReader.class.getClassLoader().getResourceAsStream(
-                filepath));
+    void read(String filepath) {
+        
read(MimeTypesReader.class.getClassLoader().getResourceAsStream(filepath));
     }
 
-    MimeType[] read(InputStream stream) {
-        MimeType[] types = null;
+    void read(InputStream stream) {
         try {
             DocumentBuilderFactory factory = DocumentBuilderFactory
                     .newInstance();
             DocumentBuilder builder = factory.newDocumentBuilder();
             Document document = builder.parse(new InputSource(stream));
-            types = read(document);
+            read(document);
         } catch (Exception e) {
             if (logger.isWarnEnabled()) {
                 logger.warn(e.toString() + " while loading mime-types");
             }
-            types = new MimeType[0];
         }
-        return types;
     }
 
-    MimeType[] read(Document document) {
-        // printDOM(document);
+    void read(Document document) {
         Element element = document.getDocumentElement();
         if (element != null && element.getTagName().equals("mime-info")) {
-            return readMimeInfo(element);
-        } else {
-            return new MimeType[0];
+            readMimeInfo(element);
         }
     }
 
@@ -147,10 +143,7 @@
             if (node.getNodeType() == Node.ELEMENT_NODE) {
                 Element nodeElement = (Element) node;
                 if (nodeElement.getTagName().equals("mime-type")) {
-                    MimeType type = readMimeType(nodeElement);
-                    if (type != null) {
-                        types.add(type);
-                    }
+                    readMimeType(nodeElement);
                 }
             }
         }
@@ -158,7 +151,7 @@
     }
 
     /** Read Element named mime-type. */
-    private MimeType readMimeType(Element element) {
+    private void readMimeType(Element element) {
 
         MimeType type = null;
 
@@ -169,7 +162,7 @@
             if (logger.isInfoEnabled()) {
                 logger.info(mte.toString() + " ... Ignoring!");
             }
-            return null;
+            return;
         }
 
         NodeList nodes = element.getChildNodes();
@@ -193,7 +186,8 @@
                 }
             }
         }
-        return type;
+
+        types.add(type);
     }
 
     /** Read Element named glob. */

Modified: incubator/tika/trunk/src/main/java/org/apache/tika/mime/MimeUtils.java
URL: 
http://svn.apache.org/viewvc/incubator/tika/trunk/src/main/java/org/apache/tika/mime/MimeUtils.java?rev=587456&r1=587455&r2=587456&view=diff
==============================================================================
--- incubator/tika/trunk/src/main/java/org/apache/tika/mime/MimeUtils.java 
(original)
+++ incubator/tika/trunk/src/main/java/org/apache/tika/mime/MimeUtils.java Tue 
Oct 23 04:05:58 2007
@@ -20,16 +20,9 @@
 import java.io.InputStream;
 import java.io.IOException;
 import java.net.URL;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
 
 import org.apache.tika.metadata.TikaMimeKeys;
 import org.jdom.JDOMException;
-import org.w3c.dom.Document;
-import org.xml.sax.InputSource;
 
 // Tika imports
 import org.apache.tika.config.TikaConfig;
@@ -43,18 +36,12 @@
  */
 public class MimeUtils implements TikaMimeKeys {
 
-    /** My logger */
-    private final static Logger LOG = Logger.getLogger(MimeUtils.class
-            .getName());
-
     /** The MimeTypes repository instance */
-    private MimeTypes repository = null;
+    private MimeTypes repository =  new MimeTypes();
 
     /** Creates a new instance of MimeUtils */
     public MimeUtils(String resPath) {
-        if(repository == null){
-            repository = load(resPath);
-        }
+        new MimeTypesReader(repository).read(resPath);
     }
 
 
@@ -121,40 +108,6 @@
             stream.close();
         }
     }
-
-    private final MimeTypes load(String tikaMimeFile) {
-        // The line below is disabled  until we can implement a
-        // way of restricting this output by default. (see TIKA-82)
-        //  LOG.info("Loading [" + tikaMimeFile + "]");
-        Document document = getDocumentRoot(MimeUtils.class.getClassLoader()
-                .getResourceAsStream(tikaMimeFile));
-
-        MimeTypes types = new MimeTypes(document);
-        return types;
-    }
-
-    private final Document getDocumentRoot(InputStream is) {
-        // open up the XML file
-        DocumentBuilderFactory factory = null;
-        DocumentBuilder parser = null;
-        Document document = null;
-        InputSource inputSource = null;
-
-        inputSource = new InputSource(is);
-
-        try {
-            factory = DocumentBuilderFactory.newInstance();
-            parser = factory.newDocumentBuilder();
-            document = parser.parse(inputSource);
-        } catch (Exception e) {
-            LOG.log(Level.WARNING, "Unable to parse xml stream"
-                    + ": Reason is [" + e + "]");
-            return null;
-        }
-
-        return document;
-    }
-
 
     /**
      * Read the resource's header for use in determination of the MIME type.


Reply via email to