This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push: new 0816d95 CAMEL-17337 - Resolve regression in FhirComponent 0816d95 is described below commit 0816d9501192ddb74d913fdc49ae73608c44e240 Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Thu Dec 16 07:27:18 2021 +0100 CAMEL-17337 - Resolve regression in FhirComponent --- .../apache/camel/component/fhir/FhirComponent.java | 39 ++++++------ .../apache/camel/component/fhir/FhirEndpoint.java | 4 +- .../camel/component/fhir/internal/FhirHelper.java | 70 +++++++++++----------- .../camel/component/fhir/FhirConfigurationIT.java | 2 +- 4 files changed, 60 insertions(+), 55 deletions(-) diff --git a/components/camel-fhir/camel-fhir-component/src/main/java/org/apache/camel/component/fhir/FhirComponent.java b/components/camel-fhir/camel-fhir-component/src/main/java/org/apache/camel/component/fhir/FhirComponent.java index 114dafd..a4f9198 100644 --- a/components/camel-fhir/camel-fhir-component/src/main/java/org/apache/camel/component/fhir/FhirComponent.java +++ b/components/camel-fhir/camel-fhir-component/src/main/java/org/apache/camel/component/fhir/FhirComponent.java @@ -26,14 +26,11 @@ import org.apache.camel.spi.Metadata; import org.apache.camel.spi.annotations.Component; import org.apache.camel.support.component.AbstractApiComponent; -/** - * Represents the component that manages {@link FhirEndpoint}. - */ @Component("fhir") public class FhirComponent extends AbstractApiComponent<FhirApiName, FhirConfiguration, FhirApiCollection> { @Metadata(label = "advanced") - private IGenericClient client; + private FhirConfiguration configuration; public FhirComponent() { super(FhirEndpoint.class, FhirApiName.class, FhirApiCollection.getCollection()); @@ -54,21 +51,29 @@ public class FhirComponent extends AbstractApiComponent<FhirApiName, FhirConfigu FhirConfiguration endpointConfiguration) { endpointConfiguration.setApiName(apiName); endpointConfiguration.setMethodName(methodName); + + // ensure a client is set on the config + if (endpointConfiguration.getClient() == null) { + endpointConfiguration.setClient(createClient(endpointConfiguration)); + } + return new FhirEndpoint(uri, this, apiName, methodName, endpointConfiguration); } - public IGenericClient getClient(FhirConfiguration endpointConfiguration) { - final IGenericClient result; - if (endpointConfiguration.equals(this.configuration)) { - synchronized (this) { - if (client == null) { - client = FhirHelper.createClient(this.configuration, getCamelContext()); - } - } - result = client; - } else { - result = FhirHelper.createClient(endpointConfiguration, getCamelContext()); - } - return result; + protected IGenericClient createClient(FhirConfiguration config) { + return FhirHelper.createClient(config, getCamelContext()); + } + + @Override + public FhirConfiguration getConfiguration() { + return configuration; + } + + /** + * To use the shared configuration + */ + @Override + public void setConfiguration(FhirConfiguration configuration) { + this.configuration = configuration; } } diff --git a/components/camel-fhir/camel-fhir-component/src/main/java/org/apache/camel/component/fhir/FhirEndpoint.java b/components/camel-fhir/camel-fhir-component/src/main/java/org/apache/camel/component/fhir/FhirEndpoint.java index 86a4cfb..9d7ef09 100644 --- a/components/camel-fhir/camel-fhir-component/src/main/java/org/apache/camel/component/fhir/FhirEndpoint.java +++ b/components/camel-fhir/camel-fhir-component/src/main/java/org/apache/camel/component/fhir/FhirEndpoint.java @@ -157,8 +157,8 @@ public class FhirEndpoint extends AbstractApiEndpoint<FhirApiName, FhirConfigura } - IGenericClient getClient() { - return ((FhirComponent) getComponent()).getClient(configuration); + public IGenericClient getClient() { + return configuration.getClient(); } private Map<ExtraParameters, Object> getExtraParameters(Map<String, Object> properties) { diff --git a/components/camel-fhir/camel-fhir-component/src/main/java/org/apache/camel/component/fhir/internal/FhirHelper.java b/components/camel-fhir/camel-fhir-component/src/main/java/org/apache/camel/component/fhir/internal/FhirHelper.java index 972f909..34f1a7a 100644 --- a/components/camel-fhir/camel-fhir-component/src/main/java/org/apache/camel/component/fhir/internal/FhirHelper.java +++ b/components/camel-fhir/camel-fhir-component/src/main/java/org/apache/camel/component/fhir/internal/FhirHelper.java @@ -43,24 +43,24 @@ public final class FhirHelper { // hide utility class constructor } - public static IGenericClient createClient(FhirConfiguration endpointConfiguration, CamelContext camelContext) { - if (endpointConfiguration.getClient() != null) { - return endpointConfiguration.getClient(); + public static IGenericClient createClient(FhirConfiguration config, CamelContext camelContext) { + if (config.getClient() != null) { + return config.getClient(); } - FhirContext fhirContext = getFhirContext(endpointConfiguration); - if (endpointConfiguration.isDeferModelScanning()) { + FhirContext fhirContext = getFhirContext(config); + if (config.isDeferModelScanning()) { fhirContext.setPerformanceOptions(PerformanceOptionsEnum.DEFERRED_MODEL_SCANNING); } - if (endpointConfiguration.getClientFactory() != null) { - fhirContext.setRestfulClientFactory(endpointConfiguration.getClientFactory()); + if (config.getClientFactory() != null) { + fhirContext.setRestfulClientFactory(config.getClientFactory()); } IRestfulClientFactory restfulClientFactory = fhirContext.getRestfulClientFactory(); - configureClientFactory(endpointConfiguration, restfulClientFactory, camelContext); - IGenericClient genericClient = fhirContext.newRestfulGenericClient(endpointConfiguration.getServerUrl()); - genericClient.setPrettyPrint(endpointConfiguration.isPrettyPrint()); - EncodingEnum encoding = endpointConfiguration.getEncoding(); - SummaryEnum summary = endpointConfiguration.getSummary(); + configureClientFactory(config, restfulClientFactory, camelContext); + IGenericClient genericClient = fhirContext.newRestfulGenericClient(config.getServerUrl()); + genericClient.setPrettyPrint(config.isPrettyPrint()); + EncodingEnum encoding = config.getEncoding(); + SummaryEnum summary = config.getSummary(); if (encoding != null) { genericClient.setEncoding(encoding); @@ -68,18 +68,18 @@ public final class FhirHelper { if (summary != null) { genericClient.setSummary(summary); } - if (endpointConfiguration.isForceConformanceCheck()) { + if (config.isForceConformanceCheck()) { genericClient.forceConformanceCheck(); } - registerClientInterceptors(genericClient, endpointConfiguration); + registerClientInterceptors(genericClient, config); return genericClient; } private static void configureClientFactory( - FhirConfiguration endpointConfiguration, IRestfulClientFactory restfulClientFactory, CamelContext camelContext) { - Integer connectionTimeout = endpointConfiguration.getConnectionTimeout(); - Integer socketTimeout = endpointConfiguration.getSocketTimeout(); + FhirConfiguration config, IRestfulClientFactory restfulClientFactory, CamelContext camelContext) { + Integer connectionTimeout = config.getConnectionTimeout(); + Integer socketTimeout = config.getSocketTimeout(); if (ObjectHelper.isNotEmpty(connectionTimeout)) { restfulClientFactory.setConnectTimeout(connectionTimeout); @@ -88,16 +88,16 @@ public final class FhirHelper { restfulClientFactory.setSocketTimeout(socketTimeout); } - configureProxy(endpointConfiguration, restfulClientFactory, camelContext); + configureProxy(config, restfulClientFactory, camelContext); } private static void configureProxy( - FhirConfiguration endpointConfiguration, IRestfulClientFactory restfulClientFactory, CamelContext camelContext) { - ServerValidationModeEnum validationMode = endpointConfiguration.getValidationMode(); - String proxyHost = endpointConfiguration.getProxyHost(); - Integer proxyPort = endpointConfiguration.getProxyPort(); - String proxyUser = endpointConfiguration.getProxyUser(); - String proxyPassword = endpointConfiguration.getProxyPassword(); + FhirConfiguration config, IRestfulClientFactory restfulClientFactory, CamelContext camelContext) { + ServerValidationModeEnum validationMode = config.getValidationMode(); + String proxyHost = config.getProxyHost(); + Integer proxyPort = config.getProxyPort(); + String proxyUser = config.getProxyUser(); + String proxyPassword = config.getProxyPassword(); String camelProxyHost = camelContext.getGlobalOption("http.proxyHost"); String camelProxyPort = camelContext.getGlobalOption("http.proxyPort"); @@ -116,21 +116,21 @@ public final class FhirHelper { } } - private static void registerClientInterceptors(IGenericClient genericClient, FhirConfiguration endpointConfiguration) { - String username = endpointConfiguration.getUsername(); - String password = endpointConfiguration.getPassword(); - String accessToken = endpointConfiguration.getAccessToken(); - String sessionCookie = endpointConfiguration.getSessionCookie(); + private static void registerClientInterceptors(IGenericClient genericClient, FhirConfiguration config) { + String username = config.getUsername(); + String password = config.getPassword(); + String accessToken = config.getAccessToken(); + String sessionCookie = config.getSessionCookie(); if (ObjectHelper.isNotEmpty(username)) { genericClient.registerInterceptor(new BasicAuthInterceptor(username, password)); } if (ObjectHelper.isNotEmpty(accessToken)) { genericClient.registerInterceptor(new BearerTokenAuthInterceptor(accessToken)); } - if (endpointConfiguration.isLog()) { + if (config.isLog()) { genericClient.registerInterceptor(new LoggingInterceptor(true)); } - if (endpointConfiguration.isCompress()) { + if (config.isCompress()) { genericClient.registerInterceptor(new GZipContentInterceptor()); } if (ObjectHelper.isNotEmpty(sessionCookie)) { @@ -138,15 +138,15 @@ public final class FhirHelper { } } - private static FhirContext getFhirContext(FhirConfiguration endpointConfiguration) { - FhirContext context = endpointConfiguration.getFhirContext(); + private static FhirContext getFhirContext(FhirConfiguration config) { + FhirContext context = config.getFhirContext(); if (context != null) { return context; } - if (ObjectHelper.isEmpty(endpointConfiguration.getServerUrl())) { + if (ObjectHelper.isEmpty(config.getServerUrl())) { throw new RuntimeCamelException("The FHIR URL must be set!"); } - FhirVersionEnum fhirVersion = endpointConfiguration.getFhirVersion(); + FhirVersionEnum fhirVersion = config.getFhirVersion(); return new FhirContext(fhirVersion); } } diff --git a/components/camel-fhir/camel-fhir-component/src/test/java/org/apache/camel/component/fhir/FhirConfigurationIT.java b/components/camel-fhir/camel-fhir-component/src/test/java/org/apache/camel/component/fhir/FhirConfigurationIT.java index 9fca464..710c487 100644 --- a/components/camel-fhir/camel-fhir-component/src/test/java/org/apache/camel/component/fhir/FhirConfigurationIT.java +++ b/components/camel-fhir/camel-fhir-component/src/test/java/org/apache/camel/component/fhir/FhirConfigurationIT.java @@ -71,7 +71,7 @@ public class FhirConfigurationIT extends AbstractFhirTestSupport { fhirConfiguration.setFhirVersion("DSTU3"); component.setConfiguration(fhirConfiguration); - component.getClient(fhirConfiguration).registerInterceptor(this.mockClientInterceptor); + component.createClient(fhirConfiguration).registerInterceptor(this.mockClientInterceptor); this.componentConfiguration = fhirConfiguration; context.addComponent("fhir", component);