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