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 2019/06/26 12:46:38 UTC
[camel] 06/07: CAMEL-13683: camel-main - Allow to turn of fail fast
if configuring properties fail
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git
commit 7d11d5dd9860ad374fe28df8a8b158b7f31109c2
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Wed Jun 26 12:05:23 2019 +0200
CAMEL-13683: camel-main - Allow to turn of fail fast if configuring properties fail
---
.../camel/main/MainConfigurationProperties.java | 26 ++++++++++++++++++++++
.../java/org/apache/camel/main/MainSupport.java | 21 +++++++++++------
.../camel-main-configuration-metadata.json | 7 ++++++
.../META-INF/spring-configuration-metadata.json | 7 ++++++
.../META-INF/spring-configuration-metadata.json | 7 ++++++
5 files changed, 61 insertions(+), 7 deletions(-)
diff --git a/core/camel-main/src/main/java/org/apache/camel/main/MainConfigurationProperties.java b/core/camel-main/src/main/java/org/apache/camel/main/MainConfigurationProperties.java
index 89518b9..2925337 100644
--- a/core/camel-main/src/main/java/org/apache/camel/main/MainConfigurationProperties.java
+++ b/core/camel-main/src/main/java/org/apache/camel/main/MainConfigurationProperties.java
@@ -22,6 +22,7 @@ package org.apache.camel.main;
public class MainConfigurationProperties extends DefaultConfigurationProperties<MainConfigurationProperties> {
private boolean autoConfigurationEnabled = true;
+ private boolean autoConfigurationFailFast = true;
private boolean autowireComponentProperties = true;
private boolean autowireComponentPropertiesDeep;
private boolean autowireComponentPropertiesAllowPrivateSetter = true;
@@ -80,6 +81,20 @@ public class MainConfigurationProperties extends DefaultConfigurationProperties<
this.autoConfigurationEnabled = autoConfigurationEnabled;
}
+ public boolean isAutoConfigurationFailFast() {
+ return autoConfigurationFailFast;
+ }
+
+ /**
+ * Whether auto configuration should fail fast when configuring one ore more properties fails for whatever reason
+ * such as a invalid property name, etc.
+ * <p/>
+ * This option is default enabled.
+ */
+ public void setAutoConfigurationFailFast(boolean autoConfigurationFailFast) {
+ this.autoConfigurationFailFast = autoConfigurationFailFast;
+ }
+
public boolean isAutowireComponentProperties() {
return autowireComponentProperties;
}
@@ -173,6 +188,17 @@ public class MainConfigurationProperties extends DefaultConfigurationProperties<
}
/**
+ * Whether auto configuration should fail fast when configuring one ore more properties fails for whatever reason
+ * such as a invalid property name, etc.
+ * <p/>
+ * This option is default enabled.
+ */
+ public MainConfigurationProperties withAutoConfigurationFailFast(boolean autoConfigurationFailFast) {
+ this.autoConfigurationFailFast = autoConfigurationFailFast;
+ return this;
+ }
+
+ /**
* Whether autowiring components with properties that are of same type, which has been added to the Camel registry, as a singleton instance.
* This is used for convention over configuration to inject DataSource, AmazonLogin instances to the components.
* <p/>
diff --git a/core/camel-main/src/main/java/org/apache/camel/main/MainSupport.java b/core/camel-main/src/main/java/org/apache/camel/main/MainSupport.java
index 8024a49..673a6a3 100644
--- a/core/camel-main/src/main/java/org/apache/camel/main/MainSupport.java
+++ b/core/camel-main/src/main/java/org/apache/camel/main/MainSupport.java
@@ -842,7 +842,7 @@ public abstract class MainSupport extends ServiceSupport {
}
if (!properties.isEmpty()) {
LOG.info("Auto configuring CamelContext from loaded properties: {}", properties.size());
- setPropertiesOnTarget(camelContext, camelContext, properties, true, true);
+ setPropertiesOnTarget(camelContext, camelContext, properties, mainConfigurationProperties.isAutoConfigurationFailFast(), true);
}
if (!hystrixProperties.isEmpty()) {
LOG.info("Auto configuring Hystrix EIP from loaded properties: {}", hystrixProperties.size());
@@ -852,7 +852,7 @@ public abstract class MainSupport extends ServiceSupport {
hystrix = new HystrixConfigurationDefinition();
model.setHystrixConfiguration(hystrix);
}
- setPropertiesOnTarget(camelContext, hystrix, hystrixProperties, true, true);
+ setPropertiesOnTarget(camelContext, hystrix, hystrixProperties, mainConfigurationProperties.isAutoConfigurationFailFast(), true);
}
if (!restProperties.isEmpty()) {
LOG.info("Auto configuring Rest DSL from loaded properties: {}", restProperties.size());
@@ -862,7 +862,7 @@ public abstract class MainSupport extends ServiceSupport {
rest = new RestConfiguration();
model.setRestConfiguration(rest);
}
- setPropertiesOnTarget(camelContext, rest, restProperties, true, true);
+ setPropertiesOnTarget(camelContext, rest, restProperties, mainConfigurationProperties.isAutoConfigurationFailFast(), true);
}
}
@@ -906,7 +906,7 @@ public abstract class MainSupport extends ServiceSupport {
for (Object obj : properties.keySet()) {
Map<String, Object> values = properties.get(obj);
- setPropertiesOnTarget(camelContext, obj, values, true, true);
+ setPropertiesOnTarget(camelContext, obj, values, mainConfigurationProperties.isAutoConfigurationFailFast(), true);
}
}
@@ -930,6 +930,7 @@ public abstract class MainSupport extends ServiceSupport {
Map<String, Object> properties = new LinkedHashMap<>();
+
for (String key : prop.stringPropertyNames()) {
if (key.startsWith("camel.main.")) {
// grab the value
@@ -940,9 +941,15 @@ public abstract class MainSupport extends ServiceSupport {
}
}
+ // special for fail-fast as we need to know this early before we set all the other options
+ Object failFast = properties.remove("autoconfigurationfailfast");
+ if (failFast != null) {
+ PropertyBindingSupport.bindMandatoryProperty(camelContext, config, "autoConfigurationFailFast", failFast, true);
+ }
+
if (!properties.isEmpty()) {
LOG.info("Auto configuring main from loaded properties: {}", properties.size());
- setPropertiesOnTarget(camelContext, config, properties, true, true);
+ setPropertiesOnTarget(camelContext, config, properties, mainConfigurationProperties.isAutoConfigurationFailFast(), true);
}
}
@@ -1053,10 +1060,10 @@ public abstract class MainSupport extends ServiceSupport {
for (Object obj : properties.keySet()) {
Map<String, Object> values = properties.get(obj);
- setPropertiesOnTarget(camelContext, obj, values, true, true);
+ setPropertiesOnTarget(camelContext, obj, values, mainConfigurationProperties.isAutoConfigurationFailFast(), true);
}
- // TODO: log if any options was not configured
+ // TODO: Log which options was not set
}
protected void autoConfigurationFromRegistry(CamelContext camelContext, boolean deepNesting) throws Exception {
diff --git a/core/camel-main/src/main/resources/META-INF/camel-main-configuration-metadata.json b/core/camel-main/src/main/resources/META-INF/camel-main-configuration-metadata.json
index 096901c..0327eca 100644
--- a/core/camel-main/src/main/resources/META-INF/camel-main-configuration-metadata.json
+++ b/core/camel-main/src/main/resources/META-INF/camel-main-configuration-metadata.json
@@ -31,6 +31,13 @@
"defaultValue":"true"
},
{
+ "name":"camel.main.auto-configuration-fail-fast",
+ "type":"boolean",
+ "sourceType":"org.apache.camel.main.MainConfigurationProperties",
+ "description":"Whether auto configuration should fail fast when configuring one ore more properties fails for whatever reason such as a invalid property name, etc. This option is default enabled.",
+ "defaultValue":"true"
+ },
+ {
"name":"camel.main.auto-startup",
"type":"boolean",
"sourceType":"org.apache.camel.main.DefaultConfigurationProperties",
diff --git a/examples/camel-example-main-artemis/src/main/resources/META-INF/spring-configuration-metadata.json b/examples/camel-example-main-artemis/src/main/resources/META-INF/spring-configuration-metadata.json
index ba64ce0..364d91c 100644
--- a/examples/camel-example-main-artemis/src/main/resources/META-INF/spring-configuration-metadata.json
+++ b/examples/camel-example-main-artemis/src/main/resources/META-INF/spring-configuration-metadata.json
@@ -171,6 +171,13 @@
"defaultValue":"true"
},
{
+ "name":"camel.main.auto-configuration-fail-fast",
+ "type":"boolean",
+ "sourceType":"org.apache.camel.main.MainConfigurationProperties",
+ "description":"Whether auto configuration should fail fast when configuring one ore more properties fails for whatever reason such as a invalid property name, etc. This option is default enabled.",
+ "defaultValue":"true"
+ },
+ {
"name":"camel.main.auto-startup",
"type":"boolean",
"sourceType":"org.apache.camel.main.DefaultConfigurationProperties",
diff --git a/examples/camel-example-main/src/main/resources/META-INF/spring-configuration-metadata.json b/examples/camel-example-main/src/main/resources/META-INF/spring-configuration-metadata.json
index 5340af6..b5bf26c 100644
--- a/examples/camel-example-main/src/main/resources/META-INF/spring-configuration-metadata.json
+++ b/examples/camel-example-main/src/main/resources/META-INF/spring-configuration-metadata.json
@@ -161,6 +161,13 @@
"defaultValue":"true"
},
{
+ "name":"camel.main.auto-configuration-fail-fast",
+ "type":"boolean",
+ "sourceType":"org.apache.camel.main.MainConfigurationProperties",
+ "description":"Whether auto configuration should fail fast when configuring one ore more properties fails for whatever reason such as a invalid property name, etc. This option is default enabled.",
+ "defaultValue":"true"
+ },
+ {
"name":"camel.main.auto-startup",
"type":"boolean",
"sourceType":"org.apache.camel.main.DefaultConfigurationProperties",