/*
* Copyright 2007 Yusuke Yamamoto
*
* Licensed 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 twitter4j.conf;
import java.util.Properties;
/**
* 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
*/
public final class ConfigurationBuilder {
private ConfigurationBase configurationBean = new PropertyConfiguration();
public ConfigurationBuilder setUseSSL(boolean useSSL) {
checkNotBuilt();
configurationBean.setUseSSL(useSSL);
return this;
}
public ConfigurationBuilder setPrettyDebugEnabled(boolean prettyDebugEnabled) {
checkNotBuilt();
configurationBean.setPrettyDebugEnabled(prettyDebugEnabled);
return this;
}
public ConfigurationBuilder setGZIPEnabled(boolean gzipEnabled) {
checkNotBuilt();
configurationBean.setGZIPEnabled(gzipEnabled);
return this;
}
public ConfigurationBuilder setDebugEnabled(boolean debugEnabled) {
checkNotBuilt();
configurationBean.setDebug(debugEnabled);
return this;
}
public ConfigurationBuilder setApplicationOnlyAuthEnabled(boolean applicationOnlyAuthEnabled) {
checkNotBuilt();
configurationBean.setApplicationOnlyAuthEnabled(applicationOnlyAuthEnabled);
return this;
}
public ConfigurationBuilder setUser(String user) {
checkNotBuilt();
configurationBean.setUser(user);
return this;
}
public ConfigurationBuilder setPassword(String password) {
checkNotBuilt();
configurationBean.setPassword(password);
return this;
}
public ConfigurationBuilder setHttpProxyHost(String httpProxyHost) {
checkNotBuilt();
configurationBean.setHttpProxyHost(httpProxyHost);
return this;
}
public ConfigurationBuilder setHttpProxyUser(String httpProxyUser) {
checkNotBuilt();
configurationBean.setHttpProxyUser(httpProxyUser);
return this;
}
public ConfigurationBuilder setHttpProxyPassword(String httpProxyPassword) {
checkNotBuilt();
configurationBean.setHttpProxyPassword(httpProxyPassword);
return this;
}
public ConfigurationBuilder setHttpProxyPort(int httpProxyPort) {
checkNotBuilt();
configurationBean.setHttpProxyPort(httpProxyPort);
return this;
}
public ConfigurationBuilder setHttpConnectionTimeout(int httpConnectionTimeout) {
checkNotBuilt();
configurationBean.setHttpConnectionTimeout(httpConnectionTimeout);
return this;
}
public ConfigurationBuilder setHttpReadTimeout(int httpReadTimeout) {
checkNotBuilt();
configurationBean.setHttpReadTimeout(httpReadTimeout);
return this;
}
public ConfigurationBuilder setHttpStreamingReadTimeout(int httpStreamingReadTimeout) {
checkNotBuilt();
configurationBean.setHttpStreamingReadTimeout(httpStreamingReadTimeout);
return this;
}
public ConfigurationBuilder setHttpRetryCount(int httpRetryCount) {
checkNotBuilt();
configurationBean.setHttpRetryCount(httpRetryCount);
return this;
}
public ConfigurationBuilder setHttpMaxTotalConnections(int httpMaxConnections) {
checkNotBuilt();
configurationBean.setHttpMaxTotalConnections(httpMaxConnections);
return this;
}
public ConfigurationBuilder setHttpDefaultMaxPerRoute(int httpDefaultMaxPerRoute) {
checkNotBuilt();
configurationBean.setHttpDefaultMaxPerRoute(httpDefaultMaxPerRoute);
return this;
}
public ConfigurationBuilder setHttpRetryIntervalSeconds(int httpRetryIntervalSeconds) {
checkNotBuilt();
configurationBean.setHttpRetryIntervalSeconds(httpRetryIntervalSeconds);
return this;
}
public ConfigurationBuilder setOAuthConsumerKey(String oAuthConsumerKey) {
checkNotBuilt();
configurationBean.setOAuthConsumerKey(oAuthConsumerKey);
return this;
}
public ConfigurationBuilder setOAuthConsumerSecret(String oAuthConsumerSecret) {
checkNotBuilt();
configurationBean.setOAuthConsumerSecret(oAuthConsumerSecret);
return this;
}
public ConfigurationBuilder setOAuthAccessToken(String oAuthAccessToken) {
checkNotBuilt();
configurationBean.setOAuthAccessToken(oAuthAccessToken);
return this;
}
public ConfigurationBuilder setOAuthAccessTokenSecret(String oAuthAccessTokenSecret) {
checkNotBuilt();
configurationBean.setOAuthAccessTokenSecret(oAuthAccessTokenSecret);
return this;
}
public ConfigurationBuilder setOAuth2TokenType(String oAuth2TokenType) {
checkNotBuilt();
configurationBean.setOAuth2TokenType(oAuth2TokenType);
return this;
}
public ConfigurationBuilder setOAuth2AccessToken(String oAuth2AccessToken) {
checkNotBuilt();
configurationBean.setOAuth2AccessToken(oAuth2AccessToken);
return this;
}
public ConfigurationBuilder setOAuthRequestTokenURL(String oAuthRequestTokenURL) {
checkNotBuilt();
configurationBean.setOAuthRequestTokenURL(oAuthRequestTokenURL);
return this;
}
public ConfigurationBuilder setOAuthAuthorizationURL(String oAuthAuthorizationURL) {
checkNotBuilt();
configurationBean.setOAuthAuthorizationURL(oAuthAuthorizationURL);
return this;
}
public ConfigurationBuilder setOAuthAccessTokenURL(String oAuthAccessTokenURL) {
checkNotBuilt();
configurationBean.setOAuthAccessTokenURL(oAuthAccessTokenURL);
return this;
}
public ConfigurationBuilder setOAuthAuthenticationURL(String oAuthAuthenticationURL) {
checkNotBuilt();
configurationBean.setOAuthAuthenticationURL(oAuthAuthenticationURL);
return this;
}
public ConfigurationBuilder setOAuth2TokenURL(String oAuth2TokenURL) {
checkNotBuilt();
configurationBean.setOAuth2TokenURL(oAuth2TokenURL);
return this;
}
public ConfigurationBuilder setOAuth2InvalidateTokenURL(String invalidateTokenURL) {
checkNotBuilt();
configurationBean.setOAuth2InvalidateTokenURL(invalidateTokenURL);
return this;
}
public ConfigurationBuilder setRestBaseURL(String restBaseURL) {
checkNotBuilt();
configurationBean.setRestBaseURL(restBaseURL);
return this;
}
public ConfigurationBuilder setStreamBaseURL(String streamBaseURL) {
checkNotBuilt();
configurationBean.setStreamBaseURL(streamBaseURL);
return this;
}
public ConfigurationBuilder setUserStreamBaseURL(String userStreamBaseURL) {
checkNotBuilt();
configurationBean.setUserStreamBaseURL(userStreamBaseURL);
return this;
}
public ConfigurationBuilder setSiteStreamBaseURL(String siteStreamBaseURL) {
checkNotBuilt();
configurationBean.setSiteStreamBaseURL(siteStreamBaseURL);
return this;
}
public ConfigurationBuilder setAsyncNumThreads(int asyncNumThreads) {
checkNotBuilt();
configurationBean.setAsyncNumThreads(asyncNumThreads);
return this;
}
public ConfigurationBuilder setContributingTo(long contributingTo) {
checkNotBuilt();
configurationBean.setContributingTo(contributingTo);
return this;
}
public ConfigurationBuilder setClientVersion(String clientVersion) {
checkNotBuilt();
configurationBean.setClientVersion(clientVersion);
return this;
}
public ConfigurationBuilder setClientURL(String clientURL) {
checkNotBuilt();
configurationBean.setClientURL(clientURL);
return this;
}
public ConfigurationBuilder setDispatcherImpl(String dispatcherImpl) {
checkNotBuilt();
configurationBean.setDispatcherImpl(dispatcherImpl);
return this;
}
public ConfigurationBuilder setIncludeRTsEnabled(boolean enabled) {
checkNotBuilt();
configurationBean.setIncludeRTsEnbled(enabled);
return this;
}
public ConfigurationBuilder setIncludeEntitiesEnabled(boolean enabled) {
checkNotBuilt();
configurationBean.setIncludeEntitiesEnbled(enabled);
return this;
}
public ConfigurationBuilder setTrimUserEnabled(boolean enabled) {
checkNotBuilt();
configurationBean.setTrimUserEnabled(enabled);
return this;
}
public ConfigurationBuilder setIncludeMyRetweetEnabled(boolean enabled) {
checkNotBuilt();
configurationBean.setIncludeMyRetweetEnabled(enabled);
return this;
}
public ConfigurationBuilder setJSONStoreEnabled(boolean enabled) {
checkNotBuilt();
configurationBean.setJSONStoreEnabled(enabled);
return this;
}
public ConfigurationBuilder setMBeanEnabled(boolean enabled) {
checkNotBuilt();
configurationBean.setMBeanEnabled(enabled);
return this;
}
public ConfigurationBuilder setUserStreamRepliesAllEnabled(boolean enabled) {
checkNotBuilt();
configurationBean.setUserStreamRepliesAllEnabled(enabled);
return this;
}
public ConfigurationBuilder setMediaProvider(String mediaProvider) {
checkNotBuilt();
configurationBean.setMediaProvider(mediaProvider);
return this;
}
public ConfigurationBuilder setMediaProviderAPIKey(String mediaProviderAPIKey) {
checkNotBuilt();
configurationBean.setMediaProviderAPIKey(mediaProviderAPIKey);
return this;
}
public ConfigurationBuilder setMediaProviderParameters(Properties props) {
checkNotBuilt();
configurationBean.setMediaProviderParameters(props);
return this;
}
public Configuration build() {
checkNotBuilt();
configurationBean.cacheInstance();
try {
return configurationBean;
} finally {
configurationBean = null;
}
}
private void checkNotBuilt() {
if (configurationBean == null) {
throw new IllegalStateException("Cannot use this builder any longer, build() has already been called");
}
}
}