This is an automated email from the ASF dual-hosted git repository. chriss pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/nifi.git
The following commit(s) were added to refs/heads/main by this push: new 275dcc1e50 NIFI-12891: Update ElasticSearchClientService member variables on verify 275dcc1e50 is described below commit 275dcc1e5084908deef8259f7f6d3807d7432463 Author: bob <b...@apache.org> AuthorDate: Tue Mar 12 21:11:06 2024 -0500 NIFI-12891: Update ElasticSearchClientService member variables on verify This closes #8496 Signed-off-by: Chris Sampson <chris.sampso...@gmail.com> --- .../ElasticSearchClientServiceImpl.java | 26 +++++++++++++++++----- .../integration/ElasticSearchClientService_IT.java | 13 +++++++++++ 2 files changed, 33 insertions(+), 6 deletions(-) diff --git a/nifi-nar-bundles/nifi-elasticsearch-bundle/nifi-elasticsearch-client-service/src/main/java/org/apache/nifi/elasticsearch/ElasticSearchClientServiceImpl.java b/nifi-nar-bundles/nifi-elasticsearch-bundle/nifi-elasticsearch-client-service/src/main/java/org/apache/nifi/elasticsearch/ElasticSearchClientServiceImpl.java index 8445a883fd..e2efb792f4 100644 --- a/nifi-nar-bundles/nifi-elasticsearch-bundle/nifi-elasticsearch-client-service/src/main/java/org/apache/nifi/elasticsearch/ElasticSearchClientServiceImpl.java +++ b/nifi-nar-bundles/nifi-elasticsearch-bundle/nifi-elasticsearch-client-service/src/main/java/org/apache/nifi/elasticsearch/ElasticSearchClientServiceImpl.java @@ -192,19 +192,23 @@ public class ElasticSearchClientServiceImpl extends AbstractControllerService im responseCharset = Charset.forName(context.getProperty(CHARSET).getValue()); // re-create the ObjectMapper in case the SUPPRESS_NULLS property has changed - the JsonInclude settings aren't dynamic - mapper = new ObjectMapper(); - if (ALWAYS_SUPPRESS.getValue().equals(context.getProperty(SUPPRESS_NULLS).getValue())) { - mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); - mapper.setSerializationInclusion(JsonInclude.Include.NON_EMPTY); - } + createObjectMapper(context); - prettyPrintWriter = mapper.writerWithDefaultPrettyPrinter(); } catch (final Exception ex) { getLogger().error("Could not initialize ElasticSearch client.", ex); throw new InitializationException(ex); } } + private void createObjectMapper(final ConfigurationContext context) { + mapper = new ObjectMapper(); + if (ALWAYS_SUPPRESS.getValue().equals(context.getProperty(SUPPRESS_NULLS).getValue())) { + mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); + mapper.setSerializationInclusion(JsonInclude.Include.NON_EMPTY); + } + prettyPrintWriter = mapper.writerWithDefaultPrettyPrinter(); + } + @OnDisabled public void onDisabled() throws IOException { if (this.sniffer != null) { @@ -217,6 +221,9 @@ public class ElasticSearchClientServiceImpl extends AbstractControllerService im this.client = null; } this.url = null; + this.mapper = null; + this.prettyPrintWriter = null; + this.responseCharset = null; } @Override @@ -231,6 +238,9 @@ public class ElasticSearchClientServiceImpl extends AbstractControllerService im final ConfigVerificationResult.Builder snifferResult = new ConfigVerificationResult.Builder() .verificationStepName(VERIFICATION_STEP_SNIFFER); + responseCharset = Charset.forName(context.getProperty(CHARSET).getValue()); + createObjectMapper(context); + // configure the Rest Client try (final RestClient verifyClient = setupClient(context)) { clientSetupResult.outcome(ConfigVerificationResult.Outcome.SUCCESSFUL); @@ -252,6 +262,9 @@ public class ElasticSearchClientServiceImpl extends AbstractControllerService im clientSetupResult.outcome(ConfigVerificationResult.Outcome.FAILED) .explanation("Unable to configure, are all mandatory properties set (see logs for details)?"); } finally { + responseCharset = null; + mapper = null; + prettyPrintWriter = null; final ConfigVerificationResult clientSetup = clientSetupResult.build(); if (ConfigVerificationResult.Outcome.SUCCESSFUL != clientSetup.getOutcome()) { connectionResult.outcome(ConfigVerificationResult.Outcome.SKIPPED) @@ -266,6 +279,7 @@ public class ElasticSearchClientServiceImpl extends AbstractControllerService im results.add(connectionResult.build()); results.add(warningsResult.build()); results.add(snifferResult.build()); + } return results; diff --git a/nifi-nar-bundles/nifi-elasticsearch-bundle/nifi-elasticsearch-client-service/src/test/java/org/apache/nifi/elasticsearch/integration/ElasticSearchClientService_IT.java b/nifi-nar-bundles/nifi-elasticsearch-bundle/nifi-elasticsearch-client-service/src/test/java/org/apache/nifi/elasticsearch/integration/ElasticSearchClientService_IT.java index 867e83717c..04a2cb62e6 100644 --- a/nifi-nar-bundles/nifi-elasticsearch-bundle/nifi-elasticsearch-client-service/src/test/java/org/apache/nifi/elasticsearch/integration/ElasticSearchClientService_IT.java +++ b/nifi-nar-bundles/nifi-elasticsearch-bundle/nifi-elasticsearch-client-service/src/test/java/org/apache/nifi/elasticsearch/integration/ElasticSearchClientService_IT.java @@ -96,6 +96,19 @@ class ElasticSearchClientService_IT extends AbstractElasticsearch_IT { assertVerifySnifferSkipped(results); } + @Test + void testVerifyDisabledSuccess() { + //Disable as verify can be run in either state + runner.disableControllerService(service); + final List<ConfigVerificationResult> results = service.verify( + new MockConfigurationContext(service, getClientServiceProperties(), runner.getProcessContext().getControllerServiceLookup(), null), + runner.getLogger(), + Collections.emptyMap() + ); + assertEquals(4, results.size()); + assertEquals(3, results.stream().filter(result -> result.getOutcome() == ConfigVerificationResult.Outcome.SUCCESSFUL).count(), results.toString()); + } + @Test void testVerifySniffer() { runner.disableControllerService(service);