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.