You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by lb...@apache.org on 2017/04/19 16:16:02 UTC
[3/4] camel git commit: Rename LoadBalancer to ServiceLoadBalancer to
avoid confusion with LoadBalancer processor
Rename LoadBalancer to ServiceLoadBalancer to avoid confusion with LoadBalancer processor
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/ecc81927
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/ecc81927
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/ecc81927
Branch: refs/heads/master
Commit: ecc81927b0b55be81fe7d3e1b80d84d922029d25
Parents: 56f2b24
Author: lburgazzoli <lb...@gmail.com>
Authored: Wed Apr 19 13:36:19 2017 +0200
Committer: lburgazzoli <lb...@gmail.com>
Committed: Wed Apr 19 17:25:31 2017 +0200
----------------------------------------------------------------------
.../org/apache/camel/cloud/LoadBalancer.java | 29 ---
.../apache/camel/cloud/LoadBalancerFactory.java | 32 ---
.../camel/cloud/LoadBalancerFunction.java | 25 --
.../camel/cloud/ServiceChooserFactory.java | 11 +-
.../camel/cloud/ServiceDiscoveryFactory.java | 11 +-
.../camel/cloud/ServiceExpressionFactory.java | 10 +-
.../org/apache/camel/cloud/ServiceFactory.java | 27 ++
.../camel/cloud/ServiceFilterFactory.java | 11 +-
.../apache/camel/cloud/ServiceLoadBalancer.java | 29 +++
.../camel/cloud/ServiceLoadBalancerFactory.java | 27 ++
.../cloud/ServiceLoadBalancerFunction.java | 25 ++
.../camel/impl/cloud/DefaultLoadBalancer.java | 147 -----------
.../impl/cloud/DefaultLoadBalancerFactory.java | 32 ---
.../impl/cloud/DefaultServiceCallProcessor.java | 8 +-
.../impl/cloud/DefaultServiceLoadBalancer.java | 147 +++++++++++
.../DefaultServiceLoadBalancerFactory.java | 32 +++
...ultServiceCallLoadBalancerConfiguration.java | 47 ----
...iceCallServiceLoadBalancerConfiguration.java | 37 +++
...bonServiceCallLoadBalancerConfiguration.java | 144 -----------
...iceCallServiceLoadBalancerConfiguration.java | 130 ++++++++++
.../ServiceCallConfigurationDefinition.java | 36 +--
.../model/cloud/ServiceCallDefinition.java | 56 ++--
.../ServiceCallExpressionConfiguration.java | 2 +
.../ServiceCallLoadBalancerConfiguration.java | 187 -------------
.../ServiceCallServiceChooserConfiguration.java | 4 +
...erviceCallServiceDiscoveryConfiguration.java | 2 +
.../ServiceCallServiceFilterConfiguration.java | 2 +
...iceCallServiceLoadBalancerConfiguration.java | 189 ++++++++++++++
.../apache/camel/cloud/default-load-balancer | 17 --
.../camel/cloud/default-service-load-balancer | 17 ++
.../org/apache/camel/model/cloud/jaxb.index | 5 +-
.../camel/impl/cloud/LoadBalancerTest.java | 2 +-
.../cloud/ServiceCallConfigurationTest.java | 26 +-
...SpringConsulDefaultServiceCallRouteTest.java | 16 ++
...ingConsulExpressionServiceCallRouteTest.java | 16 ++
.../SpringConsulRibbonServiceCallRouteTest.java | 16 ++
.../cloud/SpringConsulServiceCallRouteTest.java | 37 +++
.../SpringConsulDefaultServiceCallRouteTest.xml | 2 +-
...ringConsulExpressionServiceCallRouteTest.xml | 2 +-
.../SpringConsulRibbonServiceCallRouteTest.xml | 2 +-
.../camel/component/etcd/EtcdConfiguration.java | 6 +-
.../ribbon/cloud/RibbonLoadBalancer.java | 259 -------------------
.../ribbon/cloud/RibbonLoadBalancerFactory.java | 89 -------
.../ribbon/cloud/RibbonServiceLoadBalancer.java | 259 +++++++++++++++++++
.../cloud/RibbonServiceLoadBalancerFactory.java | 89 +++++++
.../org/apache/camel/cloud/ribbon-load-balancer | 17 --
.../camel/cloud/ribbon-service-load-balancer | 17 ++
.../ribbon/cloud/RibbonServerListTest.java | 2 +-
.../RibbonServiceCallRegistryRouteTest.java | 2 +-
.../cloud/RibbonServiceCallRouteTest.java | 2 +-
.../cloud/RibbonServiceCallUpdateRouteTest.java | 2 +-
.../cloud/SpringBeanServiceCallRouteTest.java | 15 ++
...DslRibbonPropertiesServiceCallRouteTest.java | 14 +
.../SpringDslRibbonServiceCallRouteTest.java | 15 ++
.../cloud/SpringRibbonServiceCallRouteTest.java | 34 +++
.../SpringBeanRibbonServiceCallRouteTest.xml | 4 +-
...gDslRibbonPropertiesServiceCallRouteTest.xml | 2 +-
.../SpringDslRibbonServiceCallRouteTest.xml | 2 +-
.../CamelCloudConfigurationProperties.java | 3 +-
.../CamelCloudServiceCallConfigurationTest.java | 4 +-
.../cloud/CamelSpringCloudLoadBalancer.java | 81 ------
...pringCloudLoadBalancerAutoConfiguration.java | 59 -----
.../CamelSpringCloudServiceLoadBalancer.java | 81 ++++++
...oudServiceLoadBalancerAutoConfiguration.java | 59 +++++
.../main/resources/META-INF/spring.factories | 2 +-
.../cloud/ServiceCallConfigurationTest.java | 4 +-
...viceCallLoadBalancerConfigurationCommon.java | 91 -------
...CallLoadBalancerConfigurationProperties.java | 50 ----
...lServiceLoadBalancerConfigurationCommon.java | 91 +++++++
...viceLoadBalancerConfigurationProperties.java | 50 ++++
.../camel-ribbon-starter/pom.xml | 5 +
.../cloud/RibbonCloudAutoConfiguration.java | 20 +-
.../cloud/RibbonLoadBalancerDisabledTest.java | 8 +-
.../cloud/RibbonLoadBalancerEnabledTest.java | 8 +-
.../cloud/RibbonLoadBalancerTest.java | 124 +++++++++
75 files changed, 1726 insertions(+), 1441 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/ecc81927/camel-core/src/main/java/org/apache/camel/cloud/LoadBalancer.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/cloud/LoadBalancer.java b/camel-core/src/main/java/org/apache/camel/cloud/LoadBalancer.java
deleted file mode 100644
index 5974baf..0000000
--- a/camel-core/src/main/java/org/apache/camel/cloud/LoadBalancer.java
+++ /dev/null
@@ -1,29 +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.cloud;
-
-/**
- * Represents a Load Balancer.
- *
- * @see ServiceDiscovery
- * @see ServiceFilter
- * @see ServiceChooser
- */
-@FunctionalInterface
-public interface LoadBalancer {
- <T> T process(String serviceName, LoadBalancerFunction<T> function) throws Exception;
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/ecc81927/camel-core/src/main/java/org/apache/camel/cloud/LoadBalancerFactory.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/cloud/LoadBalancerFactory.java b/camel-core/src/main/java/org/apache/camel/cloud/LoadBalancerFactory.java
deleted file mode 100644
index 83ba0e5..0000000
--- a/camel-core/src/main/java/org/apache/camel/cloud/LoadBalancerFactory.java
+++ /dev/null
@@ -1,32 +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.cloud;
-
-import org.apache.camel.CamelContext;
-
-/**
- * A factory to create LoadBalancer
- *
- * @see LoadBalancer
- */
-public interface LoadBalancerFactory {
-
- /**
- * Creates an instance of a LoadBalancer.
- */
- LoadBalancer newInstance(CamelContext camelContext) throws Exception;
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/ecc81927/camel-core/src/main/java/org/apache/camel/cloud/LoadBalancerFunction.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/cloud/LoadBalancerFunction.java b/camel-core/src/main/java/org/apache/camel/cloud/LoadBalancerFunction.java
deleted file mode 100644
index b1a96d6..0000000
--- a/camel-core/src/main/java/org/apache/camel/cloud/LoadBalancerFunction.java
+++ /dev/null
@@ -1,25 +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.cloud;
-
-/**
- * Represents a load balancer function to be executed by the LoadBalancer.
- */
-@FunctionalInterface
-public interface LoadBalancerFunction<T> {
- T apply(ServiceDefinition serviceDefinition) throws Exception;
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/ecc81927/camel-core/src/main/java/org/apache/camel/cloud/ServiceChooserFactory.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/cloud/ServiceChooserFactory.java b/camel-core/src/main/java/org/apache/camel/cloud/ServiceChooserFactory.java
index b3fead9..a80cc34 100644
--- a/camel-core/src/main/java/org/apache/camel/cloud/ServiceChooserFactory.java
+++ b/camel-core/src/main/java/org/apache/camel/cloud/ServiceChooserFactory.java
@@ -16,17 +16,12 @@
*/
package org.apache.camel.cloud;
-import org.apache.camel.CamelContext;
-
/**
* A factory to create ServiceChooser
*
+ * @see ServiceFactory
* @see ServiceChooser
*/
-public interface ServiceChooserFactory {
-
- /**
- * Creates an instance of a ServiceChooser.
- */
- ServiceChooser newInstance(CamelContext camelContext) throws Exception;
+@FunctionalInterface
+public interface ServiceChooserFactory extends ServiceFactory<ServiceChooser> {
}
http://git-wip-us.apache.org/repos/asf/camel/blob/ecc81927/camel-core/src/main/java/org/apache/camel/cloud/ServiceDiscoveryFactory.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/cloud/ServiceDiscoveryFactory.java b/camel-core/src/main/java/org/apache/camel/cloud/ServiceDiscoveryFactory.java
index b9498d3..c252a06 100644
--- a/camel-core/src/main/java/org/apache/camel/cloud/ServiceDiscoveryFactory.java
+++ b/camel-core/src/main/java/org/apache/camel/cloud/ServiceDiscoveryFactory.java
@@ -16,17 +16,12 @@
*/
package org.apache.camel.cloud;
-import org.apache.camel.CamelContext;
-
/**
* A factory to create ServiceDiscovery
*
+ * @see ServiceFactory
* @see ServiceDiscovery
*/
-public interface ServiceDiscoveryFactory {
-
- /**
- * Creates an instance of a ServiceDiscovery.
- */
- ServiceDiscovery newInstance(CamelContext camelContext) throws Exception;
+@FunctionalInterface
+public interface ServiceDiscoveryFactory extends ServiceFactory<ServiceDiscovery> {
}
http://git-wip-us.apache.org/repos/asf/camel/blob/ecc81927/camel-core/src/main/java/org/apache/camel/cloud/ServiceExpressionFactory.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/cloud/ServiceExpressionFactory.java b/camel-core/src/main/java/org/apache/camel/cloud/ServiceExpressionFactory.java
index 3bdb2d7..4f4dcf2 100644
--- a/camel-core/src/main/java/org/apache/camel/cloud/ServiceExpressionFactory.java
+++ b/camel-core/src/main/java/org/apache/camel/cloud/ServiceExpressionFactory.java
@@ -16,18 +16,14 @@
*/
package org.apache.camel.cloud;
-import org.apache.camel.CamelContext;
import org.apache.camel.Expression;
/**
* A factory to create Expression
*
+ * @see ServiceFactory
* @see Expression
*/
-public interface ServiceExpressionFactory {
-
- /**
- * Creates an instance of a ServiceChooser.
- */
- Expression newInstance(CamelContext camelContext) throws Exception;
+@FunctionalInterface
+public interface ServiceExpressionFactory extends ServiceFactory<Expression> {
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/camel/blob/ecc81927/camel-core/src/main/java/org/apache/camel/cloud/ServiceFactory.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/cloud/ServiceFactory.java b/camel-core/src/main/java/org/apache/camel/cloud/ServiceFactory.java
new file mode 100644
index 0000000..fd58661
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/cloud/ServiceFactory.java
@@ -0,0 +1,27 @@
+/**
+ * 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.cloud;
+
+import org.apache.camel.CamelContext;
+
+@FunctionalInterface
+public interface ServiceFactory<T> {
+ /**
+ * Creates an instance of a service.
+ */
+ T newInstance(CamelContext camelContext) throws Exception;
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/ecc81927/camel-core/src/main/java/org/apache/camel/cloud/ServiceFilterFactory.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/cloud/ServiceFilterFactory.java b/camel-core/src/main/java/org/apache/camel/cloud/ServiceFilterFactory.java
index e7845ab..8771671 100644
--- a/camel-core/src/main/java/org/apache/camel/cloud/ServiceFilterFactory.java
+++ b/camel-core/src/main/java/org/apache/camel/cloud/ServiceFilterFactory.java
@@ -16,17 +16,12 @@
*/
package org.apache.camel.cloud;
-import org.apache.camel.CamelContext;
-
/**
* A factory to create ServiceFilter
*
+ * @see ServiceFactory
* @see ServiceFilter
*/
-public interface ServiceFilterFactory {
-
- /**
- * Creates an instance of a ServiceFilter.
- */
- ServiceFilter newInstance(CamelContext camelContext) throws Exception;
+@FunctionalInterface
+public interface ServiceFilterFactory extends ServiceFactory<ServiceFilter> {
}
http://git-wip-us.apache.org/repos/asf/camel/blob/ecc81927/camel-core/src/main/java/org/apache/camel/cloud/ServiceLoadBalancer.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/cloud/ServiceLoadBalancer.java b/camel-core/src/main/java/org/apache/camel/cloud/ServiceLoadBalancer.java
new file mode 100644
index 0000000..2fe32a1
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/cloud/ServiceLoadBalancer.java
@@ -0,0 +1,29 @@
+/**
+ * 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.cloud;
+
+/**
+ * Represents a Load Balancer.
+ *
+ * @see ServiceDiscovery
+ * @see ServiceFilter
+ * @see ServiceChooser
+ */
+@FunctionalInterface
+public interface ServiceLoadBalancer {
+ <T> T process(String serviceName, ServiceLoadBalancerFunction<T> function) throws Exception;
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/ecc81927/camel-core/src/main/java/org/apache/camel/cloud/ServiceLoadBalancerFactory.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/cloud/ServiceLoadBalancerFactory.java b/camel-core/src/main/java/org/apache/camel/cloud/ServiceLoadBalancerFactory.java
new file mode 100644
index 0000000..4fffaea
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/cloud/ServiceLoadBalancerFactory.java
@@ -0,0 +1,27 @@
+/**
+ * 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.cloud;
+
+/**
+ * A factory to create LoadBalancer
+ *
+ * @see ServiceFactory
+ * @see ServiceLoadBalancer
+ */
+@FunctionalInterface
+public interface ServiceLoadBalancerFactory extends ServiceFactory<ServiceLoadBalancer> {
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/ecc81927/camel-core/src/main/java/org/apache/camel/cloud/ServiceLoadBalancerFunction.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/cloud/ServiceLoadBalancerFunction.java b/camel-core/src/main/java/org/apache/camel/cloud/ServiceLoadBalancerFunction.java
new file mode 100644
index 0000000..b861e65
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/cloud/ServiceLoadBalancerFunction.java
@@ -0,0 +1,25 @@
+/**
+ * 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.cloud;
+
+/**
+ * Represents a load balancer function to be executed by the LoadBalancer.
+ */
+@FunctionalInterface
+public interface ServiceLoadBalancerFunction<T> {
+ T apply(ServiceDefinition serviceDefinition) throws Exception;
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/ecc81927/camel-core/src/main/java/org/apache/camel/impl/cloud/DefaultLoadBalancer.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/impl/cloud/DefaultLoadBalancer.java b/camel-core/src/main/java/org/apache/camel/impl/cloud/DefaultLoadBalancer.java
deleted file mode 100644
index 9fc8051..0000000
--- a/camel-core/src/main/java/org/apache/camel/impl/cloud/DefaultLoadBalancer.java
+++ /dev/null
@@ -1,147 +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 java.util.concurrent.RejectedExecutionException;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.CamelContextAware;
-import org.apache.camel.cloud.LoadBalancer;
-import org.apache.camel.cloud.LoadBalancerFunction;
-import org.apache.camel.cloud.ServiceChooser;
-import org.apache.camel.cloud.ServiceChooserAware;
-import org.apache.camel.cloud.ServiceDefinition;
-import org.apache.camel.cloud.ServiceDiscovery;
-import org.apache.camel.cloud.ServiceDiscoveryAware;
-import org.apache.camel.cloud.ServiceFilter;
-import org.apache.camel.cloud.ServiceFilterAware;
-import org.apache.camel.support.ServiceSupport;
-import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.util.ServiceHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class DefaultLoadBalancer
- extends ServiceSupport
- implements CamelContextAware, ServiceDiscoveryAware, ServiceChooserAware, ServiceFilterAware, LoadBalancer {
-
- private static final Logger LOGGER = LoggerFactory.getLogger(DefaultLoadBalancer.class);
-
- private CamelContext camelContext;
- private ServiceDiscovery serviceDiscovery;
- private ServiceChooser serviceChooser;
- private ServiceFilter serviceFilter;
-
- public DefaultLoadBalancer() {
- }
-
- // *************************************
- // Bean
- // *************************************
-
- @Override
- public CamelContext getCamelContext() {
- return camelContext;
- }
-
- @Override
- public void setCamelContext(CamelContext camelContext) {
- this.camelContext = camelContext;
- }
-
- @Override
- public ServiceDiscovery getServiceDiscovery() {
- return serviceDiscovery;
- }
-
- @Override
- public void setServiceDiscovery(ServiceDiscovery serverDiscovery) {
- this.serviceDiscovery = serverDiscovery;
- }
-
- @Override
- public ServiceChooser getServiceChooser() {
- return serviceChooser;
- }
-
- @Override
- public void setServiceChooser(ServiceChooser serverChooser) {
- this.serviceChooser = serverChooser;
- }
-
- @Override
- public void setServiceFilter(ServiceFilter serviceFilter) {
- this.serviceFilter = serviceFilter;
- }
-
- @Override
- public ServiceFilter getServiceFilter() {
- return serviceFilter;
- }
-
- // *************************************
- // Lifecycle
- // *************************************
-
- @Override
- protected void doStart() throws Exception {
- ObjectHelper.notNull(camelContext, "camel context");
- ObjectHelper.notNull(serviceDiscovery, "service discovery");
- ObjectHelper.notNull(serviceChooser, "service chooser");
- ObjectHelper.notNull(serviceFilter, "service serviceFilter");
-
- LOGGER.info("ServiceCall is using default load balancer with service discovery type: {}, service filter type: {} and service chooser type: {}",
- serviceDiscovery.getClass(),
- serviceFilter.getClass(),
- serviceChooser.getClass());
-
- ServiceHelper.startService(serviceChooser);
- ServiceHelper.startService(serviceDiscovery);
- }
-
- @Override
- protected void doStop() throws Exception {
- // Stop services if needed
- ServiceHelper.stopService(serviceDiscovery);
- ServiceHelper.stopService(serviceChooser);
- }
-
- // *************************************
- // Load Balancer
- // *************************************
-
- @Override
- public <T> T process(String serviceName, LoadBalancerFunction<T> function) throws Exception {
- ServiceDefinition service;
-
- List<ServiceDefinition> services = serviceDiscovery.getServices(serviceName);
- if (services == null || services.isEmpty()) {
- throw new RejectedExecutionException("No active services with name " + serviceName);
- } else {
- // filter services
- services = serviceFilter.apply(services);
- // let the client service chooser find which server to use
- service = services.size() > 1 ? serviceChooser.choose(services) : services.get(0);
- if (service == null) {
- throw new RejectedExecutionException("No active services with name " + serviceName);
- }
- }
-
- return function.apply(service);
- }
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/ecc81927/camel-core/src/main/java/org/apache/camel/impl/cloud/DefaultLoadBalancerFactory.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/impl/cloud/DefaultLoadBalancerFactory.java b/camel-core/src/main/java/org/apache/camel/impl/cloud/DefaultLoadBalancerFactory.java
deleted file mode 100644
index f065106..0000000
--- a/camel-core/src/main/java/org/apache/camel/impl/cloud/DefaultLoadBalancerFactory.java
+++ /dev/null
@@ -1,32 +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 org.apache.camel.CamelContext;
-import org.apache.camel.cloud.LoadBalancer;
-import org.apache.camel.cloud.LoadBalancerFactory;
-
-public class DefaultLoadBalancerFactory implements LoadBalancerFactory {
-
- @Override
- public LoadBalancer newInstance(CamelContext camelContext) throws Exception {
- DefaultLoadBalancer loadBalancer = new DefaultLoadBalancer();
- loadBalancer.setCamelContext(camelContext);
-
- return loadBalancer;
- }
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/ecc81927/camel-core/src/main/java/org/apache/camel/impl/cloud/DefaultServiceCallProcessor.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/impl/cloud/DefaultServiceCallProcessor.java b/camel-core/src/main/java/org/apache/camel/impl/cloud/DefaultServiceCallProcessor.java
index be97182..76094c1 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/cloud/DefaultServiceCallProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/cloud/DefaultServiceCallProcessor.java
@@ -23,8 +23,8 @@ import org.apache.camel.Exchange;
import org.apache.camel.ExchangePattern;
import org.apache.camel.Expression;
import org.apache.camel.Message;
-import org.apache.camel.cloud.LoadBalancer;
import org.apache.camel.cloud.ServiceDefinition;
+import org.apache.camel.cloud.ServiceLoadBalancer;
import org.apache.camel.processor.SendDynamicProcessor;
import org.apache.camel.support.ServiceSupport;
import org.apache.camel.util.AsyncProcessorHelper;
@@ -43,13 +43,13 @@ public class DefaultServiceCallProcessor extends ServiceSupport implements Async
private final String uri;
private final String contextPath;
private final CamelContext camelContext;
- private final LoadBalancer loadBalancer;
+ private final ServiceLoadBalancer loadBalancer;
private final Expression expression;
private SendDynamicProcessor processor;
public DefaultServiceCallProcessor(
CamelContext camelContext, String name, String scheme, String uri, ExchangePattern exchangePattern,
- LoadBalancer loadBalancer, Expression expression) {
+ ServiceLoadBalancer loadBalancer, Expression expression) {
this.uri = uri;
this.exchangePattern = exchangePattern;
@@ -104,7 +104,7 @@ public class DefaultServiceCallProcessor extends ServiceSupport implements Async
return contextPath;
}
- public LoadBalancer getLoadBalancer() {
+ public ServiceLoadBalancer getLoadBalancer() {
return loadBalancer;
}
http://git-wip-us.apache.org/repos/asf/camel/blob/ecc81927/camel-core/src/main/java/org/apache/camel/impl/cloud/DefaultServiceLoadBalancer.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/impl/cloud/DefaultServiceLoadBalancer.java b/camel-core/src/main/java/org/apache/camel/impl/cloud/DefaultServiceLoadBalancer.java
new file mode 100644
index 0000000..19a55fa
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/impl/cloud/DefaultServiceLoadBalancer.java
@@ -0,0 +1,147 @@
+/**
+ * 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 java.util.concurrent.RejectedExecutionException;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.CamelContextAware;
+import org.apache.camel.cloud.ServiceChooser;
+import org.apache.camel.cloud.ServiceChooserAware;
+import org.apache.camel.cloud.ServiceDefinition;
+import org.apache.camel.cloud.ServiceDiscovery;
+import org.apache.camel.cloud.ServiceDiscoveryAware;
+import org.apache.camel.cloud.ServiceFilter;
+import org.apache.camel.cloud.ServiceFilterAware;
+import org.apache.camel.cloud.ServiceLoadBalancer;
+import org.apache.camel.cloud.ServiceLoadBalancerFunction;
+import org.apache.camel.support.ServiceSupport;
+import org.apache.camel.util.ObjectHelper;
+import org.apache.camel.util.ServiceHelper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class DefaultServiceLoadBalancer
+ extends ServiceSupport
+ implements CamelContextAware, ServiceDiscoveryAware, ServiceChooserAware, ServiceFilterAware, ServiceLoadBalancer {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(DefaultServiceLoadBalancer.class);
+
+ private CamelContext camelContext;
+ private ServiceDiscovery serviceDiscovery;
+ private ServiceChooser serviceChooser;
+ private ServiceFilter serviceFilter;
+
+ public DefaultServiceLoadBalancer() {
+ }
+
+ // *************************************
+ // Bean
+ // *************************************
+
+ @Override
+ public CamelContext getCamelContext() {
+ return camelContext;
+ }
+
+ @Override
+ public void setCamelContext(CamelContext camelContext) {
+ this.camelContext = camelContext;
+ }
+
+ @Override
+ public ServiceDiscovery getServiceDiscovery() {
+ return serviceDiscovery;
+ }
+
+ @Override
+ public void setServiceDiscovery(ServiceDiscovery serverDiscovery) {
+ this.serviceDiscovery = serverDiscovery;
+ }
+
+ @Override
+ public ServiceChooser getServiceChooser() {
+ return serviceChooser;
+ }
+
+ @Override
+ public void setServiceChooser(ServiceChooser serverChooser) {
+ this.serviceChooser = serverChooser;
+ }
+
+ @Override
+ public void setServiceFilter(ServiceFilter serviceFilter) {
+ this.serviceFilter = serviceFilter;
+ }
+
+ @Override
+ public ServiceFilter getServiceFilter() {
+ return serviceFilter;
+ }
+
+ // *************************************
+ // Lifecycle
+ // *************************************
+
+ @Override
+ protected void doStart() throws Exception {
+ ObjectHelper.notNull(camelContext, "camel context");
+ ObjectHelper.notNull(serviceDiscovery, "service discovery");
+ ObjectHelper.notNull(serviceChooser, "service chooser");
+ ObjectHelper.notNull(serviceFilter, "service serviceFilter");
+
+ LOGGER.info("ServiceCall is using default load balancer with service discovery type: {}, service filter type: {} and service chooser type: {}",
+ serviceDiscovery.getClass(),
+ serviceFilter.getClass(),
+ serviceChooser.getClass());
+
+ ServiceHelper.startService(serviceChooser);
+ ServiceHelper.startService(serviceDiscovery);
+ }
+
+ @Override
+ protected void doStop() throws Exception {
+ // Stop services if needed
+ ServiceHelper.stopService(serviceDiscovery);
+ ServiceHelper.stopService(serviceChooser);
+ }
+
+ // *************************************
+ // Load Balancer
+ // *************************************
+
+ @Override
+ public <T> T process(String serviceName, ServiceLoadBalancerFunction<T> function) throws Exception {
+ ServiceDefinition service;
+
+ List<ServiceDefinition> services = serviceDiscovery.getServices(serviceName);
+ if (services == null || services.isEmpty()) {
+ throw new RejectedExecutionException("No active services with name " + serviceName);
+ } else {
+ // filter services
+ services = serviceFilter.apply(services);
+ // let the client service chooser find which server to use
+ service = services.size() > 1 ? serviceChooser.choose(services) : services.get(0);
+ if (service == null) {
+ throw new RejectedExecutionException("No active services with name " + serviceName);
+ }
+ }
+
+ return function.apply(service);
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/ecc81927/camel-core/src/main/java/org/apache/camel/impl/cloud/DefaultServiceLoadBalancerFactory.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/impl/cloud/DefaultServiceLoadBalancerFactory.java b/camel-core/src/main/java/org/apache/camel/impl/cloud/DefaultServiceLoadBalancerFactory.java
new file mode 100644
index 0000000..bdbb7f6
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/impl/cloud/DefaultServiceLoadBalancerFactory.java
@@ -0,0 +1,32 @@
+/**
+ * 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 org.apache.camel.CamelContext;
+import org.apache.camel.cloud.ServiceLoadBalancer;
+import org.apache.camel.cloud.ServiceLoadBalancerFactory;
+
+public class DefaultServiceLoadBalancerFactory implements ServiceLoadBalancerFactory {
+
+ @Override
+ public ServiceLoadBalancer newInstance(CamelContext camelContext) throws Exception {
+ DefaultServiceLoadBalancer loadBalancer = new DefaultServiceLoadBalancer();
+ loadBalancer.setCamelContext(camelContext);
+
+ return loadBalancer;
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/ecc81927/camel-core/src/main/java/org/apache/camel/model/cloud/DefaultServiceCallLoadBalancerConfiguration.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/cloud/DefaultServiceCallLoadBalancerConfiguration.java b/camel-core/src/main/java/org/apache/camel/model/cloud/DefaultServiceCallLoadBalancerConfiguration.java
deleted file mode 100644
index 4c3dae4..0000000
--- a/camel-core/src/main/java/org/apache/camel/model/cloud/DefaultServiceCallLoadBalancerConfiguration.java
+++ /dev/null
@@ -1,47 +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 javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlRootElement;
-
-import org.apache.camel.spi.Metadata;
-
-@Metadata(label = "routing,cloud,load-balancing")
-@XmlRootElement(name = "defaultLoadBalancer")
-@XmlAccessorType(XmlAccessType.FIELD)
-public class DefaultServiceCallLoadBalancerConfiguration extends ServiceCallLoadBalancerConfiguration {
- public DefaultServiceCallLoadBalancerConfiguration() {
- this(null);
- }
-
- public DefaultServiceCallLoadBalancerConfiguration(ServiceCallDefinition parent) {
- super(parent, "default-load-balancer");
- }
-
- // *************************************************************************
- // Properties
- // *************************************************************************
-
-
- // *************************************************************************
- // Fluent API
- // *************************************************************************
-
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/ecc81927/camel-core/src/main/java/org/apache/camel/model/cloud/DefaultServiceCallServiceLoadBalancerConfiguration.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/cloud/DefaultServiceCallServiceLoadBalancerConfiguration.java b/camel-core/src/main/java/org/apache/camel/model/cloud/DefaultServiceCallServiceLoadBalancerConfiguration.java
new file mode 100644
index 0000000..038a5b1
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/model/cloud/DefaultServiceCallServiceLoadBalancerConfiguration.java
@@ -0,0 +1,37 @@
+/**
+ * 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 javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+
+import org.apache.camel.spi.Metadata;
+
+@Metadata(label = "routing,cloud,load-balancing")
+@XmlRootElement(name = "defaultLoadBalancer")
+@XmlAccessorType(XmlAccessType.FIELD)
+public class DefaultServiceCallServiceLoadBalancerConfiguration extends ServiceCallServiceLoadBalancerConfiguration {
+ public DefaultServiceCallServiceLoadBalancerConfiguration() {
+ this(null);
+ }
+
+ public DefaultServiceCallServiceLoadBalancerConfiguration(ServiceCallDefinition parent) {
+ super(parent, "default-service-load-balancer");
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/ecc81927/camel-core/src/main/java/org/apache/camel/model/cloud/RibbonServiceCallLoadBalancerConfiguration.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/cloud/RibbonServiceCallLoadBalancerConfiguration.java b/camel-core/src/main/java/org/apache/camel/model/cloud/RibbonServiceCallLoadBalancerConfiguration.java
deleted file mode 100644
index b605890..0000000
--- a/camel-core/src/main/java/org/apache/camel/model/cloud/RibbonServiceCallLoadBalancerConfiguration.java
+++ /dev/null
@@ -1,144 +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.Map;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlAttribute;
-import javax.xml.bind.annotation.XmlRootElement;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.spi.Metadata;
-
-@Metadata(label = "routing,cloud,load-balancing")
-@XmlRootElement(name = "ribbonLoadBalancer")
-@XmlAccessorType(XmlAccessType.FIELD)
-public class RibbonServiceCallLoadBalancerConfiguration extends ServiceCallLoadBalancerConfiguration {
- @XmlAttribute
- private String namespace;
- @XmlAttribute
- private String username;
- @XmlAttribute
- private String password;
- @XmlAttribute
- private String clientName;
-
- public RibbonServiceCallLoadBalancerConfiguration() {
- this(null);
- }
-
- public RibbonServiceCallLoadBalancerConfiguration(ServiceCallDefinition parent) {
- super(parent, "ribbon-load-balancer");
- }
-
- // *************************************************************************
- // Properties
- // *************************************************************************
-
- public String getNamespace() {
- return namespace;
- }
-
- /**
- * The namespace
- */
- public void setNamespace(String namespace) {
- this.namespace = namespace;
- }
-
- public String getUsername() {
- return username;
- }
-
- /**
- * The username
- */
- public void setUsername(String username) {
- this.username = username;
- }
-
- public String getPassword() {
- return password;
- }
-
- /**
- * The password
- */
- public void setPassword(String password) {
- this.password = password;
- }
-
- public String getClientName() {
- return clientName;
- }
-
- /**
- * Sets the Ribbon client name
- */
- public void setClientName(String clientName) {
- this.clientName = clientName;
- }
-
- // *************************************************************************
- // Fluent API
- // *************************************************************************
-
- /**
- * Sets the namespace
- */
- public RibbonServiceCallLoadBalancerConfiguration namespace(String namespace) {
- setNamespace(namespace);
- return this;
- }
-
- /**
- * Sets the username
- */
- public RibbonServiceCallLoadBalancerConfiguration username(String username) {
- setUsername(username);
- return this;
- }
-
- /**
- * Sets the password
- */
- public RibbonServiceCallLoadBalancerConfiguration password(String password) {
- setPassword(password);
- return this;
- }
-
- /**
- * Sets the Ribbon client name
- */
- public RibbonServiceCallLoadBalancerConfiguration clientName(String clientName) {
- setClientName(clientName);
- return this;
- }
-
- // *************************************************************************
- // Helpers
- // *************************************************************************
-
- @Override
- protected void postProcessFactoryParameters(CamelContext camelContext, Map<String, Object> parameters) throws Exception {
- Map<String, Object> properties = (Map<String, Object>)parameters.get("properties");
- if (properties != null) {
- parameters.put("clientConfig", properties);
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/ecc81927/camel-core/src/main/java/org/apache/camel/model/cloud/RibbonServiceCallServiceLoadBalancerConfiguration.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/cloud/RibbonServiceCallServiceLoadBalancerConfiguration.java b/camel-core/src/main/java/org/apache/camel/model/cloud/RibbonServiceCallServiceLoadBalancerConfiguration.java
new file mode 100644
index 0000000..b6bd68b
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/model/cloud/RibbonServiceCallServiceLoadBalancerConfiguration.java
@@ -0,0 +1,130 @@
+/**
+ * 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 javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlRootElement;
+
+import org.apache.camel.spi.Metadata;
+
+@Metadata(label = "routing,cloud,load-balancing")
+@XmlRootElement(name = "ribbonLoadBalancer")
+@XmlAccessorType(XmlAccessType.FIELD)
+public class RibbonServiceCallServiceLoadBalancerConfiguration extends ServiceCallServiceLoadBalancerConfiguration {
+ @XmlAttribute
+ private String namespace;
+ @XmlAttribute
+ private String username;
+ @XmlAttribute
+ private String password;
+ @XmlAttribute
+ private String clientName;
+
+ public RibbonServiceCallServiceLoadBalancerConfiguration() {
+ this(null);
+ }
+
+ public RibbonServiceCallServiceLoadBalancerConfiguration(ServiceCallDefinition parent) {
+ super(parent, "ribbon-service-load-balancer");
+ }
+
+ // *************************************************************************
+ // Properties
+ // *************************************************************************
+
+ public String getNamespace() {
+ return namespace;
+ }
+
+ /**
+ * The namespace
+ */
+ public void setNamespace(String namespace) {
+ this.namespace = namespace;
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ /**
+ * The username
+ */
+ public void setUsername(String username) {
+ this.username = username;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ /**
+ * The password
+ */
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+ public String getClientName() {
+ return clientName;
+ }
+
+ /**
+ * Sets the Ribbon client name
+ */
+ public void setClientName(String clientName) {
+ this.clientName = clientName;
+ }
+
+ // *************************************************************************
+ // Fluent API
+ // *************************************************************************
+
+ /**
+ * Sets the namespace
+ */
+ public RibbonServiceCallServiceLoadBalancerConfiguration namespace(String namespace) {
+ setNamespace(namespace);
+ return this;
+ }
+
+ /**
+ * Sets the username
+ */
+ public RibbonServiceCallServiceLoadBalancerConfiguration username(String username) {
+ setUsername(username);
+ return this;
+ }
+
+ /**
+ * Sets the password
+ */
+ public RibbonServiceCallServiceLoadBalancerConfiguration password(String password) {
+ setPassword(password);
+ return this;
+ }
+
+ /**
+ * Sets the Ribbon client name
+ */
+ public RibbonServiceCallServiceLoadBalancerConfiguration clientName(String clientName) {
+ setClientName(clientName);
+ return this;
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/ecc81927/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 73950fe..a590676 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
@@ -27,10 +27,10 @@ import javax.xml.bind.annotation.XmlTransient;
import org.apache.camel.ExchangePattern;
import org.apache.camel.Expression;
import org.apache.camel.builder.ExpressionClause;
-import org.apache.camel.cloud.LoadBalancer;
import org.apache.camel.cloud.ServiceChooser;
import org.apache.camel.cloud.ServiceDiscovery;
import org.apache.camel.cloud.ServiceFilter;
+import org.apache.camel.cloud.ServiceLoadBalancer;
import org.apache.camel.model.IdentifiedType;
import org.apache.camel.spi.Metadata;
@@ -62,7 +62,7 @@ public class ServiceCallConfigurationDefinition extends IdentifiedType {
@XmlAttribute
private String loadBalancerRef;
@XmlTransient
- private LoadBalancer loadBalancer;
+ private ServiceLoadBalancer loadBalancer;
@XmlAttribute
private String expressionRef;
@XmlTransient
@@ -88,10 +88,10 @@ public class ServiceCallConfigurationDefinition extends IdentifiedType {
private ServiceCallServiceFilterConfiguration serviceFilterConfiguration;
@XmlElements({
- @XmlElement(name = "ribbonLoadBalancer", type = RibbonServiceCallLoadBalancerConfiguration.class),
- @XmlElement(name = "defaultLoadBalancer", type = DefaultServiceCallLoadBalancerConfiguration.class) }
+ @XmlElement(name = "ribbonLoadBalancer", type = RibbonServiceCallServiceLoadBalancerConfiguration.class),
+ @XmlElement(name = "defaultLoadBalancer", type = DefaultServiceCallServiceLoadBalancerConfiguration.class) }
)
- private ServiceCallLoadBalancerConfiguration loadBalancerConfiguration;
+ private ServiceCallServiceLoadBalancerConfiguration loadBalancerConfiguration;
@XmlElements({
@XmlElement(name = "expression", type = ServiceCallExpressionConfiguration.class)}
@@ -207,20 +207,20 @@ public class ServiceCallConfigurationDefinition extends IdentifiedType {
}
/**
- * Sets a reference to a custom {@link LoadBalancer} to use.
+ * Sets a reference to a custom {@link ServiceLoadBalancer} to use.
*/
public void setLoadBalancerRef(String loadBalancerRef) {
this.loadBalancerRef = loadBalancerRef;
}
- public LoadBalancer getLoadBalancer() {
+ public ServiceLoadBalancer getLoadBalancer() {
return loadBalancer;
}
/**
- * Sets a custom {@link LoadBalancer} to use.
+ * Sets a custom {@link ServiceLoadBalancer} to use.
*/
- public void setLoadBalancer(LoadBalancer loadBalancer) {
+ public void setLoadBalancer(ServiceLoadBalancer loadBalancer) {
this.loadBalancer = loadBalancer;
}
@@ -268,14 +268,14 @@ public class ServiceCallConfigurationDefinition extends IdentifiedType {
this.serviceFilterConfiguration = serviceFilterConfiguration;
}
- public ServiceCallLoadBalancerConfiguration getLoadBalancerConfiguration() {
+ public ServiceCallServiceLoadBalancerConfiguration getLoadBalancerConfiguration() {
return loadBalancerConfiguration;
}
/**
* Configures theL oadBalancer using the given configuration.
*/
- public void setLoadBalancerConfiguration(ServiceCallLoadBalancerConfiguration loadBalancerConfiguration) {
+ public void setLoadBalancerConfiguration(ServiceCallServiceLoadBalancerConfiguration loadBalancerConfiguration) {
this.loadBalancerConfiguration = loadBalancerConfiguration;
}
@@ -374,7 +374,7 @@ public class ServiceCallConfigurationDefinition extends IdentifiedType {
}
/**
- * Sets a reference to a custom {@link LoadBalancer} to use.
+ * Sets a reference to a custom {@link ServiceLoadBalancer} to use.
*/
public ServiceCallConfigurationDefinition loadBalancer(String loadBalancerRef) {
setLoadBalancerRef(loadBalancerRef);
@@ -382,9 +382,9 @@ public class ServiceCallConfigurationDefinition extends IdentifiedType {
}
/**
- * Sets a custom {@link LoadBalancer} to use.
+ * Sets a custom {@link ServiceLoadBalancer} to use.
*/
- public ServiceCallConfigurationDefinition loadBalancer(LoadBalancer loadBalancer) {
+ public ServiceCallConfigurationDefinition loadBalancer(ServiceLoadBalancer loadBalancer) {
setLoadBalancer(loadBalancer);
return this;
}
@@ -436,7 +436,7 @@ public class ServiceCallConfigurationDefinition extends IdentifiedType {
/**
* Configures the LoadBalancer using the given configuration.
*/
- public ServiceCallConfigurationDefinition loadBalancerConfiguration(ServiceCallLoadBalancerConfiguration loadBalancerConfiguration) {
+ public ServiceCallConfigurationDefinition loadBalancerConfiguration(ServiceCallServiceLoadBalancerConfiguration loadBalancerConfiguration) {
setLoadBalancerConfiguration(loadBalancerConfiguration);
return this;
}
@@ -610,21 +610,21 @@ public class ServiceCallConfigurationDefinition extends IdentifiedType {
// *****************************
public ServiceCallConfigurationDefinition defaultLoadBalancer() {
- DefaultServiceCallLoadBalancerConfiguration conf = new DefaultServiceCallLoadBalancerConfiguration();
+ DefaultServiceCallServiceLoadBalancerConfiguration conf = new DefaultServiceCallServiceLoadBalancerConfiguration();
setLoadBalancerConfiguration(conf);
return this;
}
public ServiceCallConfigurationDefinition ribbonLoadBalancer() {
- RibbonServiceCallLoadBalancerConfiguration conf = new RibbonServiceCallLoadBalancerConfiguration();
+ RibbonServiceCallServiceLoadBalancerConfiguration conf = new RibbonServiceCallServiceLoadBalancerConfiguration();
setLoadBalancerConfiguration(conf);
return this;
}
public ServiceCallConfigurationDefinition ribbonLoadBalancer(String clientName) {
- RibbonServiceCallLoadBalancerConfiguration conf = new RibbonServiceCallLoadBalancerConfiguration();
+ RibbonServiceCallServiceLoadBalancerConfiguration conf = new RibbonServiceCallServiceLoadBalancerConfiguration();
conf.setClientName(clientName);
setLoadBalancerConfiguration(conf);
http://git-wip-us.apache.org/repos/asf/camel/blob/ecc81927/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 efaf03e..4da35fc 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
@@ -32,16 +32,16 @@ import org.apache.camel.ExchangePattern;
import org.apache.camel.Expression;
import org.apache.camel.Processor;
import org.apache.camel.builder.ExpressionClause;
-import org.apache.camel.cloud.LoadBalancer;
import org.apache.camel.cloud.ServiceChooser;
import org.apache.camel.cloud.ServiceChooserAware;
import org.apache.camel.cloud.ServiceDiscovery;
import org.apache.camel.cloud.ServiceDiscoveryAware;
import org.apache.camel.cloud.ServiceFilter;
import org.apache.camel.cloud.ServiceFilterAware;
-import org.apache.camel.impl.cloud.DefaultLoadBalancer;
+import org.apache.camel.cloud.ServiceLoadBalancer;
import org.apache.camel.impl.cloud.DefaultServiceCallExpression;
import org.apache.camel.impl.cloud.DefaultServiceCallProcessor;
+import org.apache.camel.impl.cloud.DefaultServiceLoadBalancer;
import org.apache.camel.impl.cloud.HealthyServiceFilter;
import org.apache.camel.impl.cloud.PassThroughServiceFilter;
import org.apache.camel.impl.cloud.RandomServiceChooser;
@@ -87,7 +87,7 @@ public class ServiceCallDefinition extends NoOutputDefinition<ServiceCallDefinit
@XmlAttribute
private String loadBalancerRef;
@XmlTransient
- private LoadBalancer loadBalancer;
+ private ServiceLoadBalancer loadBalancer;
@XmlAttribute
private String expressionRef;
@XmlTransient
@@ -114,10 +114,10 @@ public class ServiceCallDefinition extends NoOutputDefinition<ServiceCallDefinit
private ServiceCallServiceFilterConfiguration serviceFilterConfiguration;
@XmlElements({
- @XmlElement(name = "ribbonLoadBalancer", type = RibbonServiceCallLoadBalancerConfiguration.class),
- @XmlElement(name = "defaultLoadBalancer", type = DefaultServiceCallLoadBalancerConfiguration.class) }
+ @XmlElement(name = "ribbonLoadBalancer", type = RibbonServiceCallServiceLoadBalancerConfiguration.class),
+ @XmlElement(name = "defaultLoadBalancer", type = DefaultServiceCallServiceLoadBalancerConfiguration.class) }
)
- private ServiceCallLoadBalancerConfiguration loadBalancerConfiguration;
+ private ServiceCallServiceLoadBalancerConfiguration loadBalancerConfiguration;
@XmlElements({
@XmlElement(name = "expressionConfiguration", type = ServiceCallExpressionConfiguration.class)}
@@ -268,20 +268,20 @@ public class ServiceCallDefinition extends NoOutputDefinition<ServiceCallDefinit
}
/**
- * Sets a reference to a custom {@link LoadBalancer} to use.
+ * Sets a reference to a custom {@link ServiceLoadBalancer} to use.
*/
public void setLoadBalancerRef(String loadBalancerRef) {
this.loadBalancerRef = loadBalancerRef;
}
- public LoadBalancer getLoadBalancer() {
+ public ServiceLoadBalancer getLoadBalancer() {
return loadBalancer;
}
/**
- * Sets a custom {@link LoadBalancer} to use.
+ * Sets a custom {@link ServiceLoadBalancer} to use.
*/
- public void setLoadBalancer(LoadBalancer loadBalancer) {
+ public void setLoadBalancer(ServiceLoadBalancer loadBalancer) {
this.loadBalancer = loadBalancer;
}
@@ -329,14 +329,14 @@ public class ServiceCallDefinition extends NoOutputDefinition<ServiceCallDefinit
this.serviceFilterConfiguration = serviceFilterConfiguration;
}
- public ServiceCallLoadBalancerConfiguration getLoadBalancerConfiguration() {
+ public ServiceCallServiceLoadBalancerConfiguration getLoadBalancerConfiguration() {
return loadBalancerConfiguration;
}
/**
* Configures the LoadBalancer using the given configuration.
*/
- public void setLoadBalancerConfiguration(ServiceCallLoadBalancerConfiguration loadBalancerConfiguration) {
+ public void setLoadBalancerConfiguration(ServiceCallServiceLoadBalancerConfiguration loadBalancerConfiguration) {
this.loadBalancerConfiguration = loadBalancerConfiguration;
}
@@ -444,7 +444,7 @@ public class ServiceCallDefinition extends NoOutputDefinition<ServiceCallDefinit
}
/**
- * Sets a reference to a custom {@link LoadBalancer} to use.
+ * Sets a reference to a custom {@link ServiceLoadBalancer} to use.
*/
public ServiceCallDefinition loadBalancer(String loadBalancerRef) {
setLoadBalancerRef(loadBalancerRef);
@@ -452,9 +452,9 @@ public class ServiceCallDefinition extends NoOutputDefinition<ServiceCallDefinit
}
/**
- * Sets a custom {@link LoadBalancer} to use.
+ * Sets a custom {@link ServiceLoadBalancer} to use.
*/
- public ServiceCallDefinition loadBalancer(LoadBalancer loadBalancer) {
+ public ServiceCallDefinition loadBalancer(ServiceLoadBalancer loadBalancer) {
setLoadBalancer(loadBalancer);
return this;
}
@@ -506,7 +506,7 @@ public class ServiceCallDefinition extends NoOutputDefinition<ServiceCallDefinit
/**
* Configures the LoadBalancer using the given configuration.
*/
- public ServiceCallDefinition loadBalancerConfiguration(ServiceCallLoadBalancerConfiguration loadBalancerConfiguration) {
+ public ServiceCallDefinition loadBalancerConfiguration(ServiceCallServiceLoadBalancerConfiguration loadBalancerConfiguration) {
setLoadBalancerConfiguration(loadBalancerConfiguration);
return this;
}
@@ -696,21 +696,21 @@ public class ServiceCallDefinition extends NoOutputDefinition<ServiceCallDefinit
// *****************************
public ServiceCallDefinition defaultLoadBalancer() {
- DefaultServiceCallLoadBalancerConfiguration conf = new DefaultServiceCallLoadBalancerConfiguration();
+ DefaultServiceCallServiceLoadBalancerConfiguration conf = new DefaultServiceCallServiceLoadBalancerConfiguration();
setLoadBalancerConfiguration(conf);
return this;
}
public ServiceCallDefinition ribbonLoadBalancer() {
- RibbonServiceCallLoadBalancerConfiguration conf = new RibbonServiceCallLoadBalancerConfiguration(this);
+ RibbonServiceCallServiceLoadBalancerConfiguration conf = new RibbonServiceCallServiceLoadBalancerConfiguration(this);
setLoadBalancerConfiguration(conf);
return this;
}
public ServiceCallDefinition ribbonLoadBalancer(String clientName) {
- RibbonServiceCallLoadBalancerConfiguration conf = new RibbonServiceCallLoadBalancerConfiguration(this);
+ RibbonServiceCallServiceLoadBalancerConfiguration conf = new RibbonServiceCallServiceLoadBalancerConfiguration(this);
conf.setClientName(clientName);
setLoadBalancerConfiguration(conf);
@@ -728,7 +728,7 @@ public class ServiceCallDefinition extends NoOutputDefinition<ServiceCallDefinit
final ServiceDiscovery serviceDiscovery = retrieveServiceDiscovery(camelContext);
final ServiceFilter serviceFilter = retrieveServiceFilter(camelContext);
final ServiceChooser serviceChooser = retrieveServiceChooser(camelContext);
- final LoadBalancer loadBalancer = retrieveLoadBalancer(camelContext);
+ final ServiceLoadBalancer loadBalancer = retrieveLoadBalancer(camelContext);
final Expression expression = retrieveExpression(camelContext);
if (loadBalancer instanceof CamelContextAware) {
@@ -981,8 +981,8 @@ public class ServiceCallDefinition extends NoOutputDefinition<ServiceCallDefinit
// LoadBalancer
// ******************************************
- private LoadBalancer retrieveLoadBalancer(CamelContext camelContext, Function<CamelContext, ServiceCallConfigurationDefinition> function) throws Exception {
- LoadBalancer answer = null;
+ private ServiceLoadBalancer retrieveLoadBalancer(CamelContext camelContext, Function<CamelContext, ServiceCallConfigurationDefinition> function) throws Exception {
+ ServiceLoadBalancer answer = null;
ServiceCallConfigurationDefinition config = function.apply(camelContext);
if (config != null) {
@@ -990,7 +990,7 @@ public class ServiceCallDefinition extends NoOutputDefinition<ServiceCallDefinit
answer = config.getLoadBalancerConfiguration().newInstance(camelContext);
} else {
answer = retrieve(
- LoadBalancer.class,
+ ServiceLoadBalancer.class,
camelContext,
config::getLoadBalancer,
config::getLoadBalancerRef
@@ -1001,22 +1001,22 @@ public class ServiceCallDefinition extends NoOutputDefinition<ServiceCallDefinit
return answer;
}
- private LoadBalancer retrieveLoadBalancer(CamelContext camelContext) throws Exception {
+ private ServiceLoadBalancer retrieveLoadBalancer(CamelContext camelContext) throws Exception {
return Suppliers.firstNotNull(
() -> (loadBalancerConfiguration != null) ? loadBalancerConfiguration.newInstance(camelContext) : null,
// Local configuration
- () -> retrieve(LoadBalancer.class, camelContext, this::getLoadBalancer, this::getLoadBalancerRef),
+ () -> retrieve(ServiceLoadBalancer.class, camelContext, this::getLoadBalancer, this::getLoadBalancerRef),
// Linked configuration
() -> retrieveLoadBalancer(camelContext, this::retrieveConfig),
// Default configuration
() -> retrieveLoadBalancer(camelContext, this::retrieveDefaultConfig),
// Check if there is a single instance in the registry
- () -> findByType(camelContext, LoadBalancer.class),
+ () -> findByType(camelContext, ServiceLoadBalancer.class),
// From registry
- () -> lookup(camelContext, ServiceCallConstants.DEFAULT_LOAD_BALANCER_ID, LoadBalancer.class)
+ () -> lookup(camelContext, ServiceCallConstants.DEFAULT_LOAD_BALANCER_ID, ServiceLoadBalancer.class)
).orElseGet(
// Default
- () -> new DefaultLoadBalancer()
+ () -> new DefaultServiceLoadBalancer()
);
}
http://git-wip-us.apache.org/repos/asf/camel/blob/ecc81927/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallExpressionConfiguration.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallExpressionConfiguration.java b/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallExpressionConfiguration.java
index 2c1838f..8a76a69 100644
--- a/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallExpressionConfiguration.java
+++ b/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallExpressionConfiguration.java
@@ -247,6 +247,8 @@ public class ServiceCallExpressionConfiguration extends IdentifiedType implement
try {
Map<String, Object> parameters = new HashMap<>();
IntrospectionSupport.getProperties(this, parameters, null, false);
+
+ // Convert properties to Map<String, String>
parameters.put("properties", getPropertiesAsMap(camelContext));
postProcessFactoryParameters(camelContext, parameters);
http://git-wip-us.apache.org/repos/asf/camel/blob/ecc81927/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallLoadBalancerConfiguration.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallLoadBalancerConfiguration.java b/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallLoadBalancerConfiguration.java
deleted file mode 100644
index 42f644a..0000000
--- a/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallLoadBalancerConfiguration.java
+++ /dev/null
@@ -1,187 +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.Collections;
-import java.util.HashMap;
-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.XmlRootElement;
-import javax.xml.bind.annotation.XmlTransient;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.NoFactoryAvailableException;
-import org.apache.camel.cloud.LoadBalancer;
-import org.apache.camel.cloud.LoadBalancerFactory;
-import org.apache.camel.model.IdentifiedType;
-import org.apache.camel.model.ProcessorDefinition;
-import org.apache.camel.model.PropertyDefinition;
-import org.apache.camel.spi.Metadata;
-import org.apache.camel.util.CamelContextHelper;
-import org.apache.camel.util.IntrospectionSupport;
-import org.apache.camel.util.ObjectHelper;
-
-@Metadata(label = "routing,cloud,load-balancing")
-@XmlRootElement(name = "loadBalancerConfiguration")
-@XmlAccessorType(XmlAccessType.FIELD)
-public class ServiceCallLoadBalancerConfiguration extends IdentifiedType implements LoadBalancerFactory {
- private static final String RESOURCE_PATH = "META-INF/services/org/apache/camel/cloud/";
-
- @XmlTransient
- private final ServiceCallDefinition parent;
- @XmlTransient
- private final String factoryKey;
- @XmlElement(name = "properties") @Metadata(label = "advanced")
- private List<PropertyDefinition> properties;
-
- public ServiceCallLoadBalancerConfiguration() {
- this(null, null);
- }
-
- public ServiceCallLoadBalancerConfiguration(ServiceCallDefinition parent, String factoryKey) {
- this.parent = parent;
- this.factoryKey = factoryKey;
- }
-
- public ServiceCallDefinition end() {
- return this.parent;
- }
-
- public ProcessorDefinition<?> endParent() {
- return this.parent.end();
- }
-
- // *************************************************************************
- //
- // *************************************************************************
-
- public List<PropertyDefinition> getProperties() {
- return properties;
- }
-
- /**
- * Set client properties to use.
- * <p/>
- * These properties are specific to what service call implementation are in
- * use. For example if using ribbon, then the client properties are define
- * in com.netflix.client.config.CommonClientConfigKey.
- */
- public void setProperties(List<PropertyDefinition> properties) {
- this.properties = properties;
- }
-
- /**
- * Adds a custom property to use.
- * <p/>
- * These properties are specific to what service call implementation are in
- * use. For example if using ribbon, then the client properties are define
- * in com.netflix.client.config.CommonClientConfigKey.
- */
- public ServiceCallLoadBalancerConfiguration property(String key, String value) {
- if (properties == null) {
- properties = new ArrayList<>();
- }
- PropertyDefinition prop = new PropertyDefinition();
- prop.setKey(key);
- prop.setValue(value);
- properties.add(prop);
- return this;
- }
-
- protected Map<String, String> getPropertiesAsMap(CamelContext camelContext) throws Exception {
- Map<String, String> answer;
-
- if (properties == null || properties.isEmpty()) {
- answer = Collections.emptyMap();
- } else {
- answer = new HashMap<>();
- for (PropertyDefinition prop : properties) {
- // support property placeholders
- String key = CamelContextHelper.parseText(camelContext, prop.getKey());
- String value = CamelContextHelper.parseText(camelContext, prop.getValue());
- answer.put(key, value);
- }
- }
-
- return answer;
- }
-
- // *************************************************************************
- // Factory
- // *************************************************************************
-
- @Override
- public LoadBalancer newInstance(CamelContext camelContext) throws Exception {
- ObjectHelper.notNull(factoryKey, "LoadBalancer factoryKey");
-
- LoadBalancer answer;
-
- // First try to find the factory from the registry.
- LoadBalancerFactory factory = CamelContextHelper.lookup(camelContext, factoryKey, LoadBalancerFactory.class);
- if (factory != null) {
- // If a factory is found in the registry do not re-configure it as
- // it should be pre-configured.
- answer = factory.newInstance(camelContext);
- } else {
-
- Class<?> type;
- try {
- // Then use Service factory.
- type = camelContext.getFactoryFinder(RESOURCE_PATH).findClass(factoryKey);
- } catch (Exception e) {
- throw new NoFactoryAvailableException(RESOURCE_PATH + factoryKey, e);
- }
-
- if (type != null) {
- if (LoadBalancerFactory.class.isAssignableFrom(type)) {
- factory = (LoadBalancerFactory) camelContext.getInjector().newInstance(type);
- } else {
- throw new IllegalArgumentException(
- "Resolving LoadBalancer: " + factoryKey + " detected type conflict: Not a LoadBalancerFactory implementation. Found: " + type.getName());
- }
- }
-
- try {
- Map<String, Object> parameters = new HashMap<>();
- IntrospectionSupport.getProperties(this, parameters, null, false);
- parameters.put("properties", getPropertiesAsMap(camelContext));
-
- postProcessFactoryParameters(camelContext, parameters);
-
- IntrospectionSupport.setProperties(factory, parameters);
-
- answer = factory.newInstance(camelContext);
- } catch (Exception e) {
- throw new IllegalArgumentException(e);
- }
- }
-
- return answer;
- }
-
- // *************************************************************************
- // Utilities
- // *************************************************************************
-
- protected void postProcessFactoryParameters(CamelContext camelContext, Map<String, Object> parameters) throws Exception {
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/camel/blob/ecc81927/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallServiceChooserConfiguration.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallServiceChooserConfiguration.java b/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallServiceChooserConfiguration.java
index 0a0d8f4..b6c6e7e 100644
--- a/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallServiceChooserConfiguration.java
+++ b/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallServiceChooserConfiguration.java
@@ -163,8 +163,12 @@ public class ServiceCallServiceChooserConfiguration extends IdentifiedType imple
try {
Map<String, Object> parameters = new HashMap<>();
IntrospectionSupport.getProperties(this, parameters, null, false);
+
+ // Convert properties to Map<String, String>
parameters.put("properties", getPropertiesAsMap(camelContext));
+ postProcessFactoryParameters(camelContext, parameters);
+
IntrospectionSupport.setProperties(factory, parameters);
answer = factory.newInstance(camelContext);
http://git-wip-us.apache.org/repos/asf/camel/blob/ecc81927/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallServiceDiscoveryConfiguration.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallServiceDiscoveryConfiguration.java b/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallServiceDiscoveryConfiguration.java
index b6e59df..baf1773 100644
--- a/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallServiceDiscoveryConfiguration.java
+++ b/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallServiceDiscoveryConfiguration.java
@@ -170,6 +170,8 @@ public class ServiceCallServiceDiscoveryConfiguration extends IdentifiedType imp
try {
Map<String, Object> parameters = new HashMap<>();
IntrospectionSupport.getProperties(this, parameters, null, false);
+
+ // Convert properties to Map<String, String>
parameters.put("properties", getPropertiesAsMap(camelContext));
postProcessFactoryParameters(camelContext, parameters);
http://git-wip-us.apache.org/repos/asf/camel/blob/ecc81927/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallServiceFilterConfiguration.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallServiceFilterConfiguration.java b/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallServiceFilterConfiguration.java
index 6b6de0c..b5dc423 100644
--- a/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallServiceFilterConfiguration.java
+++ b/camel-core/src/main/java/org/apache/camel/model/cloud/ServiceCallServiceFilterConfiguration.java
@@ -163,6 +163,8 @@ public class ServiceCallServiceFilterConfiguration extends IdentifiedType implem
try {
Map<String, Object> parameters = new HashMap<>();
IntrospectionSupport.getProperties(this, parameters, null, false);
+
+ // Convert properties to Map<String, String>
parameters.put("properties", getPropertiesAsMap(camelContext));
postProcessFactoryParameters(camelContext, parameters);