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.XmlRootElement;
023import javax.xml.bind.annotation.XmlTransient;
024
025import org.apache.camel.spi.Metadata;
026import org.apache.camel.support.jsse.SSLContextParameters;
027
028@Metadata(label = "routing,cloud,service-discovery")
029@XmlRootElement(name = "consulServiceDiscovery")
030@XmlAccessorType(XmlAccessType.FIELD)
031public class ConsulServiceCallServiceDiscoveryConfiguration extends ServiceCallServiceDiscoveryConfiguration {
032    @XmlAttribute
033    private String url;
034    @XmlAttribute
035    private String datacenter;
036    @XmlAttribute
037    @Metadata(label = "security")
038    private String aclToken;
039    @XmlAttribute
040    @Metadata(label = "security")
041    private String userName;
042    @XmlAttribute
043    @Metadata(label = "security")
044    private String password;
045    @XmlAttribute
046    private Long connectTimeoutMillis;
047    @XmlAttribute
048    private Long readTimeoutMillis;
049    @XmlAttribute
050    private Long writeTimeoutMillis;
051    @XmlAttribute
052    @Metadata(defaultValue = "10")
053    private Integer blockSeconds = 10;
054    @XmlTransient
055    private SSLContextParameters sslContextParameters;
056
057    public ConsulServiceCallServiceDiscoveryConfiguration() {
058        this(null);
059    }
060
061    public ConsulServiceCallServiceDiscoveryConfiguration(ServiceCallDefinition parent) {
062        super(parent, "consul-service-discovery");
063    }
064
065    // *************************************************************************
066    // Getter/Setter
067    // *************************************************************************
068
069    /**
070     * The Consul agent URL
071     */
072    public String getUrl() {
073        return url;
074    }
075
076    public void setUrl(String url) {
077        this.url = url;
078    }
079
080    public String getDatacenter() {
081        return datacenter;
082    }
083
084    /**
085     * The data center
086     */
087    public void setDatacenter(String datacenter) {
088        this.datacenter = datacenter;
089    }
090
091    public String getAclToken() {
092        return aclToken;
093    }
094
095    /**
096     * Sets the ACL token to be used with Consul
097     */
098    public void setAclToken(String aclToken) {
099        this.aclToken = aclToken;
100    }
101
102    public String getUserName() {
103        return userName;
104    }
105
106    /**
107     * Sets the username to be used for basic authentication
108     */
109    public void setUserName(String userName) {
110        this.userName = userName;
111    }
112
113    public String getPassword() {
114        return password;
115    }
116
117    /**
118     * Sets the password to be used for basic authentication
119     */
120    public void setPassword(String password) {
121        this.password = password;
122    }
123
124    public Long getConnectTimeoutMillis() {
125        return connectTimeoutMillis;
126    }
127
128    /**
129     * Connect timeout for OkHttpClient
130     */
131    public void setConnectTimeoutMillis(Long connectTimeoutMillis) {
132        this.connectTimeoutMillis = connectTimeoutMillis;
133    }
134
135    public Long getReadTimeoutMillis() {
136        return readTimeoutMillis;
137    }
138
139    /**
140     * Read timeout for OkHttpClient
141     */
142    public void setReadTimeoutMillis(Long readTimeoutMillis) {
143        this.readTimeoutMillis = readTimeoutMillis;
144    }
145
146    public Long getWriteTimeoutMillis() {
147        return writeTimeoutMillis;
148    }
149
150    /**
151     * Write timeout for OkHttpClient
152     */
153    public void setWriteTimeoutMillis(Long writeTimeoutMillis) {
154        this.writeTimeoutMillis = writeTimeoutMillis;
155    }
156
157    public Integer getBlockSeconds() {
158        return blockSeconds;
159    }
160
161    /**
162     * The seconds to wait for a watch event, default 10 seconds
163     */
164    public void setBlockSeconds(Integer blockSeconds) {
165        this.blockSeconds = blockSeconds;
166    }
167
168    public SSLContextParameters getSslContextParameters() {
169        return sslContextParameters;
170    }
171
172    /**
173     * To configure security using SSLContextParameters.
174     */
175    public void setSslContextParameters(SSLContextParameters sslContextParameters) {
176        this.sslContextParameters = sslContextParameters;
177    }
178
179    // *************************************************************************
180    // Fluent API
181    // *************************************************************************
182
183    /**
184     * The Consul agent URL
185     */
186    public ConsulServiceCallServiceDiscoveryConfiguration url(String url) {
187        setUrl(url);
188        return this;
189    }
190
191    /**
192     * The data center
193     */
194    public ConsulServiceCallServiceDiscoveryConfiguration dataCenter(String dc) {
195        setDatacenter(dc);
196        return this;
197    }
198
199    /**
200     * Sets the ACL token to be used with Consul
201     */
202    public ConsulServiceCallServiceDiscoveryConfiguration aclToken(String aclToken) {
203        setAclToken(aclToken);
204        return this;
205    }
206
207    /**
208     * Sets the username to be used for basic authentication
209     */
210    public ConsulServiceCallServiceDiscoveryConfiguration userName(String userName) {
211        setUserName(userName);
212        return this;
213    }
214
215    /**
216     * Sets the password to be used for basic authentication
217     */
218    public ConsulServiceCallServiceDiscoveryConfiguration password(String password) {
219        setPassword(password);
220        return this;
221    }
222
223    /**
224     * Connect timeout for OkHttpClient
225     */
226    public ConsulServiceCallServiceDiscoveryConfiguration connectTimeoutMillis(Long connectTimeoutMillis) {
227        setConnectTimeoutMillis(connectTimeoutMillis);
228        return this;
229    }
230
231    /**
232     * Read timeout for OkHttpClient
233     */
234    public ConsulServiceCallServiceDiscoveryConfiguration readTimeoutMillis(Long readTimeoutMillis) {
235        setReadTimeoutMillis(readTimeoutMillis);
236        return this;
237    }
238
239    /**
240     * Write timeout for OkHttpClient
241     */
242    public ConsulServiceCallServiceDiscoveryConfiguration writeTimeoutMillis(Long writeTimeoutMillis) {
243        setWriteTimeoutMillis(writeTimeoutMillis);
244        return this;
245    }
246
247    /**
248     * The seconds to wait for a watch event, default 10 seconds
249     */
250    public ConsulServiceCallServiceDiscoveryConfiguration blockSeconds(Integer blockSeconds) {
251        setBlockSeconds(blockSeconds);
252        return this;
253    }
254
255    /**
256     * To configure security using SSLContextParameters.
257     */
258    public ConsulServiceCallServiceDiscoveryConfiguration sslContextParameters(SSLContextParameters sslContextParameters) {
259        setSslContextParameters(sslContextParameters);
260        return this;
261    }
262}