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/2801efd9 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/2801efd9 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/2801efd9 Branch: refs/heads/remoteServiceCall Commit: 2801efd995690e5ea28eaa97f717409dca3e964b Parents: 1177115 Author: Claus Ibsen <davscl...@apache.org> Authored: Thu May 19 14:53:57 2016 +0200 Committer: Claus Ibsen <davscl...@apache.org> Committed: Mon May 23 09:28:34 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/2801efd9/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/2801efd9/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/2801efd9/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/2801efd9/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/2801efd9/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/2801efd9/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/2801efd9/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/2801efd9/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; }