[
https://issues.apache.org/jira/browse/TIKA-4583?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18046429#comment-18046429
]
Nicholas DiPiazza commented on TIKA-4583:
-----------------------------------------
h3. Update: Refactored to use PF4J plugin system
I've refactored the ConfigStore implementation to use the PF4J plugin
architecture, following the same pattern as Fetchers, Emitters, and other Tika
extensions.
*Changes:*
* {{ConfigStore}} now extends {{TikaExtension}} interface
* {{ConfigStoreFactory}} converted to PF4J-based factory interface
* Created {{IgniteConfigStoreFactory}} with {{@Extension}} annotation
* {{IgniteConfigStore}} now auto-discovered via PF4J plugin system
* Removed hard-coded class loading and reflection
*Benefits:*
* Proper plugin architecture consistent with Tika patterns
* ConfigStore implementations are auto-discovered by PF4J
* No hard-coded class names or manual reflection
* Follows the same pattern as {{FetcherFactory}}, {{EmitterFactory}}, etc.
* Makes it easy to add custom ConfigStore implementations as plugins
*How it works now:*
1. PluginManager loads and starts all plugins
2. {{ConfigStoreFactory.createConfigStore()}} queries for {{@Extension}}
annotated factories
3. Finds {{IgniteConfigStoreFactory}} when type is "ignite"
4. Factory builds the {{IgniteConfigStore}} instance
5. ConfigStore is initialized and used by component managers
This is a cleaner, more maintainable approach that follows Tika's plugin
conventions.
> Add Apache Ignite ConfigStore implementation
> --------------------------------------------
>
> Key: TIKA-4583
> URL: https://issues.apache.org/jira/browse/TIKA-4583
> Project: Tika
> Issue Type: Sub-task
> Reporter: Nicholas DiPiazza
> Priority: Major
>
> h3. Overview
> Create an Apache Ignite-based implementation of the ConfigStore interface to
> enable distributed configuration storage for Tika Pipes clustering.
> h3. Implementation Details
> * Create new Maven sub-module: {{tika-pipes/tika-pipes-ignite-config-store}}
> * Implement {{IgniteConfigStore}} class that uses Apache Ignite cache for
> distributed storage
> * Add {{init()}} method to {{ConfigStore}} interface for initialization
> support
> * Provide configuration options for Ignite cluster connection
> * Ensure thread-safety and proper error handling
> h3. Technical Requirements
> * Maven module structure following Tika conventions
> * Proper Apache license headers
> * Unit tests for the implementation
> * Integration tests for distributed scenarios
> * Documentation in JavaDoc
> * Update parent pom.xml to include new module
> h3. Dependencies
> * Apache Ignite client libraries
> * Serialization support for ExtensionConfig objects
> h3. Acceptance Criteria
> * {{ConfigStore}} interface has {{init()}} method
> * {{IgniteConfigStore}} implementation passes all ConfigStore tests
> * New module builds successfully with {{mvn clean install}}
> * Documentation explains configuration options
> * Integration with existing Tika Pipes clustering infrastructure
--
This message was sent by Atlassian Jira
(v8.20.10#820010)