/** * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.camel.spring.boot.cloud; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.camel.Expression; import org.apache.camel.cloud.ServiceLoadBalancer; import org.apache.camel.model.cloud.ServiceCallDefinitionConstants; import org.springframework.boot.context.properties.ConfigurationProperties; @ConfigurationProperties(prefix = "camel.cloud") public class CamelCloudConfigurationProperties { private boolean enabled = true; private ServiceCall serviceCall = new ServiceCall(); private LoadBalancer loadBalancer = new LoadBalancer(); private ServiceDiscovery serviceDiscovery = new ServiceDiscovery(); private ServiceFilter serviceFilter = new ServiceFilter(); private ServiceChooser serviceChooser = new ServiceChooser(); public boolean isEnabled() { return enabled; } public void setEnabled(boolean enabled) { this.enabled = enabled; } public ServiceCall getServiceCall() { return serviceCall; } public LoadBalancer getLoadBalancer() { return loadBalancer; } public ServiceDiscovery getServiceDiscovery() { return serviceDiscovery; } public ServiceFilter getServiceFilter() { return serviceFilter; } public ServiceChooser getServiceChooser() { return serviceChooser; } // ***************************************** // Service Call // ***************************************** public class ServiceCall { /** * The uri of the endpoint to send to. * The uri can be dynamic computed using the {@link org.apache.camel.language.simple.SimpleLanguage} expression. */ private String uri; /** * The component to use. */ private String component = ServiceCallDefinitionConstants.DEFAULT_COMPONENT; /** * A reference to the {@link org.apache.camel.cloud.ServiceDiscovery} to use. */ private String serviceDiscovery; /** * A reference to the {@link org.apache.camel.cloud.ServiceFilter} to use. */ private String serviceFilter; /** * A reference to the {@link org.apache.camel.cloud.ServiceChooser} to use. */ private String serviceChooser; /** * A reference to the {@link ServiceLoadBalancer} to use. */ private String loadBalancer; /** * The {@link Expression} to use. */ private String expression; /** * The {@link Expression} language to use, default is ref */ private String expressionLanguage = "ref"; public String getUri() { return uri; } public void setUri(String uri) { this.uri = uri; } public String getComponent() { return component; } public void setComponent(String component) { this.component = component; } public String getServiceDiscovery() { return serviceDiscovery; } public void setServiceDiscovery(String serviceDiscovery) { this.serviceDiscovery = serviceDiscovery; } public String getServiceFilter() { return serviceFilter; } public void setServiceFilter(String serviceFilter) { this.serviceFilter = serviceFilter; } public String getServiceChooser() { return serviceChooser; } public void setServiceChooser(String serviceChooser) { this.serviceChooser = serviceChooser; } public String getLoadBalancer() { return loadBalancer; } public void setLoadBalancer(String loadBalancer) { this.loadBalancer = loadBalancer; } public String getExpression() { return expression; } public void setExpression(String expression) { this.expression = expression; } public String getExpressionLanguage() { return expressionLanguage; } public void setExpressionLanguage(String expressionLanguage) { this.expressionLanguage = expressionLanguage; } } // ***************************************** // Load Balancer // ***************************************** public static class LoadBalancer { private boolean enabled = true; public boolean isEnabled() { return enabled; } public void setEnabled(boolean enabled) { this.enabled = enabled; } } // ***************************************** // Service Discovery // ***************************************** public static class ServiceDiscoveryConfiguration { private Map<String, List<String>> services = new HashMap<>(); private String cacheTimeout; public Map<String, List<String>> getServices() { return services; } public String getCacheTimeout() { return cacheTimeout; } public void setCacheTimeout(String cacheTimeout) { this.cacheTimeout = cacheTimeout; } } public static class ServiceDiscovery extends ServiceDiscoveryConfiguration { private boolean enabled = true; private Map<String, ServiceDiscoveryConfiguration> configurations = new HashMap<>(); public boolean isEnabled() { return enabled; } public void setEnabled(boolean enabled) { this.enabled = enabled; } public Map<String, ServiceDiscoveryConfiguration> getConfigurations() { return configurations; } } // ***************************************** // Service Filter // ***************************************** public static class ServiceFilterConfiguration { private Map<String, List<String>> blacklist = new HashMap<>(); public Map<String, List<String>> getBlacklist() { return blacklist; } } public static class ServiceFilter extends ServiceFilterConfiguration { private boolean enabled = true; private Map<String, ServiceFilterConfiguration> configurations = new HashMap<>(); public boolean isEnabled() { return enabled; } public void setEnabled(boolean enabled) { this.enabled = enabled; } public Map<String, ServiceFilterConfiguration> getConfigurations() { return configurations; } } // ***************************************** // Service Chooser // ***************************************** public static class ServiceChooser { private boolean enabled = true; public boolean isEnabled() { return enabled; } public void setEnabled(boolean enabled) { this.enabled = enabled; } } }