This is an automated email from the ASF dual-hosted git repository.
tallison pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tika.git
The following commit(s) were added to refs/heads/main by this push:
new a869e6544 TIKA-4545 - rm ExtensionConfigs.java (#2408)
a869e6544 is described below
commit a869e6544e5969f5354bde770a18141cab48359f
Author: Tim Allison <[email protected]>
AuthorDate: Fri Nov 28 09:51:55 2025 -0500
TIKA-4545 - rm ExtensionConfigs.java (#2408)
---
.../org/apache/tika/config/ConfigContainer.java | 15 ++++-
.../tika/pipes/emitter/fs/FileSystemEmitter.java | 12 ++--
.../tika/pipes/fetcher/fs/FileSystemFetcher.java | 13 ++---
.../org/apache/tika/plugins/ExtensionConfigs.java | 66 ----------------------
4 files changed, 26 insertions(+), 80 deletions(-)
diff --git
a/tika-core/src/main/java/org/apache/tika/config/ConfigContainer.java
b/tika-core/src/main/java/org/apache/tika/config/ConfigContainer.java
index 941726c2e..a424a63dd 100644
--- a/tika-core/src/main/java/org/apache/tika/config/ConfigContainer.java
+++ b/tika-core/src/main/java/org/apache/tika/config/ConfigContainer.java
@@ -27,6 +27,10 @@ import java.util.Set;
* intervenes between the caller and the processor as in tika-pipes, and
elsewhere.
*
* The goal of this is to delegate deserialization to the consumers/receivers.
+ * <p>
+ * Stores configuration as named JSON strings, allowing parsers, fetchers,
emitters,
+ * and other components to look up their config by friendly name (e.g.,
"pdf-parser",
+ * "fs-fetcher-1") and deserialize it on-demand.
*/
public class ConfigContainer {
@@ -34,12 +38,21 @@ public class ConfigContainer {
public <T> void set(Class<T> key, String value) {
if (value != null) {
- configs.put(key.getName(), value);
+ String keyName = key.getName();
+ if (configs.containsKey(keyName)) {
+ throw new IllegalArgumentException(
+ "Config key '" + keyName + "' already exists. Cannot
overwrite existing configuration.");
+ }
+ configs.put(keyName, value);
}
}
public void set(String name, String value) {
if (value != null) {
+ if (configs.containsKey(name)) {
+ throw new IllegalArgumentException(
+ "Config key '" + name + "' already exists. Cannot
overwrite existing configuration.");
+ }
configs.put(name, value);
}
}
diff --git
a/tika-pipes/tika-pipes-plugins/tika-pipes-file-system/src/main/java/org/apache/tika/pipes/emitter/fs/FileSystemEmitter.java
b/tika-pipes/tika-pipes-plugins/tika-pipes-file-system/src/main/java/org/apache/tika/pipes/emitter/fs/FileSystemEmitter.java
index 77037a006..b9ac4edf2 100644
---
a/tika-pipes/tika-pipes-plugins/tika-pipes-file-system/src/main/java/org/apache/tika/pipes/emitter/fs/FileSystemEmitter.java
+++
b/tika-pipes/tika-pipes-plugins/tika-pipes-file-system/src/main/java/org/apache/tika/pipes/emitter/fs/FileSystemEmitter.java
@@ -31,13 +31,13 @@ import java.util.Optional;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.apache.tika.config.ConfigContainer;
import org.apache.tika.exception.TikaConfigException;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.metadata.TikaCoreProperties;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.pipes.api.emitter.AbstractStreamEmitter;
import org.apache.tika.plugins.ExtensionConfig;
-import org.apache.tika.plugins.ExtensionConfigs;
import org.apache.tika.serialization.JsonMetadataList;
import org.apache.tika.utils.StringUtils;
@@ -154,12 +154,12 @@ public class FileSystemEmitter extends
AbstractStreamEmitter {
private FileSystemEmitterConfig getConfig(ParseContext parseContext)
throws IOException {
FileSystemEmitterConfig config = fileSystemEmitterConfig;
- ExtensionConfigs extensionConfigs =
parseContext.get(ExtensionConfigs.class);
- if (extensionConfigs != null) {
- Optional<ExtensionConfig> pluginConfigOpt =
extensionConfigs.getById(getExtensionConfig().id());
- if (pluginConfigOpt.isPresent()) {
+ ConfigContainer configContainer =
parseContext.get(ConfigContainer.class);
+ if (configContainer != null) {
+ Optional<String> configJson =
configContainer.get(getExtensionConfig().id());
+ if (configJson.isPresent()) {
try {
- config =
FileSystemEmitterConfig.load(pluginConfigOpt.get().jsonConfig());
+ config = FileSystemEmitterConfig.load(configJson.get());
} catch (TikaConfigException e) {
throw new IOException("Failed to load config", e);
}
diff --git
a/tika-pipes/tika-pipes-plugins/tika-pipes-file-system/src/main/java/org/apache/tika/pipes/fetcher/fs/FileSystemFetcher.java
b/tika-pipes/tika-pipes-plugins/tika-pipes-file-system/src/main/java/org/apache/tika/pipes/fetcher/fs/FileSystemFetcher.java
index a0e8ac07c..fb1ee0abd 100644
---
a/tika-pipes/tika-pipes-plugins/tika-pipes-file-system/src/main/java/org/apache/tika/pipes/fetcher/fs/FileSystemFetcher.java
+++
b/tika-pipes/tika-pipes-plugins/tika-pipes-file-system/src/main/java/org/apache/tika/pipes/fetcher/fs/FileSystemFetcher.java
@@ -30,6 +30,7 @@ import java.util.Optional;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.apache.tika.config.ConfigContainer;
import org.apache.tika.exception.TikaConfigException;
import org.apache.tika.exception.TikaException;
import org.apache.tika.io.TikaInputStream;
@@ -41,7 +42,6 @@ import org.apache.tika.parser.ParseContext;
import org.apache.tika.pipes.api.fetcher.Fetcher;
import org.apache.tika.plugins.AbstractTikaExtension;
import org.apache.tika.plugins.ExtensionConfig;
-import org.apache.tika.plugins.ExtensionConfigs;
import org.apache.tika.utils.StringUtils;
/**
@@ -76,12 +76,11 @@ public class FileSystemFetcher extends
AbstractTikaExtension implements Fetcher
"a file name with this character in it.");
}
FileSystemFetcherConfig config = defaultFileSystemFetcherConfig;
- ExtensionConfigs pluginConfigManager =
parseContext.get(ExtensionConfigs.class);
- if (pluginConfigManager != null) {
- Optional<ExtensionConfig> pluginConfigOpt =
pluginConfigManager.getById(getExtensionConfig().id());
- if (pluginConfigOpt.isPresent()) {
- ExtensionConfig pluginConfig = pluginConfigOpt.get();
- config =
FileSystemFetcherConfig.load(pluginConfig.jsonConfig());
+ ConfigContainer configContainer =
parseContext.get(ConfigContainer.class);
+ if (configContainer != null) {
+ Optional<String> configJson =
configContainer.get(getExtensionConfig().id());
+ if (configJson.isPresent()) {
+ config = FileSystemFetcherConfig.load(configJson.get());
checkConfig(config);
}
}
diff --git
a/tika-plugins-core/src/main/java/org/apache/tika/plugins/ExtensionConfigs.java
b/tika-plugins-core/src/main/java/org/apache/tika/plugins/ExtensionConfigs.java
deleted file mode 100644
index b8dfb6405..000000000
---
a/tika-plugins-core/src/main/java/org/apache/tika/plugins/ExtensionConfigs.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.tika.plugins;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.Set;
-
-public class ExtensionConfigs {
-
- Map<String, ExtensionConfig> idToConfig = new HashMap<>();
- Map<String, List<ExtensionConfig>> extensionIdsToConfig = new HashMap<>();
-
- public ExtensionConfigs() {
-
- }
-
- public ExtensionConfigs(Map<String, ExtensionConfig> map) {
- for (ExtensionConfig c : map.values()) {
- add(c);
- }
- }
-
- public void add(ExtensionConfig extensionConfig) {
- if (idToConfig.containsKey(extensionConfig.id())) {
- throw new IllegalArgumentException("Can't overwrite existing
extension config for extensionName: " + extensionConfig.name());
- }
- idToConfig.put(extensionConfig.id(), extensionConfig);
- extensionIdsToConfig
- .computeIfAbsent(extensionConfig.name(), k -> new
ArrayList<>()).add(extensionConfig);
- }
-
- public Optional<ExtensionConfig> getById(String id) {
- return Optional.ofNullable(idToConfig.get(id));
- }
-
- public List<ExtensionConfig> getByExtensionName(String extensionName) {
- List<ExtensionConfig> configs =
extensionIdsToConfig.get(extensionName);
- if (configs == null) {
- return List.of();
- }
- return configs;
- }
-
- public Set<String> ids() {
- return idToConfig.keySet();
- }
-
-}