You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by lb...@apache.org on 2017/05/19 12:35:35 UTC
[25/38] camel git commit: CAMEL-11291: spring boot starters: allow to
hook into auto configuration process
http://git-wip-us.apache.org/repos/asf/camel/blob/3eeb97ac/platforms/spring-boot/components-starter/camel-cxf-starter/src/main/java/org/apache/camel/component/cxf/springboot/CxfComponentAutoConfiguration.java
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-cxf-starter/src/main/java/org/apache/camel/component/cxf/springboot/CxfComponentAutoConfiguration.java b/platforms/spring-boot/components-starter/camel-cxf-starter/src/main/java/org/apache/camel/component/cxf/springboot/CxfComponentAutoConfiguration.java
index f0d939a..e73b1f5 100644
--- a/platforms/spring-boot/components-starter/camel-cxf-starter/src/main/java/org/apache/camel/component/cxf/springboot/CxfComponentAutoConfiguration.java
+++ b/platforms/spring-boot/components-starter/camel-cxf-starter/src/main/java/org/apache/camel/component/cxf/springboot/CxfComponentAutoConfiguration.java
@@ -17,49 +17,81 @@
package org.apache.camel.component.cxf.springboot;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import javax.annotation.Generated;
import org.apache.camel.CamelContext;
import org.apache.camel.component.cxf.CxfComponent;
+import org.apache.camel.spi.ComponentCustomizer;
+import org.apache.camel.spring.boot.CamelAutoConfiguration;
+import org.apache.camel.spring.boot.ComponentConfigurationProperties;
+import org.apache.camel.spring.boot.util.GroupCondition;
import org.apache.camel.util.IntrospectionSupport;
+import org.apache.camel.util.ObjectHelper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
-import org.springframework.boot.autoconfigure.condition.ConditionMessage;
-import org.springframework.boot.autoconfigure.condition.ConditionOutcome;
+import org.springframework.boot.autoconfigure.condition.AllNestedConditions;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
-import org.springframework.boot.autoconfigure.condition.SpringBootCondition;
-import org.springframework.boot.bind.RelaxedPropertyResolver;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.ConditionContext;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Lazy;
-import org.springframework.core.type.AnnotatedTypeMetadata;
/**
* Generated by camel-package-maven-plugin - do not edit this file!
*/
@Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
@Configuration
-@ConditionalOnBean(type = "org.apache.camel.spring.boot.CamelAutoConfiguration")
@Conditional(CxfComponentAutoConfiguration.Condition.class)
-@AutoConfigureAfter(name = "org.apache.camel.spring.boot.CamelAutoConfiguration")
-@EnableConfigurationProperties(CxfComponentConfiguration.class)
-public class CxfComponentAutoConfiguration {
+@AutoConfigureAfter(CamelAutoConfiguration.class)
+@EnableConfigurationProperties({ComponentConfigurationProperties.class,
+ CxfComponentConfiguration.class})
+public class CxfComponentAutoConfiguration extends AllNestedConditions {
+
+ private static final Logger LOGGER = LoggerFactory
+ .getLogger(CxfComponentAutoConfiguration.class);
+ @Autowired
+ private CamelContext camelContext;
+ @Autowired(required = false)
+ private List<ComponentCustomizer<CxfComponent>> customizers;
+ @Autowired
+ private ComponentConfigurationProperties globalConfiguration;
+ @Autowired
+ private CxfComponentConfiguration componentConfiguration;
+
+ public CxfComponentAutoConfiguration() {
+ super(ConfigurationPhase.REGISTER_BEAN);
+ }
+
+ @ConditionalOnBean(CamelContext.class)
+ public static class OnCamelContext {
+ }
+
+ @ConditionalOnBean(CamelAutoConfiguration.class)
+ public static class OnCamelAutoConfiguration {
+ }
+
+ public static class Condition extends GroupCondition {
+ public Condition() {
+ super("camel.component", "camel.component.cxf");
+ }
+ }
@Lazy
@Bean(name = "cxf-component")
@ConditionalOnClass(CamelContext.class)
@ConditionalOnMissingBean(CxfComponent.class)
- public CxfComponent configureCxfComponent(CamelContext camelContext,
- CxfComponentConfiguration configuration) throws Exception {
+ public CxfComponent configureCxfComponent() throws Exception {
CxfComponent component = new CxfComponent();
component.setCamelContext(camelContext);
Map<String, Object> parameters = new HashMap<>();
- IntrospectionSupport.getProperties(configuration, parameters, null,
- false);
+ IntrospectionSupport.getProperties(componentConfiguration, parameters,
+ null, false);
for (Map.Entry<String, Object> entry : parameters.entrySet()) {
Object value = entry.getValue();
Class<?> paramClass = value.getClass();
@@ -82,32 +114,16 @@ public class CxfComponentAutoConfiguration {
}
IntrospectionSupport.setProperties(camelContext,
camelContext.getTypeConverter(), component, parameters);
- return component;
- }
-
- @Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
- public static class Condition extends SpringBootCondition {
- @Override
- public ConditionOutcome getMatchOutcome(
- ConditionContext conditionContext,
- AnnotatedTypeMetadata annotatedTypeMetadata) {
- boolean groupEnabled = isEnabled(conditionContext,
- "camel.component.", true);
- ConditionMessage.Builder message = ConditionMessage
- .forCondition("camel.component.cxf");
- if (isEnabled(conditionContext, "camel.component.cxf.",
- groupEnabled)) {
- return ConditionOutcome.match(message.because("enabled"));
+ boolean useConfigurers = globalConfiguration.getConfigurer()
+ .isEnabled()
+ && componentConfiguration.getConfigurer().isEnabled();
+ if (useConfigurers && ObjectHelper.isNotEmpty(customizers)) {
+ for (ComponentCustomizer<CxfComponent> configurer : customizers) {
+ LOGGER.debug("Configure component {}, with configurer {}",
+ component, configurer);
+ configurer.customize(component);
}
- return ConditionOutcome.noMatch(message.because("not enabled"));
- }
-
- private boolean isEnabled(
- org.springframework.context.annotation.ConditionContext context,
- java.lang.String prefix, boolean defaultValue) {
- RelaxedPropertyResolver resolver = new RelaxedPropertyResolver(
- context.getEnvironment(), prefix);
- return resolver.getProperty("enabled", Boolean.class, defaultValue);
}
+ return component;
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/camel/blob/3eeb97ac/platforms/spring-boot/components-starter/camel-cxf-starter/src/main/java/org/apache/camel/component/cxf/springboot/CxfComponentConfiguration.java
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-cxf-starter/src/main/java/org/apache/camel/component/cxf/springboot/CxfComponentConfiguration.java b/platforms/spring-boot/components-starter/camel-cxf-starter/src/main/java/org/apache/camel/component/cxf/springboot/CxfComponentConfiguration.java
index 7d7d474..dbea09b 100644
--- a/platforms/spring-boot/components-starter/camel-cxf-starter/src/main/java/org/apache/camel/component/cxf/springboot/CxfComponentConfiguration.java
+++ b/platforms/spring-boot/components-starter/camel-cxf-starter/src/main/java/org/apache/camel/component/cxf/springboot/CxfComponentConfiguration.java
@@ -18,6 +18,7 @@ package org.apache.camel.component.cxf.springboot;
import javax.annotation.Generated;
import org.apache.camel.spi.HeaderFilterStrategy;
+import org.apache.camel.spring.boot.ComponentConfigurationPropertiesCommon;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.NestedConfigurationProperty;
@@ -28,7 +29,9 @@ import org.springframework.boot.context.properties.NestedConfigurationProperty;
*/
@Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
@ConfigurationProperties(prefix = "camel.component.cxf")
-public class CxfComponentConfiguration {
+public class CxfComponentConfiguration
+ extends
+ ComponentConfigurationPropertiesCommon {
/**
* This option controls whether the CXF component when running in PAYLOAD
http://git-wip-us.apache.org/repos/asf/camel/blob/3eeb97ac/platforms/spring-boot/components-starter/camel-digitalocean-starter/src/main/java/org/apache/camel/component/digitalocean/springboot/DigitalOceanComponentAutoConfiguration.java
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-digitalocean-starter/src/main/java/org/apache/camel/component/digitalocean/springboot/DigitalOceanComponentAutoConfiguration.java b/platforms/spring-boot/components-starter/camel-digitalocean-starter/src/main/java/org/apache/camel/component/digitalocean/springboot/DigitalOceanComponentAutoConfiguration.java
index d9995b3..b337233 100644
--- a/platforms/spring-boot/components-starter/camel-digitalocean-starter/src/main/java/org/apache/camel/component/digitalocean/springboot/DigitalOceanComponentAutoConfiguration.java
+++ b/platforms/spring-boot/components-starter/camel-digitalocean-starter/src/main/java/org/apache/camel/component/digitalocean/springboot/DigitalOceanComponentAutoConfiguration.java
@@ -16,68 +16,115 @@
*/
package org.apache.camel.component.digitalocean.springboot;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
import javax.annotation.Generated;
import org.apache.camel.CamelContext;
import org.apache.camel.component.digitalocean.DigitalOceanComponent;
+import org.apache.camel.spi.ComponentCustomizer;
+import org.apache.camel.spring.boot.CamelAutoConfiguration;
+import org.apache.camel.spring.boot.ComponentConfigurationProperties;
+import org.apache.camel.spring.boot.util.GroupCondition;
+import org.apache.camel.util.IntrospectionSupport;
+import org.apache.camel.util.ObjectHelper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
-import org.springframework.boot.autoconfigure.condition.ConditionMessage;
-import org.springframework.boot.autoconfigure.condition.ConditionOutcome;
+import org.springframework.boot.autoconfigure.condition.AllNestedConditions;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
-import org.springframework.boot.autoconfigure.condition.SpringBootCondition;
-import org.springframework.boot.bind.RelaxedPropertyResolver;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.ConditionContext;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Lazy;
-import org.springframework.core.type.AnnotatedTypeMetadata;
/**
* Generated by camel-package-maven-plugin - do not edit this file!
*/
@Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
@Configuration
-@ConditionalOnBean(type = "org.apache.camel.spring.boot.CamelAutoConfiguration")
@Conditional(DigitalOceanComponentAutoConfiguration.Condition.class)
-@AutoConfigureAfter(name = "org.apache.camel.spring.boot.CamelAutoConfiguration")
-public class DigitalOceanComponentAutoConfiguration {
+@AutoConfigureAfter(CamelAutoConfiguration.class)
+@EnableConfigurationProperties({ComponentConfigurationProperties.class,
+ DigitalOceanComponentConfiguration.class})
+public class DigitalOceanComponentAutoConfiguration extends AllNestedConditions {
+
+ private static final Logger LOGGER = LoggerFactory
+ .getLogger(DigitalOceanComponentAutoConfiguration.class);
+ @Autowired
+ private CamelContext camelContext;
+ @Autowired(required = false)
+ private List<ComponentCustomizer<DigitalOceanComponent>> customizers;
+ @Autowired
+ private ComponentConfigurationProperties globalConfiguration;
+ @Autowired
+ private DigitalOceanComponentConfiguration componentConfiguration;
+
+ public DigitalOceanComponentAutoConfiguration() {
+ super(ConfigurationPhase.REGISTER_BEAN);
+ }
+
+ @ConditionalOnBean(CamelContext.class)
+ public static class OnCamelContext {
+ }
+
+ @ConditionalOnBean(CamelAutoConfiguration.class)
+ public static class OnCamelAutoConfiguration {
+ }
+
+ public static class Condition extends GroupCondition {
+ public Condition() {
+ super("camel.component", "camel.component.digitalocean");
+ }
+ }
@Lazy
@Bean(name = "digitalocean-component")
@ConditionalOnClass(CamelContext.class)
@ConditionalOnMissingBean(DigitalOceanComponent.class)
- public DigitalOceanComponent configureDigitalOceanComponent(
- CamelContext camelContext) throws Exception {
+ public DigitalOceanComponent configureDigitalOceanComponent()
+ throws Exception {
DigitalOceanComponent component = new DigitalOceanComponent();
component.setCamelContext(camelContext);
- return component;
- }
-
- @Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
- public static class Condition extends SpringBootCondition {
- @Override
- public ConditionOutcome getMatchOutcome(
- ConditionContext conditionContext,
- AnnotatedTypeMetadata annotatedTypeMetadata) {
- boolean groupEnabled = isEnabled(conditionContext,
- "camel.component.", true);
- ConditionMessage.Builder message = ConditionMessage
- .forCondition("camel.component.digitalocean");
- if (isEnabled(conditionContext, "camel.component.digitalocean.",
- groupEnabled)) {
- return ConditionOutcome.match(message.because("enabled"));
+ Map<String, Object> parameters = new HashMap<>();
+ IntrospectionSupport.getProperties(componentConfiguration, parameters,
+ null, false);
+ for (Map.Entry<String, Object> entry : parameters.entrySet()) {
+ Object value = entry.getValue();
+ Class<?> paramClass = value.getClass();
+ if (paramClass.getName().endsWith("NestedConfiguration")) {
+ Class nestedClass = null;
+ try {
+ nestedClass = (Class) paramClass.getDeclaredField(
+ "CAMEL_NESTED_CLASS").get(null);
+ HashMap<String, Object> nestedParameters = new HashMap<>();
+ IntrospectionSupport.getProperties(value, nestedParameters,
+ null, false);
+ Object nestedProperty = nestedClass.newInstance();
+ IntrospectionSupport.setProperties(camelContext,
+ camelContext.getTypeConverter(), nestedProperty,
+ nestedParameters);
+ entry.setValue(nestedProperty);
+ } catch (NoSuchFieldException e) {
+ }
}
- return ConditionOutcome.noMatch(message.because("not enabled"));
}
-
- private boolean isEnabled(
- org.springframework.context.annotation.ConditionContext context,
- java.lang.String prefix, boolean defaultValue) {
- RelaxedPropertyResolver resolver = new RelaxedPropertyResolver(
- context.getEnvironment(), prefix);
- return resolver.getProperty("enabled", Boolean.class, defaultValue);
+ IntrospectionSupport.setProperties(camelContext,
+ camelContext.getTypeConverter(), component, parameters);
+ boolean useConfigurers = globalConfiguration.getConfigurer()
+ .isEnabled()
+ && componentConfiguration.getConfigurer().isEnabled();
+ if (useConfigurers && ObjectHelper.isNotEmpty(customizers)) {
+ for (ComponentCustomizer<DigitalOceanComponent> configurer : customizers) {
+ LOGGER.debug("Configure component {}, with configurer {}",
+ component, configurer);
+ configurer.customize(component);
+ }
}
+ return component;
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/camel/blob/3eeb97ac/platforms/spring-boot/components-starter/camel-digitalocean-starter/src/main/java/org/apache/camel/component/digitalocean/springboot/DigitalOceanComponentConfiguration.java
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-digitalocean-starter/src/main/java/org/apache/camel/component/digitalocean/springboot/DigitalOceanComponentConfiguration.java b/platforms/spring-boot/components-starter/camel-digitalocean-starter/src/main/java/org/apache/camel/component/digitalocean/springboot/DigitalOceanComponentConfiguration.java
new file mode 100644
index 0000000..5693b6d
--- /dev/null
+++ b/platforms/spring-boot/components-starter/camel-digitalocean-starter/src/main/java/org/apache/camel/component/digitalocean/springboot/DigitalOceanComponentConfiguration.java
@@ -0,0 +1,50 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.digitalocean.springboot;
+
+import javax.annotation.Generated;
+import org.apache.camel.spring.boot.ComponentConfigurationPropertiesCommon;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+
+/**
+ * The DigitalOcean component allows you to manage Droplets and resources within
+ * the DigitalOcean cloud.
+ *
+ * Generated by camel-package-maven-plugin - do not edit this file!
+ */
+@Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
+@ConfigurationProperties(prefix = "camel.component.digitalocean")
+public class DigitalOceanComponentConfiguration
+ extends
+ ComponentConfigurationPropertiesCommon {
+
+ /**
+ * Whether the component should resolve property placeholders on itself when
+ * starting. Only properties which are of String type can use property
+ * placeholders.
+ */
+ private Boolean resolvePropertyPlaceholders = true;
+
+ public Boolean getResolvePropertyPlaceholders() {
+ return resolvePropertyPlaceholders;
+ }
+
+ public void setResolvePropertyPlaceholders(
+ Boolean resolvePropertyPlaceholders) {
+ this.resolvePropertyPlaceholders = resolvePropertyPlaceholders;
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/camel/blob/3eeb97ac/platforms/spring-boot/components-starter/camel-disruptor-starter/src/main/java/org/apache/camel/component/disruptor/springboot/DisruptorComponentAutoConfiguration.java
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-disruptor-starter/src/main/java/org/apache/camel/component/disruptor/springboot/DisruptorComponentAutoConfiguration.java b/platforms/spring-boot/components-starter/camel-disruptor-starter/src/main/java/org/apache/camel/component/disruptor/springboot/DisruptorComponentAutoConfiguration.java
index 9e25274..26c3125 100644
--- a/platforms/spring-boot/components-starter/camel-disruptor-starter/src/main/java/org/apache/camel/component/disruptor/springboot/DisruptorComponentAutoConfiguration.java
+++ b/platforms/spring-boot/components-starter/camel-disruptor-starter/src/main/java/org/apache/camel/component/disruptor/springboot/DisruptorComponentAutoConfiguration.java
@@ -17,50 +17,81 @@
package org.apache.camel.component.disruptor.springboot;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import javax.annotation.Generated;
import org.apache.camel.CamelContext;
import org.apache.camel.component.disruptor.DisruptorComponent;
+import org.apache.camel.spi.ComponentCustomizer;
+import org.apache.camel.spring.boot.CamelAutoConfiguration;
+import org.apache.camel.spring.boot.ComponentConfigurationProperties;
+import org.apache.camel.spring.boot.util.GroupCondition;
import org.apache.camel.util.IntrospectionSupport;
+import org.apache.camel.util.ObjectHelper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
-import org.springframework.boot.autoconfigure.condition.ConditionMessage;
-import org.springframework.boot.autoconfigure.condition.ConditionOutcome;
+import org.springframework.boot.autoconfigure.condition.AllNestedConditions;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
-import org.springframework.boot.autoconfigure.condition.SpringBootCondition;
-import org.springframework.boot.bind.RelaxedPropertyResolver;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.ConditionContext;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Lazy;
-import org.springframework.core.type.AnnotatedTypeMetadata;
/**
* Generated by camel-package-maven-plugin - do not edit this file!
*/
@Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
@Configuration
-@ConditionalOnBean(type = "org.apache.camel.spring.boot.CamelAutoConfiguration")
@Conditional(DisruptorComponentAutoConfiguration.Condition.class)
-@AutoConfigureAfter(name = "org.apache.camel.spring.boot.CamelAutoConfiguration")
-@EnableConfigurationProperties(DisruptorComponentConfiguration.class)
-public class DisruptorComponentAutoConfiguration {
+@AutoConfigureAfter(CamelAutoConfiguration.class)
+@EnableConfigurationProperties({ComponentConfigurationProperties.class,
+ DisruptorComponentConfiguration.class})
+public class DisruptorComponentAutoConfiguration extends AllNestedConditions {
+
+ private static final Logger LOGGER = LoggerFactory
+ .getLogger(DisruptorComponentAutoConfiguration.class);
+ @Autowired
+ private CamelContext camelContext;
+ @Autowired(required = false)
+ private List<ComponentCustomizer<DisruptorComponent>> customizers;
+ @Autowired
+ private ComponentConfigurationProperties globalConfiguration;
+ @Autowired
+ private DisruptorComponentConfiguration componentConfiguration;
+
+ public DisruptorComponentAutoConfiguration() {
+ super(ConfigurationPhase.REGISTER_BEAN);
+ }
+
+ @ConditionalOnBean(CamelContext.class)
+ public static class OnCamelContext {
+ }
+
+ @ConditionalOnBean(CamelAutoConfiguration.class)
+ public static class OnCamelAutoConfiguration {
+ }
+
+ public static class Condition extends GroupCondition {
+ public Condition() {
+ super("camel.component", "camel.component.disruptor");
+ }
+ }
@Lazy
@Bean(name = "disruptor-component")
@ConditionalOnClass(CamelContext.class)
@ConditionalOnMissingBean(DisruptorComponent.class)
- public DisruptorComponent configureDisruptorComponent(
- CamelContext camelContext,
- DisruptorComponentConfiguration configuration) throws Exception {
+ public DisruptorComponent configureDisruptorComponent() throws Exception {
DisruptorComponent component = new DisruptorComponent();
component.setCamelContext(camelContext);
Map<String, Object> parameters = new HashMap<>();
- IntrospectionSupport.getProperties(configuration, parameters, null,
- false);
+ IntrospectionSupport.getProperties(componentConfiguration, parameters,
+ null, false);
for (Map.Entry<String, Object> entry : parameters.entrySet()) {
Object value = entry.getValue();
Class<?> paramClass = value.getClass();
@@ -83,32 +114,16 @@ public class DisruptorComponentAutoConfiguration {
}
IntrospectionSupport.setProperties(camelContext,
camelContext.getTypeConverter(), component, parameters);
- return component;
- }
-
- @Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
- public static class Condition extends SpringBootCondition {
- @Override
- public ConditionOutcome getMatchOutcome(
- ConditionContext conditionContext,
- AnnotatedTypeMetadata annotatedTypeMetadata) {
- boolean groupEnabled = isEnabled(conditionContext,
- "camel.component.", true);
- ConditionMessage.Builder message = ConditionMessage
- .forCondition("camel.component.disruptor");
- if (isEnabled(conditionContext, "camel.component.disruptor.",
- groupEnabled)) {
- return ConditionOutcome.match(message.because("enabled"));
+ boolean useConfigurers = globalConfiguration.getConfigurer()
+ .isEnabled()
+ && componentConfiguration.getConfigurer().isEnabled();
+ if (useConfigurers && ObjectHelper.isNotEmpty(customizers)) {
+ for (ComponentCustomizer<DisruptorComponent> configurer : customizers) {
+ LOGGER.debug("Configure component {}, with configurer {}",
+ component, configurer);
+ configurer.customize(component);
}
- return ConditionOutcome.noMatch(message.because("not enabled"));
- }
-
- private boolean isEnabled(
- org.springframework.context.annotation.ConditionContext context,
- java.lang.String prefix, boolean defaultValue) {
- RelaxedPropertyResolver resolver = new RelaxedPropertyResolver(
- context.getEnvironment(), prefix);
- return resolver.getProperty("enabled", Boolean.class, defaultValue);
}
+ return component;
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/camel/blob/3eeb97ac/platforms/spring-boot/components-starter/camel-disruptor-starter/src/main/java/org/apache/camel/component/disruptor/springboot/DisruptorComponentConfiguration.java
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-disruptor-starter/src/main/java/org/apache/camel/component/disruptor/springboot/DisruptorComponentConfiguration.java b/platforms/spring-boot/components-starter/camel-disruptor-starter/src/main/java/org/apache/camel/component/disruptor/springboot/DisruptorComponentConfiguration.java
index 4456cf0..80c77da 100644
--- a/platforms/spring-boot/components-starter/camel-disruptor-starter/src/main/java/org/apache/camel/component/disruptor/springboot/DisruptorComponentConfiguration.java
+++ b/platforms/spring-boot/components-starter/camel-disruptor-starter/src/main/java/org/apache/camel/component/disruptor/springboot/DisruptorComponentConfiguration.java
@@ -20,6 +20,7 @@ import javax.annotation.Generated;
import org.apache.camel.component.disruptor.DisruptorComponent;
import org.apache.camel.component.disruptor.DisruptorProducerType;
import org.apache.camel.component.disruptor.DisruptorWaitStrategy;
+import org.apache.camel.spring.boot.ComponentConfigurationPropertiesCommon;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.DeprecatedConfigurationProperty;
@@ -31,7 +32,9 @@ import org.springframework.boot.context.properties.DeprecatedConfigurationProper
*/
@Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
@ConfigurationProperties(prefix = "camel.component.disruptor")
-public class DisruptorComponentConfiguration {
+public class DisruptorComponentConfiguration
+ extends
+ ComponentConfigurationPropertiesCommon {
/**
* To configure the default number of concurrent consumers
http://git-wip-us.apache.org/repos/asf/camel/blob/3eeb97ac/platforms/spring-boot/components-starter/camel-disruptor-starter/src/main/java/org/apache/camel/component/disruptor/vm/springboot/DisruptorVmComponentAutoConfiguration.java
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-disruptor-starter/src/main/java/org/apache/camel/component/disruptor/vm/springboot/DisruptorVmComponentAutoConfiguration.java b/platforms/spring-boot/components-starter/camel-disruptor-starter/src/main/java/org/apache/camel/component/disruptor/vm/springboot/DisruptorVmComponentAutoConfiguration.java
index bd68968..45ce68a 100644
--- a/platforms/spring-boot/components-starter/camel-disruptor-starter/src/main/java/org/apache/camel/component/disruptor/vm/springboot/DisruptorVmComponentAutoConfiguration.java
+++ b/platforms/spring-boot/components-starter/camel-disruptor-starter/src/main/java/org/apache/camel/component/disruptor/vm/springboot/DisruptorVmComponentAutoConfiguration.java
@@ -17,50 +17,82 @@
package org.apache.camel.component.disruptor.vm.springboot;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import javax.annotation.Generated;
import org.apache.camel.CamelContext;
import org.apache.camel.component.disruptor.vm.DisruptorVmComponent;
+import org.apache.camel.spi.ComponentCustomizer;
+import org.apache.camel.spring.boot.CamelAutoConfiguration;
+import org.apache.camel.spring.boot.ComponentConfigurationProperties;
+import org.apache.camel.spring.boot.util.GroupCondition;
import org.apache.camel.util.IntrospectionSupport;
+import org.apache.camel.util.ObjectHelper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
-import org.springframework.boot.autoconfigure.condition.ConditionMessage;
-import org.springframework.boot.autoconfigure.condition.ConditionOutcome;
+import org.springframework.boot.autoconfigure.condition.AllNestedConditions;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
-import org.springframework.boot.autoconfigure.condition.SpringBootCondition;
-import org.springframework.boot.bind.RelaxedPropertyResolver;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.ConditionContext;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Lazy;
-import org.springframework.core.type.AnnotatedTypeMetadata;
/**
* Generated by camel-package-maven-plugin - do not edit this file!
*/
@Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
@Configuration
-@ConditionalOnBean(type = "org.apache.camel.spring.boot.CamelAutoConfiguration")
@Conditional(DisruptorVmComponentAutoConfiguration.Condition.class)
-@AutoConfigureAfter(name = "org.apache.camel.spring.boot.CamelAutoConfiguration")
-@EnableConfigurationProperties(DisruptorVmComponentConfiguration.class)
-public class DisruptorVmComponentAutoConfiguration {
+@AutoConfigureAfter(CamelAutoConfiguration.class)
+@EnableConfigurationProperties({ComponentConfigurationProperties.class,
+ DisruptorVmComponentConfiguration.class})
+public class DisruptorVmComponentAutoConfiguration extends AllNestedConditions {
+
+ private static final Logger LOGGER = LoggerFactory
+ .getLogger(DisruptorVmComponentAutoConfiguration.class);
+ @Autowired
+ private CamelContext camelContext;
+ @Autowired(required = false)
+ private List<ComponentCustomizer<DisruptorVmComponent>> customizers;
+ @Autowired
+ private ComponentConfigurationProperties globalConfiguration;
+ @Autowired
+ private DisruptorVmComponentConfiguration componentConfiguration;
+
+ public DisruptorVmComponentAutoConfiguration() {
+ super(ConfigurationPhase.REGISTER_BEAN);
+ }
+
+ @ConditionalOnBean(CamelContext.class)
+ public static class OnCamelContext {
+ }
+
+ @ConditionalOnBean(CamelAutoConfiguration.class)
+ public static class OnCamelAutoConfiguration {
+ }
+
+ public static class Condition extends GroupCondition {
+ public Condition() {
+ super("camel.component", "camel.component.disruptor-vm");
+ }
+ }
@Lazy
@Bean(name = "disruptor-vm-component")
@ConditionalOnClass(CamelContext.class)
@ConditionalOnMissingBean(DisruptorVmComponent.class)
- public DisruptorVmComponent configureDisruptorVmComponent(
- CamelContext camelContext,
- DisruptorVmComponentConfiguration configuration) throws Exception {
+ public DisruptorVmComponent configureDisruptorVmComponent()
+ throws Exception {
DisruptorVmComponent component = new DisruptorVmComponent();
component.setCamelContext(camelContext);
Map<String, Object> parameters = new HashMap<>();
- IntrospectionSupport.getProperties(configuration, parameters, null,
- false);
+ IntrospectionSupport.getProperties(componentConfiguration, parameters,
+ null, false);
for (Map.Entry<String, Object> entry : parameters.entrySet()) {
Object value = entry.getValue();
Class<?> paramClass = value.getClass();
@@ -83,32 +115,16 @@ public class DisruptorVmComponentAutoConfiguration {
}
IntrospectionSupport.setProperties(camelContext,
camelContext.getTypeConverter(), component, parameters);
- return component;
- }
-
- @Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
- public static class Condition extends SpringBootCondition {
- @Override
- public ConditionOutcome getMatchOutcome(
- ConditionContext conditionContext,
- AnnotatedTypeMetadata annotatedTypeMetadata) {
- boolean groupEnabled = isEnabled(conditionContext,
- "camel.component.", true);
- ConditionMessage.Builder message = ConditionMessage
- .forCondition("camel.component.disruptor-vm");
- if (isEnabled(conditionContext, "camel.component.disruptor-vm.",
- groupEnabled)) {
- return ConditionOutcome.match(message.because("enabled"));
+ boolean useConfigurers = globalConfiguration.getConfigurer()
+ .isEnabled()
+ && componentConfiguration.getConfigurer().isEnabled();
+ if (useConfigurers && ObjectHelper.isNotEmpty(customizers)) {
+ for (ComponentCustomizer<DisruptorVmComponent> configurer : customizers) {
+ LOGGER.debug("Configure component {}, with configurer {}",
+ component, configurer);
+ configurer.customize(component);
}
- return ConditionOutcome.noMatch(message.because("not enabled"));
- }
-
- private boolean isEnabled(
- org.springframework.context.annotation.ConditionContext context,
- java.lang.String prefix, boolean defaultValue) {
- RelaxedPropertyResolver resolver = new RelaxedPropertyResolver(
- context.getEnvironment(), prefix);
- return resolver.getProperty("enabled", Boolean.class, defaultValue);
}
+ return component;
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/camel/blob/3eeb97ac/platforms/spring-boot/components-starter/camel-disruptor-starter/src/main/java/org/apache/camel/component/disruptor/vm/springboot/DisruptorVmComponentConfiguration.java
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-disruptor-starter/src/main/java/org/apache/camel/component/disruptor/vm/springboot/DisruptorVmComponentConfiguration.java b/platforms/spring-boot/components-starter/camel-disruptor-starter/src/main/java/org/apache/camel/component/disruptor/vm/springboot/DisruptorVmComponentConfiguration.java
index ca9bac0..1a669fa 100644
--- a/platforms/spring-boot/components-starter/camel-disruptor-starter/src/main/java/org/apache/camel/component/disruptor/vm/springboot/DisruptorVmComponentConfiguration.java
+++ b/platforms/spring-boot/components-starter/camel-disruptor-starter/src/main/java/org/apache/camel/component/disruptor/vm/springboot/DisruptorVmComponentConfiguration.java
@@ -20,6 +20,7 @@ import javax.annotation.Generated;
import org.apache.camel.component.disruptor.DisruptorProducerType;
import org.apache.camel.component.disruptor.DisruptorWaitStrategy;
import org.apache.camel.component.disruptor.vm.DisruptorVmComponent;
+import org.apache.camel.spring.boot.ComponentConfigurationPropertiesCommon;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.DeprecatedConfigurationProperty;
@@ -31,7 +32,9 @@ import org.springframework.boot.context.properties.DeprecatedConfigurationProper
*/
@Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
@ConfigurationProperties(prefix = "camel.component.disruptor-vm")
-public class DisruptorVmComponentConfiguration {
+public class DisruptorVmComponentConfiguration
+ extends
+ ComponentConfigurationPropertiesCommon {
/**
* To configure the default number of concurrent consumers
http://git-wip-us.apache.org/repos/asf/camel/blob/3eeb97ac/platforms/spring-boot/components-starter/camel-dns-starter/src/main/java/org/apache/camel/component/dns/springboot/DnsComponentAutoConfiguration.java
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-dns-starter/src/main/java/org/apache/camel/component/dns/springboot/DnsComponentAutoConfiguration.java b/platforms/spring-boot/components-starter/camel-dns-starter/src/main/java/org/apache/camel/component/dns/springboot/DnsComponentAutoConfiguration.java
index c5006a3..b6c2233 100644
--- a/platforms/spring-boot/components-starter/camel-dns-starter/src/main/java/org/apache/camel/component/dns/springboot/DnsComponentAutoConfiguration.java
+++ b/platforms/spring-boot/components-starter/camel-dns-starter/src/main/java/org/apache/camel/component/dns/springboot/DnsComponentAutoConfiguration.java
@@ -16,68 +16,114 @@
*/
package org.apache.camel.component.dns.springboot;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
import javax.annotation.Generated;
import org.apache.camel.CamelContext;
import org.apache.camel.component.dns.DnsComponent;
+import org.apache.camel.spi.ComponentCustomizer;
+import org.apache.camel.spring.boot.CamelAutoConfiguration;
+import org.apache.camel.spring.boot.ComponentConfigurationProperties;
+import org.apache.camel.spring.boot.util.GroupCondition;
+import org.apache.camel.util.IntrospectionSupport;
+import org.apache.camel.util.ObjectHelper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
-import org.springframework.boot.autoconfigure.condition.ConditionMessage;
-import org.springframework.boot.autoconfigure.condition.ConditionOutcome;
+import org.springframework.boot.autoconfigure.condition.AllNestedConditions;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
-import org.springframework.boot.autoconfigure.condition.SpringBootCondition;
-import org.springframework.boot.bind.RelaxedPropertyResolver;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.ConditionContext;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Lazy;
-import org.springframework.core.type.AnnotatedTypeMetadata;
/**
* Generated by camel-package-maven-plugin - do not edit this file!
*/
@Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
@Configuration
-@ConditionalOnBean(type = "org.apache.camel.spring.boot.CamelAutoConfiguration")
@Conditional(DnsComponentAutoConfiguration.Condition.class)
-@AutoConfigureAfter(name = "org.apache.camel.spring.boot.CamelAutoConfiguration")
-public class DnsComponentAutoConfiguration {
+@AutoConfigureAfter(CamelAutoConfiguration.class)
+@EnableConfigurationProperties({ComponentConfigurationProperties.class,
+ DnsComponentConfiguration.class})
+public class DnsComponentAutoConfiguration extends AllNestedConditions {
+
+ private static final Logger LOGGER = LoggerFactory
+ .getLogger(DnsComponentAutoConfiguration.class);
+ @Autowired
+ private CamelContext camelContext;
+ @Autowired(required = false)
+ private List<ComponentCustomizer<DnsComponent>> customizers;
+ @Autowired
+ private ComponentConfigurationProperties globalConfiguration;
+ @Autowired
+ private DnsComponentConfiguration componentConfiguration;
+
+ public DnsComponentAutoConfiguration() {
+ super(ConfigurationPhase.REGISTER_BEAN);
+ }
+
+ @ConditionalOnBean(CamelContext.class)
+ public static class OnCamelContext {
+ }
+
+ @ConditionalOnBean(CamelAutoConfiguration.class)
+ public static class OnCamelAutoConfiguration {
+ }
+
+ public static class Condition extends GroupCondition {
+ public Condition() {
+ super("camel.component", "camel.component.dns");
+ }
+ }
@Lazy
@Bean(name = "dns-component")
@ConditionalOnClass(CamelContext.class)
@ConditionalOnMissingBean(DnsComponent.class)
- public DnsComponent configureDnsComponent(CamelContext camelContext)
- throws Exception {
+ public DnsComponent configureDnsComponent() throws Exception {
DnsComponent component = new DnsComponent();
component.setCamelContext(camelContext);
- return component;
- }
-
- @Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
- public static class Condition extends SpringBootCondition {
- @Override
- public ConditionOutcome getMatchOutcome(
- ConditionContext conditionContext,
- AnnotatedTypeMetadata annotatedTypeMetadata) {
- boolean groupEnabled = isEnabled(conditionContext,
- "camel.component.", true);
- ConditionMessage.Builder message = ConditionMessage
- .forCondition("camel.component.dns");
- if (isEnabled(conditionContext, "camel.component.dns.",
- groupEnabled)) {
- return ConditionOutcome.match(message.because("enabled"));
+ Map<String, Object> parameters = new HashMap<>();
+ IntrospectionSupport.getProperties(componentConfiguration, parameters,
+ null, false);
+ for (Map.Entry<String, Object> entry : parameters.entrySet()) {
+ Object value = entry.getValue();
+ Class<?> paramClass = value.getClass();
+ if (paramClass.getName().endsWith("NestedConfiguration")) {
+ Class nestedClass = null;
+ try {
+ nestedClass = (Class) paramClass.getDeclaredField(
+ "CAMEL_NESTED_CLASS").get(null);
+ HashMap<String, Object> nestedParameters = new HashMap<>();
+ IntrospectionSupport.getProperties(value, nestedParameters,
+ null, false);
+ Object nestedProperty = nestedClass.newInstance();
+ IntrospectionSupport.setProperties(camelContext,
+ camelContext.getTypeConverter(), nestedProperty,
+ nestedParameters);
+ entry.setValue(nestedProperty);
+ } catch (NoSuchFieldException e) {
+ }
}
- return ConditionOutcome.noMatch(message.because("not enabled"));
}
-
- private boolean isEnabled(
- org.springframework.context.annotation.ConditionContext context,
- java.lang.String prefix, boolean defaultValue) {
- RelaxedPropertyResolver resolver = new RelaxedPropertyResolver(
- context.getEnvironment(), prefix);
- return resolver.getProperty("enabled", Boolean.class, defaultValue);
+ IntrospectionSupport.setProperties(camelContext,
+ camelContext.getTypeConverter(), component, parameters);
+ boolean useConfigurers = globalConfiguration.getConfigurer()
+ .isEnabled()
+ && componentConfiguration.getConfigurer().isEnabled();
+ if (useConfigurers && ObjectHelper.isNotEmpty(customizers)) {
+ for (ComponentCustomizer<DnsComponent> configurer : customizers) {
+ LOGGER.debug("Configure component {}, with configurer {}",
+ component, configurer);
+ configurer.customize(component);
+ }
}
+ return component;
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/camel/blob/3eeb97ac/platforms/spring-boot/components-starter/camel-dns-starter/src/main/java/org/apache/camel/component/dns/springboot/DnsComponentConfiguration.java
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-dns-starter/src/main/java/org/apache/camel/component/dns/springboot/DnsComponentConfiguration.java b/platforms/spring-boot/components-starter/camel-dns-starter/src/main/java/org/apache/camel/component/dns/springboot/DnsComponentConfiguration.java
index e8b3683..0e22ea9 100644
--- a/platforms/spring-boot/components-starter/camel-dns-starter/src/main/java/org/apache/camel/component/dns/springboot/DnsComponentConfiguration.java
+++ b/platforms/spring-boot/components-starter/camel-dns-starter/src/main/java/org/apache/camel/component/dns/springboot/DnsComponentConfiguration.java
@@ -16,6 +16,8 @@
*/
package org.apache.camel.component.dns.springboot;
+import javax.annotation.Generated;
+import org.apache.camel.spring.boot.ComponentConfigurationPropertiesCommon;
import org.springframework.boot.context.properties.ConfigurationProperties;
/**
@@ -23,8 +25,11 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
*
* Generated by camel-package-maven-plugin - do not edit this file!
*/
+@Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
@ConfigurationProperties(prefix = "camel.component.dns")
-public class DnsComponentConfiguration {
+public class DnsComponentConfiguration
+ extends
+ ComponentConfigurationPropertiesCommon {
/**
* Whether the component should resolve property placeholders on itself when
http://git-wip-us.apache.org/repos/asf/camel/blob/3eeb97ac/platforms/spring-boot/components-starter/camel-docker-starter/src/main/java/org/apache/camel/component/docker/springboot/DockerComponentAutoConfiguration.java
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-docker-starter/src/main/java/org/apache/camel/component/docker/springboot/DockerComponentAutoConfiguration.java b/platforms/spring-boot/components-starter/camel-docker-starter/src/main/java/org/apache/camel/component/docker/springboot/DockerComponentAutoConfiguration.java
index 29c7f7a..659a4a2 100644
--- a/platforms/spring-boot/components-starter/camel-docker-starter/src/main/java/org/apache/camel/component/docker/springboot/DockerComponentAutoConfiguration.java
+++ b/platforms/spring-boot/components-starter/camel-docker-starter/src/main/java/org/apache/camel/component/docker/springboot/DockerComponentAutoConfiguration.java
@@ -17,49 +17,81 @@
package org.apache.camel.component.docker.springboot;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import javax.annotation.Generated;
import org.apache.camel.CamelContext;
import org.apache.camel.component.docker.DockerComponent;
+import org.apache.camel.spi.ComponentCustomizer;
+import org.apache.camel.spring.boot.CamelAutoConfiguration;
+import org.apache.camel.spring.boot.ComponentConfigurationProperties;
+import org.apache.camel.spring.boot.util.GroupCondition;
import org.apache.camel.util.IntrospectionSupport;
+import org.apache.camel.util.ObjectHelper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
-import org.springframework.boot.autoconfigure.condition.ConditionMessage;
-import org.springframework.boot.autoconfigure.condition.ConditionOutcome;
+import org.springframework.boot.autoconfigure.condition.AllNestedConditions;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
-import org.springframework.boot.autoconfigure.condition.SpringBootCondition;
-import org.springframework.boot.bind.RelaxedPropertyResolver;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.ConditionContext;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Lazy;
-import org.springframework.core.type.AnnotatedTypeMetadata;
/**
* Generated by camel-package-maven-plugin - do not edit this file!
*/
@Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
@Configuration
-@ConditionalOnBean(type = "org.apache.camel.spring.boot.CamelAutoConfiguration")
@Conditional(DockerComponentAutoConfiguration.Condition.class)
-@AutoConfigureAfter(name = "org.apache.camel.spring.boot.CamelAutoConfiguration")
-@EnableConfigurationProperties(DockerComponentConfiguration.class)
-public class DockerComponentAutoConfiguration {
+@AutoConfigureAfter(CamelAutoConfiguration.class)
+@EnableConfigurationProperties({ComponentConfigurationProperties.class,
+ DockerComponentConfiguration.class})
+public class DockerComponentAutoConfiguration extends AllNestedConditions {
+
+ private static final Logger LOGGER = LoggerFactory
+ .getLogger(DockerComponentAutoConfiguration.class);
+ @Autowired
+ private CamelContext camelContext;
+ @Autowired(required = false)
+ private List<ComponentCustomizer<DockerComponent>> customizers;
+ @Autowired
+ private ComponentConfigurationProperties globalConfiguration;
+ @Autowired
+ private DockerComponentConfiguration componentConfiguration;
+
+ public DockerComponentAutoConfiguration() {
+ super(ConfigurationPhase.REGISTER_BEAN);
+ }
+
+ @ConditionalOnBean(CamelContext.class)
+ public static class OnCamelContext {
+ }
+
+ @ConditionalOnBean(CamelAutoConfiguration.class)
+ public static class OnCamelAutoConfiguration {
+ }
+
+ public static class Condition extends GroupCondition {
+ public Condition() {
+ super("camel.component", "camel.component.docker");
+ }
+ }
@Lazy
@Bean(name = "docker-component")
@ConditionalOnClass(CamelContext.class)
@ConditionalOnMissingBean(DockerComponent.class)
- public DockerComponent configureDockerComponent(CamelContext camelContext,
- DockerComponentConfiguration configuration) throws Exception {
+ public DockerComponent configureDockerComponent() throws Exception {
DockerComponent component = new DockerComponent();
component.setCamelContext(camelContext);
Map<String, Object> parameters = new HashMap<>();
- IntrospectionSupport.getProperties(configuration, parameters, null,
- false);
+ IntrospectionSupport.getProperties(componentConfiguration, parameters,
+ null, false);
for (Map.Entry<String, Object> entry : parameters.entrySet()) {
Object value = entry.getValue();
Class<?> paramClass = value.getClass();
@@ -82,32 +114,16 @@ public class DockerComponentAutoConfiguration {
}
IntrospectionSupport.setProperties(camelContext,
camelContext.getTypeConverter(), component, parameters);
- return component;
- }
-
- @Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
- public static class Condition extends SpringBootCondition {
- @Override
- public ConditionOutcome getMatchOutcome(
- ConditionContext conditionContext,
- AnnotatedTypeMetadata annotatedTypeMetadata) {
- boolean groupEnabled = isEnabled(conditionContext,
- "camel.component.", true);
- ConditionMessage.Builder message = ConditionMessage
- .forCondition("camel.component.docker");
- if (isEnabled(conditionContext, "camel.component.docker.",
- groupEnabled)) {
- return ConditionOutcome.match(message.because("enabled"));
+ boolean useConfigurers = globalConfiguration.getConfigurer()
+ .isEnabled()
+ && componentConfiguration.getConfigurer().isEnabled();
+ if (useConfigurers && ObjectHelper.isNotEmpty(customizers)) {
+ for (ComponentCustomizer<DockerComponent> configurer : customizers) {
+ LOGGER.debug("Configure component {}, with configurer {}",
+ component, configurer);
+ configurer.customize(component);
}
- return ConditionOutcome.noMatch(message.because("not enabled"));
- }
-
- private boolean isEnabled(
- org.springframework.context.annotation.ConditionContext context,
- java.lang.String prefix, boolean defaultValue) {
- RelaxedPropertyResolver resolver = new RelaxedPropertyResolver(
- context.getEnvironment(), prefix);
- return resolver.getProperty("enabled", Boolean.class, defaultValue);
}
+ return component;
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/camel/blob/3eeb97ac/platforms/spring-boot/components-starter/camel-docker-starter/src/main/java/org/apache/camel/component/docker/springboot/DockerComponentConfiguration.java
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-docker-starter/src/main/java/org/apache/camel/component/docker/springboot/DockerComponentConfiguration.java b/platforms/spring-boot/components-starter/camel-docker-starter/src/main/java/org/apache/camel/component/docker/springboot/DockerComponentConfiguration.java
index 5c55879..ddd9e70 100644
--- a/platforms/spring-boot/components-starter/camel-docker-starter/src/main/java/org/apache/camel/component/docker/springboot/DockerComponentConfiguration.java
+++ b/platforms/spring-boot/components-starter/camel-docker-starter/src/main/java/org/apache/camel/component/docker/springboot/DockerComponentConfiguration.java
@@ -19,6 +19,7 @@ package org.apache.camel.component.docker.springboot;
import java.util.Map;
import javax.annotation.Generated;
import org.apache.camel.component.docker.DockerOperation;
+import org.apache.camel.spring.boot.ComponentConfigurationPropertiesCommon;
import org.springframework.boot.context.properties.ConfigurationProperties;
/**
@@ -28,7 +29,9 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
*/
@Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
@ConfigurationProperties(prefix = "camel.component.docker")
-public class DockerComponentConfiguration {
+public class DockerComponentConfiguration
+ extends
+ ComponentConfigurationPropertiesCommon {
/**
* To use the shared docker configuration
http://git-wip-us.apache.org/repos/asf/camel/blob/3eeb97ac/platforms/spring-boot/components-starter/camel-dozer-starter/src/main/java/org/apache/camel/component/dozer/springboot/DozerComponentAutoConfiguration.java
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-dozer-starter/src/main/java/org/apache/camel/component/dozer/springboot/DozerComponentAutoConfiguration.java b/platforms/spring-boot/components-starter/camel-dozer-starter/src/main/java/org/apache/camel/component/dozer/springboot/DozerComponentAutoConfiguration.java
index 21d94c0..cb737e3 100644
--- a/platforms/spring-boot/components-starter/camel-dozer-starter/src/main/java/org/apache/camel/component/dozer/springboot/DozerComponentAutoConfiguration.java
+++ b/platforms/spring-boot/components-starter/camel-dozer-starter/src/main/java/org/apache/camel/component/dozer/springboot/DozerComponentAutoConfiguration.java
@@ -16,68 +16,114 @@
*/
package org.apache.camel.component.dozer.springboot;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
import javax.annotation.Generated;
import org.apache.camel.CamelContext;
import org.apache.camel.component.dozer.DozerComponent;
+import org.apache.camel.spi.ComponentCustomizer;
+import org.apache.camel.spring.boot.CamelAutoConfiguration;
+import org.apache.camel.spring.boot.ComponentConfigurationProperties;
+import org.apache.camel.spring.boot.util.GroupCondition;
+import org.apache.camel.util.IntrospectionSupport;
+import org.apache.camel.util.ObjectHelper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
-import org.springframework.boot.autoconfigure.condition.ConditionMessage;
-import org.springframework.boot.autoconfigure.condition.ConditionOutcome;
+import org.springframework.boot.autoconfigure.condition.AllNestedConditions;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
-import org.springframework.boot.autoconfigure.condition.SpringBootCondition;
-import org.springframework.boot.bind.RelaxedPropertyResolver;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.ConditionContext;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Lazy;
-import org.springframework.core.type.AnnotatedTypeMetadata;
/**
* Generated by camel-package-maven-plugin - do not edit this file!
*/
@Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
@Configuration
-@ConditionalOnBean(type = "org.apache.camel.spring.boot.CamelAutoConfiguration")
@Conditional(DozerComponentAutoConfiguration.Condition.class)
-@AutoConfigureAfter(name = "org.apache.camel.spring.boot.CamelAutoConfiguration")
-public class DozerComponentAutoConfiguration {
+@AutoConfigureAfter(CamelAutoConfiguration.class)
+@EnableConfigurationProperties({ComponentConfigurationProperties.class,
+ DozerComponentConfiguration.class})
+public class DozerComponentAutoConfiguration extends AllNestedConditions {
+
+ private static final Logger LOGGER = LoggerFactory
+ .getLogger(DozerComponentAutoConfiguration.class);
+ @Autowired
+ private CamelContext camelContext;
+ @Autowired(required = false)
+ private List<ComponentCustomizer<DozerComponent>> customizers;
+ @Autowired
+ private ComponentConfigurationProperties globalConfiguration;
+ @Autowired
+ private DozerComponentConfiguration componentConfiguration;
+
+ public DozerComponentAutoConfiguration() {
+ super(ConfigurationPhase.REGISTER_BEAN);
+ }
+
+ @ConditionalOnBean(CamelContext.class)
+ public static class OnCamelContext {
+ }
+
+ @ConditionalOnBean(CamelAutoConfiguration.class)
+ public static class OnCamelAutoConfiguration {
+ }
+
+ public static class Condition extends GroupCondition {
+ public Condition() {
+ super("camel.component", "camel.component.dozer");
+ }
+ }
@Lazy
@Bean(name = "dozer-component")
@ConditionalOnClass(CamelContext.class)
@ConditionalOnMissingBean(DozerComponent.class)
- public DozerComponent configureDozerComponent(CamelContext camelContext)
- throws Exception {
+ public DozerComponent configureDozerComponent() throws Exception {
DozerComponent component = new DozerComponent();
component.setCamelContext(camelContext);
- return component;
- }
-
- @Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
- public static class Condition extends SpringBootCondition {
- @Override
- public ConditionOutcome getMatchOutcome(
- ConditionContext conditionContext,
- AnnotatedTypeMetadata annotatedTypeMetadata) {
- boolean groupEnabled = isEnabled(conditionContext,
- "camel.component.", true);
- ConditionMessage.Builder message = ConditionMessage
- .forCondition("camel.component.dozer");
- if (isEnabled(conditionContext, "camel.component.dozer.",
- groupEnabled)) {
- return ConditionOutcome.match(message.because("enabled"));
+ Map<String, Object> parameters = new HashMap<>();
+ IntrospectionSupport.getProperties(componentConfiguration, parameters,
+ null, false);
+ for (Map.Entry<String, Object> entry : parameters.entrySet()) {
+ Object value = entry.getValue();
+ Class<?> paramClass = value.getClass();
+ if (paramClass.getName().endsWith("NestedConfiguration")) {
+ Class nestedClass = null;
+ try {
+ nestedClass = (Class) paramClass.getDeclaredField(
+ "CAMEL_NESTED_CLASS").get(null);
+ HashMap<String, Object> nestedParameters = new HashMap<>();
+ IntrospectionSupport.getProperties(value, nestedParameters,
+ null, false);
+ Object nestedProperty = nestedClass.newInstance();
+ IntrospectionSupport.setProperties(camelContext,
+ camelContext.getTypeConverter(), nestedProperty,
+ nestedParameters);
+ entry.setValue(nestedProperty);
+ } catch (NoSuchFieldException e) {
+ }
}
- return ConditionOutcome.noMatch(message.because("not enabled"));
}
-
- private boolean isEnabled(
- org.springframework.context.annotation.ConditionContext context,
- java.lang.String prefix, boolean defaultValue) {
- RelaxedPropertyResolver resolver = new RelaxedPropertyResolver(
- context.getEnvironment(), prefix);
- return resolver.getProperty("enabled", Boolean.class, defaultValue);
+ IntrospectionSupport.setProperties(camelContext,
+ camelContext.getTypeConverter(), component, parameters);
+ boolean useConfigurers = globalConfiguration.getConfigurer()
+ .isEnabled()
+ && componentConfiguration.getConfigurer().isEnabled();
+ if (useConfigurers && ObjectHelper.isNotEmpty(customizers)) {
+ for (ComponentCustomizer<DozerComponent> configurer : customizers) {
+ LOGGER.debug("Configure component {}, with configurer {}",
+ component, configurer);
+ configurer.customize(component);
+ }
}
+ return component;
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/camel/blob/3eeb97ac/platforms/spring-boot/components-starter/camel-dozer-starter/src/main/java/org/apache/camel/component/dozer/springboot/DozerComponentConfiguration.java
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-dozer-starter/src/main/java/org/apache/camel/component/dozer/springboot/DozerComponentConfiguration.java b/platforms/spring-boot/components-starter/camel-dozer-starter/src/main/java/org/apache/camel/component/dozer/springboot/DozerComponentConfiguration.java
index 4840e6c..76a2102 100644
--- a/platforms/spring-boot/components-starter/camel-dozer-starter/src/main/java/org/apache/camel/component/dozer/springboot/DozerComponentConfiguration.java
+++ b/platforms/spring-boot/components-starter/camel-dozer-starter/src/main/java/org/apache/camel/component/dozer/springboot/DozerComponentConfiguration.java
@@ -16,6 +16,8 @@
*/
package org.apache.camel.component.dozer.springboot;
+import javax.annotation.Generated;
+import org.apache.camel.spring.boot.ComponentConfigurationPropertiesCommon;
import org.springframework.boot.context.properties.ConfigurationProperties;
/**
@@ -24,8 +26,11 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
*
* Generated by camel-package-maven-plugin - do not edit this file!
*/
+@Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
@ConfigurationProperties(prefix = "camel.component.dozer")
-public class DozerComponentConfiguration {
+public class DozerComponentConfiguration
+ extends
+ ComponentConfigurationPropertiesCommon {
/**
* Whether the component should resolve property placeholders on itself when
http://git-wip-us.apache.org/repos/asf/camel/blob/3eeb97ac/platforms/spring-boot/components-starter/camel-drill-starter/src/main/java/org/apache/camel/component/drill/springboot/DrillComponentAutoConfiguration.java
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-drill-starter/src/main/java/org/apache/camel/component/drill/springboot/DrillComponentAutoConfiguration.java b/platforms/spring-boot/components-starter/camel-drill-starter/src/main/java/org/apache/camel/component/drill/springboot/DrillComponentAutoConfiguration.java
index e0c8b63..67b8562 100644
--- a/platforms/spring-boot/components-starter/camel-drill-starter/src/main/java/org/apache/camel/component/drill/springboot/DrillComponentAutoConfiguration.java
+++ b/platforms/spring-boot/components-starter/camel-drill-starter/src/main/java/org/apache/camel/component/drill/springboot/DrillComponentAutoConfiguration.java
@@ -16,68 +16,114 @@
*/
package org.apache.camel.component.drill.springboot;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
import javax.annotation.Generated;
import org.apache.camel.CamelContext;
import org.apache.camel.component.drill.DrillComponent;
+import org.apache.camel.spi.ComponentCustomizer;
+import org.apache.camel.spring.boot.CamelAutoConfiguration;
+import org.apache.camel.spring.boot.ComponentConfigurationProperties;
+import org.apache.camel.spring.boot.util.GroupCondition;
+import org.apache.camel.util.IntrospectionSupport;
+import org.apache.camel.util.ObjectHelper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
-import org.springframework.boot.autoconfigure.condition.ConditionMessage;
-import org.springframework.boot.autoconfigure.condition.ConditionOutcome;
+import org.springframework.boot.autoconfigure.condition.AllNestedConditions;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
-import org.springframework.boot.autoconfigure.condition.SpringBootCondition;
-import org.springframework.boot.bind.RelaxedPropertyResolver;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.ConditionContext;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Lazy;
-import org.springframework.core.type.AnnotatedTypeMetadata;
/**
* Generated by camel-package-maven-plugin - do not edit this file!
*/
@Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
@Configuration
-@ConditionalOnBean(type = "org.apache.camel.spring.boot.CamelAutoConfiguration")
@Conditional(DrillComponentAutoConfiguration.Condition.class)
-@AutoConfigureAfter(name = "org.apache.camel.spring.boot.CamelAutoConfiguration")
-public class DrillComponentAutoConfiguration {
+@AutoConfigureAfter(CamelAutoConfiguration.class)
+@EnableConfigurationProperties({ComponentConfigurationProperties.class,
+ DrillComponentConfiguration.class})
+public class DrillComponentAutoConfiguration extends AllNestedConditions {
+
+ private static final Logger LOGGER = LoggerFactory
+ .getLogger(DrillComponentAutoConfiguration.class);
+ @Autowired
+ private CamelContext camelContext;
+ @Autowired(required = false)
+ private List<ComponentCustomizer<DrillComponent>> customizers;
+ @Autowired
+ private ComponentConfigurationProperties globalConfiguration;
+ @Autowired
+ private DrillComponentConfiguration componentConfiguration;
+
+ public DrillComponentAutoConfiguration() {
+ super(ConfigurationPhase.REGISTER_BEAN);
+ }
+
+ @ConditionalOnBean(CamelContext.class)
+ public static class OnCamelContext {
+ }
+
+ @ConditionalOnBean(CamelAutoConfiguration.class)
+ public static class OnCamelAutoConfiguration {
+ }
+
+ public static class Condition extends GroupCondition {
+ public Condition() {
+ super("camel.component", "camel.component.drill");
+ }
+ }
@Lazy
@Bean(name = "drill-component")
@ConditionalOnClass(CamelContext.class)
@ConditionalOnMissingBean(DrillComponent.class)
- public DrillComponent configureDrillComponent(CamelContext camelContext)
- throws Exception {
+ public DrillComponent configureDrillComponent() throws Exception {
DrillComponent component = new DrillComponent();
component.setCamelContext(camelContext);
- return component;
- }
-
- @Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
- public static class Condition extends SpringBootCondition {
- @Override
- public ConditionOutcome getMatchOutcome(
- ConditionContext conditionContext,
- AnnotatedTypeMetadata annotatedTypeMetadata) {
- boolean groupEnabled = isEnabled(conditionContext,
- "camel.component.", true);
- ConditionMessage.Builder message = ConditionMessage
- .forCondition("camel.component.drill");
- if (isEnabled(conditionContext, "camel.component.drill.",
- groupEnabled)) {
- return ConditionOutcome.match(message.because("enabled"));
+ Map<String, Object> parameters = new HashMap<>();
+ IntrospectionSupport.getProperties(componentConfiguration, parameters,
+ null, false);
+ for (Map.Entry<String, Object> entry : parameters.entrySet()) {
+ Object value = entry.getValue();
+ Class<?> paramClass = value.getClass();
+ if (paramClass.getName().endsWith("NestedConfiguration")) {
+ Class nestedClass = null;
+ try {
+ nestedClass = (Class) paramClass.getDeclaredField(
+ "CAMEL_NESTED_CLASS").get(null);
+ HashMap<String, Object> nestedParameters = new HashMap<>();
+ IntrospectionSupport.getProperties(value, nestedParameters,
+ null, false);
+ Object nestedProperty = nestedClass.newInstance();
+ IntrospectionSupport.setProperties(camelContext,
+ camelContext.getTypeConverter(), nestedProperty,
+ nestedParameters);
+ entry.setValue(nestedProperty);
+ } catch (NoSuchFieldException e) {
+ }
}
- return ConditionOutcome.noMatch(message.because("not enabled"));
}
-
- private boolean isEnabled(
- org.springframework.context.annotation.ConditionContext context,
- java.lang.String prefix, boolean defaultValue) {
- RelaxedPropertyResolver resolver = new RelaxedPropertyResolver(
- context.getEnvironment(), prefix);
- return resolver.getProperty("enabled", Boolean.class, defaultValue);
+ IntrospectionSupport.setProperties(camelContext,
+ camelContext.getTypeConverter(), component, parameters);
+ boolean useConfigurers = globalConfiguration.getConfigurer()
+ .isEnabled()
+ && componentConfiguration.getConfigurer().isEnabled();
+ if (useConfigurers && ObjectHelper.isNotEmpty(customizers)) {
+ for (ComponentCustomizer<DrillComponent> configurer : customizers) {
+ LOGGER.debug("Configure component {}, with configurer {}",
+ component, configurer);
+ configurer.customize(component);
+ }
}
+ return component;
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/camel/blob/3eeb97ac/platforms/spring-boot/components-starter/camel-drill-starter/src/main/java/org/apache/camel/component/drill/springboot/DrillComponentConfiguration.java
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-drill-starter/src/main/java/org/apache/camel/component/drill/springboot/DrillComponentConfiguration.java b/platforms/spring-boot/components-starter/camel-drill-starter/src/main/java/org/apache/camel/component/drill/springboot/DrillComponentConfiguration.java
index a55d42c..b41f1ef 100644
--- a/platforms/spring-boot/components-starter/camel-drill-starter/src/main/java/org/apache/camel/component/drill/springboot/DrillComponentConfiguration.java
+++ b/platforms/spring-boot/components-starter/camel-drill-starter/src/main/java/org/apache/camel/component/drill/springboot/DrillComponentConfiguration.java
@@ -16,6 +16,8 @@
*/
package org.apache.camel.component.drill.springboot;
+import javax.annotation.Generated;
+import org.apache.camel.spring.boot.ComponentConfigurationPropertiesCommon;
import org.springframework.boot.context.properties.ConfigurationProperties;
/**
@@ -24,8 +26,11 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
*
* Generated by camel-package-maven-plugin - do not edit this file!
*/
+@Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
@ConfigurationProperties(prefix = "camel.component.drill")
-public class DrillComponentConfiguration {
+public class DrillComponentConfiguration
+ extends
+ ComponentConfigurationPropertiesCommon {
/**
* Whether the component should resolve property placeholders on itself when
http://git-wip-us.apache.org/repos/asf/camel/blob/3eeb97ac/platforms/spring-boot/components-starter/camel-dropbox-starter/src/main/java/org/apache/camel/component/dropbox/springboot/DropboxComponentAutoConfiguration.java
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-dropbox-starter/src/main/java/org/apache/camel/component/dropbox/springboot/DropboxComponentAutoConfiguration.java b/platforms/spring-boot/components-starter/camel-dropbox-starter/src/main/java/org/apache/camel/component/dropbox/springboot/DropboxComponentAutoConfiguration.java
index 9d498f0..b5b6d75 100644
--- a/platforms/spring-boot/components-starter/camel-dropbox-starter/src/main/java/org/apache/camel/component/dropbox/springboot/DropboxComponentAutoConfiguration.java
+++ b/platforms/spring-boot/components-starter/camel-dropbox-starter/src/main/java/org/apache/camel/component/dropbox/springboot/DropboxComponentAutoConfiguration.java
@@ -16,68 +16,114 @@
*/
package org.apache.camel.component.dropbox.springboot;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
import javax.annotation.Generated;
import org.apache.camel.CamelContext;
import org.apache.camel.component.dropbox.DropboxComponent;
+import org.apache.camel.spi.ComponentCustomizer;
+import org.apache.camel.spring.boot.CamelAutoConfiguration;
+import org.apache.camel.spring.boot.ComponentConfigurationProperties;
+import org.apache.camel.spring.boot.util.GroupCondition;
+import org.apache.camel.util.IntrospectionSupport;
+import org.apache.camel.util.ObjectHelper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
-import org.springframework.boot.autoconfigure.condition.ConditionMessage;
-import org.springframework.boot.autoconfigure.condition.ConditionOutcome;
+import org.springframework.boot.autoconfigure.condition.AllNestedConditions;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
-import org.springframework.boot.autoconfigure.condition.SpringBootCondition;
-import org.springframework.boot.bind.RelaxedPropertyResolver;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.ConditionContext;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Lazy;
-import org.springframework.core.type.AnnotatedTypeMetadata;
/**
* Generated by camel-package-maven-plugin - do not edit this file!
*/
@Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
@Configuration
-@ConditionalOnBean(type = "org.apache.camel.spring.boot.CamelAutoConfiguration")
@Conditional(DropboxComponentAutoConfiguration.Condition.class)
-@AutoConfigureAfter(name = "org.apache.camel.spring.boot.CamelAutoConfiguration")
-public class DropboxComponentAutoConfiguration {
+@AutoConfigureAfter(CamelAutoConfiguration.class)
+@EnableConfigurationProperties({ComponentConfigurationProperties.class,
+ DropboxComponentConfiguration.class})
+public class DropboxComponentAutoConfiguration extends AllNestedConditions {
+
+ private static final Logger LOGGER = LoggerFactory
+ .getLogger(DropboxComponentAutoConfiguration.class);
+ @Autowired
+ private CamelContext camelContext;
+ @Autowired(required = false)
+ private List<ComponentCustomizer<DropboxComponent>> customizers;
+ @Autowired
+ private ComponentConfigurationProperties globalConfiguration;
+ @Autowired
+ private DropboxComponentConfiguration componentConfiguration;
+
+ public DropboxComponentAutoConfiguration() {
+ super(ConfigurationPhase.REGISTER_BEAN);
+ }
+
+ @ConditionalOnBean(CamelContext.class)
+ public static class OnCamelContext {
+ }
+
+ @ConditionalOnBean(CamelAutoConfiguration.class)
+ public static class OnCamelAutoConfiguration {
+ }
+
+ public static class Condition extends GroupCondition {
+ public Condition() {
+ super("camel.component", "camel.component.dropbox");
+ }
+ }
@Lazy
@Bean(name = "dropbox-component")
@ConditionalOnClass(CamelContext.class)
@ConditionalOnMissingBean(DropboxComponent.class)
- public DropboxComponent configureDropboxComponent(CamelContext camelContext)
- throws Exception {
+ public DropboxComponent configureDropboxComponent() throws Exception {
DropboxComponent component = new DropboxComponent();
component.setCamelContext(camelContext);
- return component;
- }
-
- @Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
- public static class Condition extends SpringBootCondition {
- @Override
- public ConditionOutcome getMatchOutcome(
- ConditionContext conditionContext,
- AnnotatedTypeMetadata annotatedTypeMetadata) {
- boolean groupEnabled = isEnabled(conditionContext,
- "camel.component.", true);
- ConditionMessage.Builder message = ConditionMessage
- .forCondition("camel.component.dropbox");
- if (isEnabled(conditionContext, "camel.component.dropbox.",
- groupEnabled)) {
- return ConditionOutcome.match(message.because("enabled"));
+ Map<String, Object> parameters = new HashMap<>();
+ IntrospectionSupport.getProperties(componentConfiguration, parameters,
+ null, false);
+ for (Map.Entry<String, Object> entry : parameters.entrySet()) {
+ Object value = entry.getValue();
+ Class<?> paramClass = value.getClass();
+ if (paramClass.getName().endsWith("NestedConfiguration")) {
+ Class nestedClass = null;
+ try {
+ nestedClass = (Class) paramClass.getDeclaredField(
+ "CAMEL_NESTED_CLASS").get(null);
+ HashMap<String, Object> nestedParameters = new HashMap<>();
+ IntrospectionSupport.getProperties(value, nestedParameters,
+ null, false);
+ Object nestedProperty = nestedClass.newInstance();
+ IntrospectionSupport.setProperties(camelContext,
+ camelContext.getTypeConverter(), nestedProperty,
+ nestedParameters);
+ entry.setValue(nestedProperty);
+ } catch (NoSuchFieldException e) {
+ }
}
- return ConditionOutcome.noMatch(message.because("not enabled"));
}
-
- private boolean isEnabled(
- org.springframework.context.annotation.ConditionContext context,
- java.lang.String prefix, boolean defaultValue) {
- RelaxedPropertyResolver resolver = new RelaxedPropertyResolver(
- context.getEnvironment(), prefix);
- return resolver.getProperty("enabled", Boolean.class, defaultValue);
+ IntrospectionSupport.setProperties(camelContext,
+ camelContext.getTypeConverter(), component, parameters);
+ boolean useConfigurers = globalConfiguration.getConfigurer()
+ .isEnabled()
+ && componentConfiguration.getConfigurer().isEnabled();
+ if (useConfigurers && ObjectHelper.isNotEmpty(customizers)) {
+ for (ComponentCustomizer<DropboxComponent> configurer : customizers) {
+ LOGGER.debug("Configure component {}, with configurer {}",
+ component, configurer);
+ configurer.customize(component);
+ }
}
+ return component;
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/camel/blob/3eeb97ac/platforms/spring-boot/components-starter/camel-dropbox-starter/src/main/java/org/apache/camel/component/dropbox/springboot/DropboxComponentConfiguration.java
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-dropbox-starter/src/main/java/org/apache/camel/component/dropbox/springboot/DropboxComponentConfiguration.java b/platforms/spring-boot/components-starter/camel-dropbox-starter/src/main/java/org/apache/camel/component/dropbox/springboot/DropboxComponentConfiguration.java
index 70de120..a1dd2db 100644
--- a/platforms/spring-boot/components-starter/camel-dropbox-starter/src/main/java/org/apache/camel/component/dropbox/springboot/DropboxComponentConfiguration.java
+++ b/platforms/spring-boot/components-starter/camel-dropbox-starter/src/main/java/org/apache/camel/component/dropbox/springboot/DropboxComponentConfiguration.java
@@ -16,6 +16,8 @@
*/
package org.apache.camel.component.dropbox.springboot;
+import javax.annotation.Generated;
+import org.apache.camel.spring.boot.ComponentConfigurationPropertiesCommon;
import org.springframework.boot.context.properties.ConfigurationProperties;
/**
@@ -24,8 +26,11 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
*
* Generated by camel-package-maven-plugin - do not edit this file!
*/
+@Generated("org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo")
@ConfigurationProperties(prefix = "camel.component.dropbox")
-public class DropboxComponentConfiguration {
+public class DropboxComponentConfiguration
+ extends
+ ComponentConfigurationPropertiesCommon {
/**
* Whether the component should resolve property placeholders on itself when