From d171db04670733120bf2c8f36b3005dcdb4ca9e7 Mon Sep 17 00:00:00 2001 From: Chenyang Ji Date: Wed, 5 Jun 2024 15:01:00 -0700 Subject: [PATCH] Refactor debugExporter into singleton Signed-off-by: Chenyang Ji --- .../insights/core/exporter/DebugExporter.java | 15 ++++++++++++++- .../exporter/QueryInsightsExporterFactory.java | 14 +++++--------- .../core/exporter/DebugExporterTests.java | 2 +- 3 files changed, 20 insertions(+), 11 deletions(-) diff --git a/plugins/query-insights/src/main/java/org/opensearch/plugin/insights/core/exporter/DebugExporter.java b/plugins/query-insights/src/main/java/org/opensearch/plugin/insights/core/exporter/DebugExporter.java index 3da057e1bb984..116bd26e1f9bc 100644 --- a/plugins/query-insights/src/main/java/org/opensearch/plugin/insights/core/exporter/DebugExporter.java +++ b/plugins/query-insights/src/main/java/org/opensearch/plugin/insights/core/exporter/DebugExporter.java @@ -26,7 +26,20 @@ public final class DebugExporter implements QueryInsightsExporter { /** * Constructor of DebugExporter */ - public DebugExporter() {} + private DebugExporter() {} + + private static class InstanceHolder { + private static final DebugExporter INSTANCE = new DebugExporter(); + } + + /** + Get the singleton instance of DebugExporter + * + @return DebugExporter instance + */ + public static DebugExporter getInstance() { + return InstanceHolder.INSTANCE; + } /** * Write the list of SearchQueryRecord to debug log diff --git a/plugins/query-insights/src/main/java/org/opensearch/plugin/insights/core/exporter/QueryInsightsExporterFactory.java b/plugins/query-insights/src/main/java/org/opensearch/plugin/insights/core/exporter/QueryInsightsExporterFactory.java index a90b6f4ec47c9..7324590c9f582 100644 --- a/plugins/query-insights/src/main/java/org/opensearch/plugin/insights/core/exporter/QueryInsightsExporterFactory.java +++ b/plugins/query-insights/src/main/java/org/opensearch/plugin/insights/core/exporter/QueryInsightsExporterFactory.java @@ -93,16 +93,12 @@ public void validateExporterConfig(final Settings settings) throws IllegalArgume * @return QueryInsightsExporter the created exporter sink */ public QueryInsightsExporter createExporter(SinkType type, String indexPattern) { - QueryInsightsExporter exporter; - switch (type) { - case LOCAL_INDEX: - exporter = new LocalIndexExporter(client, DateTimeFormat.forPattern(indexPattern)); - break; - default: - exporter = new DebugExporter(); + if (SinkType.LOCAL_INDEX.equals(type)) { + QueryInsightsExporter exporter = new LocalIndexExporter(client, DateTimeFormat.forPattern(indexPattern)); + this.exporters.add(exporter); + return exporter; } - this.exporters.add(exporter); - return exporter; + return DebugExporter.getInstance(); } /** diff --git a/plugins/query-insights/src/test/java/org/opensearch/plugin/insights/core/exporter/DebugExporterTests.java b/plugins/query-insights/src/test/java/org/opensearch/plugin/insights/core/exporter/DebugExporterTests.java index 8bcc187115a72..736e406289b2c 100644 --- a/plugins/query-insights/src/test/java/org/opensearch/plugin/insights/core/exporter/DebugExporterTests.java +++ b/plugins/query-insights/src/test/java/org/opensearch/plugin/insights/core/exporter/DebugExporterTests.java @@ -23,7 +23,7 @@ public class DebugExporterTests extends OpenSearchTestCase { @Before public void setup() { - debugExporter = new DebugExporter(); + debugExporter = DebugExporter.getInstance(); } public void testExport() {