You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2016/05/19 12:56:28 UTC
[1/2] camel git commit: CAMEL-9683: Made configuration of service
call easier
Repository: camel
Updated Branches:
refs/heads/kube-lb 1e369537f -> c00d2c3d8
CAMEL-9683: Made configuration of service call easier
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/5f70f9e2
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/5f70f9e2
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/5f70f9e2
Branch: refs/heads/kube-lb
Commit: 5f70f9e220d0d17cee3860948c870834b8e509b8
Parents: 1e36953
Author: Claus Ibsen <da...@apache.org>
Authored: Thu May 19 14:13:53 2016 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Thu May 19 14:13:53 2016 +0200
----------------------------------------------------------------------
.../ServiceCallConfigurationDefinition.java | 18 ------------------
.../camel/model/remote/ServiceCallDefinition.java | 13 +------------
.../processor/KubernetesProcessorFactory.java | 18 ++++--------------
.../ribbon/processor/RibbonProcessorFactory.java | 18 ++++--------------
4 files changed, 9 insertions(+), 58 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/5f70f9e2/camel-core/src/main/java/org/apache/camel/model/remote/ServiceCallConfigurationDefinition.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/remote/ServiceCallConfigurationDefinition.java b/camel-core/src/main/java/org/apache/camel/model/remote/ServiceCallConfigurationDefinition.java
index 4b51bd7..526a0d3 100644
--- a/camel-core/src/main/java/org/apache/camel/model/remote/ServiceCallConfigurationDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/remote/ServiceCallConfigurationDefinition.java
@@ -47,8 +47,6 @@ public abstract class ServiceCallConfigurationDefinition extends IdentifiedType
@XmlTransient
private ServiceCallDefinition parent;
@XmlAttribute
- private String component;
- @XmlAttribute
private String loadBalancerRef;
@XmlTransient
private ServiceCallLoadBalancer loadBalancer;
@@ -72,14 +70,6 @@ public abstract class ServiceCallConfigurationDefinition extends IdentifiedType
// Getter/Setter
// -------------------------------------------------------------------------
- public String getComponent() {
- return component;
- }
-
- public void setComponent(String component) {
- this.component = component;
- }
-
public String getLoadBalancerRef() {
return loadBalancerRef;
}
@@ -134,14 +124,6 @@ public abstract class ServiceCallConfigurationDefinition extends IdentifiedType
// -------------------------------------------------------------------------
/**
- * Sets the name of the Camel component to use such as ribbon or kubernetes
- */
- public ServiceCallConfigurationDefinition component(String component) {
- setComponent(component);
- return this;
- }
-
- /**
* Sets a reference to a custom {@link org.apache.camel.spi.ServiceCallLoadBalancer} to use.
*/
public ServiceCallConfigurationDefinition loadBalancer(String loadBalancerRef) {
http://git-wip-us.apache.org/repos/asf/camel/blob/5f70f9e2/camel-core/src/main/java/org/apache/camel/model/remote/ServiceCallDefinition.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/remote/ServiceCallDefinition.java b/camel-core/src/main/java/org/apache/camel/model/remote/ServiceCallDefinition.java
index f12ce74..25ead8d 100644
--- a/camel-core/src/main/java/org/apache/camel/model/remote/ServiceCallDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/remote/ServiceCallDefinition.java
@@ -30,7 +30,6 @@ import org.apache.camel.spi.Metadata;
import org.apache.camel.spi.RouteContext;
import org.apache.camel.spi.ServiceCallLoadBalancer;
import org.apache.camel.spi.ServiceCallServerListStrategy;
-import org.apache.camel.util.CamelContextHelper;
/**
* Remote service call
@@ -75,17 +74,7 @@ public class ServiceCallDefinition extends NoOutputDefinition<ServiceCallDefinit
@Override
public Processor createProcessor(RouteContext routeContext) throws Exception {
- String component = serviceCallConfiguration != null ? serviceCallConfiguration.getComponent() : null;
- if (component == null && serviceCallConfigurationRef != null) {
- ServiceCallConfigurationDefinition config = CamelContextHelper.mandatoryLookup(routeContext.getCamelContext(), serviceCallConfigurationRef, ServiceCallConfigurationDefinition.class);
- component = config.getComponent();
- }
-
- if (component != null) {
- throw new IllegalStateException("Cannot find Camel component on the classpath implementing the discovery provider: " + component);
- } else {
- throw new IllegalStateException("Cannot find Camel component supporting the ServiceCall EIP such as camel-kubernetes or camel-ribbon.");
- }
+ throw new IllegalStateException("Cannot find Camel component supporting the ServiceCall EIP such as camel-kubernetes or camel-ribbon.");
}
// Fluent API
http://git-wip-us.apache.org/repos/asf/camel/blob/5f70f9e2/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/processor/KubernetesProcessorFactory.java
----------------------------------------------------------------------
diff --git a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/processor/KubernetesProcessorFactory.java b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/processor/KubernetesProcessorFactory.java
index 3a1352e..73d9a07 100644
--- a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/processor/KubernetesProcessorFactory.java
+++ b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/processor/KubernetesProcessorFactory.java
@@ -73,23 +73,13 @@ public class KubernetesProcessorFactory implements ProcessorFactory {
if (config == null) {
// if no default then try to find if there configuration in the registry of the given type
Set<KubernetesConfigurationDefinition> set = routeContext.getCamelContext().getRegistry().findByType(KubernetesConfigurationDefinition.class);
- if (set != null) {
- for (KubernetesConfigurationDefinition candidate : set) {
- if (candidate.getComponent() == null || "kubernetes".equals(candidate.getComponent())) {
- config = candidate;
- break;
- }
- }
+ if (set.size() == 1) {
+ config = set.iterator().next();
}
}
- // component must either not be set, or if set then must be us
- String component = config != null ? config.getComponent() : null;
- if (component == null && configRef != null) {
- component = configRef.getComponent();
- }
- if (component != null && !"kubernetes".equals(component)) {
- return null;
+ if (config == null && configRef == null) {
+ throw new IllegalStateException("The ServiceCall: " + definition + " must be configured before it can be used.");
}
// extract the properties from the configuration from the model
http://git-wip-us.apache.org/repos/asf/camel/blob/5f70f9e2/components/camel-ribbon/src/main/java/org/apache/camel/component/ribbon/processor/RibbonProcessorFactory.java
----------------------------------------------------------------------
diff --git a/components/camel-ribbon/src/main/java/org/apache/camel/component/ribbon/processor/RibbonProcessorFactory.java b/components/camel-ribbon/src/main/java/org/apache/camel/component/ribbon/processor/RibbonProcessorFactory.java
index e0821cf..f77557e 100644
--- a/components/camel-ribbon/src/main/java/org/apache/camel/component/ribbon/processor/RibbonProcessorFactory.java
+++ b/components/camel-ribbon/src/main/java/org/apache/camel/component/ribbon/processor/RibbonProcessorFactory.java
@@ -74,23 +74,13 @@ public class RibbonProcessorFactory implements ProcessorFactory {
if (config == null) {
// if no default then try to find if there configuration in the registry of the given type
Set<RibbonConfigurationDefinition> set = routeContext.getCamelContext().getRegistry().findByType(RibbonConfigurationDefinition.class);
- if (set != null) {
- for (RibbonConfigurationDefinition candidate : set) {
- if (candidate.getComponent() == null || "ribbon".equals(candidate.getComponent())) {
- config = candidate;
- break;
- }
- }
+ if (set.size() == 1) {
+ config = set.iterator().next();
}
}
- // component must either not be set, or if set then must be us
- String component = config != null ? config.getComponent() : null;
- if (component == null && configRef != null) {
- component = configRef.getComponent();
- }
- if (component != null && !"ribbon".equals(component)) {
- return null;
+ if (config == null && configRef == null) {
+ throw new IllegalStateException("The ServiceCall: " + definition + " must be configured before it can be used.");
}
// extract the properties from the configuration from the model
[2/2] camel git commit: CAMEL-9683: Allow to configure default
component to use instead of http
Posted by da...@apache.org.
CAMEL-9683: Allow to configure default component to use instead of http
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/c00d2c3d
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/c00d2c3d
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/c00d2c3d
Branch: refs/heads/kube-lb
Commit: c00d2c3d85d7f1437114c72ca833ebf32ef0a749
Parents: 5f70f9e
Author: Claus Ibsen <da...@apache.org>
Authored: Thu May 19 14:53:57 2016 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Thu May 19 14:53:57 2016 +0200
----------------------------------------------------------------------
.../remote/RibbonConfigurationDefinition.java | 2 +-
.../ServiceCallConfigurationDefinition.java | 26 ++++++++++++++++++++
.../KubernetesClientServiceCallProcessor.java | 4 +--
.../KubernetesDnsServiceCallProcessor.java | 4 +--
...bernetesEnvironmentServiceCallProcessor.java | 4 +--
.../processor/KubernetesProcessorFactory.java | 12 ++++++---
.../processor/RibbonProcessorFactory.java | 8 +++++-
.../processor/RibbonServiceCallProcessor.java | 4 +--
8 files changed, 51 insertions(+), 13 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/c00d2c3d/camel-core/src/main/java/org/apache/camel/model/remote/RibbonConfigurationDefinition.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/remote/RibbonConfigurationDefinition.java b/camel-core/src/main/java/org/apache/camel/model/remote/RibbonConfigurationDefinition.java
index 2cc5ea2..4ac4109 100644
--- a/camel-core/src/main/java/org/apache/camel/model/remote/RibbonConfigurationDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/remote/RibbonConfigurationDefinition.java
@@ -40,7 +40,7 @@ public class RibbonConfigurationDefinition extends ServiceCallConfigurationDefin
// Getter/Setter
// -------------------------------------------------------------------------
-
+ // currently no ribbon specific options
// Fluent API
// -------------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/c00d2c3d/camel-core/src/main/java/org/apache/camel/model/remote/ServiceCallConfigurationDefinition.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/remote/ServiceCallConfigurationDefinition.java b/camel-core/src/main/java/org/apache/camel/model/remote/ServiceCallConfigurationDefinition.java
index 526a0d3..562e0df 100644
--- a/camel-core/src/main/java/org/apache/camel/model/remote/ServiceCallConfigurationDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/remote/ServiceCallConfigurationDefinition.java
@@ -46,6 +46,8 @@ public abstract class ServiceCallConfigurationDefinition extends IdentifiedType
@XmlTransient
private ServiceCallDefinition parent;
+ @XmlAttribute @Metadata(defaultValue = "http")
+ private String component;
@XmlAttribute
private String loadBalancerRef;
@XmlTransient
@@ -70,6 +72,15 @@ public abstract class ServiceCallConfigurationDefinition extends IdentifiedType
// Getter/Setter
// -------------------------------------------------------------------------
+
+ public String getComponent() {
+ return component;
+ }
+
+ public void setComponent(String component) {
+ this.component = component;
+ }
+
public String getLoadBalancerRef() {
return loadBalancerRef;
}
@@ -124,6 +135,21 @@ public abstract class ServiceCallConfigurationDefinition extends IdentifiedType
// -------------------------------------------------------------------------
/**
+ * Sets the default Camel component to use for calling the remote service.
+ * <p/>
+ * By default the http component is used. You can configure this to use <tt>netty4-http</tt>, <tt>jetty</tt>,
+ * <tt>restlet</tt> or some other components of choice. If the service is not HTTP protocol you can use other
+ * components such as <tt>mqtt</tt>, <tt>jms</tt>, <tt>amqp</tt> etc.
+ * <p/>
+ * If the service call has been configured using an uri, then the component from the uri is used instead
+ * of this default component.
+ */
+ public ServiceCallConfigurationDefinition component(String component) {
+ setComponent(component);
+ return this;
+ }
+
+ /**
* Sets a reference to a custom {@link org.apache.camel.spi.ServiceCallLoadBalancer} to use.
*/
public ServiceCallConfigurationDefinition loadBalancer(String loadBalancerRef) {
http://git-wip-us.apache.org/repos/asf/camel/blob/c00d2c3d/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/processor/KubernetesClientServiceCallProcessor.java
----------------------------------------------------------------------
diff --git a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/processor/KubernetesClientServiceCallProcessor.java b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/processor/KubernetesClientServiceCallProcessor.java
index 1bdca12..f1af317 100644
--- a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/processor/KubernetesClientServiceCallProcessor.java
+++ b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/processor/KubernetesClientServiceCallProcessor.java
@@ -63,7 +63,7 @@ public class KubernetesClientServiceCallProcessor extends ServiceSupport impleme
private ServiceCallLoadBalancer<KubernetesServer> loadBalancer;
private SendDynamicProcessor processor;
- public KubernetesClientServiceCallProcessor(String name, String namespace, String uri, ExchangePattern exchangePattern, KubernetesConfiguration configuration) {
+ public KubernetesClientServiceCallProcessor(String name, String namespace, String scheme, String uri, ExchangePattern exchangePattern, KubernetesConfiguration configuration) {
// setup from the provided name which can contain scheme and context-path information as well
String serviceName;
if (name.contains("/")) {
@@ -80,7 +80,7 @@ public class KubernetesClientServiceCallProcessor extends ServiceSupport impleme
this.scheme = ObjectHelper.before(serviceName, ":");
this.name = ObjectHelper.after(serviceName, ":");
} else {
- this.scheme = null;
+ this.scheme = scheme;
this.name = serviceName;
}
http://git-wip-us.apache.org/repos/asf/camel/blob/c00d2c3d/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/processor/KubernetesDnsServiceCallProcessor.java
----------------------------------------------------------------------
diff --git a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/processor/KubernetesDnsServiceCallProcessor.java b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/processor/KubernetesDnsServiceCallProcessor.java
index de66286..0401d5f 100644
--- a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/processor/KubernetesDnsServiceCallProcessor.java
+++ b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/processor/KubernetesDnsServiceCallProcessor.java
@@ -56,7 +56,7 @@ public class KubernetesDnsServiceCallProcessor extends ServiceSupport implements
private String ip;
private long port;
- public KubernetesDnsServiceCallProcessor(String name, String namespace, String uri, ExchangePattern exchangePattern, String dnsDomain) {
+ public KubernetesDnsServiceCallProcessor(String name, String namespace, String scheme, String uri, ExchangePattern exchangePattern, String dnsDomain) {
// setup from the provided name which can contain scheme and context-path information as well
String serviceName;
if (name.contains("/")) {
@@ -73,7 +73,7 @@ public class KubernetesDnsServiceCallProcessor extends ServiceSupport implements
this.scheme = ObjectHelper.before(serviceName, ":");
this.name = ObjectHelper.after(serviceName, ":");
} else {
- this.scheme = null;
+ this.scheme = scheme;
this.name = serviceName;
}
http://git-wip-us.apache.org/repos/asf/camel/blob/c00d2c3d/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/processor/KubernetesEnvironmentServiceCallProcessor.java
----------------------------------------------------------------------
diff --git a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/processor/KubernetesEnvironmentServiceCallProcessor.java b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/processor/KubernetesEnvironmentServiceCallProcessor.java
index 5c743b6..ea264e6 100644
--- a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/processor/KubernetesEnvironmentServiceCallProcessor.java
+++ b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/processor/KubernetesEnvironmentServiceCallProcessor.java
@@ -55,7 +55,7 @@ public class KubernetesEnvironmentServiceCallProcessor extends ServiceSupport im
private String ip;
private long port;
- public KubernetesEnvironmentServiceCallProcessor(String name, String namespace, String uri, ExchangePattern exchangePattern) {
+ public KubernetesEnvironmentServiceCallProcessor(String name, String namespace, String scheme, String uri, ExchangePattern exchangePattern) {
// setup from the provided name which can contain scheme and context-path information as well
String serviceName;
if (name.contains("/")) {
@@ -72,7 +72,7 @@ public class KubernetesEnvironmentServiceCallProcessor extends ServiceSupport im
this.scheme = ObjectHelper.before(serviceName, ":");
this.name = ObjectHelper.after(serviceName, ":");
} else {
- this.scheme = null;
+ this.scheme = scheme;
this.name = serviceName;
}
http://git-wip-us.apache.org/repos/asf/camel/blob/c00d2c3d/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/processor/KubernetesProcessorFactory.java
----------------------------------------------------------------------
diff --git a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/processor/KubernetesProcessorFactory.java b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/processor/KubernetesProcessorFactory.java
index 73d9a07..8c1324c 100644
--- a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/processor/KubernetesProcessorFactory.java
+++ b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/processor/KubernetesProcessorFactory.java
@@ -120,8 +120,14 @@ public class KubernetesProcessorFactory implements ProcessorFactory {
lookup = configRef.getLookup();
}
+ // the component is used to configure what the default scheme to use (eg camel component name)
+ String component = config != null ? config.getComponent() : null;
+ if (component == null && configRef != null) {
+ component = configRef.getComponent();
+ }
+
if ("client".equals(lookup)) {
- KubernetesClientServiceCallProcessor processor = new KubernetesClientServiceCallProcessor(name, namespace, uri, mep, kc);
+ KubernetesClientServiceCallProcessor processor = new KubernetesClientServiceCallProcessor(name, namespace, component, uri, mep, kc);
processor.setLoadBalancer(lb);
processor.setServerListStrategy(sl);
return processor;
@@ -130,10 +136,10 @@ public class KubernetesProcessorFactory implements ProcessorFactory {
if (dnsDomain == null && configRef != null) {
dnsDomain = configRef.getDnsDomain();
}
- return new KubernetesDnsServiceCallProcessor(name, namespace, uri, mep, dnsDomain);
+ return new KubernetesDnsServiceCallProcessor(name, namespace, component, uri, mep, dnsDomain);
} else {
// environment is default
- return new KubernetesEnvironmentServiceCallProcessor(name, namespace, uri, mep);
+ return new KubernetesEnvironmentServiceCallProcessor(name, namespace, component, uri, mep);
}
} else {
return null;
http://git-wip-us.apache.org/repos/asf/camel/blob/c00d2c3d/components/camel-ribbon/src/main/java/org/apache/camel/component/ribbon/processor/RibbonProcessorFactory.java
----------------------------------------------------------------------
diff --git a/components/camel-ribbon/src/main/java/org/apache/camel/component/ribbon/processor/RibbonProcessorFactory.java b/components/camel-ribbon/src/main/java/org/apache/camel/component/ribbon/processor/RibbonProcessorFactory.java
index f77557e..8b03a74 100644
--- a/components/camel-ribbon/src/main/java/org/apache/camel/component/ribbon/processor/RibbonProcessorFactory.java
+++ b/components/camel-ribbon/src/main/java/org/apache/camel/component/ribbon/processor/RibbonProcessorFactory.java
@@ -119,9 +119,15 @@ public class RibbonProcessorFactory implements ProcessorFactory {
throw new IllegalArgumentException("Load balancer must be of type: " + IRule.class + " but is of type: " + lb.getClass().getName());
}
+ // the component is used to configure what the default scheme to use (eg camel component name)
+ String component = config != null ? config.getComponent() : null;
+ if (component == null && configRef != null) {
+ component = configRef.getComponent();
+ }
+
Map<String, String> properties = configureProperties(routeContext, config, configRef);
- RibbonServiceCallProcessor processor = new RibbonServiceCallProcessor(name, uri, mep, rc);
+ RibbonServiceCallProcessor processor = new RibbonServiceCallProcessor(name, uri, component, mep, rc);
processor.setRule((IRule) lb);
processor.setServerListStrategy(sl);
processor.setRibbonClientConfig(properties);
http://git-wip-us.apache.org/repos/asf/camel/blob/c00d2c3d/components/camel-ribbon/src/main/java/org/apache/camel/component/ribbon/processor/RibbonServiceCallProcessor.java
----------------------------------------------------------------------
diff --git a/components/camel-ribbon/src/main/java/org/apache/camel/component/ribbon/processor/RibbonServiceCallProcessor.java b/components/camel-ribbon/src/main/java/org/apache/camel/component/ribbon/processor/RibbonServiceCallProcessor.java
index 530fd40..c980cce 100644
--- a/components/camel-ribbon/src/main/java/org/apache/camel/component/ribbon/processor/RibbonServiceCallProcessor.java
+++ b/components/camel-ribbon/src/main/java/org/apache/camel/component/ribbon/processor/RibbonServiceCallProcessor.java
@@ -72,7 +72,7 @@ public class RibbonServiceCallProcessor extends ServiceSupport implements AsyncP
private Map<String, String> ribbonClientConfig;
private SendDynamicProcessor processor;
- public RibbonServiceCallProcessor(String name, String uri, ExchangePattern exchangePattern, RibbonConfiguration configuration) {
+ public RibbonServiceCallProcessor(String name, String uri, String scheme, ExchangePattern exchangePattern, RibbonConfiguration configuration) {
// setup from the provided name which can contain scheme and context-path information as well
String serviceName;
if (name.contains("/")) {
@@ -89,7 +89,7 @@ public class RibbonServiceCallProcessor extends ServiceSupport implements AsyncP
this.scheme = ObjectHelper.before(serviceName, ":");
this.name = ObjectHelper.after(serviceName, ":");
} else {
- this.scheme = null;
+ this.scheme = scheme;
this.name = serviceName;
}