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    @Metadata(javaType = "java.lang.Long")
047    private String connectTimeoutMillis;
048    @XmlAttribute
049    @Metadata(javaType = "java.lang.Long")
050    private String readTimeoutMillis;
051    @XmlAttribute
052    @Metadata(javaType = "java.lang.Long")
053    private String writeTimeoutMillis;
054    @XmlAttribute
055    @Metadata(javaType = "java.lang.Integer", defaultValue = "10")
056    private String blockSeconds = Integer.toString(10);
057    @XmlTransient
058    private SSLContextParameters sslContextParameters;
059
060    public ConsulServiceCallServiceDiscoveryConfiguration() {
061        this(null);
062    }
063
064    public ConsulServiceCallServiceDiscoveryConfiguration(ServiceCallDefinition parent) {
065        super(parent, "consul-service-discovery");
066    }
067
068    // *************************************************************************
069    // Getter/Setter
070    // *************************************************************************
071
072    /**
073     * The Consul agent URL
074     */
075    public String getUrl() {
076        return url;
077    }
078
079    public void setUrl(String url) {
080        this.url = url;
081    }
082
083    public String getDatacenter() {
084        return datacenter;
085    }
086
087    /**
088     * The data center
089     */
090    public void setDatacenter(String datacenter) {
091        this.datacenter = datacenter;
092    }
093
094    public String getAclToken() {
095        return aclToken;
096    }
097
098    /**
099     * Sets the ACL token to be used with Consul
100     */
101    public void setAclToken(String aclToken) {
102        this.aclToken = aclToken;
103    }
104
105    public String getUserName() {
106        return userName;
107    }
108
109    /**
110     * Sets the username to be used for basic authentication
111     */
112    public void setUserName(String userName) {
113        this.userName = userName;
114    }
115
116    public String getPassword() {
117        return password;
118    }
119
120    /**
121     * Sets the password to be used for basic authentication
122     */
123    public void setPassword(String password) {
124        this.password = password;
125    }
126
127    public String getConnectTimeoutMillis() {
128        return connectTimeoutMillis;
129    }
130
131    /**
132     * Connect timeout for OkHttpClient
133     */
134    public void setConnectTimeoutMillis(String connectTimeoutMillis) {
135        this.connectTimeoutMillis = connectTimeoutMillis;
136    }
137
138    public String getReadTimeoutMillis() {
139        return readTimeoutMillis;
140    }
141
142    /**
143     * Read timeout for OkHttpClient
144     */
145    public void setReadTimeoutMillis(String readTimeoutMillis) {
146        this.readTimeoutMillis = readTimeoutMillis;
147    }
148
149    public String getWriteTimeoutMillis() {
150        return writeTimeoutMillis;
151    }
152
153    /**
154     * Write timeout for OkHttpClient
155     */
156    public void setWriteTimeoutMillis(String writeTimeoutMillis) {
157        this.writeTimeoutMillis = writeTimeoutMillis;
158    }
159
160    public String getBlockSeconds() {
161        return blockSeconds;
162    }
163
164    /**
165     * The seconds to wait for a watch event, default 10 seconds
166     */
167    public void setBlockSeconds(String blockSeconds) {
168        this.blockSeconds = blockSeconds;
169    }
170
171    public SSLContextParameters getSslContextParameters() {
172        return sslContextParameters;
173    }
174
175    /**
176     * To configure security using SSLContextParameters.
177     */
178    public void setSslContextParameters(SSLContextParameters sslContextParameters) {
179        this.sslContextParameters = sslContextParameters;
180    }
181
182    // *************************************************************************
183    // Fluent API
184    // *************************************************************************
185
186    /**
187     * The Consul agent URL
188     */
189    public ConsulServiceCallServiceDiscoveryConfiguration url(String url) {
190        setUrl(url);
191        return this;
192    }
193
194    /**
195     * The data center
196     */
197    public ConsulServiceCallServiceDiscoveryConfiguration dataCenter(String dc) {
198        setDatacenter(dc);
199        return this;
200    }
201
202    /**
203     * Sets the ACL token to be used with Consul
204     */
205    public ConsulServiceCallServiceDiscoveryConfiguration aclToken(String aclToken) {
206        setAclToken(aclToken);
207        return this;
208    }
209
210    /**
211     * Sets the username to be used for basic authentication
212     */
213    public ConsulServiceCallServiceDiscoveryConfiguration userName(String userName) {
214        setUserName(userName);
215        return this;
216    }
217
218    /**
219     * Sets the password to be used for basic authentication
220     */
221    public ConsulServiceCallServiceDiscoveryConfiguration password(String password) {
222        setPassword(password);
223        return this;
224    }
225
226    /**
227     * Connect timeout for OkHttpClient
228     */
229    public ConsulServiceCallServiceDiscoveryConfiguration connectTimeoutMillis(long connectTimeoutMillis) {
230        return connectTimeoutMillis(Long.toString(connectTimeoutMillis));
231    }
232
233    /**
234     * Connect timeout for OkHttpClient
235     */
236    public ConsulServiceCallServiceDiscoveryConfiguration connectTimeoutMillis(String connectTimeoutMillis) {
237        setConnectTimeoutMillis(connectTimeoutMillis);
238        return this;
239    }
240
241    /**
242     * Read timeout for OkHttpClient
243     */
244    public ConsulServiceCallServiceDiscoveryConfiguration readTimeoutMillis(Long readTimeoutMillis) {
245        return readTimeoutMillis(Long.toString(readTimeoutMillis));
246    }
247
248    /**
249     * Read timeout for OkHttpClient
250     */
251    public ConsulServiceCallServiceDiscoveryConfiguration readTimeoutMillis(String readTimeoutMillis) {
252        setReadTimeoutMillis(readTimeoutMillis);
253        return this;
254    }
255
256    /**
257     * Write timeout for OkHttpClient
258     */
259    public ConsulServiceCallServiceDiscoveryConfiguration writeTimeoutMillis(Long writeTimeoutMillis) {
260        return writeTimeoutMillis(Long.toString(writeTimeoutMillis));
261    }
262
263    /**
264     * Write timeout for OkHttpClient
265     */
266    public ConsulServiceCallServiceDiscoveryConfiguration writeTimeoutMillis(String writeTimeoutMillis) {
267        setWriteTimeoutMillis(writeTimeoutMillis);
268        return this;
269    }
270
271    /**
272     * The seconds to wait for a watch event, default 10 seconds
273     */
274    public ConsulServiceCallServiceDiscoveryConfiguration blockSeconds(Integer blockSeconds) {
275        return blockSeconds(Integer.toString(blockSeconds));
276    }
277
278    /**
279     * The seconds to wait for a watch event, default 10 seconds
280     */
281    public ConsulServiceCallServiceDiscoveryConfiguration blockSeconds(String blockSeconds) {
282        setBlockSeconds(blockSeconds);
283        return this;
284    }
285
286    /**
287     * To configure security using SSLContextParameters.
288     */
289    public ConsulServiceCallServiceDiscoveryConfiguration sslContextParameters(SSLContextParameters sslContextParameters) {
290        setSslContextParameters(sslContextParameters);
291        return this;
292    }
293}