Skip to content

Commit 79938ea

Browse files
authored
TIKA-4535 -- limit use of TikaConfig.getDefaultConfig to where we nee… (#2381)
* TIKA-4535 -- limit use of TikaConfig.getDefaultConfig to where we need the full config.
1 parent 065b44c commit 79938ea

6 files changed

Lines changed: 29 additions & 31 deletions

File tree

tika-core/src/main/java/org/apache/tika/io/FilenameUtils.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import java.util.regex.Matcher;
2222
import java.util.regex.Pattern;
2323

24-
import org.apache.tika.config.TikaConfig;
2524
import org.apache.tika.metadata.Metadata;
2625
import org.apache.tika.metadata.TikaCoreProperties;
2726
import org.apache.tika.mime.MimeTypeException;
@@ -31,7 +30,7 @@
3130

3231
public class FilenameUtils {
3332

34-
private static final MimeTypes MIME_TYPES = TikaConfig.getDefaultConfig().getMimeRepository();
33+
private static final MimeTypes MIME_TYPES = MimeTypes.getDefaultMimeTypes();
3534
private static final Pattern PROTOCOL_PATTERN = Pattern.compile("[A-Za-z0-9]{1,10}://+");
3635
/**
3736
* Reserved characters

tika-eval/tika-eval-app/src/main/java/org/apache/tika/eval/app/ExtractComparerRunner.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@
4646
import org.slf4j.Logger;
4747
import org.slf4j.LoggerFactory;
4848

49-
import org.apache.tika.config.TikaConfig;
5049
import org.apache.tika.eval.app.db.Cols;
5150
import org.apache.tika.eval.app.db.JDBCUtil;
5251
import org.apache.tika.eval.app.db.MimeBuffer;
@@ -55,6 +54,7 @@
5554
import org.apache.tika.eval.app.io.ExtractReader;
5655
import org.apache.tika.eval.app.io.ExtractReaderException;
5756
import org.apache.tika.eval.app.io.IDBWriter;
57+
import org.apache.tika.mime.MimeTypes;
5858
import org.apache.tika.pipes.core.FetchEmitTuple;
5959
import org.apache.tika.pipes.core.pipesiterator.CallablePipesIterator;
6060
import org.apache.tika.pipes.core.pipesiterator.PipesIterator;
@@ -191,7 +191,7 @@ private static MimeBuffer initTables(JDBCUtil jdbcUtil, ExtractComparerBuilder b
191191
jdbcUtil.createTables(builder.getRefTableInfos(), JDBCUtil.CREATE_TABLE.THROW_EX_IF_EXISTS);
192192

193193
//step 2. create mime buffer
194-
return new MimeBuffer(jdbcUtil.getConnection(), builder.getMimeTable(), TikaConfig.getDefaultConfig());
194+
return new MimeBuffer(jdbcUtil.getConnection(), builder.getMimeTable(), MimeTypes.getDefaultMimeTypes());
195195
}
196196

197197
private static void USAGE() throws IOException {

tika-eval/tika-eval-app/src/main/java/org/apache/tika/eval/app/ExtractProfileRunner.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@
4646
import org.slf4j.Logger;
4747
import org.slf4j.LoggerFactory;
4848

49-
import org.apache.tika.config.TikaConfig;
5049
import org.apache.tika.eval.app.db.Cols;
5150
import org.apache.tika.eval.app.db.JDBCUtil;
5251
import org.apache.tika.eval.app.db.MimeBuffer;
@@ -55,6 +54,7 @@
5554
import org.apache.tika.eval.app.io.ExtractReader;
5655
import org.apache.tika.eval.app.io.ExtractReaderException;
5756
import org.apache.tika.eval.app.io.IDBWriter;
57+
import org.apache.tika.mime.MimeTypes;
5858
import org.apache.tika.pipes.core.FetchEmitTuple;
5959
import org.apache.tika.pipes.core.pipesiterator.CallablePipesIterator;
6060
import org.apache.tika.pipes.core.pipesiterator.PipesIterator;
@@ -185,7 +185,7 @@ private static MimeBuffer initTables(JDBCUtil jdbcUtil, ExtractProfilerBuilder b
185185
jdbcUtil.createTables(builder.getRefTableInfos(), JDBCUtil.CREATE_TABLE.THROW_EX_IF_EXISTS);
186186

187187
//step 2. create mime buffer
188-
return new MimeBuffer(jdbcUtil.getConnection(), builder.getMimeTable(), TikaConfig.getDefaultConfig());
188+
return new MimeBuffer(jdbcUtil.getConnection(), builder.getMimeTable(), MimeTypes.getDefaultMimeTypes());
189189
}
190190

191191
private static void USAGE() throws IOException {

tika-eval/tika-eval-app/src/main/java/org/apache/tika/eval/app/db/MimeBuffer.java

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import java.sql.SQLException;
2222
import java.sql.Types;
2323

24-
import org.apache.tika.config.TikaConfig;
2524
import org.apache.tika.mime.MediaType;
2625
import org.apache.tika.mime.MimeType;
2726
import org.apache.tika.mime.MimeTypeException;
@@ -31,14 +30,14 @@
3130
public class MimeBuffer extends AbstractDBBuffer {
3231

3332
private final PreparedStatement st;
34-
private final TikaConfig config;
33+
private final MimeTypes mimeTypes;
3534
private final Connection connection;
3635

3736

38-
public MimeBuffer(Connection connection, TableInfo mimeTable, TikaConfig config) throws SQLException {
37+
public MimeBuffer(Connection connection, TableInfo mimeTable, MimeTypes mimeTypes) throws SQLException {
3938
st = connection.prepareStatement(
4039
"insert into " + mimeTable.getName() + "( " + Cols.MIME_ID.name() + ", " + Cols.MIME_STRING.name() + ", " + Cols.FILE_EXTENSION.name() + ") values (?,?,?)");
41-
this.config = config;
40+
this.mimeTypes = mimeTypes;
4241
this.connection = connection;
4342
}
4443

@@ -49,7 +48,7 @@ public void write(int id, String value) throws RuntimeException {
4948
st.setInt(1, id);
5049
st.setString(2, value);
5150
try {
52-
String ext = MimeUtil.getExtension(value, config);
51+
String ext = MimeUtil.getExtension(value, mimeTypes);
5352
if (ext == null || ext.isEmpty()) {
5453
st.setNull(3, Types.VARCHAR);
5554
} else {
@@ -92,13 +91,12 @@ private static class MimeUtil {
9291
* don't currently return anything for {@link MimeType#getExtension};
9392
*
9493
* @param contentType string representing a content type, for example: "application/pdf"
95-
* @param config config from which to get MimeRepository
94+
* @param mimeTypes MimeRepository
9695
* @return extension or empty string
9796
* @throws MimeTypeException thrown if MimeTypes can't parse the contentType
9897
*/
99-
public static String getExtension(String contentType, TikaConfig config) throws MimeTypeException {
100-
MimeTypes types = config.getMimeRepository();
101-
MimeType mime = types.forName(contentType);
98+
public static String getExtension(String contentType, MimeTypes mimeTypes) throws MimeTypeException {
99+
MimeType mime = mimeTypes.forName(contentType);
102100
return getExtension(mime);
103101
}
104102

tika-eval/tika-eval-app/src/main/java/org/apache/tika/eval/app/io/ExtractReader.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,10 @@
3737
import org.slf4j.Logger;
3838
import org.slf4j.LoggerFactory;
3939

40-
import org.apache.tika.config.TikaConfig;
4140
import org.apache.tika.metadata.Metadata;
4241
import org.apache.tika.metadata.TikaCoreProperties;
4342
import org.apache.tika.mime.MediaType;
43+
import org.apache.tika.mime.MimeTypes;
4444
import org.apache.tika.sax.ToTextContentHandler;
4545
import org.apache.tika.sax.ToXMLContentHandler;
4646
import org.apache.tika.serialization.JsonMetadataList;
@@ -52,7 +52,7 @@ public class ExtractReader {
5252
private final ALTER_METADATA_LIST alterMetadataList;
5353
private final long minExtractLength;
5454
private final long maxExtractLength;
55-
private TikaConfig tikaConfig = TikaConfig.getDefaultConfig();
55+
private final MimeTypes mimeTypes = MimeTypes.getDefaultMimeTypes();
5656

5757
/**
5858
* Reads full extract, no modification of metadata list, no min or max extract length checking
@@ -204,9 +204,7 @@ private List<Metadata> generateListFromTextFile(Reader reader, FileSuffixes file
204204
//but better than nothing.
205205
m.set(TikaCoreProperties.RESOURCE_NAME_KEY, fileSuffixes.originalFileName);
206206

207-
MediaType mimeType = tikaConfig
208-
.getMimeRepository()
209-
.detect(null, m);
207+
MediaType mimeType = mimeTypes.detect(null, m);
210208
if (mimeType != null) {
211209
m.set(Metadata.CONTENT_TYPE, mimeType.toString());
212210
}

tika-parsers/tika-parsers-extended/tika-parser-scientific-module/src/main/java/org/apache/tika/parser/isatab/ISATabUtils.java

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@
3333

3434
import org.apache.tika.config.TikaConfig;
3535
import org.apache.tika.detect.AutoDetectReader;
36+
import org.apache.tika.detect.DefaultEncodingDetector;
37+
import org.apache.tika.detect.EncodingDetector;
3638
import org.apache.tika.exception.TikaException;
3739
import org.apache.tika.io.TikaInputStream;
3840
import org.apache.tika.metadata.Metadata;
@@ -79,12 +81,9 @@ public static void parseStudy(InputStream stream, XHTMLContentHandler xhtml, Met
7981
throws IOException, TikaException, SAXException {
8082
TikaInputStream tis = TikaInputStream.get(stream);
8183
// Automatically detect the character encoding
82-
TikaConfig tikaConfig = context.get(TikaConfig.class);
83-
if (tikaConfig == null) {
84-
tikaConfig = TikaConfig.getDefaultConfig();
85-
}
84+
EncodingDetector encodingDetector = getEncodingDetector(context);
8685
try (AutoDetectReader reader = new AutoDetectReader(CloseShieldInputStream.wrap(tis),
87-
metadata, tikaConfig.getEncodingDetector());
86+
metadata, encodingDetector);
8887
CSVParser csvParser = CSVParser.builder().setReader(reader).setFormat(CSVFormat.TDF).get()) {
8988
Iterator<CSVRecord> iterator = csvParser.iterator();
9089

@@ -118,19 +117,23 @@ public static void parseStudy(InputStream stream, XHTMLContentHandler xhtml, Met
118117
}
119118
}
120119

120+
private static EncodingDetector getEncodingDetector(ParseContext context) {
121+
TikaConfig tikaConfig = context.get(TikaConfig.class);
122+
if (tikaConfig != null) {
123+
return tikaConfig.getEncodingDetector();
124+
}
125+
return new DefaultEncodingDetector();
126+
}
127+
121128
public static void parseAssay(InputStream stream, XHTMLContentHandler xhtml, Metadata metadata,
122129
ParseContext context)
123130
throws IOException, TikaException, SAXException {
124131
TikaInputStream tis = TikaInputStream.get(stream);
125132

126133
// Automatically detect the character encoding
127-
128-
TikaConfig tikaConfig = context.get(TikaConfig.class);
129-
if (tikaConfig == null) {
130-
tikaConfig = TikaConfig.getDefaultConfig();
131-
}
134+
EncodingDetector encodingDetector = getEncodingDetector(context);
132135
try (AutoDetectReader reader = new AutoDetectReader(CloseShieldInputStream.wrap(tis),
133-
metadata, tikaConfig.getEncodingDetector());
136+
metadata, encodingDetector);
134137
CSVParser csvParser = CSVParser.builder().setReader(reader).setFormat(CSVFormat.TDF).get()) {
135138
xhtml.startElement("table");
136139

0 commit comments

Comments
 (0)