/*
* Firetweet - Twitter client for Android
*
* Copyright (C) 2012-2015 Mariotaku Lee <mariotaku.lee@gmail.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package twitter4j.conf;
import twitter4j.http.HostAddressResolverFactory;
import twitter4j.http.HttpClientFactory;
/**
* A builder that can be used to construct a twitter4j configuration with
* desired settings. This builder has sensible defaults such that
* {@code new ConfigurationBuilder().build()} would create a usable
* configuration. This configuration builder is useful for clients that wish to
* configure twitter4j in unit tests or from command line flags for example.
*
* @author John Sirois - john.sirois at gmail.com
*/
@SuppressWarnings("unused")
public final class StreamConfigurationBuilder {
private StreamConfigurationBase configuration = new StreamConfigurationBase();
public StreamConfiguration build() {
checkNotBuilt();
configuration.cacheInstance();
try {
return configuration;
} finally {
configuration = null;
}
}
public StreamConfigurationBuilder setAsyncNumThreads(final int asyncNumThreads) {
checkNotBuilt();
configuration.setAsyncNumThreads(asyncNumThreads);
return this;
}
public StreamConfigurationBuilder setClientName(final String clientName) {
checkNotBuilt();
configuration.setClientName(clientName);
return this;
}
public StreamConfigurationBuilder setClientURL(final String clientURL) {
checkNotBuilt();
configuration.setClientURL(clientURL);
return this;
}
public StreamConfigurationBuilder setClientVersion(final String clientVersion) {
checkNotBuilt();
configuration.setClientVersion(clientVersion);
return this;
}
public StreamConfigurationBuilder setDebugEnabled(final boolean debugEnabled) {
checkNotBuilt();
configuration.setDebug(debugEnabled);
return this;
}
public StreamConfigurationBuilder setDispatcherImpl(final String dispatcherImpl) {
checkNotBuilt();
configuration.setDispatcherImpl(dispatcherImpl);
return this;
}
public StreamConfigurationBuilder setGZIPEnabled(final boolean gzipEnabled) {
checkNotBuilt();
configuration.setGZIPEnabled(gzipEnabled);
return this;
}
public StreamConfigurationBuilder setHostAddressResolverFactory(final HostAddressResolverFactory factory) {
checkNotBuilt();
configuration.setHostAddressResolverFactory(factory);
return this;
}
public void setHttpClientFactory(HttpClientFactory factory) {
configuration.setHttpClientFactory(factory);
}
public StreamConfigurationBuilder setHttpConnectionTimeout(final int httpConnectionTimeout) {
checkNotBuilt();
configuration.setHttpConnectionTimeout(httpConnectionTimeout);
return this;
}
public StreamConfigurationBuilder setHttpDefaultMaxPerRoute(final int httpDefaultMaxPerRoute) {
checkNotBuilt();
configuration.setHttpDefaultMaxPerRoute(httpDefaultMaxPerRoute);
return this;
}
public StreamConfigurationBuilder setHttpMaxTotalConnections(final int httpMaxConnections) {
checkNotBuilt();
configuration.setHttpMaxTotalConnections(httpMaxConnections);
return this;
}
public StreamConfigurationBuilder setHttpProxyHost(final String httpProxyHost) {
checkNotBuilt();
configuration.setHttpProxyHost(httpProxyHost);
return this;
}
public StreamConfigurationBuilder setHttpProxyPassword(final String httpProxyPassword) {
checkNotBuilt();
configuration.setHttpProxyPassword(httpProxyPassword);
return this;
}
public StreamConfigurationBuilder setHttpProxyPort(final int httpProxyPort) {
checkNotBuilt();
configuration.setHttpProxyPort(httpProxyPort);
return this;
}
public StreamConfigurationBuilder setHttpProxyUser(final String httpProxyUser) {
checkNotBuilt();
configuration.setHttpProxyUser(httpProxyUser);
return this;
}
public StreamConfigurationBuilder setHttpReadTimeout(final int httpReadTimeout) {
checkNotBuilt();
configuration.setHttpReadTimeout(httpReadTimeout);
return this;
}
public StreamConfigurationBuilder setHttpRetryCount(final int httpRetryCount) {
checkNotBuilt();
configuration.setHttpRetryCount(httpRetryCount);
return this;
}
public StreamConfigurationBuilder setHttpRetryIntervalSeconds(final int httpRetryIntervalSeconds) {
checkNotBuilt();
configuration.setHttpRetryIntervalSeconds(httpRetryIntervalSeconds);
return this;
}
public StreamConfigurationBuilder setHttpStreamingReadTimeout(final int httpStreamingReadTimeout) {
checkNotBuilt();
configuration.setHttpStreamingReadTimeout(httpStreamingReadTimeout);
return this;
}
public StreamConfigurationBuilder setIgnoreSSLError(final boolean ignoreSSLError) {
checkNotBuilt();
configuration.setIgnoreSSLError(ignoreSSLError);
return this;
}
public StreamConfigurationBuilder setIncludeEntitiesEnabled(final boolean enabled) {
checkNotBuilt();
configuration.setIncludeEntitiesEnabled(enabled);
return this;
}
public StreamConfigurationBuilder setIncludeRTsEnabled(final boolean enabled) {
checkNotBuilt();
configuration.setIncludeRTsEnabled(enabled);
return this;
}
public StreamConfigurationBuilder setJSONStoreEnabled(final boolean enabled) {
checkNotBuilt();
configuration.setJSONStoreEnabled(enabled);
return this;
}
public StreamConfigurationBuilder setOAuthAccessToken(final String oAuthAccessToken) {
checkNotBuilt();
configuration.setOAuthAccessToken(oAuthAccessToken);
return this;
}
public StreamConfigurationBuilder setOAuthAccessTokenSecret(final String oAuthAccessTokenSecret) {
checkNotBuilt();
configuration.setOAuthAccessTokenSecret(oAuthAccessTokenSecret);
return this;
}
public StreamConfigurationBuilder setOAuthBaseURL(final String oAuthBaseURL) {
checkNotBuilt();
configuration.setOAuthBaseURL(oAuthBaseURL);
return this;
}
public StreamConfigurationBuilder setOAuthConsumerKey(final String oAuthConsumerKey) {
checkNotBuilt();
configuration.setOAuthConsumerKey(oAuthConsumerKey);
return this;
}
public StreamConfigurationBuilder setOAuthConsumerSecret(final String oAuthConsumerSecret) {
checkNotBuilt();
configuration.setOAuthConsumerSecret(oAuthConsumerSecret);
return this;
}
public StreamConfigurationBuilder setPassword(final String password) {
checkNotBuilt();
configuration.setPassword(password);
return this;
}
public StreamConfigurationBuilder setPrettyDebugEnabled(final boolean prettyDebugEnabled) {
checkNotBuilt();
configuration.setPrettyDebugEnabled(prettyDebugEnabled);
return this;
}
public StreamConfigurationBuilder setRestBaseURL(final String restBaseURL) {
checkNotBuilt();
configuration.setRestBaseURL(restBaseURL);
return this;
}
public StreamConfigurationBuilder setSigningOAuthBaseURL(final String signingOAuthBaseURL) {
checkNotBuilt();
configuration.setSigningOAuthBaseURL(signingOAuthBaseURL);
return this;
}
public StreamConfigurationBuilder setSigningRestBaseURL(final String signingRestBaseURL) {
checkNotBuilt();
configuration.setSigningRestBaseURL(signingRestBaseURL);
return this;
}
public StreamConfigurationBuilder setSiteStreamBaseURL(final String siteStreamBaseURL) {
checkNotBuilt();
configuration.setSiteStreamBaseURL(siteStreamBaseURL);
return this;
}
public StreamConfigurationBuilder setStreamBaseURL(final String streamBaseURL) {
checkNotBuilt();
configuration.setStreamBaseURL(streamBaseURL);
return this;
}
public StreamConfigurationBuilder setUser(final String user) {
checkNotBuilt();
configuration.setUser(user);
return this;
}
public StreamConfigurationBuilder setHttpUserAgent(final String userAgent) {
checkNotBuilt();
configuration.setHttpUserAgent(userAgent);
return this;
}
public StreamConfigurationBuilder setUserStreamBaseURL(final String siteStreamBaseURL) {
checkNotBuilt();
configuration.setUserStreamBaseURL(siteStreamBaseURL);
return this;
}
public StreamConfigurationBuilder setUserStreamRepliesAllEnabled(final boolean enabled) {
checkNotBuilt();
configuration.setUserStreamRepliesAllEnabled(enabled);
return this;
}
public StreamConfigurationBuilder setUseSSL(final boolean useSSL) {
checkNotBuilt();
configuration.setUseSSL(useSSL);
return this;
}
private void checkNotBuilt() {
if (configuration == null)
throw new IllegalStateException("Cannot use this builder any longer, build() has already been called");
}
}