001/*
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements.  See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License.  You may obtain a copy of the License at
008 *
009 *      http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017package org.apache.camel.model.cloud;
018
019import javax.xml.bind.annotation.XmlAccessType;
020import javax.xml.bind.annotation.XmlAccessorType;
021import javax.xml.bind.annotation.XmlAttribute;
022import javax.xml.bind.annotation.XmlElement;
023import javax.xml.bind.annotation.XmlElements;
024import javax.xml.bind.annotation.XmlRootElement;
025import javax.xml.bind.annotation.XmlTransient;
026
027import org.apache.camel.ExchangePattern;
028import org.apache.camel.Expression;
029import org.apache.camel.builder.ExpressionClause;
030import org.apache.camel.cloud.ServiceChooser;
031import org.apache.camel.cloud.ServiceDiscovery;
032import org.apache.camel.cloud.ServiceFilter;
033import org.apache.camel.cloud.ServiceLoadBalancer;
034import org.apache.camel.model.NoOutputDefinition;
035import org.apache.camel.spi.Metadata;
036
037/**
038 * To call remote services
039 */
040@Metadata(label = "eip,routing")
041@XmlRootElement(name = "serviceCall")
042@XmlAccessorType(XmlAccessType.FIELD)
043public class ServiceCallDefinition extends NoOutputDefinition<ServiceCallDefinition> {
044    @XmlAttribute
045    @Metadata(required = true)
046    private String name;
047    @XmlAttribute
048    private String uri;
049    @XmlAttribute
050    @Metadata(defaultValue = ServiceCallDefinitionConstants.DEFAULT_COMPONENT)
051    private String component;
052    @XmlAttribute
053    private ExchangePattern pattern;
054    @XmlAttribute
055    private String configurationRef;
056    @XmlAttribute
057    private String serviceDiscoveryRef;
058    @XmlTransient
059    private ServiceDiscovery serviceDiscovery;
060    @XmlAttribute
061    private String serviceFilterRef;
062    @XmlTransient
063    private ServiceFilter serviceFilter;
064    @XmlAttribute
065    private String serviceChooserRef;
066    @XmlTransient
067    private ServiceChooser serviceChooser;
068    @XmlAttribute
069    private String loadBalancerRef;
070    @XmlTransient
071    private ServiceLoadBalancer loadBalancer;
072    @XmlAttribute
073    private String expressionRef;
074    @XmlTransient
075    private Expression expression;
076
077    @XmlElements({@XmlElement(name = "cachingServiceDiscovery", type = CachingServiceCallServiceDiscoveryConfiguration.class),
078                  @XmlElement(name = "combinedServiceDiscovery", type = CombinedServiceCallServiceDiscoveryConfiguration.class),
079                  @XmlElement(name = "consulServiceDiscovery", type = ConsulServiceCallServiceDiscoveryConfiguration.class),
080                  @XmlElement(name = "dnsServiceDiscovery", type = DnsServiceCallServiceDiscoveryConfiguration.class),
081                  @XmlElement(name = "etcdServiceDiscovery", type = EtcdServiceCallServiceDiscoveryConfiguration.class),
082                  @XmlElement(name = "kubernetesServiceDiscovery", type = KubernetesServiceCallServiceDiscoveryConfiguration.class),
083                  @XmlElement(name = "staticServiceDiscovery", type = StaticServiceCallServiceDiscoveryConfiguration.class),
084                  @XmlElement(name = "zookeeperServiceDiscovery", type = ZooKeeperServiceCallServiceDiscoveryConfiguration.class)})
085    private ServiceCallServiceDiscoveryConfiguration serviceDiscoveryConfiguration;
086
087    @XmlElements({@XmlElement(name = "blacklistServiceFilter", type = BlacklistServiceCallServiceFilterConfiguration.class),
088                  @XmlElement(name = "combinedServiceFilter", type = CombinedServiceCallServiceFilterConfiguration.class),
089                  @XmlElement(name = "customServiceFilter", type = CustomServiceCallServiceFilterConfiguration.class),
090                  @XmlElement(name = "healthyServiceFilter", type = HealthyServiceCallServiceFilterConfiguration.class),
091                  @XmlElement(name = "passThroughServiceFilter", type = PassThroughServiceCallServiceFilterConfiguration.class)})
092    private ServiceCallServiceFilterConfiguration serviceFilterConfiguration;
093
094    @XmlElements({@XmlElement(name = "ribbonLoadBalancer", type = RibbonServiceCallServiceLoadBalancerConfiguration.class),
095                  @XmlElement(name = "defaultLoadBalancer", type = DefaultServiceCallServiceLoadBalancerConfiguration.class)})
096    private ServiceCallServiceLoadBalancerConfiguration loadBalancerConfiguration;
097
098    @XmlElements({@XmlElement(name = "expressionConfiguration", type = ServiceCallExpressionConfiguration.class)})
099    private ServiceCallExpressionConfiguration expressionConfiguration;
100
101    public ServiceCallDefinition() {
102    }
103
104    @Override
105    public String toString() {
106        return "ServiceCall[" + name + "]";
107    }
108
109    @Override
110    public String getShortName() {
111        return "serviceCall";
112    }
113
114    @Override
115    public String getLabel() {
116        return "serviceCall";
117    }
118
119    // *****************************
120    // Properties
121    // *****************************
122
123    public String getName() {
124        return name;
125    }
126
127    /**
128     * Sets the name of the service to use
129     */
130    public void setName(String name) {
131        this.name = name;
132    }
133
134    public ExchangePattern getPattern() {
135        return pattern;
136    }
137
138    /**
139     * Sets the optional {@link ExchangePattern} used to invoke this endpoint
140     */
141    public void setPattern(ExchangePattern pattern) {
142        this.pattern = pattern;
143    }
144
145    public String getConfigurationRef() {
146        return configurationRef;
147    }
148
149    /**
150     * Refers to a ServiceCall configuration to use
151     */
152    public void setConfigurationRef(String configurationRef) {
153        this.configurationRef = configurationRef;
154    }
155
156    public String getUri() {
157        return uri;
158    }
159
160    /**
161     * The uri of the endpoint to send to. The uri can be dynamic computed using
162     * the {@link org.apache.camel.language.simple.SimpleLanguage} expression.
163     */
164    public void setUri(String uri) {
165        this.uri = uri;
166    }
167
168    public String getComponent() {
169        return component;
170    }
171
172    /**
173     * The component to use.
174     */
175    public void setComponent(String component) {
176        this.component = component;
177    }
178
179    public String getServiceDiscoveryRef() {
180        return serviceDiscoveryRef;
181    }
182
183    /**
184     * Sets a reference to a custom {@link ServiceDiscovery} to use.
185     */
186    public void setServiceDiscoveryRef(String serviceDiscoveryRef) {
187        this.serviceDiscoveryRef = serviceDiscoveryRef;
188    }
189
190    public ServiceDiscovery getServiceDiscovery() {
191        return serviceDiscovery;
192    }
193
194    /**
195     * Sets a custom {@link ServiceDiscovery} to use.
196     */
197    public void setServiceDiscovery(ServiceDiscovery serviceDiscovery) {
198        this.serviceDiscovery = serviceDiscovery;
199    }
200
201    public String getServiceFilterRef() {
202        return serviceFilterRef;
203    }
204
205    /**
206     * Sets a reference to a custom {@link ServiceFilter} to use.
207     */
208    public void setServiceFilterRef(String serviceFilterRef) {
209        this.serviceFilterRef = serviceFilterRef;
210    }
211
212    public ServiceFilter getServiceFilter() {
213        return serviceFilter;
214    }
215
216    /**
217     * Sets a custom {@link ServiceFilter} to use.
218     */
219    public void setServiceFilter(ServiceFilter serviceFilter) {
220        this.serviceFilter = serviceFilter;
221    }
222
223    public String getServiceChooserRef() {
224        return serviceChooserRef;
225    }
226
227    /**
228     * Sets a reference to a custom {@link ServiceChooser} to use.
229     */
230    public void setServiceChooserRef(String serviceChooserRef) {
231        this.serviceChooserRef = serviceChooserRef;
232    }
233
234    public ServiceChooser getServiceChooser() {
235        return serviceChooser;
236    }
237
238    /**
239     * Sets a custom {@link ServiceChooser} to use.
240     */
241    public void setServiceChooser(ServiceChooser serviceChooser) {
242        this.serviceChooser = serviceChooser;
243    }
244
245    public String getLoadBalancerRef() {
246        return loadBalancerRef;
247    }
248
249    /**
250     * Sets a reference to a custom {@link ServiceLoadBalancer} to use.
251     */
252    public void setLoadBalancerRef(String loadBalancerRef) {
253        this.loadBalancerRef = loadBalancerRef;
254    }
255
256    public ServiceLoadBalancer getLoadBalancer() {
257        return loadBalancer;
258    }
259
260    /**
261     * Sets a custom {@link ServiceLoadBalancer} to use.
262     */
263    public void setLoadBalancer(ServiceLoadBalancer loadBalancer) {
264        this.loadBalancer = loadBalancer;
265    }
266
267    public String getExpressionRef() {
268        return expressionRef;
269    }
270
271    /**
272     * Set a reference to a custom {@link Expression} to use.
273     */
274    public void setExpressionRef(String expressionRef) {
275        this.expressionRef = expressionRef;
276    }
277
278    public Expression getExpression() {
279        return expression;
280    }
281
282    /**
283     * Set a custom {@link Expression} to use.
284     */
285    public void setExpression(Expression expression) {
286        this.expression = expression;
287    }
288
289    public ServiceCallServiceDiscoveryConfiguration getServiceDiscoveryConfiguration() {
290        return serviceDiscoveryConfiguration;
291    }
292
293    /**
294     * Configures the ServiceDiscovery using the given configuration.
295     */
296    public void setServiceDiscoveryConfiguration(ServiceCallServiceDiscoveryConfiguration serviceDiscoveryConfiguration) {
297        this.serviceDiscoveryConfiguration = serviceDiscoveryConfiguration;
298    }
299
300    public ServiceCallServiceFilterConfiguration getServiceFilterConfiguration() {
301        return serviceFilterConfiguration;
302    }
303
304    /**
305     * Configures the ServiceFilter using the given configuration.
306     */
307    public void setServiceFilterConfiguration(ServiceCallServiceFilterConfiguration serviceFilterConfiguration) {
308        this.serviceFilterConfiguration = serviceFilterConfiguration;
309    }
310
311    public ServiceCallServiceLoadBalancerConfiguration getLoadBalancerConfiguration() {
312        return loadBalancerConfiguration;
313    }
314
315    /**
316     * Configures the LoadBalancer using the given configuration.
317     */
318    public void setLoadBalancerConfiguration(ServiceCallServiceLoadBalancerConfiguration loadBalancerConfiguration) {
319        this.loadBalancerConfiguration = loadBalancerConfiguration;
320    }
321
322    public ServiceCallExpressionConfiguration getExpressionConfiguration() {
323        return expressionConfiguration;
324    }
325
326    /**
327     * Configures the Expression using the given configuration.
328     */
329    public void setExpressionConfiguration(ServiceCallExpressionConfiguration expressionConfiguration) {
330        this.expressionConfiguration = expressionConfiguration;
331    }
332
333    // *****************************
334    // Fluent API
335    // *****************************
336
337    /**
338     * Sets the optional {@link ExchangePattern} used to invoke this endpoint
339     */
340    public ServiceCallDefinition pattern(ExchangePattern pattern) {
341        setPattern(pattern);
342        return this;
343    }
344
345    /**
346     * Sets the name of the service to use
347     */
348    public ServiceCallDefinition name(String name) {
349        setName(name);
350        return this;
351    }
352
353    /**
354     * Sets the uri of the service to use
355     */
356    public ServiceCallDefinition uri(String uri) {
357        setUri(uri);
358        return this;
359    }
360
361    /**
362     * Sets the component to use
363     */
364    public ServiceCallDefinition component(String component) {
365        setComponent(component);
366        return this;
367    }
368
369    /**
370     * Refers to a ServiceCall configuration to use
371     */
372    public ServiceCallDefinition serviceCallConfiguration(String ref) {
373        configurationRef = ref;
374        return this;
375    }
376
377    /**
378     * Sets a reference to a custom {@link ServiceDiscovery} to use.
379     */
380    public ServiceCallDefinition serviceDiscovery(String serviceDiscoveryRef) {
381        setServiceDiscoveryRef(serviceDiscoveryRef);
382        return this;
383    }
384
385    /**
386     * Sets a custom {@link ServiceDiscovery} to use.
387     */
388    public ServiceCallDefinition serviceDiscovery(ServiceDiscovery serviceDiscovery) {
389        setServiceDiscovery(serviceDiscovery);
390        return this;
391    }
392
393    /**
394     * Sets a reference to a custom {@link ServiceFilter} to use.
395     */
396    public ServiceCallDefinition serviceFilter(String serviceFilterRef) {
397        setServiceDiscoveryRef(serviceDiscoveryRef);
398        return this;
399    }
400
401    /**
402     * Sets a custom {@link ServiceFilter} to use.
403     */
404    public ServiceCallDefinition serviceFilter(ServiceFilter serviceFilter) {
405        setServiceFilter(serviceFilter);
406        return this;
407    }
408
409    /**
410     * Sets a reference to a custom {@link ServiceChooser} to use.
411     */
412    public ServiceCallDefinition serviceChooser(String serviceChooserRef) {
413        setServiceChooserRef(serviceChooserRef);
414        return this;
415    }
416
417    /**
418     * Sets a custom {@link ServiceChooser} to use.
419     */
420    public ServiceCallDefinition serviceChooser(ServiceChooser serviceChooser) {
421        setServiceChooser(serviceChooser);
422        return this;
423    }
424
425    /**
426     * Sets a reference to a custom {@link ServiceLoadBalancer} to use.
427     */
428    public ServiceCallDefinition loadBalancer(String loadBalancerRef) {
429        setLoadBalancerRef(loadBalancerRef);
430        return this;
431    }
432
433    /**
434     * Sets a custom {@link ServiceLoadBalancer} to use.
435     */
436    public ServiceCallDefinition loadBalancer(ServiceLoadBalancer loadBalancer) {
437        setLoadBalancer(loadBalancer);
438        return this;
439    }
440
441    /**
442     * Sets a reference to a custom {@link Expression} to use.
443     */
444    public ServiceCallDefinition expression(String expressionRef) {
445        setExpressionRef(loadBalancerRef);
446        return this;
447    }
448
449    /**
450     * Sets a custom {@link Expression} to use.
451     */
452    public ServiceCallDefinition expression(Expression expression) {
453        setExpression(expression);
454        return this;
455    }
456
457    /**
458     * Sets a custom {@link Expression} to use through an expression builder
459     * clause.
460     *
461     * @return a expression builder clause to set the body
462     */
463    public ExpressionClause<ServiceCallDefinition> expression() {
464        ExpressionClause<ServiceCallDefinition> clause = new ExpressionClause<>(this);
465        setExpression(clause);
466
467        return clause;
468    }
469
470    /**
471     * Configures the ServiceDiscovery using the given configuration.
472     */
473    public ServiceCallDefinition serviceDiscoveryConfiguration(ServiceCallServiceDiscoveryConfiguration serviceDiscoveryConfiguration) {
474        setServiceDiscoveryConfiguration(serviceDiscoveryConfiguration);
475        return this;
476    }
477
478    /**
479     * Configures the ServiceFilter using the given configuration.
480     */
481    public ServiceCallDefinition serviceFilterConfiguration(ServiceCallServiceFilterConfiguration serviceFilterConfiguration) {
482        setServiceFilterConfiguration(serviceFilterConfiguration);
483        return this;
484    }
485
486    /**
487     * Configures the LoadBalancer using the given configuration.
488     */
489    public ServiceCallDefinition loadBalancerConfiguration(ServiceCallServiceLoadBalancerConfiguration loadBalancerConfiguration) {
490        setLoadBalancerConfiguration(loadBalancerConfiguration);
491        return this;
492    }
493
494    /**
495     * Configures the Expression using the given configuration.
496     */
497    public ServiceCallDefinition expressionConfiguration(ServiceCallExpressionConfiguration expressionConfiguration) {
498        setExpressionConfiguration(expressionConfiguration);
499        return this;
500    }
501
502    // *****************************
503    // Shortcuts - ServiceDiscovery
504    // *****************************
505
506    public CachingServiceCallServiceDiscoveryConfiguration cachingServiceDiscovery() {
507        CachingServiceCallServiceDiscoveryConfiguration conf = new CachingServiceCallServiceDiscoveryConfiguration(this);
508        setServiceDiscoveryConfiguration(conf);
509
510        return conf;
511    }
512
513    public ConsulServiceCallServiceDiscoveryConfiguration consulServiceDiscovery() {
514        ConsulServiceCallServiceDiscoveryConfiguration conf = new ConsulServiceCallServiceDiscoveryConfiguration(this);
515        setServiceDiscoveryConfiguration(conf);
516
517        return conf;
518    }
519
520    public ServiceCallDefinition consulServiceDiscovery(String url) {
521        ConsulServiceCallServiceDiscoveryConfiguration conf = new ConsulServiceCallServiceDiscoveryConfiguration(this);
522        conf.setUrl(url);
523
524        setServiceDiscoveryConfiguration(conf);
525
526        return this;
527    }
528
529    public DnsServiceCallServiceDiscoveryConfiguration dnsServiceDiscovery() {
530        DnsServiceCallServiceDiscoveryConfiguration conf = new DnsServiceCallServiceDiscoveryConfiguration(this);
531        setServiceDiscoveryConfiguration(conf);
532
533        return conf;
534    }
535
536    public ServiceCallDefinition dnsServiceDiscovery(String domain) {
537        DnsServiceCallServiceDiscoveryConfiguration conf = new DnsServiceCallServiceDiscoveryConfiguration(this);
538        conf.setDomain(domain);
539
540        setServiceDiscoveryConfiguration(conf);
541
542        return this;
543    }
544
545    public ServiceCallDefinition dnsServiceDiscovery(String domain, String protocol) {
546        DnsServiceCallServiceDiscoveryConfiguration conf = new DnsServiceCallServiceDiscoveryConfiguration(this);
547        conf.setDomain(domain);
548        conf.setProto(protocol);
549
550        setServiceDiscoveryConfiguration(conf);
551
552        return this;
553    }
554
555    public EtcdServiceCallServiceDiscoveryConfiguration etcdServiceDiscovery() {
556        EtcdServiceCallServiceDiscoveryConfiguration conf = new EtcdServiceCallServiceDiscoveryConfiguration(this);
557        setServiceDiscoveryConfiguration(conf);
558
559        return conf;
560    }
561
562    public ServiceCallDefinition etcdServiceDiscovery(String uris) {
563        EtcdServiceCallServiceDiscoveryConfiguration conf = new EtcdServiceCallServiceDiscoveryConfiguration(this);
564        conf.setUris(uris);
565
566        setServiceDiscoveryConfiguration(conf);
567
568        return this;
569    }
570
571    public ServiceCallDefinition etcdServiceDiscovery(String uris, String servicePath) {
572        EtcdServiceCallServiceDiscoveryConfiguration conf = new EtcdServiceCallServiceDiscoveryConfiguration(this);
573        conf.setUris(uris);
574        conf.setServicePath(servicePath);
575
576        setServiceDiscoveryConfiguration(conf);
577
578        return this;
579    }
580
581    public KubernetesServiceCallServiceDiscoveryConfiguration kubernetesServiceDiscovery() {
582        KubernetesServiceCallServiceDiscoveryConfiguration conf = new KubernetesServiceCallServiceDiscoveryConfiguration(this);
583        setServiceDiscoveryConfiguration(conf);
584
585        return conf;
586    }
587
588    public KubernetesServiceCallServiceDiscoveryConfiguration kubernetesClientServiceDiscovery() {
589        KubernetesServiceCallServiceDiscoveryConfiguration conf = new KubernetesServiceCallServiceDiscoveryConfiguration(this);
590        conf.setLookup("client");
591
592        setServiceDiscoveryConfiguration(conf);
593
594        return conf;
595    }
596
597    public ServiceCallDefinition kubernetesEnvServiceDiscovery() {
598        KubernetesServiceCallServiceDiscoveryConfiguration conf = new KubernetesServiceCallServiceDiscoveryConfiguration(this);
599        conf.setLookup("environment");
600
601        setServiceDiscoveryConfiguration(conf);
602
603        return this;
604    }
605
606    public ServiceCallDefinition kubernetesDnsServiceDiscovery(String namespace, String domain) {
607        KubernetesServiceCallServiceDiscoveryConfiguration conf = new KubernetesServiceCallServiceDiscoveryConfiguration(this);
608        conf.setLookup("dns");
609        conf.setNamespace(namespace);
610        conf.setDnsDomain(domain);
611
612        setServiceDiscoveryConfiguration(conf);
613
614        return this;
615    }
616
617    public CombinedServiceCallServiceDiscoveryConfiguration combinedServiceDiscovery() {
618        CombinedServiceCallServiceDiscoveryConfiguration conf = new CombinedServiceCallServiceDiscoveryConfiguration(this);
619        setServiceDiscoveryConfiguration(conf);
620
621        return conf;
622    }
623
624    public StaticServiceCallServiceDiscoveryConfiguration staticServiceDiscovery() {
625        StaticServiceCallServiceDiscoveryConfiguration conf = new StaticServiceCallServiceDiscoveryConfiguration(this);
626        setServiceDiscoveryConfiguration(conf);
627
628        return conf;
629    }
630
631    public ZooKeeperServiceCallServiceDiscoveryConfiguration zookeeperServiceDiscovery() {
632        ZooKeeperServiceCallServiceDiscoveryConfiguration conf = new ZooKeeperServiceCallServiceDiscoveryConfiguration(this);
633        setServiceDiscoveryConfiguration(conf);
634
635        return conf;
636    }
637
638    public ServiceCallDefinition zookeeperServiceDiscovery(String nodes, String basePath) {
639        ZooKeeperServiceCallServiceDiscoveryConfiguration conf = new ZooKeeperServiceCallServiceDiscoveryConfiguration(this);
640        conf.setNodes(nodes);
641        conf.setBasePath(basePath);
642
643        setServiceDiscoveryConfiguration(conf);
644
645        return this;
646    }
647
648    // *****************************
649    // Shortcuts - ServiceFilter
650    // *****************************
651
652    public ServiceCallDefinition healthyFilter() {
653        HealthyServiceCallServiceFilterConfiguration conf = new HealthyServiceCallServiceFilterConfiguration(this);
654        setServiceFilterConfiguration(conf);
655
656        return this;
657    }
658
659    public ServiceCallDefinition passThroughFilter() {
660        PassThroughServiceCallServiceFilterConfiguration conf = new PassThroughServiceCallServiceFilterConfiguration(this);
661        setServiceFilterConfiguration(conf);
662
663        return this;
664    }
665
666    public CombinedServiceCallServiceFilterConfiguration combinedFilter() {
667        CombinedServiceCallServiceFilterConfiguration conf = new CombinedServiceCallServiceFilterConfiguration(this);
668        setServiceFilterConfiguration(conf);
669
670        return conf;
671    }
672
673    public BlacklistServiceCallServiceFilterConfiguration blacklistFilter() {
674        BlacklistServiceCallServiceFilterConfiguration conf = new BlacklistServiceCallServiceFilterConfiguration();
675        setServiceFilterConfiguration(conf);
676
677        return conf;
678    }
679
680    public ServiceCallDefinition customFilter(String serviceFilter) {
681        CustomServiceCallServiceFilterConfiguration conf = new CustomServiceCallServiceFilterConfiguration();
682        conf.setServiceFilterRef(serviceFilter);
683
684        setServiceFilterConfiguration(conf);
685
686        return this;
687    }
688
689    public ServiceCallDefinition customFilter(ServiceFilter serviceFilter) {
690        CustomServiceCallServiceFilterConfiguration conf = new CustomServiceCallServiceFilterConfiguration();
691        conf.setServiceFilter(serviceFilter);
692
693        setServiceFilterConfiguration(conf);
694
695        return this;
696    }
697
698    // *****************************
699    // Shortcuts - LoadBalancer
700    // *****************************
701
702    public ServiceCallDefinition defaultLoadBalancer() {
703        DefaultServiceCallServiceLoadBalancerConfiguration conf = new DefaultServiceCallServiceLoadBalancerConfiguration();
704        setLoadBalancerConfiguration(conf);
705
706        return this;
707    }
708
709    public ServiceCallDefinition ribbonLoadBalancer() {
710        RibbonServiceCallServiceLoadBalancerConfiguration conf = new RibbonServiceCallServiceLoadBalancerConfiguration(this);
711        setLoadBalancerConfiguration(conf);
712
713        return this;
714    }
715
716    public ServiceCallDefinition ribbonLoadBalancer(String clientName) {
717        RibbonServiceCallServiceLoadBalancerConfiguration conf = new RibbonServiceCallServiceLoadBalancerConfiguration(this);
718        conf.setClientName(clientName);
719
720        setLoadBalancerConfiguration(conf);
721
722        return this;
723    }
724
725}