Repository: camel Updated Branches: refs/heads/master 28a156753 -> daca8394b
Refactor service-discovery aggregation Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/daca8394 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/daca8394 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/daca8394 Branch: refs/heads/master Commit: daca8394b507d3a56301b6a955ccc2d220be2224 Parents: 28a1567 Author: lburgazzoli <lburgazz...@gmail.com> Authored: Fri Mar 31 17:58:42 2017 +0200 Committer: lburgazzoli <lburgazz...@gmail.com> Committed: Fri Mar 31 17:58:42 2017 +0200 ---------------------------------------------------------------------- .../impl/cloud/AggregatingServiceDiscovery.java | 52 ++++++ .../AggregatingServiceDiscoveryFactory.java | 54 ++++++ .../impl/cloud/ChainedServiceDiscovery.java | 52 ------ .../cloud/ChainedServiceDiscoveryFactory.java | 54 ------ ...erviceCallServiceDiscoveryConfiguration.java | 169 +++++++++++++++++++ ...erviceCallServiceDiscoveryConfiguration.java | 6 +- ...erviceCallServiceDiscoveryConfiguration.java | 169 ------------------- .../ServiceCallConfigurationDefinition.java | 8 +- .../model/cloud/ServiceCallDefinition.java | 6 +- .../camel/cloud/aggregating-service-discovery | 17 ++ .../camel/cloud/chained-service-discovery | 17 -- .../org/apache/camel/model/cloud/jaxb.index | 2 +- .../cloud/AggregatingServiceDiscoveryTest.java | 71 ++++++++ .../impl/cloud/ChainedServiceDiscoveryTest.java | 71 -------- .../boot/cloud/CamelCloudServiceDiscovery.java | 4 +- ...lCloudServiceDiscoveryAutoConfiguration.java | 17 +- ...amelCloudServiceFilterAutoConfiguration.java | 14 +- .../cloud/ServiceCallConfigurationTest.java | 4 +- .../cloud/ServiceCallConfigurationTest.xml | 4 +- 19 files changed, 396 insertions(+), 395 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/daca8394/camel-core/src/main/java/org/apache/camel/impl/cloud/AggregatingServiceDiscovery.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/impl/cloud/AggregatingServiceDiscovery.java b/camel-core/src/main/java/org/apache/camel/impl/cloud/AggregatingServiceDiscovery.java new file mode 100644 index 0000000..12d16f1 --- /dev/null +++ b/camel-core/src/main/java/org/apache/camel/impl/cloud/AggregatingServiceDiscovery.java @@ -0,0 +1,52 @@ +/** + * 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.impl.cloud; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; + +import org.apache.camel.cloud.ServiceDefinition; +import org.apache.camel.cloud.ServiceDiscovery; + +public class AggregatingServiceDiscovery implements ServiceDiscovery { + private final List<ServiceDiscovery> delegates; + + public AggregatingServiceDiscovery(List<ServiceDiscovery> delegates) { + this.delegates = Collections.unmodifiableList(delegates); + } + + public List<ServiceDiscovery> getDelegates() { + return this.delegates; + } + + @Override + public List<ServiceDefinition> getServices(String name) { + return delegates.stream() + .flatMap(d -> d.getServices(name).stream()) + .collect(Collectors.toList()); + } + + // ********************** + // Helpers + // ********************** + + public static AggregatingServiceDiscovery wrap(ServiceDiscovery... delegates) { + return new AggregatingServiceDiscovery(Arrays.asList(delegates)); + } +} http://git-wip-us.apache.org/repos/asf/camel/blob/daca8394/camel-core/src/main/java/org/apache/camel/impl/cloud/AggregatingServiceDiscoveryFactory.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/impl/cloud/AggregatingServiceDiscoveryFactory.java b/camel-core/src/main/java/org/apache/camel/impl/cloud/AggregatingServiceDiscoveryFactory.java new file mode 100644 index 0000000..1364261 --- /dev/null +++ b/camel-core/src/main/java/org/apache/camel/impl/cloud/AggregatingServiceDiscoveryFactory.java @@ -0,0 +1,54 @@ +/** + * 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.impl.cloud; + +import java.util.List; + +import org.apache.camel.CamelContext; +import org.apache.camel.cloud.ServiceDiscovery; +import org.apache.camel.cloud.ServiceDiscoveryFactory; +import org.apache.camel.util.ObjectHelper; + +public class AggregatingServiceDiscoveryFactory implements ServiceDiscoveryFactory { + private List<ServiceDiscovery> serviceDiscoveryList; + + public AggregatingServiceDiscoveryFactory() { + } + + // ************************************************************************* + // Properties + // ************************************************************************* + + public List<ServiceDiscovery> getServiceDiscoveryList() { + return serviceDiscoveryList; + } + + public void setServiceDiscoveryList(List<ServiceDiscovery> serviceDiscoveryList) { + this.serviceDiscoveryList = serviceDiscoveryList; + } + + // ************************************************************************* + // Factory + // ************************************************************************* + + @Override + public ServiceDiscovery newInstance(CamelContext camelContext) throws Exception { + ObjectHelper.notNull(serviceDiscoveryList, "ServiceDiscovery list"); + + return new AggregatingServiceDiscovery(serviceDiscoveryList); + } +} http://git-wip-us.apache.org/repos/asf/camel/blob/daca8394/camel-core/src/main/java/org/apache/camel/impl/cloud/ChainedServiceDiscovery.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/impl/cloud/ChainedServiceDiscovery.java b/camel-core/src/main/java/org/apache/camel/impl/cloud/ChainedServiceDiscovery.java deleted file mode 100644 index eee5a1f..0000000 --- a/camel-core/src/main/java/org/apache/camel/impl/cloud/ChainedServiceDiscovery.java +++ /dev/null @@ -1,52 +0,0 @@ -/** - * 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.impl.cloud; - -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import java.util.stream.Collectors; - -import org.apache.camel.cloud.ServiceDefinition; -import org.apache.camel.cloud.ServiceDiscovery; - -public class ChainedServiceDiscovery implements ServiceDiscovery { - private final List<ServiceDiscovery> delegates; - - public ChainedServiceDiscovery(List<ServiceDiscovery> delegates) { - this.delegates = Collections.unmodifiableList(delegates); - } - - public List<ServiceDiscovery> getDelegates() { - return this.delegates; - } - - @Override - public List<ServiceDefinition> getServices(String name) { - return delegates.stream() - .flatMap(d -> d.getServices(name).stream()) - .collect(Collectors.toList()); - } - - // ********************** - // Helpers - // ********************** - - public static ChainedServiceDiscovery wrap(ServiceDiscovery... delegates) { - return new ChainedServiceDiscovery(Arrays.asList(delegates)); - } -} http://git-wip-us.apache.org/repos/asf/camel/blob/daca8394/camel-core/src/main/java/org/apache/camel/impl/cloud/ChainedServiceDiscoveryFactory.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/impl/cloud/ChainedServiceDiscoveryFactory.java b/camel-core/src/main/java/org/apache/camel/impl/cloud/ChainedServiceDiscoveryFactory.java deleted file mode 100644 index 6c8acc8..0000000 --- a/camel-core/src/main/java/org/apache/camel/impl/cloud/ChainedServiceDiscoveryFactory.java +++ /dev/null @@ -1,54 +0,0 @@ -/** - * 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.impl.cloud; - -import java.util.List; - -import org.apache.camel.CamelContext; -import org.apache.camel.cloud.ServiceDiscovery; -import org.apache.camel.cloud.ServiceDiscoveryFactory; -import org.apache.camel.util.ObjectHelper; - -public class ChainedServiceDiscoveryFactory implements ServiceDiscoveryFactory { - private List<ServiceDiscovery> serviceDiscoveryList; - - public ChainedServiceDiscoveryFactory() { - } - - // ************************************************************************* - // Properties - // ************************************************************************* - - public List<ServiceDiscovery> getServiceDiscoveryList() { - return serviceDiscoveryList; - } - - public void setServiceDiscoveryList(List<ServiceDiscovery> serviceDiscoveryList) { - this.serviceDiscoveryList = serviceDiscoveryList; - } - - // ************************************************************************* - // Factory - // ************************************************************************* - - @Override - public ServiceDiscovery newInstance(CamelContext camelContext) throws Exception { - ObjectHelper.notNull(serviceDiscoveryList, "ServiceDiscovery list"); - - return new ChainedServiceDiscovery(serviceDiscoveryList); - } -} http://git-wip-us.apache.org/repos/asf/camel/blob/daca8394/camel-core/src/main/java/org/apache/camel/model/cloud/AggregatingServiceCallServiceDiscoveryConfiguration.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/model/cloud/AggregatingServiceCallServiceDiscoveryConfiguration.java b/camel-core/src/main/java/org/apache/camel/model/cloud/AggregatingServiceCallServiceDiscoveryConfiguration.java new file mode 100644 index 0000000..b94cdc0 --- /dev/null +++ b/camel-core/src/main/java/org/apache/camel/model/cloud/AggregatingServiceCallServiceDiscoveryConfiguration.java @@ -0,0 +1,169 @@ +/** + * 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.model.cloud; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlElements; +import javax.xml.bind.annotation.XmlRootElement; + +import org.apache.camel.CamelContext; +import org.apache.camel.cloud.ServiceDiscovery; +import org.apache.camel.spi.Metadata; + +@Metadata(label = "routing,cloud,service-discovery") +@XmlRootElement(name = "multiServiceDiscovery") +@XmlAccessorType(XmlAccessType.FIELD) +public class AggregatingServiceCallServiceDiscoveryConfiguration extends ServiceCallServiceDiscoveryConfiguration { + @XmlElements({ + @XmlElement(name = "consulServiceDiscovery", type = ConsulServiceCallServiceDiscoveryConfiguration.class), + @XmlElement(name = "dnsServiceDiscovery", type = DnsServiceCallServiceDiscoveryConfiguration.class), + @XmlElement(name = "etcdServiceDiscovery", type = EtcdServiceCallServiceDiscoveryConfiguration.class), + @XmlElement(name = "kubernetesServiceDiscovery", type = KubernetesServiceCallServiceDiscoveryConfiguration.class), + @XmlElement(name = "staticServiceDiscovery", type = StaticServiceCallServiceDiscoveryConfiguration.class), + @XmlElement(name = "cachingServiceDiscovery", type = CachingServiceCallServiceDiscoveryConfiguration.class)} + ) + private List<ServiceCallServiceDiscoveryConfiguration> serviceDiscoveryConfigurations; + + public AggregatingServiceCallServiceDiscoveryConfiguration() { + this(null); + } + + public AggregatingServiceCallServiceDiscoveryConfiguration(ServiceCallDefinition parent) { + super(parent, "aggregating-service-discovery"); + } + + // ************************************************************************* + // Properties + // ************************************************************************* + + public List<ServiceCallServiceDiscoveryConfiguration> getServiceDiscoveryConfigurations() { + return serviceDiscoveryConfigurations; + } + + /** + * List of ServiceDiscovery configuration to use + * @param serviceDiscoveryConfigurations + */ + public void setServiceDiscoveryConfigurations(List<ServiceCallServiceDiscoveryConfiguration> serviceDiscoveryConfigurations) { + this.serviceDiscoveryConfigurations = serviceDiscoveryConfigurations; + } + + /** + * Add a ServiceDiscovery configuration + */ + public void addServiceDiscoveryConfigurations(ServiceCallServiceDiscoveryConfiguration serviceDiscoveryConfiguration) { + if (serviceDiscoveryConfigurations == null) { + serviceDiscoveryConfigurations = new ArrayList<>(); + } + + serviceDiscoveryConfigurations.add(serviceDiscoveryConfiguration); + } + + // ************************************************************************* + // Fluent API + // ************************************************************************* + + /** + * List of ServiceDiscovery configuration to use + */ + public AggregatingServiceCallServiceDiscoveryConfiguration serviceDiscoveryConfigurations(List<ServiceCallServiceDiscoveryConfiguration> serviceDiscoveryConfigurations) { + setServiceDiscoveryConfigurations(serviceDiscoveryConfigurations); + return this; + } + + /** + * Add a ServiceDiscovery configuration + */ + public AggregatingServiceCallServiceDiscoveryConfiguration serviceDiscoveryConfiguration(ServiceCallServiceDiscoveryConfiguration serviceDiscoveryConfiguration) { + addServiceDiscoveryConfigurations(serviceDiscoveryConfiguration); + return this; + } + + // ***************************** + // Shortcuts - ServiceDiscovery + // ***************************** + + public CachingServiceCallServiceDiscoveryConfiguration cachingServiceDiscovery() { + CachingServiceCallServiceDiscoveryConfiguration conf = new CachingServiceCallServiceDiscoveryConfiguration(); + addServiceDiscoveryConfigurations(conf); + + return conf; + } + + public ConsulServiceCallServiceDiscoveryConfiguration consulServiceDiscovery() { + ConsulServiceCallServiceDiscoveryConfiguration conf = new ConsulServiceCallServiceDiscoveryConfiguration(); + addServiceDiscoveryConfigurations(conf); + + return conf; + } + + public DnsServiceCallServiceDiscoveryConfiguration dnsServiceDiscovery() { + DnsServiceCallServiceDiscoveryConfiguration conf = new DnsServiceCallServiceDiscoveryConfiguration(); + addServiceDiscoveryConfigurations(conf); + + return conf; + } + + public EtcdServiceCallServiceDiscoveryConfiguration etcdServiceDiscovery() { + EtcdServiceCallServiceDiscoveryConfiguration conf = new EtcdServiceCallServiceDiscoveryConfiguration(); + addServiceDiscoveryConfigurations(conf); + + return conf; + } + + public KubernetesServiceCallServiceDiscoveryConfiguration kubernetesServiceDiscovery() { + KubernetesServiceCallServiceDiscoveryConfiguration conf = new KubernetesServiceCallServiceDiscoveryConfiguration(); + addServiceDiscoveryConfigurations(conf); + + return conf; + } + + public AggregatingServiceCallServiceDiscoveryConfiguration multiServiceDiscovery() { + AggregatingServiceCallServiceDiscoveryConfiguration conf = new AggregatingServiceCallServiceDiscoveryConfiguration(); + addServiceDiscoveryConfigurations(conf); + + return conf; + } + + public StaticServiceCallServiceDiscoveryConfiguration staticServiceDiscovery() { + StaticServiceCallServiceDiscoveryConfiguration conf = new StaticServiceCallServiceDiscoveryConfiguration(); + addServiceDiscoveryConfigurations(conf); + + return conf; + } + + // ************************************************************************* + // Utilities + // ************************************************************************* + + @Override + protected void postProcessFactoryParameters(final CamelContext camelContext, final Map<String, Object> parameters) throws Exception { + if (serviceDiscoveryConfigurations != null && !serviceDiscoveryConfigurations.isEmpty()) { + List<ServiceDiscovery> discoveries = new ArrayList<>(serviceDiscoveryConfigurations.size()); + for (ServiceCallServiceDiscoveryConfiguration conf : serviceDiscoveryConfigurations) { + discoveries.add(conf.newInstance(camelContext)); + } + + parameters.put("serviceDiscoveryList", discoveries); + } + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/camel/blob/daca8394/camel-core/src/main/java/org/apache/camel/model/cloud/CachingServiceCallServiceDiscoveryConfiguration.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/model/cloud/CachingServiceCallServiceDiscoveryConfiguration.java b/camel-core/src/main/java/org/apache/camel/model/cloud/CachingServiceCallServiceDiscoveryConfiguration.java index 9b7ee98..fa6e3f6 100644 --- a/camel-core/src/main/java/org/apache/camel/model/cloud/CachingServiceCallServiceDiscoveryConfiguration.java +++ b/camel-core/src/main/java/org/apache/camel/model/cloud/CachingServiceCallServiceDiscoveryConfiguration.java @@ -45,7 +45,7 @@ public class CachingServiceCallServiceDiscoveryConfiguration extends ServiceCall @XmlElement(name = "dnsServiceDiscovery", type = DnsServiceCallServiceDiscoveryConfiguration.class), @XmlElement(name = "etcdServiceDiscovery", type = EtcdServiceCallServiceDiscoveryConfiguration.class), @XmlElement(name = "kubernetesServiceDiscovery", type = KubernetesServiceCallServiceDiscoveryConfiguration.class), - @XmlElement(name = "multiServiceDiscovery", type = ChainedServiceCallServiceDiscoveryConfiguration.class), + @XmlElement(name = "aggregatingServiceDiscovery", type = AggregatingServiceCallServiceDiscoveryConfiguration.class), @XmlElement(name = "staticServiceDiscovery", type = StaticServiceCallServiceDiscoveryConfiguration.class)} ) private ServiceCallServiceDiscoveryConfiguration serviceDiscoveryConfiguration; @@ -163,8 +163,8 @@ public class CachingServiceCallServiceDiscoveryConfiguration extends ServiceCall return conf; } - public ChainedServiceCallServiceDiscoveryConfiguration multiServiceDiscovery() { - ChainedServiceCallServiceDiscoveryConfiguration conf = new ChainedServiceCallServiceDiscoveryConfiguration(); + public AggregatingServiceCallServiceDiscoveryConfiguration aggregatingServiceDiscovery() { + AggregatingServiceCallServiceDiscoveryConfiguration conf = new AggregatingServiceCallServiceDiscoveryConfiguration(); setServiceDiscoveryConfiguration(conf); return conf; http://git-wip-us.apache.org/repos/asf/camel/blob/daca8394/camel-core/src/main/java/org/apache/camel/model/cloud/ChainedServiceCallServiceDiscoveryConfiguration.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/model/cloud/ChainedServiceCallServiceDiscoveryConfiguration.java b/camel-core/src/main/java/org/apache/camel/model/cloud/ChainedServiceCallServiceDiscoveryConfiguration.java deleted file mode 100644 index 5197d0e..0000000 --- a/camel-core/src/main/java/org/apache/camel/model/cloud/ChainedServiceCallServiceDiscoveryConfiguration.java +++ /dev/null @@ -1,169 +0,0 @@ -/** - * 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.model.cloud; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlElements; -import javax.xml.bind.annotation.XmlRootElement; - -import org.apache.camel.CamelContext; -import org.apache.camel.cloud.ServiceDiscovery; -import org.apache.camel.spi.Metadata; - -@Metadata(label = "routing,cloud,service-discovery") -@XmlRootElement(name = "multiServiceDiscovery") -@XmlAccessorType(XmlAccessType.FIELD) -public class ChainedServiceCallServiceDiscoveryConfiguration extends ServiceCallServiceDiscoveryConfiguration { - @XmlElements({ - @XmlElement(name = "consulServiceDiscovery", type = ConsulServiceCallServiceDiscoveryConfiguration.class), - @XmlElement(name = "dnsServiceDiscovery", type = DnsServiceCallServiceDiscoveryConfiguration.class), - @XmlElement(name = "etcdServiceDiscovery", type = EtcdServiceCallServiceDiscoveryConfiguration.class), - @XmlElement(name = "kubernetesServiceDiscovery", type = KubernetesServiceCallServiceDiscoveryConfiguration.class), - @XmlElement(name = "staticServiceDiscovery", type = StaticServiceCallServiceDiscoveryConfiguration.class), - @XmlElement(name = "cachingServiceDiscovery", type = CachingServiceCallServiceDiscoveryConfiguration.class)} - ) - private List<ServiceCallServiceDiscoveryConfiguration> serviceDiscoveryConfigurations; - - public ChainedServiceCallServiceDiscoveryConfiguration() { - this(null); - } - - public ChainedServiceCallServiceDiscoveryConfiguration(ServiceCallDefinition parent) { - super(parent, "chained-service-discovery"); - } - - // ************************************************************************* - // Properties - // ************************************************************************* - - public List<ServiceCallServiceDiscoveryConfiguration> getServiceDiscoveryConfigurations() { - return serviceDiscoveryConfigurations; - } - - /** - * List of ServiceDiscovery configuration to use - * @param serviceDiscoveryConfigurations - */ - public void setServiceDiscoveryConfigurations(List<ServiceCallServiceDiscoveryConfiguration> serviceDiscoveryConfigurations) { - this.serviceDiscoveryConfigurations = serviceDiscoveryConfigurations; - } - - /** - * Add a ServiceDiscovery configuration - */ - public void addServiceDiscoveryConfigurations(ServiceCallServiceDiscoveryConfiguration serviceDiscoveryConfiguration) { - if (serviceDiscoveryConfigurations == null) { - serviceDiscoveryConfigurations = new ArrayList<>(); - } - - serviceDiscoveryConfigurations.add(serviceDiscoveryConfiguration); - } - - // ************************************************************************* - // Fluent API - // ************************************************************************* - - /** - * List of ServiceDiscovery configuration to use - */ - public ChainedServiceCallServiceDiscoveryConfiguration serviceDiscoveryConfigurations(List<ServiceCallServiceDiscoveryConfiguration> serviceDiscoveryConfigurations) { - setServiceDiscoveryConfigurations(serviceDiscoveryConfigurations); - return this; - } - - /** - * Add a ServiceDiscovery configuration - */ - public ChainedServiceCallServiceDiscoveryConfiguration serviceDiscoveryConfiguration(ServiceCallServiceDiscoveryConfiguration serviceDiscoveryConfiguration) { - addServiceDiscoveryConfigurations(serviceDiscoveryConfiguration); - return this; - } - - // ***************************** - // Shortcuts - ServiceDiscovery - // ***************************** - - public CachingServiceCallServiceDiscoveryConfiguration cachingServiceDiscovery() { - CachingServiceCallServiceDiscoveryConfiguration conf = new CachingServiceCallServiceDiscoveryConfiguration(); - addServiceDiscoveryConfigurations(conf); - - return conf; - } - - public ConsulServiceCallServiceDiscoveryConfiguration consulServiceDiscovery() { - ConsulServiceCallServiceDiscoveryConfiguration conf = new ConsulServiceCallServiceDiscoveryConfiguration(); - addServiceDiscoveryConfigurations(conf); - - return conf; - } - - public DnsServiceCallServiceDiscoveryConfiguration dnsServiceDiscovery() { - DnsServiceCallServiceDiscoveryConfiguration conf = new DnsServiceCallServiceDiscoveryConfiguration(); - addServiceDiscoveryConfigurations(conf); - - return conf; - } - - public EtcdServiceCallServiceDiscoveryConfiguration etcdServiceDiscovery() { - EtcdServiceCallServiceDiscoveryConfiguration conf = new EtcdServiceCallServiceDiscoveryConfiguration(); - addServiceDiscoveryConfigurations(conf); - - return conf; - } - - public KubernetesServiceCallServiceDiscoveryConfiguration kubernetesServiceDiscovery() { - KubernetesServiceCallServiceDiscoveryConfiguration conf = new KubernetesServiceCallServiceDiscoveryConfiguration(); - addServiceDiscoveryConfigurations(conf); - - return conf; - } - - public ChainedServiceCallServiceDiscoveryConfiguration multiServiceDiscovery() { - ChainedServiceCallServiceDiscoveryConfiguration conf = new ChainedServiceCallServiceDiscoveryConfiguration(); - addServiceDiscoveryConfigurations(conf); - - return conf; - } - - public StaticServiceCallServiceDiscoveryConfiguration staticServiceDiscovery() { - StaticServiceCallServiceDiscoveryConfiguration conf = new StaticServiceCallServiceDiscoveryConfiguration(); - addServiceDiscoveryConfigurations(conf); - - return conf; - } - - // ************************************************************************* - // Utilities - // ************************************************************************* - - @Override - protected void postProcessFactoryParameters(final CamelContext camelContext, final Map<String, Object> parameters) throws Exception { - if (serviceDiscoveryConfigurations != null && !serviceDiscoveryConfigurations.isEmpty()) { - List<ServiceDiscovery> discoveries = new ArrayList<>(serviceDiscoveryConfigurations.size()); - for (ServiceCallServiceDiscoveryConfiguration conf : serviceDiscoveryConfigurations) { - discoveries.add(conf.newInstance(camelContext)); - } - - parameters.put("serviceDiscoveryList", discoveries); - } - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/camel/blob/daca8394/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallConfigurationDefinition.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallConfigurationDefinition.java b/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallConfigurationDefinition.java index 005682a..aa0be7d 100644 --- a/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallConfigurationDefinition.java +++ b/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallConfigurationDefinition.java @@ -69,7 +69,7 @@ public class ServiceCallConfigurationDefinition extends IdentifiedType { private Expression expression; @XmlElements({ @XmlElement(name = "cachingServiceDiscovery", type = CachingServiceCallServiceDiscoveryConfiguration.class), - @XmlElement(name = "chainedServiceDiscovery", type = ChainedServiceCallServiceDiscoveryConfiguration.class), + @XmlElement(name = "aggregatingServiceDiscovery", type = AggregatingServiceCallServiceDiscoveryConfiguration.class), @XmlElement(name = "consulServiceDiscovery", type = ConsulServiceCallServiceDiscoveryConfiguration.class), @XmlElement(name = "dnsServiceDiscovery", type = DnsServiceCallServiceDiscoveryConfiguration.class), @XmlElement(name = "etcdServiceDiscovery", type = EtcdServiceCallServiceDiscoveryConfiguration.class), @@ -539,14 +539,14 @@ public class ServiceCallConfigurationDefinition extends IdentifiedType { return this; } - public ChainedServiceCallServiceDiscoveryConfiguration multiServiceDiscovery() { - ChainedServiceCallServiceDiscoveryConfiguration conf = new ChainedServiceCallServiceDiscoveryConfiguration(); + public AggregatingServiceCallServiceDiscoveryConfiguration multiServiceDiscovery() { + AggregatingServiceCallServiceDiscoveryConfiguration conf = new AggregatingServiceCallServiceDiscoveryConfiguration(); setServiceDiscoveryConfiguration(conf); return conf; } - public ServiceCallConfigurationDefinition multiServiceDiscovery(ChainedServiceCallServiceDiscoveryConfiguration conf) { + public ServiceCallConfigurationDefinition multiServiceDiscovery(AggregatingServiceCallServiceDiscoveryConfiguration conf) { setServiceDiscoveryConfiguration(conf); return this; http://git-wip-us.apache.org/repos/asf/camel/blob/daca8394/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallDefinition.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallDefinition.java b/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallDefinition.java index 448faf5..4b3ac75 100644 --- a/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallDefinition.java +++ b/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallDefinition.java @@ -95,7 +95,7 @@ public class ServiceCallDefinition extends NoOutputDefinition<ServiceCallDefinit @XmlElements({ @XmlElement(name = "cachingServiceDiscovery", type = CachingServiceCallServiceDiscoveryConfiguration.class), - @XmlElement(name = "chainedServiceDiscovery", type = ChainedServiceCallServiceDiscoveryConfiguration.class), + @XmlElement(name = "aggregatingServiceDiscovery", type = AggregatingServiceCallServiceDiscoveryConfiguration.class), @XmlElement(name = "consulServiceDiscovery", type = ConsulServiceCallServiceDiscoveryConfiguration.class), @XmlElement(name = "dnsServiceDiscovery", type = DnsServiceCallServiceDiscoveryConfiguration.class), @XmlElement(name = "etcdServiceDiscovery", type = EtcdServiceCallServiceDiscoveryConfiguration.class), @@ -637,8 +637,8 @@ public class ServiceCallDefinition extends NoOutputDefinition<ServiceCallDefinit return this; } - public ChainedServiceCallServiceDiscoveryConfiguration multiServiceDiscovery() { - ChainedServiceCallServiceDiscoveryConfiguration conf = new ChainedServiceCallServiceDiscoveryConfiguration(this); + public AggregatingServiceCallServiceDiscoveryConfiguration multiServiceDiscovery() { + AggregatingServiceCallServiceDiscoveryConfiguration conf = new AggregatingServiceCallServiceDiscoveryConfiguration(this); setServiceDiscoveryConfiguration(conf); return conf; http://git-wip-us.apache.org/repos/asf/camel/blob/daca8394/camel-core/src/main/resources/META-INF/services/org/apache/camel/cloud/aggregating-service-discovery ---------------------------------------------------------------------- diff --git a/camel-core/src/main/resources/META-INF/services/org/apache/camel/cloud/aggregating-service-discovery b/camel-core/src/main/resources/META-INF/services/org/apache/camel/cloud/aggregating-service-discovery new file mode 100644 index 0000000..675af88 --- /dev/null +++ b/camel-core/src/main/resources/META-INF/services/org/apache/camel/cloud/aggregating-service-discovery @@ -0,0 +1,17 @@ +# +# 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. +# +class=org.apache.camel.impl.cloud.AggregatingServiceDiscoveryFactory \ No newline at end of file http://git-wip-us.apache.org/repos/asf/camel/blob/daca8394/camel-core/src/main/resources/META-INF/services/org/apache/camel/cloud/chained-service-discovery ---------------------------------------------------------------------- diff --git a/camel-core/src/main/resources/META-INF/services/org/apache/camel/cloud/chained-service-discovery b/camel-core/src/main/resources/META-INF/services/org/apache/camel/cloud/chained-service-discovery deleted file mode 100644 index e183367..0000000 --- a/camel-core/src/main/resources/META-INF/services/org/apache/camel/cloud/chained-service-discovery +++ /dev/null @@ -1,17 +0,0 @@ -# -# 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. -# -class=org.apache.camel.impl.cloud.ChainedServiceDiscoveryFactory \ No newline at end of file http://git-wip-us.apache.org/repos/asf/camel/blob/daca8394/camel-core/src/main/resources/org/apache/camel/model/cloud/jaxb.index ---------------------------------------------------------------------- diff --git a/camel-core/src/main/resources/org/apache/camel/model/cloud/jaxb.index b/camel-core/src/main/resources/org/apache/camel/model/cloud/jaxb.index index 7d5156b..5f5af59 100644 --- a/camel-core/src/main/resources/org/apache/camel/model/cloud/jaxb.index +++ b/camel-core/src/main/resources/org/apache/camel/model/cloud/jaxb.index @@ -29,6 +29,6 @@ DnsServiceCallServiceDiscoveryConfiguration EtcdServiceCallServiceDiscoveryConfiguration HealthyServiceCallServiceFilterConfiguration KubernetesServiceCallServiceDiscoveryConfiguration -ChainedServiceCallServiceDiscoveryConfiguration +AggregatingServiceCallServiceDiscoveryConfiguration StaticServiceCallServiceDiscoveryConfiguration RibbonServiceCallLoadBalancerConfiguration http://git-wip-us.apache.org/repos/asf/camel/blob/daca8394/camel-core/src/test/java/org/apache/camel/impl/cloud/AggregatingServiceDiscoveryTest.java ---------------------------------------------------------------------- diff --git a/camel-core/src/test/java/org/apache/camel/impl/cloud/AggregatingServiceDiscoveryTest.java b/camel-core/src/test/java/org/apache/camel/impl/cloud/AggregatingServiceDiscoveryTest.java new file mode 100644 index 0000000..76a5a59 --- /dev/null +++ b/camel-core/src/test/java/org/apache/camel/impl/cloud/AggregatingServiceDiscoveryTest.java @@ -0,0 +1,71 @@ +/** + * 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.impl.cloud; + +import java.util.Arrays; + +import org.apache.camel.ContextTestSupport; +import org.apache.camel.model.cloud.AggregatingServiceCallServiceDiscoveryConfiguration; +import org.apache.camel.model.cloud.StaticServiceCallServiceDiscoveryConfiguration; +import org.junit.Assert; +import org.junit.Test; + +public class AggregatingServiceDiscoveryTest extends ContextTestSupport { + @Test + public void testMultiServiceDiscovery() throws Exception { + StaticServiceDiscovery discovery1 = new StaticServiceDiscovery(); + discovery1.addServer(new DefaultServiceDefinition("discovery1", "localhost", 1111)); + discovery1.addServer(new DefaultServiceDefinition("discovery1", "localhost", 1112)); + + StaticServiceDiscovery discovery2 = new StaticServiceDiscovery(); + discovery2.addServer(new DefaultServiceDefinition("discovery1", "localhost", 1113)); + discovery2.addServer(new DefaultServiceDefinition("discovery2", "localhost", 1114)); + + AggregatingServiceDiscovery discovery = AggregatingServiceDiscovery.wrap(discovery1, discovery2); + Assert.assertEquals(3, discovery.getServices("discovery1").size()); + Assert.assertEquals(1, discovery.getServices("discovery2").size()); + } + + @Test + public void testMultiServiceDiscoveryConfiguration() throws Exception { + StaticServiceCallServiceDiscoveryConfiguration staticConf1 = new StaticServiceCallServiceDiscoveryConfiguration(); + staticConf1.setServers(Arrays.asList("discovery1@localhost:1111", "discovery1@localhost:1112")); + + StaticServiceCallServiceDiscoveryConfiguration staticConf2 = new StaticServiceCallServiceDiscoveryConfiguration(); + staticConf2.setServers(Arrays.asList("discovery1@localhost:1113", "discovery2@localhost:1114")); + + AggregatingServiceCallServiceDiscoveryConfiguration multiConf = new AggregatingServiceCallServiceDiscoveryConfiguration(); + multiConf.setServiceDiscoveryConfigurations(Arrays.asList(staticConf1, staticConf2)); + + AggregatingServiceDiscovery discovery = (AggregatingServiceDiscovery)multiConf.newInstance(context); + Assert.assertEquals(2, discovery.getDelegates().size()); + Assert.assertEquals(3, discovery.getServices("discovery1").size()); + Assert.assertEquals(1, discovery.getServices("discovery2").size()); + } + + @Test + public void testMultiServiceDiscoveryConfigurationDsl() throws Exception { + AggregatingServiceCallServiceDiscoveryConfiguration multiConf = new AggregatingServiceCallServiceDiscoveryConfiguration(); + multiConf.staticServiceDiscovery().setServers(Arrays.asList("discovery1@localhost:1111", "discovery1@localhost:1112")); + multiConf.staticServiceDiscovery().setServers(Arrays.asList("discovery1@localhost:1113", "discovery2@localhost:1114")); + + AggregatingServiceDiscovery discovery = (AggregatingServiceDiscovery)multiConf.newInstance(context); + Assert.assertEquals(2, discovery.getDelegates().size()); + Assert.assertEquals(3, discovery.getServices("discovery1").size()); + Assert.assertEquals(1, discovery.getServices("discovery2").size()); + } +} http://git-wip-us.apache.org/repos/asf/camel/blob/daca8394/camel-core/src/test/java/org/apache/camel/impl/cloud/ChainedServiceDiscoveryTest.java ---------------------------------------------------------------------- diff --git a/camel-core/src/test/java/org/apache/camel/impl/cloud/ChainedServiceDiscoveryTest.java b/camel-core/src/test/java/org/apache/camel/impl/cloud/ChainedServiceDiscoveryTest.java deleted file mode 100644 index d04d56c..0000000 --- a/camel-core/src/test/java/org/apache/camel/impl/cloud/ChainedServiceDiscoveryTest.java +++ /dev/null @@ -1,71 +0,0 @@ -/** - * 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.impl.cloud; - -import java.util.Arrays; - -import org.apache.camel.ContextTestSupport; -import org.apache.camel.model.cloud.ChainedServiceCallServiceDiscoveryConfiguration; -import org.apache.camel.model.cloud.StaticServiceCallServiceDiscoveryConfiguration; -import org.junit.Assert; -import org.junit.Test; - -public class ChainedServiceDiscoveryTest extends ContextTestSupport { - @Test - public void testMultiServiceDiscovery() throws Exception { - StaticServiceDiscovery discovery1 = new StaticServiceDiscovery(); - discovery1.addServer(new DefaultServiceDefinition("discovery1", "localhost", 1111)); - discovery1.addServer(new DefaultServiceDefinition("discovery1", "localhost", 1112)); - - StaticServiceDiscovery discovery2 = new StaticServiceDiscovery(); - discovery2.addServer(new DefaultServiceDefinition("discovery1", "localhost", 1113)); - discovery2.addServer(new DefaultServiceDefinition("discovery2", "localhost", 1114)); - - ChainedServiceDiscovery discovery = ChainedServiceDiscovery.wrap(discovery1, discovery2); - Assert.assertEquals(3, discovery.getServices("discovery1").size()); - Assert.assertEquals(1, discovery.getServices("discovery2").size()); - } - - @Test - public void testMultiServiceDiscoveryConfiguration() throws Exception { - StaticServiceCallServiceDiscoveryConfiguration staticConf1 = new StaticServiceCallServiceDiscoveryConfiguration(); - staticConf1.setServers(Arrays.asList("discovery1@localhost:1111", "discovery1@localhost:1112")); - - StaticServiceCallServiceDiscoveryConfiguration staticConf2 = new StaticServiceCallServiceDiscoveryConfiguration(); - staticConf2.setServers(Arrays.asList("discovery1@localhost:1113", "discovery2@localhost:1114")); - - ChainedServiceCallServiceDiscoveryConfiguration multiConf = new ChainedServiceCallServiceDiscoveryConfiguration(); - multiConf.setServiceDiscoveryConfigurations(Arrays.asList(staticConf1, staticConf2)); - - ChainedServiceDiscovery discovery = (ChainedServiceDiscovery)multiConf.newInstance(context); - Assert.assertEquals(2, discovery.getDelegates().size()); - Assert.assertEquals(3, discovery.getServices("discovery1").size()); - Assert.assertEquals(1, discovery.getServices("discovery2").size()); - } - - @Test - public void testMultiServiceDiscoveryConfigurationDsl() throws Exception { - ChainedServiceCallServiceDiscoveryConfiguration multiConf = new ChainedServiceCallServiceDiscoveryConfiguration(); - multiConf.staticServiceDiscovery().setServers(Arrays.asList("discovery1@localhost:1111", "discovery1@localhost:1112")); - multiConf.staticServiceDiscovery().setServers(Arrays.asList("discovery1@localhost:1113", "discovery2@localhost:1114")); - - ChainedServiceDiscovery discovery = (ChainedServiceDiscovery)multiConf.newInstance(context); - Assert.assertEquals(2, discovery.getDelegates().size()); - Assert.assertEquals(3, discovery.getServices("discovery1").size()); - Assert.assertEquals(1, discovery.getServices("discovery2").size()); - } -} http://git-wip-us.apache.org/repos/asf/camel/blob/daca8394/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/cloud/CamelCloudServiceDiscovery.java ---------------------------------------------------------------------- diff --git a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/cloud/CamelCloudServiceDiscovery.java b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/cloud/CamelCloudServiceDiscovery.java index 6428b63..f0400e1 100644 --- a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/cloud/CamelCloudServiceDiscovery.java +++ b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/cloud/CamelCloudServiceDiscovery.java @@ -21,8 +21,8 @@ import java.util.concurrent.TimeUnit; import org.apache.camel.cloud.ServiceDefinition; import org.apache.camel.cloud.ServiceDiscovery; +import org.apache.camel.impl.cloud.AggregatingServiceDiscovery; import org.apache.camel.impl.cloud.CachingServiceDiscovery; -import org.apache.camel.impl.cloud.ChainedServiceDiscovery; public class CamelCloudServiceDiscovery implements ServiceDiscovery { private ServiceDiscovery delegate; @@ -30,7 +30,7 @@ public class CamelCloudServiceDiscovery implements ServiceDiscovery { public CamelCloudServiceDiscovery(Long timeout, List<ServiceDiscovery> serviceDiscoveryList) { // Created a chained service discovery that collects services from multiple // ServiceDiscovery - this.delegate = new ChainedServiceDiscovery(serviceDiscoveryList); + this.delegate = new AggregatingServiceDiscovery(serviceDiscoveryList); // If a timeout is provided, wrap the serviceDiscovery with a caching // strategy so the discovery implementations are not queried for each http://git-wip-us.apache.org/repos/asf/camel/blob/daca8394/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/cloud/CamelCloudServiceDiscoveryAutoConfiguration.java ---------------------------------------------------------------------- diff --git a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/cloud/CamelCloudServiceDiscoveryAutoConfiguration.java b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/cloud/CamelCloudServiceDiscoveryAutoConfiguration.java index 02b3c34..c374a93 100644 --- a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/cloud/CamelCloudServiceDiscoveryAutoConfiguration.java +++ b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/cloud/CamelCloudServiceDiscoveryAutoConfiguration.java @@ -17,7 +17,6 @@ package org.apache.camel.spring.boot.cloud; -import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.PostConstruct; @@ -26,9 +25,7 @@ import org.apache.camel.CamelContext; import org.apache.camel.NoTypeConversionAvailableException; import org.apache.camel.cloud.ServiceDiscovery; import org.apache.camel.impl.cloud.StaticServiceDiscovery; -import org.apache.camel.model.HystrixConfigurationDefinition; import org.apache.camel.spring.boot.util.GroupCondition; -import org.apache.camel.util.IntrospectionSupport; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.BeansException; @@ -91,12 +88,7 @@ public class CamelCloudServiceDiscoveryAutoConfiguration implements BeanFactoryA final ConfigurableBeanFactory factory = (ConfigurableBeanFactory) beanFactory; configurationProperties.getServiceDiscovery().getConfigurations().entrySet().stream() - .forEach( - entry -> factory.registerSingleton( - entry.getKey(), - createStaticServiceDiscovery(entry.getValue()) - ) - ); + .forEach(entry -> registerBean(factory, entry.getKey(), entry.getValue())); } // ******************************* @@ -116,6 +108,13 @@ public class CamelCloudServiceDiscoveryAutoConfiguration implements BeanFactoryA // Helper // ******************************* + private void registerBean(ConfigurableBeanFactory factory, String name, CamelCloudConfigurationProperties.ServiceDiscoveryConfiguration configuration) { + factory.registerSingleton( + name, + createStaticServiceDiscovery(configuration) + ); + } + private ServiceDiscovery createStaticServiceDiscovery(CamelCloudConfigurationProperties.ServiceDiscoveryConfiguration configuration) { StaticServiceDiscovery staticServiceDiscovery = new StaticServiceDiscovery(); http://git-wip-us.apache.org/repos/asf/camel/blob/daca8394/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/cloud/CamelCloudServiceFilterAutoConfiguration.java ---------------------------------------------------------------------- diff --git a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/cloud/CamelCloudServiceFilterAutoConfiguration.java b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/cloud/CamelCloudServiceFilterAutoConfiguration.java index eea3e6a..a0a33ed 100644 --- a/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/cloud/CamelCloudServiceFilterAutoConfiguration.java +++ b/components/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/cloud/CamelCloudServiceFilterAutoConfiguration.java @@ -77,12 +77,7 @@ public class CamelCloudServiceFilterAutoConfiguration implements BeanFactoryAwar final ConfigurableBeanFactory factory = (ConfigurableBeanFactory) beanFactory; configurationProperties.getServiceFilter().getConfigurations().entrySet().stream() - .forEach( - entry -> factory.registerSingleton( - entry.getKey(), - createServiceFilter(entry.getValue()) - ) - ); + .forEach(entry -> registerBean(factory, entry.getKey(), entry.getValue())); } // ******************************* @@ -102,6 +97,13 @@ public class CamelCloudServiceFilterAutoConfiguration implements BeanFactoryAwar // Helper // ******************************* + private void registerBean(ConfigurableBeanFactory factory, String name, CamelCloudConfigurationProperties.ServiceFilterConfiguration configuration) { + factory.registerSingleton( + name, + createServiceFilter(configuration) + ); + } + private CamelCloudServiceFilter createServiceFilter(CamelCloudConfigurationProperties.ServiceFilterConfiguration configuration) { BlacklistServiceFilter blacklist = new BlacklistServiceFilter(); http://git-wip-us.apache.org/repos/asf/camel/blob/daca8394/components/camel-spring/src/test/java/org/apache/camel/spring/cloud/ServiceCallConfigurationTest.java ---------------------------------------------------------------------- diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/cloud/ServiceCallConfigurationTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/cloud/ServiceCallConfigurationTest.java index be76730..d988a18 100644 --- a/components/camel-spring/src/test/java/org/apache/camel/spring/cloud/ServiceCallConfigurationTest.java +++ b/components/camel-spring/src/test/java/org/apache/camel/spring/cloud/ServiceCallConfigurationTest.java @@ -16,8 +16,8 @@ */ package org.apache.camel.spring.cloud; +import org.apache.camel.model.cloud.AggregatingServiceCallServiceDiscoveryConfiguration; import org.apache.camel.model.cloud.BlacklistServiceCallServiceFilterConfiguration; -import org.apache.camel.model.cloud.ChainedServiceCallServiceDiscoveryConfiguration; import org.apache.camel.model.cloud.ChainedServiceCallServiceFilterConfiguration; import org.apache.camel.model.cloud.DefaultServiceCallLoadBalancerConfiguration; import org.apache.camel.model.cloud.HealthyServiceCallServiceFilterConfiguration; @@ -52,7 +52,7 @@ public class ServiceCallConfigurationTest { assertNotNull("No ServiceDiscoveryConfiguration (2)", conf2.getServiceDiscoveryConfiguration()); assertNull(conf2.getLoadBalancerConfiguration()); - ChainedServiceCallServiceDiscoveryConfiguration discovery2 = (ChainedServiceCallServiceDiscoveryConfiguration)conf2.getServiceDiscoveryConfiguration(); + AggregatingServiceCallServiceDiscoveryConfiguration discovery2 = (AggregatingServiceCallServiceDiscoveryConfiguration)conf2.getServiceDiscoveryConfiguration(); assertEquals(2, discovery2.getServiceDiscoveryConfigurations().size()); assertTrue(discovery2.getServiceDiscoveryConfigurations().get(0) instanceof StaticServiceCallServiceDiscoveryConfiguration); assertTrue(discovery2.getServiceDiscoveryConfigurations().get(1) instanceof StaticServiceCallServiceDiscoveryConfiguration); http://git-wip-us.apache.org/repos/asf/camel/blob/daca8394/components/camel-spring/src/test/resources/org/apache/camel/spring/cloud/ServiceCallConfigurationTest.xml ---------------------------------------------------------------------- diff --git a/components/camel-spring/src/test/resources/org/apache/camel/spring/cloud/ServiceCallConfigurationTest.xml b/components/camel-spring/src/test/resources/org/apache/camel/spring/cloud/ServiceCallConfigurationTest.xml index 70ed090..c6851c8 100644 --- a/components/camel-spring/src/test/resources/org/apache/camel/spring/cloud/ServiceCallConfigurationTest.xml +++ b/components/camel-spring/src/test/resources/org/apache/camel/spring/cloud/ServiceCallConfigurationTest.xml @@ -33,14 +33,14 @@ </serviceCallConfiguration> <serviceCallConfiguration id="conf2"> - <chainedServiceDiscovery> + <aggregatingServiceDiscovery> <staticServiceDiscovery> <servers>localhost:9092</servers> </staticServiceDiscovery> <staticServiceDiscovery> <servers>localhost:9093,localhost:9094,localhost:9095,localhost:9096</servers> </staticServiceDiscovery> - </chainedServiceDiscovery> + </aggregatingServiceDiscovery> <chainedServiceFilter> <healthyServiceFilter/> <blacklistServiceFilter>