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.