camel-spring-boot: improve customizer configuration
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/1ca7a426 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/1ca7a426 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/1ca7a426 Branch: refs/heads/master Commit: 1ca7a4260392663f198c424353522129781dab0a Parents: ed85770 Author: lburgazzoli <[email protected]> Authored: Sun May 21 12:21:59 2017 +0200 Committer: lburgazzoli <[email protected]> Committed: Mon May 22 14:02:22 2017 +0200 ---------------------------------------------------------------------- .../camel/spring/boot/util/GroupCondition.java | 32 +-- .../util/HierarchicalPropertiesEvaluator.java | 44 ++++ .../spring/boot/util/GroupConditionTest1.java | 49 ++++ .../spring/boot/util/GroupConditionTest2.java | 49 ++++ .../spring/boot/util/GroupConditionTest3.java | 49 ++++ .../spring/boot/util/GroupConditionTest4.java | 49 ++++ .../boot/util/GroupConditionTestBase.java | 41 ++++ .../HierarchicalPropertiesEvaluatorTest.java | 63 +++++ .../src/test/resources/application.properties | 2 +- .../AhcComponentAutoConfiguration.java | 38 ++- .../WsComponentAutoConfiguration.java | 38 ++- .../AMQPComponentAutoConfiguration.java | 38 ++- .../ApnsComponentAutoConfiguration.java | 38 ++- .../AsteriskComponentAutoConfiguration.java | 38 ++- .../AtmosComponentAutoConfiguration.java | 38 ++- .../WebsocketComponentAutoConfiguration.java | 39 ++- .../AtomComponentAutoConfiguration.java | 38 ++- .../AvroComponentAutoConfiguration.java | 38 ++- .../AvroDataFormatAutoConfiguration.java | 38 ++- .../CwComponentAutoConfiguration.java | 38 ++- .../DdbComponentAutoConfiguration.java | 38 ++- .../DdbStreamComponentAutoConfiguration.java | 38 ++- .../EC2ComponentAutoConfiguration.java | 38 ++- ...nesisFirehoseComponentAutoConfiguration.java | 39 ++- .../KinesisComponentAutoConfiguration.java | 38 ++- .../S3ComponentAutoConfiguration.java | 38 ++- .../SdbComponentAutoConfiguration.java | 38 ++- .../SesComponentAutoConfiguration.java | 38 ++- .../SnsComponentAutoConfiguration.java | 38 ++- .../SqsComponentAutoConfiguration.java | 38 ++- .../SWFComponentAutoConfiguration.java | 38 ++- .../BlobServiceComponentAutoConfiguration.java | 38 ++- .../QueueServiceComponentAutoConfiguration.java | 38 ++- .../BarcodeDataFormatAutoConfiguration.java | 38 ++- .../Base64DataFormatAutoConfiguration.java | 38 ++- ...BeanValidatorComponentAutoConfiguration.java | 38 ++- .../BeanIODataFormatAutoConfiguration.java | 38 ++- .../BeanstalkComponentAutoConfiguration.java | 38 ++- .../BindyCsvDataFormatAutoConfiguration.java | 41 +++- ...yFixedLengthDataFormatAutoConfiguration.java | 41 +++- ...KeyValuePairDataFormatAutoConfiguration.java | 41 +++- .../BonitaComponentAutoConfiguration.java | 38 ++- .../BoonDataFormatAutoConfiguration.java | 38 ++- .../BoxComponentAutoConfiguration.java | 38 ++- .../BraintreeComponentAutoConfiguration.java | 38 ++- .../CacheComponentAutoConfiguration.java | 38 ++- .../CassandraComponentAutoConfiguration.java | 38 ++- .../CastorDataFormatAutoConfiguration.java | 38 ++- ...ronicleEngineComponentAutoConfiguration.java | 38 ++- .../ChunkComponentAutoConfiguration.java | 38 ++- .../CMComponentAutoConfiguration.java | 38 ++- .../CMISComponentAutoConfiguration.java | 38 ++- .../CoAPComponentAutoConfiguration.java | 38 ++- .../CometdComponentAutoConfiguration.java | 38 ++- .../ConsulComponentAutoConfiguration.java | 38 ++- ...lifiedContextComponentAutoConfiguration.java | 38 ++- .../BeanComponentAutoConfiguration.java | 38 ++- .../ClassComponentAutoConfiguration.java | 38 ++- .../BindingNameComponentAutoConfiguration.java | 38 ++- .../BrowseComponentAutoConfiguration.java | 38 ++- .../ControlBusComponentAutoConfiguration.java | 38 ++- .../DataFormatComponentAutoConfiguration.java | 38 ++- .../DataSetComponentAutoConfiguration.java | 38 ++- .../DirectComponentAutoConfiguration.java | 38 ++- .../DirectVmComponentAutoConfiguration.java | 38 ++- .../FileComponentAutoConfiguration.java | 38 ++- .../LanguageComponentAutoConfiguration.java | 38 ++- .../LogComponentAutoConfiguration.java | 38 ++- .../MockComponentAutoConfiguration.java | 38 ++- .../PropertiesComponentAutoConfiguration.java | 38 ++- .../RefComponentAutoConfiguration.java | 38 ++- .../RestApiComponentAutoConfiguration.java | 38 ++- .../RestComponentAutoConfiguration.java | 38 ++- .../SchedulerComponentAutoConfiguration.java | 38 ++- .../SedaComponentAutoConfiguration.java | 38 ++- .../StubComponentAutoConfiguration.java | 38 ++- .../TestComponentAutoConfiguration.java | 38 ++- .../TimerComponentAutoConfiguration.java | 38 ++- .../ValidatorComponentAutoConfiguration.java | 38 ++- .../VmComponentAutoConfiguration.java | 38 ++- .../XsltComponentAutoConfiguration.java | 38 ++- .../GzipDataFormatAutoConfiguration.java | 38 ++- ...erializationDataFormatAutoConfiguration.java | 41 +++- .../StringDataFormatAutoConfiguration.java | 38 ++- .../ZipDataFormatAutoConfiguration.java | 38 ++- .../BeanLanguageAutoConfiguration.java | 38 ++- .../ConstantLanguageAutoConfiguration.java | 38 ++- .../HeaderLanguageAutoConfiguration.java | 38 ++- ...changePropertyLanguageAutoConfiguration.java | 38 ++- .../RefLanguageAutoConfiguration.java | 38 ++- .../FileLanguageAutoConfiguration.java | 38 ++- .../SimpleLanguageAutoConfiguration.java | 38 ++- .../TokenizeLanguageAutoConfiguration.java | 38 ++- .../XMLTokenizeLanguageAutoConfiguration.java | 38 ++- .../XPathLanguageAutoConfiguration.java | 38 ++- .../CouchbaseComponentAutoConfiguration.java | 38 ++- .../CouchDbComponentAutoConfiguration.java | 38 ++- ...italSignatureComponentAutoConfiguration.java | 38 ++- .../CryptoDataFormatAutoConfiguration.java | 38 ++- .../PGPDataFormatAutoConfiguration.java | 38 ++- .../CsvDataFormatAutoConfiguration.java | 38 ++- .../CxfRsComponentAutoConfiguration.java | 38 ++- .../CxfComponentAutoConfiguration.java | 38 ++- .../DigitalOceanComponentAutoConfiguration.java | 38 ++- .../DisruptorComponentAutoConfiguration.java | 38 ++- .../DisruptorVmComponentAutoConfiguration.java | 38 ++- .../DnsComponentAutoConfiguration.java | 38 ++- .../DockerComponentAutoConfiguration.java | 38 ++- .../DozerComponentAutoConfiguration.java | 38 ++- .../DrillComponentAutoConfiguration.java | 38 ++- .../DropboxComponentAutoConfiguration.java | 38 ++- .../EhcacheComponentAutoConfiguration.java | 38 ++- .../customizer/CacheManagerCustomizer.java | 10 +- ...ManagerCustomizerEnabledOnComponentTest.java | 38 +++ .../CacheManagerCustomizerEnabledTest.java | 39 +++ .../CacheManagerCustomizerEnabledTestBase.java | 48 ++++ ...agerCustomizerNotEnabledOnComponentTest.java | 1 + ...ElasticsearchComponentAutoConfiguration.java | 38 ++- ...ElasticsearchComponentAutoConfiguration.java | 38 ++- .../ElsqlComponentAutoConfiguration.java | 38 ++- .../EtcdComponentAutoConfiguration.java | 38 ++- .../ExecComponentAutoConfiguration.java | 38 ++- .../FacebookComponentAutoConfiguration.java | 38 ++- .../FlatpackComponentAutoConfiguration.java | 38 ++- .../FlatpackDataFormatAutoConfiguration.java | 38 ++- .../FlinkComponentAutoConfiguration.java | 38 ++- .../FopComponentAutoConfiguration.java | 38 ++- .../FreemarkerComponentAutoConfiguration.java | 38 ++- .../FtpComponentAutoConfiguration.java | 38 ++- .../FtpsComponentAutoConfiguration.java | 38 ++- .../SftpComponentAutoConfiguration.java | 38 ++- .../GangliaComponentAutoConfiguration.java | 38 ++- .../GeoCoderComponentAutoConfiguration.java | 38 ++- .../GitComponentAutoConfiguration.java | 38 ++- .../GitHubComponentAutoConfiguration.java | 38 ++- ...oogleCalendarComponentAutoConfiguration.java | 38 ++- .../GoogleDriveComponentAutoConfiguration.java | 38 ++- .../GoogleMailComponentAutoConfiguration.java | 38 ++- .../GooglePubsubComponentAutoConfiguration.java | 38 ++- .../GoraComponentAutoConfiguration.java | 38 ++- .../GroovyLanguageAutoConfiguration.java | 38 ++- .../GrpcComponentAutoConfiguration.java | 38 ++- .../GsonDataFormatAutoConfiguration.java | 41 +++- ...GuavaEventBusComponentAutoConfiguration.java | 38 ++- ...tAtomicnumberComponentAutoConfiguration.java | 39 ++- ...lcastInstanceComponentAutoConfiguration.java | 39 ++- ...HazelcastListComponentAutoConfiguration.java | 38 ++- .../HazelcastMapComponentAutoConfiguration.java | 38 ++- ...lcastMultimapComponentAutoConfiguration.java | 39 ++- ...azelcastQueueComponentAutoConfiguration.java | 38 ++- ...ReplicatedmapComponentAutoConfiguration.java | 39 ++- ...astRingbufferComponentAutoConfiguration.java | 39 ++- ...HazelcastSedaComponentAutoConfiguration.java | 38 ++- .../HazelcastSetComponentAutoConfiguration.java | 38 ++- ...azelcastTopicComponentAutoConfiguration.java | 38 ++- .../HBaseComponentAutoConfiguration.java | 38 ++- .../HdfsComponentAutoConfiguration.java | 38 ++- .../HdfsComponentAutoConfiguration.java | 38 ++- .../HessianDataFormatAutoConfiguration.java | 38 ++- .../HipchatComponentAutoConfiguration.java | 38 ++- .../HL7DataFormatAutoConfiguration.java | 38 ++- .../TerserLanguageAutoConfiguration.java | 38 ++- .../HttpComponentAutoConfiguration.java | 38 ++- .../HttpComponentAutoConfiguration.java | 38 ++- .../ICalDataFormatAutoConfiguration.java | 38 ++- .../IgniteCacheComponentAutoConfiguration.java | 38 ++- ...IgniteComputeComponentAutoConfiguration.java | 38 ++- .../IgniteEventsComponentAutoConfiguration.java | 38 ++- .../IgniteIdGenComponentAutoConfiguration.java | 38 ++- ...niteMessagingComponentAutoConfiguration.java | 38 ++- .../IgniteQueueComponentAutoConfiguration.java | 38 ++- .../IgniteSetComponentAutoConfiguration.java | 38 ++- .../InfinispanComponentAutoConfiguration.java | 38 ++- .../InfluxDbComponentAutoConfiguration.java | 38 ++- .../IrcComponentAutoConfiguration.java | 38 ++- .../IronMQComponentAutoConfiguration.java | 38 ++- .../JacksonDataFormatAutoConfiguration.java | 41 +++- .../JacksonXMLDataFormatAutoConfiguration.java | 41 +++- .../JavaSpaceComponentAutoConfiguration.java | 38 ++- .../JaxbDataFormatAutoConfiguration.java | 38 ++- .../JBPMComponentAutoConfiguration.java | 38 ++- .../JCacheComponentAutoConfiguration.java | 38 ++- .../JcrComponentAutoConfiguration.java | 38 ++- .../JdbcComponentAutoConfiguration.java | 38 ++- .../JettyHttpComponentAutoConfiguration9.java | 38 ++- .../JGroupsComponentAutoConfiguration.java | 38 ++- .../JibxDataFormatAutoConfiguration.java | 38 ++- .../JingComponentAutoConfiguration.java | 38 ++- .../JIRAComponentAutoConfiguration.java | 38 ++- .../JmsComponentAutoConfiguration.java | 38 ++- .../JMXComponentAutoConfiguration.java | 38 ++- .../JohnzonDataFormatAutoConfiguration.java | 41 +++- .../JoltComponentAutoConfiguration.java | 38 ++- .../SqlLanguageAutoConfiguration.java | 38 ++- .../JpaComponentAutoConfiguration.java | 38 ++- .../ScpComponentAutoConfiguration.java | 38 ++- .../JsonPathLanguageAutoConfiguration.java | 38 ++- .../Jt400ComponentAutoConfiguration.java | 38 ++- .../JuelLanguageAutoConfiguration.java | 38 ++- .../JXPathLanguageAutoConfiguration.java | 38 ++- .../KafkaComponentAutoConfiguration.java | 38 ++- .../KestrelComponentAutoConfiguration.java | 38 ++- .../KratiComponentAutoConfiguration.java | 38 ++- .../KubernetesComponentAutoConfiguration.java | 38 ++- .../LdapComponentAutoConfiguration.java | 38 ++- .../LinkedInComponentAutoConfiguration.java | 38 ++- .../LuceneComponentAutoConfiguration.java | 38 ++- .../LumberjackComponentAutoConfiguration.java | 38 ++- .../LZFDataFormatAutoConfiguration.java | 38 ++- .../MailComponentAutoConfiguration.java | 38 ++- ...imeMultipartDataFormatAutoConfiguration.java | 41 +++- .../MetricsComponentAutoConfiguration.java | 38 ++- .../MiloClientComponentAutoConfiguration.java | 38 ++- .../MiloServerComponentAutoConfiguration.java | 38 ++- .../Mina2ComponentAutoConfiguration.java | 38 ++- .../MllpComponentAutoConfiguration.java | 38 ++- .../GridFsComponentAutoConfiguration.java | 38 ++- .../MongoDbComponentAutoConfiguration.java | 38 ++- .../MongoDbComponentAutoConfiguration.java | 38 ++- .../MQTTComponentAutoConfiguration.java | 38 ++- .../MsvComponentAutoConfiguration.java | 38 ++- .../MustacheComponentAutoConfiguration.java | 38 ++- .../MvelComponentAutoConfiguration.java | 38 ++- .../MvelLanguageAutoConfiguration.java | 38 ++- .../MyBatisComponentAutoConfiguration.java | 38 ++- .../NagiosComponentAutoConfiguration.java | 38 ++- .../NatsComponentAutoConfiguration.java | 38 ++- .../NettyHttpComponentAutoConfiguration.java | 38 ++- .../NettyComponentAutoConfiguration.java | 38 ++- .../NettyHttpComponentAutoConfiguration.java | 38 ++- .../NettyComponentAutoConfiguration.java | 38 ++- .../OgnlLanguageAutoConfiguration.java | 38 ++- .../Olingo2ComponentAutoConfiguration.java | 38 ++- .../Olingo4ComponentAutoConfiguration.java | 38 ++- .../OpenShiftComponentAutoConfiguration.java | 38 ++- .../CinderComponentAutoConfiguration.java | 38 ++- .../GlanceComponentAutoConfiguration.java | 38 ++- .../KeystoneComponentAutoConfiguration.java | 39 ++- .../NeutronComponentAutoConfiguration.java | 38 ++- .../NovaComponentAutoConfiguration.java | 38 ++- .../SwiftComponentAutoConfiguration.java | 38 ++- .../OptaPlannerComponentAutoConfiguration.java | 38 ++- .../PahoComponentAutoConfiguration.java | 38 ++- .../PdfComponentAutoConfiguration.java | 38 ++- .../PgEventComponentAutoConfiguration.java | 38 ++- .../PrinterComponentAutoConfiguration.java | 38 ++- .../ProtobufDataFormatAutoConfiguration.java | 38 ++- .../PubNubComponentAutoConfiguration.java | 38 ++- .../QuartzComponentAutoConfiguration.java | 38 ++- .../QuickfixjComponentAutoConfiguration.java | 38 ++- .../RabbitMQComponentAutoConfiguration.java | 38 ++- ...activeStreamsComponentAutoConfiguration.java | 38 ++- .../RestSwaggerComponentAutoConfiguration.java | 38 ++- .../RestletComponentAutoConfiguration.java | 38 ++- .../RmiComponentAutoConfiguration.java | 38 ++- .../RouteboxComponentAutoConfiguration.java | 38 ++- .../RssComponentAutoConfiguration.java | 38 ++- .../RssDataFormatAutoConfiguration.java | 38 ++- .../SalesforceComponentAutoConfiguration.java | 38 ++- .../NetWeaverComponentAutoConfiguration.java | 38 ++- .../XQueryComponentAutoConfiguration.java | 38 ++- .../XQueryLanguageAutoConfiguration.java | 38 ++- .../SchematronComponentAutoConfiguration.java | 38 ++- .../JavaScriptLanguageAutoConfiguration.java | 38 ++- .../PhpLanguageAutoConfiguration.java | 38 ++- .../PythonLanguageAutoConfiguration.java | 38 ++- .../RubyLanguageAutoConfiguration.java | 38 ++- .../ServiceNowComponentAutoConfiguration.java | 38 ++- .../ServletComponentAutoConfiguration.java | 38 ++- .../SipComponentAutoConfiguration.java | 38 ++- .../SjmsBatchComponentAutoConfiguration.java | 38 ++- .../SjmsComponentAutoConfiguration.java | 38 ++- .../Sjms2ComponentAutoConfiguration.java | 38 ++- .../SlackComponentAutoConfiguration.java | 38 ++- .../SmppComponentAutoConfiguration.java | 38 ++- .../SnakeYAMLDataFormatAutoConfiguration.java | 43 ++-- .../SnmpComponentAutoConfiguration.java | 38 ++- .../SoapJaxbDataFormatAutoConfiguration.java | 38 ++- .../SolrComponentAutoConfiguration.java | 38 ++- .../SparkComponentAutoConfiguration.java | 38 ++- .../SplunkComponentAutoConfiguration.java | 38 ++- .../SpringBatchComponentAutoConfiguration.java | 38 ++- ...ngIntegrationComponentAutoConfiguration.java | 39 ++- .../SpringLdapComponentAutoConfiguration.java | 38 ++- .../RedisComponentAutoConfiguration.java | 38 ++- .../EventComponentAutoConfiguration.java | 38 ++- .../SpelLanguageAutoConfiguration.java | 38 ++- ...ingWebserviceComponentAutoConfiguration.java | 38 ++- .../SqlComponentAutoConfiguration.java | 38 ++- .../SqlStoredComponentAutoConfiguration.java | 38 ++- .../SshComponentAutoConfiguration.java | 38 ++- .../StAXComponentAutoConfiguration.java | 38 ++- .../StompComponentAutoConfiguration.java | 38 ++- .../StreamComponentAutoConfiguration.java | 38 ++- ...tringTemplateComponentAutoConfiguration.java | 38 ++- .../SyslogDataFormatAutoConfiguration.java | 38 ++- .../TidyMarkupDataFormatAutoConfiguration.java | 41 +++- .../TarFileDataFormatAutoConfiguration.java | 38 ++- .../TelegramComponentAutoConfiguration.java | 38 ++- .../TikaComponentAutoConfiguration.java | 38 ++- .../TwitterComponentAutoConfiguration.java | 38 ++- .../UndertowComponentAutoConfiguration.java | 38 ++- ...UniVocityCsvDataFormatAutoConfiguration.java | 41 +++- ...tyFixedWidthDataFormatAutoConfiguration.java | 41 +++- ...UniVocityTsvDataFormatAutoConfiguration.java | 41 +++- .../VelocityComponentAutoConfiguration.java | 38 ++- .../VertxComponentAutoConfiguration.java | 38 ++- .../WeatherComponentAutoConfiguration.java | 38 ++- .../WebsocketComponentAutoConfiguration.java | 38 ++- .../XmlBeansDataFormatAutoConfiguration.java | 38 ++- .../XmlJsonDataFormatAutoConfiguration.java | 38 ++- .../XmlRpcComponentAutoConfiguration.java | 38 ++- .../XmlRpcDataFormatAutoConfiguration.java | 38 ++- .../XmlSignatureComponentAutoConfiguration.java | 38 ++- .../XMLSecurityDataFormatAutoConfiguration.java | 41 +++- .../XmppComponentAutoConfiguration.java | 38 ++- .../JsonDataFormatAutoConfiguration.java | 41 +++- .../XStreamDataFormatAutoConfiguration.java | 38 ++- .../YammerComponentAutoConfiguration.java | 38 ++- .../ZendeskComponentAutoConfiguration.java | 38 ++- .../ZipFileDataFormatAutoConfiguration.java | 38 ++- .../MasterComponentAutoConfiguration.java | 38 ++- .../ZooKeeperComponentAutoConfiguration.java | 38 ++- .../SpringBootAutoConfigurationMojo.java | 245 +++++++++++-------- 324 files changed, 8407 insertions(+), 4153 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/1ca7a426/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/util/GroupCondition.java ---------------------------------------------------------------------- diff --git a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/util/GroupCondition.java b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/util/GroupCondition.java index acfd832..fe18518 100644 --- a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/util/GroupCondition.java +++ b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/util/GroupCondition.java @@ -19,42 +19,26 @@ package org.apache.camel.spring.boot.util; import org.springframework.boot.autoconfigure.condition.ConditionMessage; import org.springframework.boot.autoconfigure.condition.ConditionOutcome; import org.springframework.boot.autoconfigure.condition.SpringBootCondition; -import org.springframework.boot.bind.RelaxedPropertyResolver; import org.springframework.context.annotation.ConditionContext; +import org.springframework.core.env.Environment; import org.springframework.core.type.AnnotatedTypeMetadata; public class GroupCondition extends SpringBootCondition { private final String group; private final String single; - private final boolean groupDefault; - private final boolean singleDefault; public GroupCondition(String group, String single) { - this(group, true, single, true); - } - - public GroupCondition(String group, boolean groupDefault, String single, boolean singleDefault) { - this.group = group.endsWith(".") ? group : group + "."; - this.groupDefault = groupDefault; - - this.single = group.endsWith(".") ? single : single + "."; - this.singleDefault = singleDefault; + this.group = group; + this.single = single; } @Override public ConditionOutcome getMatchOutcome(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata) { - boolean groupEnabled = isEnabled(conditionContext, this.group, true); - ConditionMessage.Builder message = ConditionMessage.forCondition(this.single); - - if (isEnabled(conditionContext, this.single, groupEnabled)) { - return ConditionOutcome.match(message.because("enabled")); - } - - return ConditionOutcome.noMatch(message.because("not enabled")); - } + final ConditionMessage.Builder message = ConditionMessage.forCondition(this.single); + final Environment environment = conditionContext.getEnvironment(); - public static boolean isEnabled(ConditionContext context, String prefix, boolean defaultValue) { - RelaxedPropertyResolver resolver = new RelaxedPropertyResolver(context.getEnvironment(), prefix); - return resolver.getProperty("enabled", Boolean.class, defaultValue); + return HierarchicalPropertiesEvaluator.evaluate(environment, this.group, this.single) + ? ConditionOutcome.match(message.because("enabled")) + : ConditionOutcome.noMatch(message.because("not enabled")); } } http://git-wip-us.apache.org/repos/asf/camel/blob/1ca7a426/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/util/HierarchicalPropertiesEvaluator.java ---------------------------------------------------------------------- diff --git a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/util/HierarchicalPropertiesEvaluator.java b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/util/HierarchicalPropertiesEvaluator.java new file mode 100644 index 0000000..a41effb --- /dev/null +++ b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/util/HierarchicalPropertiesEvaluator.java @@ -0,0 +1,44 @@ +/** + * 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.spring.boot.util; + +import org.springframework.boot.bind.RelaxedPropertyResolver; +import org.springframework.core.env.Environment; + +public final class HierarchicalPropertiesEvaluator { + private HierarchicalPropertiesEvaluator() { + } + + public static boolean evaluate(Environment environment, String... prefixes) { + boolean answer = true; + + for (String prefix : prefixes) { + answer = isEnabled(environment, prefix, answer); + } + + return answer; + } + + private static boolean isEnabled(Environment environment, String prefix, boolean defaultValue) { + RelaxedPropertyResolver resolver = new RelaxedPropertyResolver( + environment, + prefix.endsWith(".") ? prefix : prefix + "." + ); + + return resolver.getProperty("enabled", Boolean.class, defaultValue); + } +} http://git-wip-us.apache.org/repos/asf/camel/blob/1ca7a426/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/util/GroupConditionTest1.java ---------------------------------------------------------------------- diff --git a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/util/GroupConditionTest1.java b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/util/GroupConditionTest1.java new file mode 100644 index 0000000..b8155b7 --- /dev/null +++ b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/util/GroupConditionTest1.java @@ -0,0 +1,49 @@ +/** + * 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.spring.boot.util; + +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.ApplicationContext; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@DirtiesContext +@SpringBootApplication +@SpringBootTest( + classes = { + GroupConditionTestBase.TestConfiguration.class + }, + properties = { + "test.group.enabled=false", + "test.group.my-class.enabled=true" + } +) +public class GroupConditionTest1 extends GroupConditionTestBase { + @Autowired + ApplicationContext context; + + @Test + public void testCondition() { + Assert.assertEquals(1, context.getBeansOfType(MyClass.class).size()); + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/camel/blob/1ca7a426/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/util/GroupConditionTest2.java ---------------------------------------------------------------------- diff --git a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/util/GroupConditionTest2.java b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/util/GroupConditionTest2.java new file mode 100644 index 0000000..f981acc --- /dev/null +++ b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/util/GroupConditionTest2.java @@ -0,0 +1,49 @@ +/** + * 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.spring.boot.util; + +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.ApplicationContext; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@DirtiesContext +@SpringBootApplication +@SpringBootTest( + classes = { + GroupConditionTest2.TestConfiguration.class + }, + properties = { + "test.group.enabled=false", + "test.group.my-class.enabled=false" + } +) +public class GroupConditionTest2 extends GroupConditionTestBase { + @Autowired + ApplicationContext context; + + @Test + public void testCondition() { + Assert.assertEquals(0, context.getBeansOfType(MyClass.class).size()); + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/camel/blob/1ca7a426/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/util/GroupConditionTest3.java ---------------------------------------------------------------------- diff --git a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/util/GroupConditionTest3.java b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/util/GroupConditionTest3.java new file mode 100644 index 0000000..f266d69 --- /dev/null +++ b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/util/GroupConditionTest3.java @@ -0,0 +1,49 @@ +/** + * 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.spring.boot.util; + +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.ApplicationContext; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@DirtiesContext +@SpringBootApplication +@SpringBootTest( + classes = { + GroupConditionTest3.TestConfiguration.class + }, + properties = { + "test.group.enabled=true", + "test.group.my-class.enabled=false" + } +) +public class GroupConditionTest3 extends GroupConditionTestBase { + @Autowired + ApplicationContext context; + + @Test + public void testCondition() { + Assert.assertEquals(0, context.getBeansOfType(MyClass.class).size()); + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/camel/blob/1ca7a426/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/util/GroupConditionTest4.java ---------------------------------------------------------------------- diff --git a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/util/GroupConditionTest4.java b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/util/GroupConditionTest4.java new file mode 100644 index 0000000..4de3782 --- /dev/null +++ b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/util/GroupConditionTest4.java @@ -0,0 +1,49 @@ +/** + * 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.spring.boot.util; + +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.ApplicationContext; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@DirtiesContext +@SpringBootApplication +@SpringBootTest( + classes = { + GroupConditionTest4.TestConfiguration.class + }, + properties = { + "test.group.enabled=true", + "test.group.my-class.enabled=true" + } +) +public class GroupConditionTest4 extends GroupConditionTestBase { + @Autowired + ApplicationContext context; + + @Test + public void testCondition() { + Assert.assertEquals(1, context.getBeansOfType(MyClass.class).size()); + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/camel/blob/1ca7a426/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/util/GroupConditionTestBase.java ---------------------------------------------------------------------- diff --git a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/util/GroupConditionTestBase.java b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/util/GroupConditionTestBase.java new file mode 100644 index 0000000..39e8fdb --- /dev/null +++ b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/util/GroupConditionTestBase.java @@ -0,0 +1,41 @@ +/** + * 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.spring.boot.util; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Conditional; +import org.springframework.context.annotation.Configuration; + +public class GroupConditionTestBase { + @Configuration + static class TestConfiguration { + @Bean + @Conditional(TestConfiguration.Conditions.class) + public MyClass stringComponent() { + return new MyClass(); + } + + static class Conditions extends GroupCondition { + public Conditions() { + super("test.group", "test.group.my-class"); + } + } + } + + static class MyClass { + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/camel/blob/1ca7a426/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/util/HierarchicalPropertiesEvaluatorTest.java ---------------------------------------------------------------------- diff --git a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/util/HierarchicalPropertiesEvaluatorTest.java b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/util/HierarchicalPropertiesEvaluatorTest.java new file mode 100644 index 0000000..6ed08f4 --- /dev/null +++ b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/util/HierarchicalPropertiesEvaluatorTest.java @@ -0,0 +1,63 @@ +/** + * 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.spring.boot.util; + +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.env.Environment; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@DirtiesContext +@SpringBootApplication +@SpringBootTest( + classes = { + HierarchicalPropertiesEvaluatorTest.TestConfiguration.class + }, + properties = { + "test.group1.enabled=true", + "test.group1.subgroup1.enabled=false", + "test.group1.subgroup2.enabled=true", + "test.group2.enabled=false", + "test.group2.subgroup1.enabled=false", + "test.group2.subgroup2.enabled=true", + "test.group2.subgroup3.enabled=false" + } +) +public class HierarchicalPropertiesEvaluatorTest { + @Autowired + Environment environment; + + @Test + public void testEvaluator() { + Assert.assertFalse(HierarchicalPropertiesEvaluator.evaluate(environment, "test.group1", "test.group1.subgroup1")); + Assert.assertTrue(HierarchicalPropertiesEvaluator.evaluate(environment, "test.group1", "test.group1.subgroup2")); + Assert.assertFalse(HierarchicalPropertiesEvaluator.evaluate(environment, "test.group2", "test.group2.subgroup1")); + Assert.assertTrue(HierarchicalPropertiesEvaluator.evaluate(environment, "test.group2", "test.group2.subgroup2")); + Assert.assertFalse(HierarchicalPropertiesEvaluator.evaluate(environment, "test.group2", "test.group2.subgroup3")); + } + + @Configuration + static class TestConfiguration { + } +} http://git-wip-us.apache.org/repos/asf/camel/blob/1ca7a426/components/camel-spring-boot/src/test/resources/application.properties ---------------------------------------------------------------------- diff --git a/components/camel-spring-boot/src/test/resources/application.properties b/components/camel-spring-boot/src/test/resources/application.properties index 3056876..518bcd1 100644 --- a/components/camel-spring-boot/src/test/resources/application.properties +++ b/components/camel-spring-boot/src/test/resources/application.properties @@ -20,4 +20,4 @@ spring.main.banner_mode=off from=direct:test to=mock:test -#logging.level.org.apache.camel=DEBUG +#logging.level.org.apache.camel=DEBUG \ No newline at end of file http://git-wip-us.apache.org/repos/asf/camel/blob/1ca7a426/platforms/spring-boot/components-starter/camel-ahc-starter/src/main/java/org/apache/camel/component/ahc/springboot/AhcComponentAutoConfiguration.java ---------------------------------------------------------------------- diff --git a/platforms/spring-boot/components-starter/camel-ahc-starter/src/main/java/org/apache/camel/component/ahc/springboot/AhcComponentAutoConfiguration.java b/platforms/spring-boot/components-starter/camel-ahc-starter/src/main/java/org/apache/camel/component/ahc/springboot/AhcComponentAutoConfiguration.java index 2c7a026..a403c94 100644 --- a/platforms/spring-boot/components-starter/camel-ahc-starter/src/main/java/org/apache/camel/component/ahc/springboot/AhcComponentAutoConfiguration.java +++ b/platforms/spring-boot/components-starter/camel-ahc-starter/src/main/java/org/apache/camel/component/ahc/springboot/AhcComponentAutoConfiguration.java @@ -23,10 +23,12 @@ import javax.annotation.Generated; import org.apache.camel.CamelContext; import org.apache.camel.component.ahc.AhcComponent; import org.apache.camel.spi.ComponentCustomizer; +import org.apache.camel.spi.HasId; import org.apache.camel.spring.boot.CamelAutoConfiguration; import org.apache.camel.spring.boot.ComponentConfigurationProperties; import org.apache.camel.spring.boot.util.ConditionalOnCamelContextAndAutoConfigurationBeans; import org.apache.camel.spring.boot.util.GroupCondition; +import org.apache.camel.spring.boot.util.HierarchicalPropertiesEvaluator; import org.apache.camel.util.IntrospectionSupport; import org.apache.camel.util.ObjectHelper; import org.slf4j.Logger; @@ -36,6 +38,7 @@ import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Conditional; import org.springframework.context.annotation.Configuration; @@ -56,13 +59,13 @@ public class AhcComponentAutoConfiguration { private static final Logger LOGGER = LoggerFactory .getLogger(AhcComponentAutoConfiguration.class); @Autowired + private ApplicationContext applicationContext; + @Autowired private CamelContext camelContext; + @Autowired + private AhcComponentConfiguration configuration; @Autowired(required = false) private List<ComponentCustomizer<AhcComponent>> customizers; - @Autowired - private ComponentConfigurationProperties globalConfiguration; - @Autowired - private AhcComponentConfiguration componentConfiguration; static class GroupConditions extends GroupCondition { public GroupConditions() { @@ -77,8 +80,8 @@ public class AhcComponentAutoConfiguration { AhcComponent component = new AhcComponent(); component.setCamelContext(camelContext); Map<String, Object> parameters = new HashMap<>(); - IntrospectionSupport.getProperties(componentConfiguration, parameters, - null, false); + IntrospectionSupport.getProperties(configuration, parameters, null, + false); for (Map.Entry<String, Object> entry : parameters.entrySet()) { Object value = entry.getValue(); Class<?> paramClass = value.getClass(); @@ -101,14 +104,23 @@ public class AhcComponentAutoConfiguration { } IntrospectionSupport.setProperties(camelContext, camelContext.getTypeConverter(), component, parameters); - boolean useCustomizers = globalConfiguration.getCustomizer() - .isEnabled() - && componentConfiguration.getCustomizer().isEnabled(); - if (useCustomizers && ObjectHelper.isNotEmpty(customizers)) { + if (ObjectHelper.isNotEmpty(customizers)) { for (ComponentCustomizer<AhcComponent> customizer : customizers) { - LOGGER.debug("Configure component {}, with customizer {}", - component, customizer); - customizer.customize(component); + boolean useCustomizer = (customizer instanceof HasId) + ? HierarchicalPropertiesEvaluator.evaluate( + applicationContext.getEnvironment(), + "camel.component.customizer", + "camel.component.ahc.customizer", + ((HasId) customizer).getId()) + : HierarchicalPropertiesEvaluator.evaluate( + applicationContext.getEnvironment(), + "camel.component.customizer", + "camel.component.ahc.customizer"); + if (useCustomizer) { + LOGGER.debug("Configure component {}, with customizer {}", + component, customizer); + customizer.customize(component); + } } } return component; http://git-wip-us.apache.org/repos/asf/camel/blob/1ca7a426/platforms/spring-boot/components-starter/camel-ahc-ws-starter/src/main/java/org/apache/camel/component/ahc/ws/springboot/WsComponentAutoConfiguration.java ---------------------------------------------------------------------- diff --git a/platforms/spring-boot/components-starter/camel-ahc-ws-starter/src/main/java/org/apache/camel/component/ahc/ws/springboot/WsComponentAutoConfiguration.java b/platforms/spring-boot/components-starter/camel-ahc-ws-starter/src/main/java/org/apache/camel/component/ahc/ws/springboot/WsComponentAutoConfiguration.java index 42f6a5b..4baf62d 100644 --- a/platforms/spring-boot/components-starter/camel-ahc-ws-starter/src/main/java/org/apache/camel/component/ahc/ws/springboot/WsComponentAutoConfiguration.java +++ b/platforms/spring-boot/components-starter/camel-ahc-ws-starter/src/main/java/org/apache/camel/component/ahc/ws/springboot/WsComponentAutoConfiguration.java @@ -23,10 +23,12 @@ import javax.annotation.Generated; import org.apache.camel.CamelContext; import org.apache.camel.component.ahc.ws.WsComponent; import org.apache.camel.spi.ComponentCustomizer; +import org.apache.camel.spi.HasId; import org.apache.camel.spring.boot.CamelAutoConfiguration; import org.apache.camel.spring.boot.ComponentConfigurationProperties; import org.apache.camel.spring.boot.util.ConditionalOnCamelContextAndAutoConfigurationBeans; import org.apache.camel.spring.boot.util.GroupCondition; +import org.apache.camel.spring.boot.util.HierarchicalPropertiesEvaluator; import org.apache.camel.util.IntrospectionSupport; import org.apache.camel.util.ObjectHelper; import org.slf4j.Logger; @@ -36,6 +38,7 @@ import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Conditional; import org.springframework.context.annotation.Configuration; @@ -56,13 +59,13 @@ public class WsComponentAutoConfiguration { private static final Logger LOGGER = LoggerFactory .getLogger(WsComponentAutoConfiguration.class); @Autowired + private ApplicationContext applicationContext; + @Autowired private CamelContext camelContext; + @Autowired + private WsComponentConfiguration configuration; @Autowired(required = false) private List<ComponentCustomizer<WsComponent>> customizers; - @Autowired - private ComponentConfigurationProperties globalConfiguration; - @Autowired - private WsComponentConfiguration componentConfiguration; static class GroupConditions extends GroupCondition { public GroupConditions() { @@ -77,8 +80,8 @@ public class WsComponentAutoConfiguration { WsComponent component = new WsComponent(); component.setCamelContext(camelContext); Map<String, Object> parameters = new HashMap<>(); - IntrospectionSupport.getProperties(componentConfiguration, parameters, - null, false); + IntrospectionSupport.getProperties(configuration, parameters, null, + false); for (Map.Entry<String, Object> entry : parameters.entrySet()) { Object value = entry.getValue(); Class<?> paramClass = value.getClass(); @@ -101,14 +104,23 @@ public class WsComponentAutoConfiguration { } IntrospectionSupport.setProperties(camelContext, camelContext.getTypeConverter(), component, parameters); - boolean useCustomizers = globalConfiguration.getCustomizer() - .isEnabled() - && componentConfiguration.getCustomizer().isEnabled(); - if (useCustomizers && ObjectHelper.isNotEmpty(customizers)) { + if (ObjectHelper.isNotEmpty(customizers)) { for (ComponentCustomizer<WsComponent> customizer : customizers) { - LOGGER.debug("Configure component {}, with customizer {}", - component, customizer); - customizer.customize(component); + boolean useCustomizer = (customizer instanceof HasId) + ? HierarchicalPropertiesEvaluator.evaluate( + applicationContext.getEnvironment(), + "camel.component.customizer", + "camel.component.ahc-ws.customizer", + ((HasId) customizer).getId()) + : HierarchicalPropertiesEvaluator.evaluate( + applicationContext.getEnvironment(), + "camel.component.customizer", + "camel.component.ahc-ws.customizer"); + if (useCustomizer) { + LOGGER.debug("Configure component {}, with customizer {}", + component, customizer); + customizer.customize(component); + } } } return component; http://git-wip-us.apache.org/repos/asf/camel/blob/1ca7a426/platforms/spring-boot/components-starter/camel-amqp-starter/src/main/java/org/apache/camel/component/amqp/springboot/AMQPComponentAutoConfiguration.java ---------------------------------------------------------------------- diff --git a/platforms/spring-boot/components-starter/camel-amqp-starter/src/main/java/org/apache/camel/component/amqp/springboot/AMQPComponentAutoConfiguration.java b/platforms/spring-boot/components-starter/camel-amqp-starter/src/main/java/org/apache/camel/component/amqp/springboot/AMQPComponentAutoConfiguration.java index 7ef0289..55c0304 100644 --- a/platforms/spring-boot/components-starter/camel-amqp-starter/src/main/java/org/apache/camel/component/amqp/springboot/AMQPComponentAutoConfiguration.java +++ b/platforms/spring-boot/components-starter/camel-amqp-starter/src/main/java/org/apache/camel/component/amqp/springboot/AMQPComponentAutoConfiguration.java @@ -23,10 +23,12 @@ import javax.annotation.Generated; import org.apache.camel.CamelContext; import org.apache.camel.component.amqp.AMQPComponent; import org.apache.camel.spi.ComponentCustomizer; +import org.apache.camel.spi.HasId; import org.apache.camel.spring.boot.CamelAutoConfiguration; import org.apache.camel.spring.boot.ComponentConfigurationProperties; import org.apache.camel.spring.boot.util.ConditionalOnCamelContextAndAutoConfigurationBeans; import org.apache.camel.spring.boot.util.GroupCondition; +import org.apache.camel.spring.boot.util.HierarchicalPropertiesEvaluator; import org.apache.camel.util.IntrospectionSupport; import org.apache.camel.util.ObjectHelper; import org.slf4j.Logger; @@ -36,6 +38,7 @@ import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Conditional; import org.springframework.context.annotation.Configuration; @@ -56,13 +59,13 @@ public class AMQPComponentAutoConfiguration { private static final Logger LOGGER = LoggerFactory .getLogger(AMQPComponentAutoConfiguration.class); @Autowired + private ApplicationContext applicationContext; + @Autowired private CamelContext camelContext; + @Autowired + private AMQPComponentConfiguration configuration; @Autowired(required = false) private List<ComponentCustomizer<AMQPComponent>> customizers; - @Autowired - private ComponentConfigurationProperties globalConfiguration; - @Autowired - private AMQPComponentConfiguration componentConfiguration; static class GroupConditions extends GroupCondition { public GroupConditions() { @@ -77,8 +80,8 @@ public class AMQPComponentAutoConfiguration { AMQPComponent component = new AMQPComponent(); component.setCamelContext(camelContext); Map<String, Object> parameters = new HashMap<>(); - IntrospectionSupport.getProperties(componentConfiguration, parameters, - null, false); + IntrospectionSupport.getProperties(configuration, parameters, null, + false); for (Map.Entry<String, Object> entry : parameters.entrySet()) { Object value = entry.getValue(); Class<?> paramClass = value.getClass(); @@ -101,14 +104,23 @@ public class AMQPComponentAutoConfiguration { } IntrospectionSupport.setProperties(camelContext, camelContext.getTypeConverter(), component, parameters); - boolean useCustomizers = globalConfiguration.getCustomizer() - .isEnabled() - && componentConfiguration.getCustomizer().isEnabled(); - if (useCustomizers && ObjectHelper.isNotEmpty(customizers)) { + if (ObjectHelper.isNotEmpty(customizers)) { for (ComponentCustomizer<AMQPComponent> customizer : customizers) { - LOGGER.debug("Configure component {}, with customizer {}", - component, customizer); - customizer.customize(component); + boolean useCustomizer = (customizer instanceof HasId) + ? HierarchicalPropertiesEvaluator.evaluate( + applicationContext.getEnvironment(), + "camel.component.customizer", + "camel.component.amqp.customizer", + ((HasId) customizer).getId()) + : HierarchicalPropertiesEvaluator.evaluate( + applicationContext.getEnvironment(), + "camel.component.customizer", + "camel.component.amqp.customizer"); + if (useCustomizer) { + LOGGER.debug("Configure component {}, with customizer {}", + component, customizer); + customizer.customize(component); + } } } return component; http://git-wip-us.apache.org/repos/asf/camel/blob/1ca7a426/platforms/spring-boot/components-starter/camel-apns-starter/src/main/java/org/apache/camel/component/apns/springboot/ApnsComponentAutoConfiguration.java ---------------------------------------------------------------------- diff --git a/platforms/spring-boot/components-starter/camel-apns-starter/src/main/java/org/apache/camel/component/apns/springboot/ApnsComponentAutoConfiguration.java b/platforms/spring-boot/components-starter/camel-apns-starter/src/main/java/org/apache/camel/component/apns/springboot/ApnsComponentAutoConfiguration.java index 68405cf..f54a5e6 100644 --- a/platforms/spring-boot/components-starter/camel-apns-starter/src/main/java/org/apache/camel/component/apns/springboot/ApnsComponentAutoConfiguration.java +++ b/platforms/spring-boot/components-starter/camel-apns-starter/src/main/java/org/apache/camel/component/apns/springboot/ApnsComponentAutoConfiguration.java @@ -23,10 +23,12 @@ import javax.annotation.Generated; import org.apache.camel.CamelContext; import org.apache.camel.component.apns.ApnsComponent; import org.apache.camel.spi.ComponentCustomizer; +import org.apache.camel.spi.HasId; import org.apache.camel.spring.boot.CamelAutoConfiguration; import org.apache.camel.spring.boot.ComponentConfigurationProperties; import org.apache.camel.spring.boot.util.ConditionalOnCamelContextAndAutoConfigurationBeans; import org.apache.camel.spring.boot.util.GroupCondition; +import org.apache.camel.spring.boot.util.HierarchicalPropertiesEvaluator; import org.apache.camel.util.IntrospectionSupport; import org.apache.camel.util.ObjectHelper; import org.slf4j.Logger; @@ -36,6 +38,7 @@ import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Conditional; import org.springframework.context.annotation.Configuration; @@ -56,13 +59,13 @@ public class ApnsComponentAutoConfiguration { private static final Logger LOGGER = LoggerFactory .getLogger(ApnsComponentAutoConfiguration.class); @Autowired + private ApplicationContext applicationContext; + @Autowired private CamelContext camelContext; + @Autowired + private ApnsComponentConfiguration configuration; @Autowired(required = false) private List<ComponentCustomizer<ApnsComponent>> customizers; - @Autowired - private ComponentConfigurationProperties globalConfiguration; - @Autowired - private ApnsComponentConfiguration componentConfiguration; static class GroupConditions extends GroupCondition { public GroupConditions() { @@ -77,8 +80,8 @@ public class ApnsComponentAutoConfiguration { ApnsComponent component = new ApnsComponent(); component.setCamelContext(camelContext); Map<String, Object> parameters = new HashMap<>(); - IntrospectionSupport.getProperties(componentConfiguration, parameters, - null, false); + IntrospectionSupport.getProperties(configuration, parameters, null, + false); for (Map.Entry<String, Object> entry : parameters.entrySet()) { Object value = entry.getValue(); Class<?> paramClass = value.getClass(); @@ -101,14 +104,23 @@ public class ApnsComponentAutoConfiguration { } IntrospectionSupport.setProperties(camelContext, camelContext.getTypeConverter(), component, parameters); - boolean useCustomizers = globalConfiguration.getCustomizer() - .isEnabled() - && componentConfiguration.getCustomizer().isEnabled(); - if (useCustomizers && ObjectHelper.isNotEmpty(customizers)) { + if (ObjectHelper.isNotEmpty(customizers)) { for (ComponentCustomizer<ApnsComponent> customizer : customizers) { - LOGGER.debug("Configure component {}, with customizer {}", - component, customizer); - customizer.customize(component); + boolean useCustomizer = (customizer instanceof HasId) + ? HierarchicalPropertiesEvaluator.evaluate( + applicationContext.getEnvironment(), + "camel.component.customizer", + "camel.component.apns.customizer", + ((HasId) customizer).getId()) + : HierarchicalPropertiesEvaluator.evaluate( + applicationContext.getEnvironment(), + "camel.component.customizer", + "camel.component.apns.customizer"); + if (useCustomizer) { + LOGGER.debug("Configure component {}, with customizer {}", + component, customizer); + customizer.customize(component); + } } } return component; http://git-wip-us.apache.org/repos/asf/camel/blob/1ca7a426/platforms/spring-boot/components-starter/camel-asterisk-starter/src/main/java/org/apache/camel/component/asterisk/springboot/AsteriskComponentAutoConfiguration.java ---------------------------------------------------------------------- diff --git a/platforms/spring-boot/components-starter/camel-asterisk-starter/src/main/java/org/apache/camel/component/asterisk/springboot/AsteriskComponentAutoConfiguration.java b/platforms/spring-boot/components-starter/camel-asterisk-starter/src/main/java/org/apache/camel/component/asterisk/springboot/AsteriskComponentAutoConfiguration.java index 66d591d..9574063 100644 --- a/platforms/spring-boot/components-starter/camel-asterisk-starter/src/main/java/org/apache/camel/component/asterisk/springboot/AsteriskComponentAutoConfiguration.java +++ b/platforms/spring-boot/components-starter/camel-asterisk-starter/src/main/java/org/apache/camel/component/asterisk/springboot/AsteriskComponentAutoConfiguration.java @@ -23,10 +23,12 @@ import javax.annotation.Generated; import org.apache.camel.CamelContext; import org.apache.camel.component.asterisk.AsteriskComponent; import org.apache.camel.spi.ComponentCustomizer; +import org.apache.camel.spi.HasId; import org.apache.camel.spring.boot.CamelAutoConfiguration; import org.apache.camel.spring.boot.ComponentConfigurationProperties; import org.apache.camel.spring.boot.util.ConditionalOnCamelContextAndAutoConfigurationBeans; import org.apache.camel.spring.boot.util.GroupCondition; +import org.apache.camel.spring.boot.util.HierarchicalPropertiesEvaluator; import org.apache.camel.util.IntrospectionSupport; import org.apache.camel.util.ObjectHelper; import org.slf4j.Logger; @@ -36,6 +38,7 @@ import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Conditional; import org.springframework.context.annotation.Configuration; @@ -56,13 +59,13 @@ public class AsteriskComponentAutoConfiguration { private static final Logger LOGGER = LoggerFactory .getLogger(AsteriskComponentAutoConfiguration.class); @Autowired + private ApplicationContext applicationContext; + @Autowired private CamelContext camelContext; + @Autowired + private AsteriskComponentConfiguration configuration; @Autowired(required = false) private List<ComponentCustomizer<AsteriskComponent>> customizers; - @Autowired - private ComponentConfigurationProperties globalConfiguration; - @Autowired - private AsteriskComponentConfiguration componentConfiguration; static class GroupConditions extends GroupCondition { public GroupConditions() { @@ -77,8 +80,8 @@ public class AsteriskComponentAutoConfiguration { AsteriskComponent component = new AsteriskComponent(); component.setCamelContext(camelContext); Map<String, Object> parameters = new HashMap<>(); - IntrospectionSupport.getProperties(componentConfiguration, parameters, - null, false); + IntrospectionSupport.getProperties(configuration, parameters, null, + false); for (Map.Entry<String, Object> entry : parameters.entrySet()) { Object value = entry.getValue(); Class<?> paramClass = value.getClass(); @@ -101,14 +104,23 @@ public class AsteriskComponentAutoConfiguration { } IntrospectionSupport.setProperties(camelContext, camelContext.getTypeConverter(), component, parameters); - boolean useCustomizers = globalConfiguration.getCustomizer() - .isEnabled() - && componentConfiguration.getCustomizer().isEnabled(); - if (useCustomizers && ObjectHelper.isNotEmpty(customizers)) { + if (ObjectHelper.isNotEmpty(customizers)) { for (ComponentCustomizer<AsteriskComponent> customizer : customizers) { - LOGGER.debug("Configure component {}, with customizer {}", - component, customizer); - customizer.customize(component); + boolean useCustomizer = (customizer instanceof HasId) + ? HierarchicalPropertiesEvaluator.evaluate( + applicationContext.getEnvironment(), + "camel.component.customizer", + "camel.component.asterisk.customizer", + ((HasId) customizer).getId()) + : HierarchicalPropertiesEvaluator.evaluate( + applicationContext.getEnvironment(), + "camel.component.customizer", + "camel.component.asterisk.customizer"); + if (useCustomizer) { + LOGGER.debug("Configure component {}, with customizer {}", + component, customizer); + customizer.customize(component); + } } } return component; http://git-wip-us.apache.org/repos/asf/camel/blob/1ca7a426/platforms/spring-boot/components-starter/camel-atmos-starter/src/main/java/org/apache/camel/component/atmos/springboot/AtmosComponentAutoConfiguration.java ---------------------------------------------------------------------- diff --git a/platforms/spring-boot/components-starter/camel-atmos-starter/src/main/java/org/apache/camel/component/atmos/springboot/AtmosComponentAutoConfiguration.java b/platforms/spring-boot/components-starter/camel-atmos-starter/src/main/java/org/apache/camel/component/atmos/springboot/AtmosComponentAutoConfiguration.java index a97ff18..ba46617 100644 --- a/platforms/spring-boot/components-starter/camel-atmos-starter/src/main/java/org/apache/camel/component/atmos/springboot/AtmosComponentAutoConfiguration.java +++ b/platforms/spring-boot/components-starter/camel-atmos-starter/src/main/java/org/apache/camel/component/atmos/springboot/AtmosComponentAutoConfiguration.java @@ -23,10 +23,12 @@ import javax.annotation.Generated; import org.apache.camel.CamelContext; import org.apache.camel.component.atmos.AtmosComponent; import org.apache.camel.spi.ComponentCustomizer; +import org.apache.camel.spi.HasId; import org.apache.camel.spring.boot.CamelAutoConfiguration; import org.apache.camel.spring.boot.ComponentConfigurationProperties; import org.apache.camel.spring.boot.util.ConditionalOnCamelContextAndAutoConfigurationBeans; import org.apache.camel.spring.boot.util.GroupCondition; +import org.apache.camel.spring.boot.util.HierarchicalPropertiesEvaluator; import org.apache.camel.util.IntrospectionSupport; import org.apache.camel.util.ObjectHelper; import org.slf4j.Logger; @@ -36,6 +38,7 @@ import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Conditional; import org.springframework.context.annotation.Configuration; @@ -56,13 +59,13 @@ public class AtmosComponentAutoConfiguration { private static final Logger LOGGER = LoggerFactory .getLogger(AtmosComponentAutoConfiguration.class); @Autowired + private ApplicationContext applicationContext; + @Autowired private CamelContext camelContext; + @Autowired + private AtmosComponentConfiguration configuration; @Autowired(required = false) private List<ComponentCustomizer<AtmosComponent>> customizers; - @Autowired - private ComponentConfigurationProperties globalConfiguration; - @Autowired - private AtmosComponentConfiguration componentConfiguration; static class GroupConditions extends GroupCondition { public GroupConditions() { @@ -77,8 +80,8 @@ public class AtmosComponentAutoConfiguration { AtmosComponent component = new AtmosComponent(); component.setCamelContext(camelContext); Map<String, Object> parameters = new HashMap<>(); - IntrospectionSupport.getProperties(componentConfiguration, parameters, - null, false); + IntrospectionSupport.getProperties(configuration, parameters, null, + false); for (Map.Entry<String, Object> entry : parameters.entrySet()) { Object value = entry.getValue(); Class<?> paramClass = value.getClass(); @@ -101,14 +104,23 @@ public class AtmosComponentAutoConfiguration { } IntrospectionSupport.setProperties(camelContext, camelContext.getTypeConverter(), component, parameters); - boolean useCustomizers = globalConfiguration.getCustomizer() - .isEnabled() - && componentConfiguration.getCustomizer().isEnabled(); - if (useCustomizers && ObjectHelper.isNotEmpty(customizers)) { + if (ObjectHelper.isNotEmpty(customizers)) { for (ComponentCustomizer<AtmosComponent> customizer : customizers) { - LOGGER.debug("Configure component {}, with customizer {}", - component, customizer); - customizer.customize(component); + boolean useCustomizer = (customizer instanceof HasId) + ? HierarchicalPropertiesEvaluator.evaluate( + applicationContext.getEnvironment(), + "camel.component.customizer", + "camel.component.atmos.customizer", + ((HasId) customizer).getId()) + : HierarchicalPropertiesEvaluator.evaluate( + applicationContext.getEnvironment(), + "camel.component.customizer", + "camel.component.atmos.customizer"); + if (useCustomizer) { + LOGGER.debug("Configure component {}, with customizer {}", + component, customizer); + customizer.customize(component); + } } } return component; http://git-wip-us.apache.org/repos/asf/camel/blob/1ca7a426/platforms/spring-boot/components-starter/camel-atmosphere-websocket-starter/src/main/java/org/apache/camel/component/atmosphere/websocket/springboot/WebsocketComponentAutoConfiguration.java ---------------------------------------------------------------------- diff --git a/platforms/spring-boot/components-starter/camel-atmosphere-websocket-starter/src/main/java/org/apache/camel/component/atmosphere/websocket/springboot/WebsocketComponentAutoConfiguration.java b/platforms/spring-boot/components-starter/camel-atmosphere-websocket-starter/src/main/java/org/apache/camel/component/atmosphere/websocket/springboot/WebsocketComponentAutoConfiguration.java index 7b21fe5..686616d 100644 --- a/platforms/spring-boot/components-starter/camel-atmosphere-websocket-starter/src/main/java/org/apache/camel/component/atmosphere/websocket/springboot/WebsocketComponentAutoConfiguration.java +++ b/platforms/spring-boot/components-starter/camel-atmosphere-websocket-starter/src/main/java/org/apache/camel/component/atmosphere/websocket/springboot/WebsocketComponentAutoConfiguration.java @@ -23,10 +23,12 @@ import javax.annotation.Generated; import org.apache.camel.CamelContext; import org.apache.camel.component.atmosphere.websocket.WebsocketComponent; import org.apache.camel.spi.ComponentCustomizer; +import org.apache.camel.spi.HasId; import org.apache.camel.spring.boot.CamelAutoConfiguration; import org.apache.camel.spring.boot.ComponentConfigurationProperties; import org.apache.camel.spring.boot.util.ConditionalOnCamelContextAndAutoConfigurationBeans; import org.apache.camel.spring.boot.util.GroupCondition; +import org.apache.camel.spring.boot.util.HierarchicalPropertiesEvaluator; import org.apache.camel.util.IntrospectionSupport; import org.apache.camel.util.ObjectHelper; import org.slf4j.Logger; @@ -36,6 +38,7 @@ import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Conditional; import org.springframework.context.annotation.Configuration; @@ -56,13 +59,13 @@ public class WebsocketComponentAutoConfiguration { private static final Logger LOGGER = LoggerFactory .getLogger(WebsocketComponentAutoConfiguration.class); @Autowired + private ApplicationContext applicationContext; + @Autowired private CamelContext camelContext; + @Autowired + private WebsocketComponentConfiguration configuration; @Autowired(required = false) private List<ComponentCustomizer<WebsocketComponent>> customizers; - @Autowired - private ComponentConfigurationProperties globalConfiguration; - @Autowired - private WebsocketComponentConfiguration componentConfiguration; static class GroupConditions extends GroupCondition { public GroupConditions() { @@ -77,8 +80,8 @@ public class WebsocketComponentAutoConfiguration { WebsocketComponent component = new WebsocketComponent(); component.setCamelContext(camelContext); Map<String, Object> parameters = new HashMap<>(); - IntrospectionSupport.getProperties(componentConfiguration, parameters, - null, false); + IntrospectionSupport.getProperties(configuration, parameters, null, + false); for (Map.Entry<String, Object> entry : parameters.entrySet()) { Object value = entry.getValue(); Class<?> paramClass = value.getClass(); @@ -101,14 +104,24 @@ public class WebsocketComponentAutoConfiguration { } IntrospectionSupport.setProperties(camelContext, camelContext.getTypeConverter(), component, parameters); - boolean useCustomizers = globalConfiguration.getCustomizer() - .isEnabled() - && componentConfiguration.getCustomizer().isEnabled(); - if (useCustomizers && ObjectHelper.isNotEmpty(customizers)) { + if (ObjectHelper.isNotEmpty(customizers)) { for (ComponentCustomizer<WebsocketComponent> customizer : customizers) { - LOGGER.debug("Configure component {}, with customizer {}", - component, customizer); - customizer.customize(component); + boolean useCustomizer = (customizer instanceof HasId) + ? HierarchicalPropertiesEvaluator + .evaluate( + applicationContext.getEnvironment(), + "camel.component.customizer", + "camel.component.atmosphere-websocket.customizer", + ((HasId) customizer).getId()) + : HierarchicalPropertiesEvaluator + .evaluate(applicationContext.getEnvironment(), + "camel.component.customizer", + "camel.component.atmosphere-websocket.customizer"); + if (useCustomizer) { + LOGGER.debug("Configure component {}, with customizer {}", + component, customizer); + customizer.customize(component); + } } } return component; http://git-wip-us.apache.org/repos/asf/camel/blob/1ca7a426/platforms/spring-boot/components-starter/camel-atom-starter/src/main/java/org/apache/camel/component/atom/springboot/AtomComponentAutoConfiguration.java ---------------------------------------------------------------------- diff --git a/platforms/spring-boot/components-starter/camel-atom-starter/src/main/java/org/apache/camel/component/atom/springboot/AtomComponentAutoConfiguration.java b/platforms/spring-boot/components-starter/camel-atom-starter/src/main/java/org/apache/camel/component/atom/springboot/AtomComponentAutoConfiguration.java index 5f68096..95f5048 100644 --- a/platforms/spring-boot/components-starter/camel-atom-starter/src/main/java/org/apache/camel/component/atom/springboot/AtomComponentAutoConfiguration.java +++ b/platforms/spring-boot/components-starter/camel-atom-starter/src/main/java/org/apache/camel/component/atom/springboot/AtomComponentAutoConfiguration.java @@ -23,10 +23,12 @@ import javax.annotation.Generated; import org.apache.camel.CamelContext; import org.apache.camel.component.atom.AtomComponent; import org.apache.camel.spi.ComponentCustomizer; +import org.apache.camel.spi.HasId; import org.apache.camel.spring.boot.CamelAutoConfiguration; import org.apache.camel.spring.boot.ComponentConfigurationProperties; import org.apache.camel.spring.boot.util.ConditionalOnCamelContextAndAutoConfigurationBeans; import org.apache.camel.spring.boot.util.GroupCondition; +import org.apache.camel.spring.boot.util.HierarchicalPropertiesEvaluator; import org.apache.camel.util.IntrospectionSupport; import org.apache.camel.util.ObjectHelper; import org.slf4j.Logger; @@ -36,6 +38,7 @@ import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Conditional; import org.springframework.context.annotation.Configuration; @@ -56,13 +59,13 @@ public class AtomComponentAutoConfiguration { private static final Logger LOGGER = LoggerFactory .getLogger(AtomComponentAutoConfiguration.class); @Autowired + private ApplicationContext applicationContext; + @Autowired private CamelContext camelContext; + @Autowired + private AtomComponentConfiguration configuration; @Autowired(required = false) private List<ComponentCustomizer<AtomComponent>> customizers; - @Autowired - private ComponentConfigurationProperties globalConfiguration; - @Autowired - private AtomComponentConfiguration componentConfiguration; static class GroupConditions extends GroupCondition { public GroupConditions() { @@ -77,8 +80,8 @@ public class AtomComponentAutoConfiguration { AtomComponent component = new AtomComponent(); component.setCamelContext(camelContext); Map<String, Object> parameters = new HashMap<>(); - IntrospectionSupport.getProperties(componentConfiguration, parameters, - null, false); + IntrospectionSupport.getProperties(configuration, parameters, null, + false); for (Map.Entry<String, Object> entry : parameters.entrySet()) { Object value = entry.getValue(); Class<?> paramClass = value.getClass(); @@ -101,14 +104,23 @@ public class AtomComponentAutoConfiguration { } IntrospectionSupport.setProperties(camelContext, camelContext.getTypeConverter(), component, parameters); - boolean useCustomizers = globalConfiguration.getCustomizer() - .isEnabled() - && componentConfiguration.getCustomizer().isEnabled(); - if (useCustomizers && ObjectHelper.isNotEmpty(customizers)) { + if (ObjectHelper.isNotEmpty(customizers)) { for (ComponentCustomizer<AtomComponent> customizer : customizers) { - LOGGER.debug("Configure component {}, with customizer {}", - component, customizer); - customizer.customize(component); + boolean useCustomizer = (customizer instanceof HasId) + ? HierarchicalPropertiesEvaluator.evaluate( + applicationContext.getEnvironment(), + "camel.component.customizer", + "camel.component.atom.customizer", + ((HasId) customizer).getId()) + : HierarchicalPropertiesEvaluator.evaluate( + applicationContext.getEnvironment(), + "camel.component.customizer", + "camel.component.atom.customizer"); + if (useCustomizer) { + LOGGER.debug("Configure component {}, with customizer {}", + component, customizer); + customizer.customize(component); + } } } return component;
