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

ndipiazza pushed a commit to branch file-based-config-store
in repository https://gitbox.apache.org/repos/asf/tika.git

commit 470b1d7db4a7a13d28ad83f590583d85ff62e585
Author: Nicholas DiPiazza <[email protected]>
AuthorDate: Sun Dec 28 10:40:32 2025 -0600

    Handle 'file' ConfigStore type as built-in (not plugin)
    
    - Added direct handling for 'file' type in 
ConfigStoreFactory.createConfigStore()
    - File-based store is in core, not a plugin, so needs special handling
    - Avoids ClassNotFoundException when trying to load 'file' as a class name
    - Also added remove() method to IgniteConfigStore for interface compliance
---
 .../apache/tika/pipes/core/config/ConfigStoreFactory.java   | 13 +++++++++++++
 .../org/apache/tika/pipes/ignite/IgniteConfigStore.java     |  9 +++++++++
 2 files changed, 22 insertions(+)

diff --git 
a/tika-pipes/tika-pipes-core/src/main/java/org/apache/tika/pipes/core/config/ConfigStoreFactory.java
 
b/tika-pipes/tika-pipes-core/src/main/java/org/apache/tika/pipes/core/config/ConfigStoreFactory.java
index 1393ace0b..7c57b6da3 100644
--- 
a/tika-pipes/tika-pipes-core/src/main/java/org/apache/tika/pipes/core/config/ConfigStoreFactory.java
+++ 
b/tika-pipes/tika-pipes-core/src/main/java/org/apache/tika/pipes/core/config/ConfigStoreFactory.java
@@ -58,6 +58,19 @@ public interface ConfigStoreFactory extends 
TikaExtensionFactory<ConfigStore> {
             return store;
         }
         
+        // Handle file type directly since it's in core (not a plugin)
+        if ("file".equalsIgnoreCase(configStoreType)) {
+            LOG.info("Creating FileBasedConfigStore");
+            FileBasedConfigStoreFactory factory = new 
FileBasedConfigStoreFactory();
+            try {
+                ExtensionConfig config = extensionConfig != null ? 
extensionConfig :
+                    new ExtensionConfig(configStoreType, configStoreType, 
"{}");
+                return factory.buildExtension(config);
+            } catch (IOException e) {
+                throw new TikaConfigException("Failed to create 
FileBasedConfigStore", e);
+            }
+        }
+        
         Map<String, ConfigStoreFactory> factoryMap = 
loadAllConfigStoreFactoryExtensions(pluginManager);
 
         ConfigStoreFactory factory = factoryMap.get(configStoreType);
diff --git 
a/tika-pipes/tika-pipes-plugins/tika-pipes-ignite/src/main/java/org/apache/tika/pipes/ignite/IgniteConfigStore.java
 
b/tika-pipes/tika-pipes-plugins/tika-pipes-ignite/src/main/java/org/apache/tika/pipes/ignite/IgniteConfigStore.java
index e2f8a6c74..cd65fb858 100644
--- 
a/tika-pipes/tika-pipes-plugins/tika-pipes-ignite/src/main/java/org/apache/tika/pipes/ignite/IgniteConfigStore.java
+++ 
b/tika-pipes/tika-pipes-plugins/tika-pipes-ignite/src/main/java/org/apache/tika/pipes/ignite/IgniteConfigStore.java
@@ -155,6 +155,15 @@ public class IgniteConfigStore implements ConfigStore {
         return cache.size();
     }
 
+    @Override
+    public ExtensionConfig remove(String id) {
+        if (cache == null) {
+            throw new IllegalStateException("IgniteConfigStore not 
initialized. Call init() first.");
+        }
+        ExtensionConfigDTO removed = cache.getAndRemove(id);
+        return removed != null ? removed.toExtensionConfig() : null;
+    }
+
     public void close() {
         if (ignite != null && autoClose) {
             LOG.info("Closing IgniteConfigStore");

Reply via email to