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 885bd0bc4e1 CAMEL-17911: fix creation of duplicate apiProxy (#7845)
885bd0bc4e1 is described below

commit 885bd0bc4e14199273d4f8c45f98d69050215f90
Author: klease <38634989+kle...@users.noreply.github.com>
AuthorDate: Tue Jun 21 18:23:23 2022 +0200

    CAMEL-17911: fix creation of duplicate apiProxy (#7845)
    
    * CAMEL-17911: fix creation of duplicate apiProxy
    The check for equality always failed because the configuration is only set
    on the superclass but was read from Olingo2Component.
    Modify AbstractOlingo2TestSupport to fix flaky test due to reused Camel 
context.
    
    * CAMEL-17911: Fix handling of configuration in olingo4 in same way as for 
olingo2.
---
 .../org/apache/camel/component/olingo2/Olingo2EndpointConfigurer.java | 2 +-
 .../resources/org/apache/camel/component/olingo2/olingo2.json         | 4 ++--
 .../java/org/apache/camel/component/olingo2/Olingo2Component.java     | 4 ++--
 .../apache/camel/component/olingo2/AbstractOlingo2TestSupport.java    | 2 --
 .../org/apache/camel/component/olingo4/Olingo4EndpointConfigurer.java | 2 +-
 .../resources/org/apache/camel/component/olingo4/olingo4.json         | 4 ++--
 .../java/org/apache/camel/component/olingo4/Olingo4Component.java     | 4 ++--
 7 files changed, 10 insertions(+), 12 deletions(-)

diff --git 
a/components/camel-olingo2/camel-olingo2-component/src/generated/java/org/apache/camel/component/olingo2/Olingo2EndpointConfigurer.java
 
b/components/camel-olingo2/camel-olingo2-component/src/generated/java/org/apache/camel/component/olingo2/Olingo2EndpointConfigurer.java
index e6319c5448a..47cd8edf343 100644
--- 
a/components/camel-olingo2/camel-olingo2-component/src/generated/java/org/apache/camel/component/olingo2/Olingo2EndpointConfigurer.java
+++ 
b/components/camel-olingo2/camel-olingo2-component/src/generated/java/org/apache/camel/component/olingo2/Olingo2EndpointConfigurer.java
@@ -32,9 +32,9 @@ public class Olingo2EndpointConfigurer extends 
PropertyConfigurerSupport impleme
         map.put("proxy", org.apache.http.HttpHost.class);
         map.put("serviceUri", java.lang.String.class);
         map.put("socketTimeout", int.class);
+        map.put("bridgeErrorHandler", boolean.class);
         map.put("sendEmptyMessageWhenIdle", boolean.class);
         map.put("splitResult", boolean.class);
-        map.put("bridgeErrorHandler", boolean.class);
         map.put("exceptionHandler", 
org.apache.camel.spi.ExceptionHandler.class);
         map.put("exchangePattern", org.apache.camel.ExchangePattern.class);
         map.put("pollStrategy", 
org.apache.camel.spi.PollingConsumerPollStrategy.class);
diff --git 
a/components/camel-olingo2/camel-olingo2-component/src/generated/resources/org/apache/camel/component/olingo2/olingo2.json
 
b/components/camel-olingo2/camel-olingo2-component/src/generated/resources/org/apache/camel/component/olingo2/olingo2.json
index 183adb272dc..da6de63d054 100644
--- 
a/components/camel-olingo2/camel-olingo2-component/src/generated/resources/org/apache/camel/component/olingo2/olingo2.json
+++ 
b/components/camel-olingo2/camel-olingo2-component/src/generated/resources/org/apache/camel/component/olingo2/olingo2.json
@@ -58,13 +58,13 @@
     "proxy": { "kind": "parameter", "displayName": "Proxy", "group": "common", 
"label": "", "required": false, "type": "object", "javaType": 
"org.apache.http.HttpHost", "deprecated": false, "autowired": false, "secret": 
false, "configurationClass": 
"org.apache.camel.component.olingo2.Olingo2Configuration", 
"configurationField": "configuration", "description": "HTTP proxy server 
configuration" },
     "serviceUri": { "kind": "parameter", "displayName": "Service Uri", 
"group": "common", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "configurationClass": 
"org.apache.camel.component.olingo2.Olingo2Configuration", 
"configurationField": "configuration", "description": "Target OData service 
base URI, e.g. http:\/\/services.odata.org\/OData\/OData.svc" },
     "socketTimeout": { "kind": "parameter", "displayName": "Socket Timeout", 
"group": "common", "label": "", "required": false, "type": "integer", 
"javaType": "int", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": 30000, "configurationClass": 
"org.apache.camel.component.olingo2.Olingo2Configuration", 
"configurationField": "configuration", "description": "HTTP request timeout in 
milliseconds, defaults to 30,000 (30 seconds)" },
+    "bridgeErrorHandler": { "kind": "parameter", "displayName": "Bridge Error 
Handler", "group": "consumer", "label": "consumer", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": false, "description": "Allows for bridging the 
consumer to the Camel routing Error Handler, which mean any exceptions occurred 
while the consumer is trying to pickup incoming messages, or the likes, will 
now be processed as a m [...]
     "sendEmptyMessageWhenIdle": { "kind": "parameter", "displayName": "Send 
Empty Message When Idle", "group": "consumer", "label": "consumer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": false, "description": "If 
the polling consumer did not poll any files, you can enable this option to send 
an empty message (no body) instead." },
     "splitResult": { "kind": "parameter", "displayName": "Split Result", 
"group": "consumer", "label": "consumer", "required": false, "type": "boolean", 
"javaType": "boolean", "deprecated": false, "autowired": false, "secret": 
false, "defaultValue": true, "configurationClass": 
"org.apache.camel.component.olingo2.Olingo2Configuration", 
"configurationField": "configuration", "description": "For endpoints that 
return an array or collection, a consumer endpoint will map every element to 
dist [...]
-    "bridgeErrorHandler": { "kind": "parameter", "displayName": "Bridge Error 
Handler", "group": "consumer (advanced)", "label": "consumer,advanced", 
"required": false, "type": "boolean", "javaType": "boolean", "deprecated": 
false, "autowired": false, "secret": false, "defaultValue": false, 
"description": "Allows for bridging the consumer to the Camel routing Error 
Handler, which mean any exceptions occurred while the consumer is trying to 
pickup incoming messages, or the likes, will now [...]
     "exceptionHandler": { "kind": "parameter", "displayName": "Exception 
Handler", "group": "consumer (advanced)", "label": "consumer,advanced", 
"required": false, "type": "object", "javaType": 
"org.apache.camel.spi.ExceptionHandler", "optionalPrefix": "consumer.", 
"deprecated": false, "autowired": false, "secret": false, "description": "To 
let the consumer use a custom ExceptionHandler. Notice if the option 
bridgeErrorHandler is enabled then this option is not in use. By default the 
con [...]
     "exchangePattern": { "kind": "parameter", "displayName": "Exchange 
Pattern", "group": "consumer (advanced)", "label": "consumer,advanced", 
"required": false, "type": "object", "javaType": 
"org.apache.camel.ExchangePattern", "enum": [ "InOnly", "InOut", 
"InOptionalOut" ], "deprecated": false, "autowired": false, "secret": false, 
"description": "Sets the exchange pattern when the consumer creates an 
exchange." },
     "pollStrategy": { "kind": "parameter", "displayName": "Poll Strategy", 
"group": "consumer (advanced)", "label": "consumer,advanced", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.spi.PollingConsumerPollStrategy", "deprecated": false, 
"autowired": false, "secret": false, "description": "A pluggable 
org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your 
custom implementation to control error handling usually occurred during the 
poll operation  [...]
-    "lazyStartProducer": { "kind": "parameter", "displayName": "Lazy Start 
Producer", "group": "producer (advanced)", "label": "producer,advanced", 
"required": false, "type": "boolean", "javaType": "boolean", "deprecated": 
false, "autowired": false, "secret": false, "defaultValue": false, 
"description": "Whether the producer should be started lazy (on the first 
message). By starting lazy you can use this to allow CamelContext and routes to 
startup in situations where a producer may other [...]
+    "lazyStartProducer": { "kind": "parameter", "displayName": "Lazy Start 
Producer", "group": "producer", "label": "producer", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": false, "description": "Whether the producer 
should be started lazy (on the first message). By starting lazy you can use 
this to allow CamelContext and routes to startup in situations where a producer 
may otherwise fail during sta [...]
     "httpAsyncClientBuilder": { "kind": "parameter", "displayName": "Http 
Async Client Builder", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": 
"org.apache.http.impl.nio.client.HttpAsyncClientBuilder", "deprecated": false, 
"autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.olingo2.Olingo2Configuration", 
"configurationField": "configuration", "description": "Custom HTTP async client 
builder for more complex HT [...]
     "httpClientBuilder": { "kind": "parameter", "displayName": "Http Client 
Builder", "group": "advanced", "label": "advanced", "required": false, "type": 
"object", "javaType": "org.apache.http.impl.client.HttpClientBuilder", 
"deprecated": false, "autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.olingo2.Olingo2Configuration", 
"configurationField": "configuration", "description": "Custom HTTP client 
builder for more complex HTTP client configuration, o [...]
     "backoffErrorThreshold": { "kind": "parameter", "displayName": "Backoff 
Error Threshold", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "integer", "javaType": "int", "deprecated": false, 
"autowired": false, "secret": false, "description": "The number of subsequent 
error polls (failed due some error) that should happen before the 
backoffMultipler should kick-in." },
diff --git 
a/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2Component.java
 
b/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2Component.java
index 6a57a6ebf1c..de5bca0f747 100644
--- 
a/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2Component.java
+++ 
b/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2Component.java
@@ -118,10 +118,10 @@ public class Olingo2Component extends 
AbstractApiComponent<Olingo2ApiName, Oling
 
     public Olingo2AppWrapper createApiProxy(Olingo2Configuration 
endpointConfiguration) {
         final Olingo2AppWrapper result;
-        if (endpointConfiguration.equals(this.configuration)) {
+        if (endpointConfiguration.equals(getConfiguration())) {
             synchronized (this) {
                 if (apiProxy == null) {
-                    apiProxy = createOlingo2App(this.configuration);
+                    apiProxy = createOlingo2App(getConfiguration());
                 }
             }
             result = apiProxy;
diff --git 
a/components/camel-olingo2/camel-olingo2-component/src/test/java/org/apache/camel/component/olingo2/AbstractOlingo2TestSupport.java
 
b/components/camel-olingo2/camel-olingo2-component/src/test/java/org/apache/camel/component/olingo2/AbstractOlingo2TestSupport.java
index 7d446c69b45..a915dfd7865 100644
--- 
a/components/camel-olingo2/camel-olingo2-component/src/test/java/org/apache/camel/component/olingo2/AbstractOlingo2TestSupport.java
+++ 
b/components/camel-olingo2/camel-olingo2-component/src/test/java/org/apache/camel/component/olingo2/AbstractOlingo2TestSupport.java
@@ -23,12 +23,10 @@ import java.util.Properties;
 import org.apache.camel.CamelContext;
 import org.apache.camel.CamelExecutionException;
 import org.apache.camel.test.junit5.CamelTestSupport;
-import org.junit.jupiter.api.TestInstance;
 
 /**
  * Abstract base class for Olingo Integration tests generated by Camel API 
component maven plugin.
  */
-@TestInstance(TestInstance.Lifecycle.PER_CLASS)
 public class AbstractOlingo2TestSupport extends CamelTestSupport {
 
     private static final String TEST_OPTIONS_PROPERTIES = 
"/test-options.properties";
diff --git 
a/components/camel-olingo4/camel-olingo4-component/src/generated/java/org/apache/camel/component/olingo4/Olingo4EndpointConfigurer.java
 
b/components/camel-olingo4/camel-olingo4-component/src/generated/java/org/apache/camel/component/olingo4/Olingo4EndpointConfigurer.java
index 4314cd35994..3f7b2e75fc1 100644
--- 
a/components/camel-olingo4/camel-olingo4-component/src/generated/java/org/apache/camel/component/olingo4/Olingo4EndpointConfigurer.java
+++ 
b/components/camel-olingo4/camel-olingo4-component/src/generated/java/org/apache/camel/component/olingo4/Olingo4EndpointConfigurer.java
@@ -30,9 +30,9 @@ public class Olingo4EndpointConfigurer extends 
PropertyConfigurerSupport impleme
         map.put("proxy", org.apache.http.HttpHost.class);
         map.put("serviceUri", java.lang.String.class);
         map.put("socketTimeout", int.class);
+        map.put("bridgeErrorHandler", boolean.class);
         map.put("sendEmptyMessageWhenIdle", boolean.class);
         map.put("splitResult", boolean.class);
-        map.put("bridgeErrorHandler", boolean.class);
         map.put("exceptionHandler", 
org.apache.camel.spi.ExceptionHandler.class);
         map.put("exchangePattern", org.apache.camel.ExchangePattern.class);
         map.put("pollStrategy", 
org.apache.camel.spi.PollingConsumerPollStrategy.class);
diff --git 
a/components/camel-olingo4/camel-olingo4-component/src/generated/resources/org/apache/camel/component/olingo4/olingo4.json
 
b/components/camel-olingo4/camel-olingo4-component/src/generated/resources/org/apache/camel/component/olingo4/olingo4.json
index efa0b61051b..a398590c5dd 100644
--- 
a/components/camel-olingo4/camel-olingo4-component/src/generated/resources/org/apache/camel/component/olingo4/olingo4.json
+++ 
b/components/camel-olingo4/camel-olingo4-component/src/generated/resources/org/apache/camel/component/olingo4/olingo4.json
@@ -54,13 +54,13 @@
     "proxy": { "kind": "parameter", "displayName": "Proxy", "group": "common", 
"label": "", "required": false, "type": "object", "javaType": 
"org.apache.http.HttpHost", "deprecated": false, "autowired": false, "secret": 
false, "configurationClass": 
"org.apache.camel.component.olingo4.Olingo4Configuration", 
"configurationField": "configuration", "description": "HTTP proxy server 
configuration" },
     "serviceUri": { "kind": "parameter", "displayName": "Service Uri", 
"group": "common", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "configurationClass": 
"org.apache.camel.component.olingo4.Olingo4Configuration", 
"configurationField": "configuration", "description": "Target OData service 
base URI, e.g. http:\/\/services.odata.org\/OData\/OData.svc" },
     "socketTimeout": { "kind": "parameter", "displayName": "Socket Timeout", 
"group": "common", "label": "", "required": false, "type": "integer", 
"javaType": "int", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": 30000, "configurationClass": 
"org.apache.camel.component.olingo4.Olingo4Configuration", 
"configurationField": "configuration", "description": "HTTP request timeout in 
milliseconds, defaults to 30,000 (30 seconds)" },
+    "bridgeErrorHandler": { "kind": "parameter", "displayName": "Bridge Error 
Handler", "group": "consumer", "label": "consumer", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": false, "description": "Allows for bridging the 
consumer to the Camel routing Error Handler, which mean any exceptions occurred 
while the consumer is trying to pickup incoming messages, or the likes, will 
now be processed as a m [...]
     "sendEmptyMessageWhenIdle": { "kind": "parameter", "displayName": "Send 
Empty Message When Idle", "group": "consumer", "label": "consumer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": false, "description": "If 
the polling consumer did not poll any files, you can enable this option to send 
an empty message (no body) instead." },
     "splitResult": { "kind": "parameter", "displayName": "Split Result", 
"group": "consumer", "label": "consumer", "required": false, "type": "boolean", 
"javaType": "boolean", "deprecated": false, "autowired": false, "secret": 
false, "defaultValue": true, "configurationClass": 
"org.apache.camel.component.olingo4.Olingo4Configuration", 
"configurationField": "configuration", "description": "For endpoints that 
return an array or collection, a consumer endpoint will map every element to 
dist [...]
-    "bridgeErrorHandler": { "kind": "parameter", "displayName": "Bridge Error 
Handler", "group": "consumer (advanced)", "label": "consumer,advanced", 
"required": false, "type": "boolean", "javaType": "boolean", "deprecated": 
false, "autowired": false, "secret": false, "defaultValue": false, 
"description": "Allows for bridging the consumer to the Camel routing Error 
Handler, which mean any exceptions occurred while the consumer is trying to 
pickup incoming messages, or the likes, will now [...]
     "exceptionHandler": { "kind": "parameter", "displayName": "Exception 
Handler", "group": "consumer (advanced)", "label": "consumer,advanced", 
"required": false, "type": "object", "javaType": 
"org.apache.camel.spi.ExceptionHandler", "optionalPrefix": "consumer.", 
"deprecated": false, "autowired": false, "secret": false, "description": "To 
let the consumer use a custom ExceptionHandler. Notice if the option 
bridgeErrorHandler is enabled then this option is not in use. By default the 
con [...]
     "exchangePattern": { "kind": "parameter", "displayName": "Exchange 
Pattern", "group": "consumer (advanced)", "label": "consumer,advanced", 
"required": false, "type": "object", "javaType": 
"org.apache.camel.ExchangePattern", "enum": [ "InOnly", "InOut", 
"InOptionalOut" ], "deprecated": false, "autowired": false, "secret": false, 
"description": "Sets the exchange pattern when the consumer creates an 
exchange." },
     "pollStrategy": { "kind": "parameter", "displayName": "Poll Strategy", 
"group": "consumer (advanced)", "label": "consumer,advanced", "required": 
false, "type": "object", "javaType": 
"org.apache.camel.spi.PollingConsumerPollStrategy", "deprecated": false, 
"autowired": false, "secret": false, "description": "A pluggable 
org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your 
custom implementation to control error handling usually occurred during the 
poll operation  [...]
-    "lazyStartProducer": { "kind": "parameter", "displayName": "Lazy Start 
Producer", "group": "producer (advanced)", "label": "producer,advanced", 
"required": false, "type": "boolean", "javaType": "boolean", "deprecated": 
false, "autowired": false, "secret": false, "defaultValue": false, 
"description": "Whether the producer should be started lazy (on the first 
message). By starting lazy you can use this to allow CamelContext and routes to 
startup in situations where a producer may other [...]
+    "lazyStartProducer": { "kind": "parameter", "displayName": "Lazy Start 
Producer", "group": "producer", "label": "producer", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": false, "description": "Whether the producer 
should be started lazy (on the first message). By starting lazy you can use 
this to allow CamelContext and routes to startup in situations where a producer 
may otherwise fail during sta [...]
     "httpAsyncClientBuilder": { "kind": "parameter", "displayName": "Http 
Async Client Builder", "group": "advanced", "label": "advanced", "required": 
false, "type": "object", "javaType": 
"org.apache.http.impl.nio.client.HttpAsyncClientBuilder", "deprecated": false, 
"autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.olingo4.Olingo4Configuration", 
"configurationField": "configuration", "description": "Custom HTTP async client 
builder for more complex HT [...]
     "httpClientBuilder": { "kind": "parameter", "displayName": "Http Client 
Builder", "group": "advanced", "label": "advanced", "required": false, "type": 
"object", "javaType": "org.apache.http.impl.client.HttpClientBuilder", 
"deprecated": false, "autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.olingo4.Olingo4Configuration", 
"configurationField": "configuration", "description": "Custom HTTP client 
builder for more complex HTTP client configuration, o [...]
     "backoffErrorThreshold": { "kind": "parameter", "displayName": "Backoff 
Error Threshold", "group": "scheduler", "label": "consumer,scheduler", 
"required": false, "type": "integer", "javaType": "int", "deprecated": false, 
"autowired": false, "secret": false, "description": "The number of subsequent 
error polls (failed due some error) that should happen before the 
backoffMultipler should kick-in." },
diff --git 
a/components/camel-olingo4/camel-olingo4-component/src/main/java/org/apache/camel/component/olingo4/Olingo4Component.java
 
b/components/camel-olingo4/camel-olingo4-component/src/main/java/org/apache/camel/component/olingo4/Olingo4Component.java
index 4edd53a9222..24e1e822553 100644
--- 
a/components/camel-olingo4/camel-olingo4-component/src/main/java/org/apache/camel/component/olingo4/Olingo4Component.java
+++ 
b/components/camel-olingo4/camel-olingo4-component/src/main/java/org/apache/camel/component/olingo4/Olingo4Component.java
@@ -118,10 +118,10 @@ public class Olingo4Component extends 
AbstractApiComponent<Olingo4ApiName, Oling
 
     public Olingo4AppWrapper createApiProxy(Olingo4Configuration 
endpointConfiguration) {
         final Olingo4AppWrapper result;
-        if (endpointConfiguration.equals(this.configuration)) {
+        if (endpointConfiguration.equals(getConfiguration())) {
             synchronized (this) {
                 if (apiProxy == null) {
-                    apiProxy = createOlingo4App(this.configuration);
+                    apiProxy = createOlingo4App(getConfiguration());
                 }
             }
             result = apiProxy;

Reply via email to