You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2021/12/16 06:28:00 UTC

[camel] branch main updated: CAMEL-17337 - Resolve regression in FhirComponent

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 <cl...@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);