diff --git a/src/main/java/org/opensearch/geospatial/ip2geo/processor/Ip2GeoProcessor.java b/src/main/java/org/opensearch/geospatial/ip2geo/processor/Ip2GeoProcessor.java index 03f90e88..344a6e84 100644 --- a/src/main/java/org/opensearch/geospatial/ip2geo/processor/Ip2GeoProcessor.java +++ b/src/main/java/org/opensearch/geospatial/ip2geo/processor/Ip2GeoProcessor.java @@ -236,17 +236,15 @@ public String getType() { public static final class Factory implements Processor.Factory { private static final ParameterValidator VALIDATOR = new ParameterValidator(); private final IngestService ingestService; - private final DatasourceDao datasourceDao; - private final GeoIpDataDao geoIpDataDao; - private final Ip2GeoCachedDao ip2GeoCachedDao; + private DatasourceDao datasourceDao; + private GeoIpDataDao geoIpDataDao; + private Ip2GeoCachedDao ip2GeoCachedDao; - public Factory( - final IngestService ingestService, - final DatasourceDao datasourceDao, - final GeoIpDataDao geoIpDataDao, - final Ip2GeoCachedDao ip2GeoCachedDao - ) { + public Factory(final IngestService ingestService) { this.ingestService = ingestService; + } + + public void initialize(final DatasourceDao datasourceDao, final GeoIpDataDao geoIpDataDao, final Ip2GeoCachedDao ip2GeoCachedDao) { this.datasourceDao = datasourceDao; this.geoIpDataDao = geoIpDataDao; this.ip2GeoCachedDao = ip2GeoCachedDao; diff --git a/src/main/java/org/opensearch/geospatial/plugin/GeospatialPlugin.java b/src/main/java/org/opensearch/geospatial/plugin/GeospatialPlugin.java index aeafa92f..5d0680b5 100644 --- a/src/main/java/org/opensearch/geospatial/plugin/GeospatialPlugin.java +++ b/src/main/java/org/opensearch/geospatial/plugin/GeospatialPlugin.java @@ -117,6 +117,7 @@ public class GeospatialPlugin extends Plugin private Ip2GeoCachedDao ip2GeoCachedDao; private DatasourceDao datasourceDao; private GeoIpDataDao geoIpDataDao; + private Ip2GeoProcessor.Factory ip2geoProcessor; private URLDenyListChecker urlDenyListChecker; private ClusterService clusterService; private Ip2GeoLockService ip2GeoLockService; @@ -131,9 +132,10 @@ public Collection getSystemIndexDescriptors(Settings sett @Override public Map getProcessors(Processor.Parameters parameters) { + this.ip2geoProcessor = new Ip2GeoProcessor.Factory(parameters.ingestService); return MapBuilder.newMapBuilder() .put(FeatureProcessor.TYPE, new FeatureProcessor.Factory()) - .put(Ip2GeoProcessor.TYPE, new Ip2GeoProcessor.Factory(parameters.ingestService, datasourceDao, geoIpDataDao, ip2GeoCachedDao)) + .put(Ip2GeoProcessor.TYPE, ip2geoProcessor) .immutableMap(); } @@ -185,6 +187,9 @@ public Collection createComponents( this.datasourceDao = new DatasourceDao(pluginClient, clusterService); this.geoIpDataDao = new GeoIpDataDao(clusterService, pluginClient, urlDenyListChecker); this.ip2GeoCachedDao = new Ip2GeoCachedDao(clusterService, datasourceDao, geoIpDataDao); + if (this.ip2geoProcessor != null) { + this.ip2geoProcessor.initialize(datasourceDao, geoIpDataDao, ip2GeoCachedDao); + } this.datasourceUpdateService = new DatasourceUpdateService(clusterService, datasourceDao, geoIpDataDao, urlDenyListChecker); this.ip2GeoExecutor = new Ip2GeoExecutor(threadPool); this.ip2GeoLockService = new Ip2GeoLockService(clusterService); diff --git a/src/test/java/org/opensearch/geospatial/ip2geo/processor/Ip2GeoProcessorTests.java b/src/test/java/org/opensearch/geospatial/ip2geo/processor/Ip2GeoProcessorTests.java index b387ec97..5b6add9a 100644 --- a/src/test/java/org/opensearch/geospatial/ip2geo/processor/Ip2GeoProcessorTests.java +++ b/src/test/java/org/opensearch/geospatial/ip2geo/processor/Ip2GeoProcessorTests.java @@ -41,7 +41,8 @@ public class Ip2GeoProcessorTests extends Ip2GeoTestCase { @Before public void init() { - factory = new Ip2GeoProcessor.Factory(ingestService, datasourceDao, geoIpDataDao, ip2GeoCachedDao); + factory = new Ip2GeoProcessor.Factory(ingestService); + factory.initialize(datasourceDao, geoIpDataDao, ip2GeoCachedDao); } public void testExecuteWithNoIpAndIgnoreMissing() throws Exception {