This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch health-component
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 6646d5b6b8f02efbb4cfdd2a5475d3e0955b430b
Author: Claus Ibsen <[email protected]>
AuthorDate: Mon Jul 24 12:03:22 2023 +0200

    CAMEL-18992: HealthCheckComponent to be able to enable/disable per 
component health-checks as standard component configuration.
---
 .../camel/catalog/components/google-storage.json   |  5 +-
 .../GoogleCloudStorageComponentConfigurer.java     | 18 ++++++++
 .../component/google/storage/google-storage.json   |  5 +-
 .../storage/GoogleCloudStorageComponent.java       |  4 +-
 .../google/storage/GoogleCloudStorageConsumer.java |  2 +
 .../google/storage/GoogleCloudStorageEndpoint.java |  5 ++
 .../dsl/GoogleStorageComponentBuilderFactory.java  | 53 ++++++++++++++++++++++
 7 files changed, 88 insertions(+), 4 deletions(-)

diff --git 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-storage.json
 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-storage.json
index d3dc6a31e80..7fe72103112 100644
--- 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-storage.json
+++ 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-storage.json
@@ -39,7 +39,10 @@
     "lazyStartProducer": { "index": 14, "kind": "property", "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 fai [...]
     "objectName": { "index": 15, "kind": "property", "displayName": "Object 
Name", "group": "producer", "label": "producer", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "autowired": 
false, "secret": false, "configurationClass": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConfiguration", 
"configurationField": "configuration", "description": "The Object name inside 
the bucket" },
     "operation": { "index": 16, "kind": "property", "displayName": 
"Operation", "group": "producer", "label": "producer", "required": false, 
"type": "object", "javaType": 
"org.apache.camel.component.google.storage.GoogleCloudStorageOperations", 
"enum": [ "copyObject", "listObjects", "deleteObject", "deleteBucket", 
"listBuckets", "getObject", "createDownloadLink" ], "deprecated": false, 
"autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.google.storage.G [...]
-    "autowiredEnabled": { "index": 17, "kind": "property", "displayName": 
"Autowired Enabled", "group": "advanced", "label": "advanced", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Whether autowiring is enabled. This is used for automatic autowiring options 
(the option must be marked as autowired) by looking up in the registry to find 
if there is a single instance of matching  [...]
+    "autowiredEnabled": { "index": 17, "kind": "property", "displayName": 
"Autowired Enabled", "group": "advanced", "label": "advanced", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Whether autowiring is enabled. This is used for automatic autowiring options 
(the option must be marked as autowired) by looking up in the registry to find 
if there is a single instance of matching  [...]
+    "healthCheckConsumerEnabled": { "index": 18, "kind": "property", 
"displayName": "Health Check Consumer Enabled", "group": "health", "label": 
"health", "required": false, "type": "boolean", "javaType": "boolean", 
"deprecated": false, "autowired": false, "secret": false, "defaultValue": true, 
"description": "Used for enabling or disabling all consumer based health checks 
from this component" },
+    "healthCheckEnabled": { "index": 19, "kind": "property", "displayName": 
"Health Check Enabled", "group": "health", "label": "health", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": "Used 
for enabling or disabling all health checks from this component" },
+    "healthCheckProducerEnabled": { "index": 20, "kind": "property", 
"displayName": "Health Check Producer Enabled", "group": "health", "label": 
"health", "required": false, "type": "boolean", "javaType": "boolean", 
"deprecated": false, "autowired": false, "secret": false, "defaultValue": true, 
"description": "Used for enabling or disabling all producer based health checks 
from this component" }
   },
   "headers": {
     "CamelGoogleCloudStorageOperation": { "index": 0, "kind": "header", 
"displayName": "", "group": "producer", "label": "producer", "required": false, 
"javaType": 
"org.apache.camel.component.google.storage.GoogleCloudStorageOperations", 
"enum": [ "copyObject", "listObjects", "deleteObject", "deleteBucket", 
"listBuckets", "getObject", "createDownloadLink" ], "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "The 
operation to perform.", "const [...]
diff --git 
a/components/camel-google/camel-google-storage/src/generated/java/org/apache/camel/component/google/storage/GoogleCloudStorageComponentConfigurer.java
 
b/components/camel-google/camel-google-storage/src/generated/java/org/apache/camel/component/google/storage/GoogleCloudStorageComponentConfigurer.java
index 86e582fe662..7b37ffb1906 100644
--- 
a/components/camel-google/camel-google-storage/src/generated/java/org/apache/camel/component/google/storage/GoogleCloudStorageComponentConfigurer.java
+++ 
b/components/camel-google/camel-google-storage/src/generated/java/org/apache/camel/component/google/storage/GoogleCloudStorageComponentConfigurer.java
@@ -42,6 +42,12 @@ public class GoogleCloudStorageComponentConfigurer extends 
PropertyConfigurerSup
         case "downloadfilename":
         case "downloadFileName": 
getOrCreateConfiguration(target).setDownloadFileName(property(camelContext, 
java.lang.String.class, value)); return true;
         case "filter": 
getOrCreateConfiguration(target).setFilter(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "healthcheckconsumerenabled":
+        case "healthCheckConsumerEnabled": 
target.setHealthCheckConsumerEnabled(property(camelContext, boolean.class, 
value)); return true;
+        case "healthcheckenabled":
+        case "healthCheckEnabled": 
target.setHealthCheckEnabled(property(camelContext, boolean.class, value)); 
return true;
+        case "healthcheckproducerenabled":
+        case "healthCheckProducerEnabled": 
target.setHealthCheckProducerEnabled(property(camelContext, boolean.class, 
value)); return true;
         case "includebody":
         case "includeBody": 
getOrCreateConfiguration(target).setIncludeBody(property(camelContext, 
boolean.class, value)); return true;
         case "includefolders":
@@ -87,6 +93,12 @@ public class GoogleCloudStorageComponentConfigurer extends 
PropertyConfigurerSup
         case "downloadfilename":
         case "downloadFileName": return java.lang.String.class;
         case "filter": return java.lang.String.class;
+        case "healthcheckconsumerenabled":
+        case "healthCheckConsumerEnabled": return boolean.class;
+        case "healthcheckenabled":
+        case "healthCheckEnabled": return boolean.class;
+        case "healthcheckproducerenabled":
+        case "healthCheckProducerEnabled": return boolean.class;
         case "includebody":
         case "includeBody": return boolean.class;
         case "includefolders":
@@ -128,6 +140,12 @@ public class GoogleCloudStorageComponentConfigurer extends 
PropertyConfigurerSup
         case "downloadfilename":
         case "downloadFileName": return 
getOrCreateConfiguration(target).getDownloadFileName();
         case "filter": return getOrCreateConfiguration(target).getFilter();
+        case "healthcheckconsumerenabled":
+        case "healthCheckConsumerEnabled": return 
target.isHealthCheckConsumerEnabled();
+        case "healthcheckenabled":
+        case "healthCheckEnabled": return target.isHealthCheckEnabled();
+        case "healthcheckproducerenabled":
+        case "healthCheckProducerEnabled": return 
target.isHealthCheckProducerEnabled();
         case "includebody":
         case "includeBody": return 
getOrCreateConfiguration(target).isIncludeBody();
         case "includefolders":
diff --git 
a/components/camel-google/camel-google-storage/src/generated/resources/org/apache/camel/component/google/storage/google-storage.json
 
b/components/camel-google/camel-google-storage/src/generated/resources/org/apache/camel/component/google/storage/google-storage.json
index d3dc6a31e80..7fe72103112 100644
--- 
a/components/camel-google/camel-google-storage/src/generated/resources/org/apache/camel/component/google/storage/google-storage.json
+++ 
b/components/camel-google/camel-google-storage/src/generated/resources/org/apache/camel/component/google/storage/google-storage.json
@@ -39,7 +39,10 @@
     "lazyStartProducer": { "index": 14, "kind": "property", "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 fai [...]
     "objectName": { "index": 15, "kind": "property", "displayName": "Object 
Name", "group": "producer", "label": "producer", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "autowired": 
false, "secret": false, "configurationClass": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConfiguration", 
"configurationField": "configuration", "description": "The Object name inside 
the bucket" },
     "operation": { "index": 16, "kind": "property", "displayName": 
"Operation", "group": "producer", "label": "producer", "required": false, 
"type": "object", "javaType": 
"org.apache.camel.component.google.storage.GoogleCloudStorageOperations", 
"enum": [ "copyObject", "listObjects", "deleteObject", "deleteBucket", 
"listBuckets", "getObject", "createDownloadLink" ], "deprecated": false, 
"autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.google.storage.G [...]
-    "autowiredEnabled": { "index": 17, "kind": "property", "displayName": 
"Autowired Enabled", "group": "advanced", "label": "advanced", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Whether autowiring is enabled. This is used for automatic autowiring options 
(the option must be marked as autowired) by looking up in the registry to find 
if there is a single instance of matching  [...]
+    "autowiredEnabled": { "index": 17, "kind": "property", "displayName": 
"Autowired Enabled", "group": "advanced", "label": "advanced", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": 
"Whether autowiring is enabled. This is used for automatic autowiring options 
(the option must be marked as autowired) by looking up in the registry to find 
if there is a single instance of matching  [...]
+    "healthCheckConsumerEnabled": { "index": 18, "kind": "property", 
"displayName": "Health Check Consumer Enabled", "group": "health", "label": 
"health", "required": false, "type": "boolean", "javaType": "boolean", 
"deprecated": false, "autowired": false, "secret": false, "defaultValue": true, 
"description": "Used for enabling or disabling all consumer based health checks 
from this component" },
+    "healthCheckEnabled": { "index": 19, "kind": "property", "displayName": 
"Health Check Enabled", "group": "health", "label": "health", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, 
"autowired": false, "secret": false, "defaultValue": true, "description": "Used 
for enabling or disabling all health checks from this component" },
+    "healthCheckProducerEnabled": { "index": 20, "kind": "property", 
"displayName": "Health Check Producer Enabled", "group": "health", "label": 
"health", "required": false, "type": "boolean", "javaType": "boolean", 
"deprecated": false, "autowired": false, "secret": false, "defaultValue": true, 
"description": "Used for enabling or disabling all producer based health checks 
from this component" }
   },
   "headers": {
     "CamelGoogleCloudStorageOperation": { "index": 0, "kind": "header", 
"displayName": "", "group": "producer", "label": "producer", "required": false, 
"javaType": 
"org.apache.camel.component.google.storage.GoogleCloudStorageOperations", 
"enum": [ "copyObject", "listObjects", "deleteObject", "deleteBucket", 
"listBuckets", "getObject", "createDownloadLink" ], "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "The 
operation to perform.", "const [...]
diff --git 
a/components/camel-google/camel-google-storage/src/main/java/org/apache/camel/component/google/storage/GoogleCloudStorageComponent.java
 
b/components/camel-google/camel-google-storage/src/main/java/org/apache/camel/component/google/storage/GoogleCloudStorageComponent.java
index 04f377bf73f..d3399c74a14 100644
--- 
a/components/camel-google/camel-google-storage/src/main/java/org/apache/camel/component/google/storage/GoogleCloudStorageComponent.java
+++ 
b/components/camel-google/camel-google-storage/src/main/java/org/apache/camel/component/google/storage/GoogleCloudStorageComponent.java
@@ -22,10 +22,10 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.annotations.Component;
-import org.apache.camel.support.DefaultComponent;
+import org.apache.camel.support.HealthCheckComponent;
 
 @Component("google-storage")
-public class GoogleCloudStorageComponent extends DefaultComponent {
+public class GoogleCloudStorageComponent extends HealthCheckComponent {
 
     @Metadata
     private GoogleCloudStorageConfiguration configuration = new 
GoogleCloudStorageConfiguration();
diff --git 
a/components/camel-google/camel-google-storage/src/main/java/org/apache/camel/component/google/storage/GoogleCloudStorageConsumer.java
 
b/components/camel-google/camel-google-storage/src/main/java/org/apache/camel/component/google/storage/GoogleCloudStorageConsumer.java
index 7b488098706..0f140b1b4ab 100644
--- 
a/components/camel-google/camel-google-storage/src/main/java/org/apache/camel/component/google/storage/GoogleCloudStorageConsumer.java
+++ 
b/components/camel-google/camel-google-storage/src/main/java/org/apache/camel/component/google/storage/GoogleCloudStorageConsumer.java
@@ -73,6 +73,8 @@ public class GoogleCloudStorageConsumer extends 
ScheduledBatchPollingConsumer {
 
         if (healthCheckRepository != null) {
             consumerHealthCheck = new 
GoogleCloudStorageConsumerHealthCheck(this, getRouteId());
+            
consumerHealthCheck.setEnabled(getEndpoint().getComponent().isHealthCheckEnabled()
+                    && 
getEndpoint().getComponent().isHealthCheckConsumerEnabled());
             healthCheckRepository.addHealthCheck(consumerHealthCheck);
         }
 
diff --git 
a/components/camel-google/camel-google-storage/src/main/java/org/apache/camel/component/google/storage/GoogleCloudStorageEndpoint.java
 
b/components/camel-google/camel-google-storage/src/main/java/org/apache/camel/component/google/storage/GoogleCloudStorageEndpoint.java
index 47e40880e02..b28ab11c6cf 100644
--- 
a/components/camel-google/camel-google-storage/src/main/java/org/apache/camel/component/google/storage/GoogleCloudStorageEndpoint.java
+++ 
b/components/camel-google/camel-google-storage/src/main/java/org/apache/camel/component/google/storage/GoogleCloudStorageEndpoint.java
@@ -66,6 +66,11 @@ public class GoogleCloudStorageEndpoint extends 
ScheduledPollEndpoint {
         return consumer;
     }
 
+    @Override
+    public GoogleCloudStorageComponent getComponent() {
+        return (GoogleCloudStorageComponent) super.getComponent();
+    }
+
     @Override
     protected void doStart() throws Exception {
         super.doStart();
diff --git 
a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/GoogleStorageComponentBuilderFactory.java
 
b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/GoogleStorageComponentBuilderFactory.java
index 91222f66435..3b832c0f60f 100644
--- 
a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/GoogleStorageComponentBuilderFactory.java
+++ 
b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/GoogleStorageComponentBuilderFactory.java
@@ -375,6 +375,56 @@ public interface GoogleStorageComponentBuilderFactory {
             doSetProperty("autowiredEnabled", autowiredEnabled);
             return this;
         }
+        /**
+         * Used for enabling or disabling all consumer based health checks from
+         * this component.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: true
+         * Group: health
+         * 
+         * @param healthCheckConsumerEnabled the value to set
+         * @return the dsl builder
+         */
+        default GoogleStorageComponentBuilder healthCheckConsumerEnabled(
+                boolean healthCheckConsumerEnabled) {
+            doSetProperty("healthCheckConsumerEnabled", 
healthCheckConsumerEnabled);
+            return this;
+        }
+        /**
+         * Used for enabling or disabling all health checks from this 
component.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: true
+         * Group: health
+         * 
+         * @param healthCheckEnabled the value to set
+         * @return the dsl builder
+         */
+        default GoogleStorageComponentBuilder healthCheckEnabled(
+                boolean healthCheckEnabled) {
+            doSetProperty("healthCheckEnabled", healthCheckEnabled);
+            return this;
+        }
+        /**
+         * Used for enabling or disabling all producer based health checks from
+         * this component.
+         * 
+         * The option is a: &lt;code&gt;boolean&lt;/code&gt; type.
+         * 
+         * Default: true
+         * Group: health
+         * 
+         * @param healthCheckProducerEnabled the value to set
+         * @return the dsl builder
+         */
+        default GoogleStorageComponentBuilder healthCheckProducerEnabled(
+                boolean healthCheckProducerEnabled) {
+            doSetProperty("healthCheckProducerEnabled", 
healthCheckProducerEnabled);
+            return this;
+        }
     }
 
     class GoogleStorageComponentBuilderImpl
@@ -417,6 +467,9 @@ public interface GoogleStorageComponentBuilderFactory {
             case "objectName": 
getOrCreateConfiguration((GoogleCloudStorageComponent) 
component).setObjectName((java.lang.String) value); return true;
             case "operation": 
getOrCreateConfiguration((GoogleCloudStorageComponent) 
component).setOperation((org.apache.camel.component.google.storage.GoogleCloudStorageOperations)
 value); return true;
             case "autowiredEnabled": ((GoogleCloudStorageComponent) 
component).setAutowiredEnabled((boolean) value); return true;
+            case "healthCheckConsumerEnabled": ((GoogleCloudStorageComponent) 
component).setHealthCheckConsumerEnabled((boolean) value); return true;
+            case "healthCheckEnabled": ((GoogleCloudStorageComponent) 
component).setHealthCheckEnabled((boolean) value); return true;
+            case "healthCheckProducerEnabled": ((GoogleCloudStorageComponent) 
component).setHealthCheckProducerEnabled((boolean) value); return true;
             default: return false;
             }
         }

Reply via email to