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;
         }