You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tika.apache.org by ta...@apache.org on 2019/05/07 14:43:50 UTC

[tika] branch master updated: TIKA-2864 -- fix regression in rfc822 parsing speed

This is an automated email from the ASF dual-hosted git repository.

tallison pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tika.git


The following commit(s) were added to refs/heads/master by this push:
     new 2593a50  TIKA-2864 -- fix regression in rfc822 parsing speed
2593a50 is described below

commit 2593a50e66a7a8543105158a27ad8e680634db27
Author: TALLISON <ta...@apache.org>
AuthorDate: Tue May 7 10:43:32 2019 -0400

    TIKA-2864 -- fix regression in rfc822 parsing speed
---
 .../tika/extractor/EmbeddedDocumentUtil.java       |   4 +-
 .../org/apache/tika/parser/crypto/Pkcs7Parser.java |   5 +-
 .../org/apache/tika/parser/gdal/GDALParser.java    | 255 +++++++++++----------
 .../apache/tika/parser/xml/FictionBookParser.java  |   6 +-
 4 files changed, 140 insertions(+), 130 deletions(-)

diff --git a/tika-core/src/main/java/org/apache/tika/extractor/EmbeddedDocumentUtil.java b/tika-core/src/main/java/org/apache/tika/extractor/EmbeddedDocumentUtil.java
index 1fc7308..1463bb3 100644
--- a/tika-core/src/main/java/org/apache/tika/extractor/EmbeddedDocumentUtil.java
+++ b/tika-core/src/main/java/org/apache/tika/extractor/EmbeddedDocumentUtil.java
@@ -269,9 +269,7 @@ public class EmbeddedDocumentUtil implements Serializable {
     }
 
     private static Parser findInComposite(CompositeParser p, Class clazz, ParseContext context) {
-        Map<MediaType, Parser> map = p.getParsers(context);
-        for (Map.Entry<MediaType, Parser> e : map.entrySet()) {
-            Parser candidate = e.getValue();
+        for (Parser candidate : p.getAllComponentParsers()) {
             if (equals(candidate, clazz)) {
                 return candidate;
             }
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/crypto/Pkcs7Parser.java b/tika-parsers/src/main/java/org/apache/tika/parser/crypto/Pkcs7Parser.java
index e84023c..372c015 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/crypto/Pkcs7Parser.java
+++ b/tika-parsers/src/main/java/org/apache/tika/parser/crypto/Pkcs7Parser.java
@@ -51,8 +51,11 @@ public class Pkcs7Parser extends AbstractParser {
     private static final MediaType PKCS7_SIGNATURE =
             MediaType.application("pkcs7-signature");
 
+    private static final Set<MediaType> SUPPORTED_TYPES =
+            MediaType.set(PKCS7_MIME, PKCS7_SIGNATURE);
+
     public Set<MediaType> getSupportedTypes(ParseContext context) {
-        return MediaType.set(PKCS7_MIME, PKCS7_SIGNATURE);
+        return SUPPORTED_TYPES;
     }
 
     public void parse(
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/gdal/GDALParser.java b/tika-parsers/src/main/java/org/apache/tika/parser/gdal/GDALParser.java
index 66d1c5f..e325460 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/gdal/GDALParser.java
+++ b/tika-parsers/src/main/java/org/apache/tika/parser/gdal/GDALParser.java
@@ -23,6 +23,8 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.Reader;
+import java.util.Arrays;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
@@ -71,6 +73,134 @@ public class GDALParser extends AbstractParser {
     private static final long serialVersionUID = -3869130527323941401L;
     private static final Logger LOG = LoggerFactory.getLogger(GDALParser.class);
 
+    private static final Set<MediaType> SUPPORTED_TYPES =
+            Collections.unmodifiableSet(new HashSet<>(
+                    Arrays.asList(
+                            MediaType.application("x-netcdf"),
+        MediaType.application("vrt"),
+        MediaType.image("geotiff"),
+        MediaType.image("nitf"),
+        MediaType.application("x-rpf-toc"),
+        MediaType.application("x-ecrg-toc"),
+        MediaType.image("hfa"),
+        MediaType.image("sar-ceos"),
+        MediaType.image("ceos"),
+        MediaType.application("jaxa-pal-sar"),
+        MediaType.application("gff"),
+        MediaType.application("elas"),
+        MediaType.application("aig"),
+        MediaType.application("aaigrid"),
+        MediaType.application("grass-ascii-grid"),
+        MediaType.application("sdts-raster"),
+        MediaType.application("dted"),
+        MediaType.image("png"),
+        MediaType.image("jpeg"),
+        MediaType.image("raster"),
+        MediaType.application("jdem"),
+        MediaType.image("gif"),
+        MediaType.image("big-gif"),
+        MediaType.image("envisat"),
+        MediaType.image("fits"),
+        MediaType.application("fits"),
+        MediaType.image("bsb"),
+        MediaType.application("xpm"),
+        MediaType.image("bmp"),
+        MediaType.image("x-dimap"),
+        MediaType.image("x-airsar"),
+        MediaType.application("x-rs2"),
+        MediaType.application("x-pcidsk"),
+        MediaType.application("pcisdk"),
+        MediaType.image("x-pcraster"),
+        MediaType.image("ilwis"),
+        MediaType.image("sgi"),
+        MediaType.application("x-srtmhgt"),
+        MediaType.application("leveller"),
+        MediaType.application("terragen"),
+        MediaType.application("x-gmt"),
+        MediaType.application("x-isis3"),
+        MediaType.application("x-isis2"),
+        MediaType.application("x-pds"),
+        MediaType.application("x-til"),
+        MediaType.application("x-ers"),
+        MediaType.application("x-l1b"),
+        MediaType.image("fit"),
+        MediaType.application("x-grib"),
+        MediaType.image("jp2"),
+        MediaType.application("x-rmf"),
+        MediaType.application("x-wcs"),
+        MediaType.application("x-wms"),
+        MediaType.application("x-msgn"),
+        MediaType.application("x-wms"),
+        MediaType.application("x-wms"),
+        MediaType.application("x-rst"),
+        MediaType.application("x-ingr"),
+        MediaType.application("x-gsag"),
+        MediaType.application("x-gsbg"),
+        MediaType.application("x-gs7bg"),
+        MediaType.application("x-cosar"),
+        MediaType.application("x-tsx"),
+        MediaType.application("x-coasp"),
+        MediaType.application("x-r"),
+        MediaType.application("x-map"),
+        MediaType.application("x-pnm"),
+        MediaType.application("x-doq1"),
+        MediaType.application("x-doq2"),
+        MediaType.application("x-envi"),
+        MediaType.application("x-envi-hdr"),
+        MediaType.application("x-generic-bin"),
+        MediaType.application("x-p-aux"),
+        MediaType.image("x-mff"),
+        MediaType.image("x-mff2"),
+        MediaType.image("x-fujibas"),
+        MediaType.application("x-gsc"),
+        MediaType.application("x-fast"),
+        MediaType.application("x-bt"),
+        MediaType.application("x-lan"),
+        MediaType.application("x-cpg"),
+        MediaType.image("ida"),
+        MediaType.application("x-ndf"),
+        MediaType.image("eir"),
+        MediaType.application("x-dipex"),
+        MediaType.application("x-lcp"),
+        MediaType.application("x-gtx"),
+        MediaType.application("x-los-las"),
+        MediaType.application("x-ntv2"),
+        MediaType.application("x-ctable2"),
+        MediaType.application("x-ace2"),
+        MediaType.application("x-snodas"),
+        MediaType.application("x-kro"),
+        MediaType.image("arg"),
+        MediaType.application("x-rik"),
+        MediaType.application("x-usgs-dem"),
+        MediaType.application("x-gxf"),
+        MediaType.application("x-dods"),
+        MediaType.application("x-http"),
+        MediaType.application("x-bag"),
+        MediaType.application("x-hdf"),
+        MediaType.image("x-hdf5-image"),
+        MediaType.application("x-nwt-grd"),
+        MediaType.application("x-nwt-grc"),
+        MediaType.image("adrg"),
+        MediaType.image("x-srp"),
+        MediaType.application("x-blx"),
+        MediaType.application("x-rasterlite"),
+        MediaType.application("x-epsilon"),
+        MediaType.application("x-sdat"),
+        MediaType.application("x-kml"),
+        MediaType.application("x-xyz"),
+        MediaType.application("x-geo-pdf"),
+        MediaType.image("x-ozi"),
+        MediaType.application("x-ctg"),
+        MediaType.application("x-e00-grid"),
+        MediaType.application("x-zmap"),
+        MediaType.application("x-webp"),
+        MediaType.application("x-ngs-geoid"),
+        MediaType.application("x-mbtiles"),
+        MediaType.application("x-ppi"),
+        MediaType.application("x-cappi"))));
+
+
+
     private String command;
 
     public GDALParser() {
@@ -102,130 +232,7 @@ public class GDALParser extends AbstractParser {
 
     @Override
     public Set<MediaType> getSupportedTypes(ParseContext context) {
-        Set<MediaType> types = new HashSet<MediaType>();
-        types.add(MediaType.application("x-netcdf"));
-        types.add(MediaType.application("vrt"));
-        types.add(MediaType.image("geotiff"));
-        types.add(MediaType.image("nitf"));
-        types.add(MediaType.application("x-rpf-toc"));
-        types.add(MediaType.application("x-ecrg-toc"));
-        types.add(MediaType.image("hfa"));
-        types.add(MediaType.image("sar-ceos"));
-        types.add(MediaType.image("ceos"));
-        types.add(MediaType.application("jaxa-pal-sar"));
-        types.add(MediaType.application("gff"));
-        types.add(MediaType.application("elas"));
-        types.add(MediaType.application("aig"));
-        types.add(MediaType.application("aaigrid"));
-        types.add(MediaType.application("grass-ascii-grid"));
-        types.add(MediaType.application("sdts-raster"));
-        types.add(MediaType.application("dted"));
-        types.add(MediaType.image("png"));
-        types.add(MediaType.image("jpeg"));
-        types.add(MediaType.image("raster"));
-        types.add(MediaType.application("jdem"));
-        types.add(MediaType.image("gif"));
-        types.add(MediaType.image("big-gif"));
-        types.add(MediaType.image("envisat"));
-        types.add(MediaType.image("fits"));
-        types.add(MediaType.application("fits"));
-        types.add(MediaType.image("bsb"));
-        types.add(MediaType.application("xpm"));
-        types.add(MediaType.image("bmp"));
-        types.add(MediaType.image("x-dimap"));
-        types.add(MediaType.image("x-airsar"));
-        types.add(MediaType.application("x-rs2"));
-        types.add(MediaType.application("x-pcidsk"));
-        types.add(MediaType.application("pcisdk"));
-        types.add(MediaType.image("x-pcraster"));
-        types.add(MediaType.image("ilwis"));
-        types.add(MediaType.image("sgi"));
-        types.add(MediaType.application("x-srtmhgt"));
-        types.add(MediaType.application("leveller"));
-        types.add(MediaType.application("terragen"));
-        types.add(MediaType.application("x-gmt"));
-        types.add(MediaType.application("x-isis3"));
-        types.add(MediaType.application("x-isis2"));
-        types.add(MediaType.application("x-pds"));
-        types.add(MediaType.application("x-til"));
-        types.add(MediaType.application("x-ers"));
-        types.add(MediaType.application("x-l1b"));
-        types.add(MediaType.image("fit"));
-        types.add(MediaType.application("x-grib"));
-        types.add(MediaType.image("jp2"));
-        types.add(MediaType.application("x-rmf"));
-        types.add(MediaType.application("x-wcs"));
-        types.add(MediaType.application("x-wms"));
-        types.add(MediaType.application("x-msgn"));
-        types.add(MediaType.application("x-wms"));
-        types.add(MediaType.application("x-wms"));
-        types.add(MediaType.application("x-rst"));
-        types.add(MediaType.application("x-ingr"));
-        types.add(MediaType.application("x-gsag"));
-        types.add(MediaType.application("x-gsbg"));
-        types.add(MediaType.application("x-gs7bg"));
-        types.add(MediaType.application("x-cosar"));
-        types.add(MediaType.application("x-tsx"));
-        types.add(MediaType.application("x-coasp"));
-        types.add(MediaType.application("x-r"));
-        types.add(MediaType.application("x-map"));
-        types.add(MediaType.application("x-pnm"));
-        types.add(MediaType.application("x-doq1"));
-        types.add(MediaType.application("x-doq2"));
-        types.add(MediaType.application("x-envi"));
-        types.add(MediaType.application("x-envi-hdr"));
-        types.add(MediaType.application("x-generic-bin"));
-        types.add(MediaType.application("x-p-aux"));
-        types.add(MediaType.image("x-mff"));
-        types.add(MediaType.image("x-mff2"));
-        types.add(MediaType.image("x-fujibas"));
-        types.add(MediaType.application("x-gsc"));
-        types.add(MediaType.application("x-fast"));
-        types.add(MediaType.application("x-bt"));
-        types.add(MediaType.application("x-lan"));
-        types.add(MediaType.application("x-cpg"));
-        types.add(MediaType.image("ida"));
-        types.add(MediaType.application("x-ndf"));
-        types.add(MediaType.image("eir"));
-        types.add(MediaType.application("x-dipex"));
-        types.add(MediaType.application("x-lcp"));
-        types.add(MediaType.application("x-gtx"));
-        types.add(MediaType.application("x-los-las"));
-        types.add(MediaType.application("x-ntv2"));
-        types.add(MediaType.application("x-ctable2"));
-        types.add(MediaType.application("x-ace2"));
-        types.add(MediaType.application("x-snodas"));
-        types.add(MediaType.application("x-kro"));
-        types.add(MediaType.image("arg"));
-        types.add(MediaType.application("x-rik"));
-        types.add(MediaType.application("x-usgs-dem"));
-        types.add(MediaType.application("x-gxf"));
-        types.add(MediaType.application("x-dods"));
-        types.add(MediaType.application("x-http"));
-        types.add(MediaType.application("x-bag"));
-        types.add(MediaType.application("x-hdf"));
-        types.add(MediaType.image("x-hdf5-image"));
-        types.add(MediaType.application("x-nwt-grd"));
-        types.add(MediaType.application("x-nwt-grc"));
-        types.add(MediaType.image("adrg"));
-        types.add(MediaType.image("x-srp"));
-        types.add(MediaType.application("x-blx"));
-        types.add(MediaType.application("x-rasterlite"));
-        types.add(MediaType.application("x-epsilon"));
-        types.add(MediaType.application("x-sdat"));
-        types.add(MediaType.application("x-kml"));
-        types.add(MediaType.application("x-xyz"));
-        types.add(MediaType.application("x-geo-pdf"));
-        types.add(MediaType.image("x-ozi"));
-        types.add(MediaType.application("x-ctg"));
-        types.add(MediaType.application("x-e00-grid"));
-        types.add(MediaType.application("x-zmap"));
-        types.add(MediaType.application("x-webp"));
-        types.add(MediaType.application("x-ngs-geoid"));
-        types.add(MediaType.application("x-mbtiles"));
-        types.add(MediaType.application("x-ppi"));
-        types.add(MediaType.application("x-cappi"));
-        return types;
+        return SUPPORTED_TYPES;
     }
 
     @Override
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/xml/FictionBookParser.java b/tika-parsers/src/main/java/org/apache/tika/parser/xml/FictionBookParser.java
index 0f3659b..0786252 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/xml/FictionBookParser.java
+++ b/tika-parsers/src/main/java/org/apache/tika/parser/xml/FictionBookParser.java
@@ -35,10 +35,12 @@ import org.xml.sax.helpers.DefaultHandler;
 
 public class FictionBookParser extends XMLParser {
     private static final long serialVersionUID = 4195954546491524374L;
-    
+
+    private static final Set<MediaType> SUPPORTED_TYPES =
+            Collections.singleton(MediaType.application("x-fictionbook+xml"));
     @Override
     public Set<MediaType> getSupportedTypes(ParseContext context) {
-        return Collections.singleton(MediaType.application("x-fictionbook+xml"));
+        return SUPPORTED_TYPES;
     }
 
     @Override