All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.netflix.client.config.IClientConfig Maven / Gradle / Ivy

/*
*
* Copyright 2013 Netflix, Inc.
*
* 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 com.netflix.client.config;

import java.util.Map;

/**
 * Defines the client configuration used by various APIs to initialize clients or load balancers
 * and for method execution. The default implementation is {@link DefaultClientConfigImpl}.
 * 
 * @author awang
 *
 */

public interface IClientConfig {
	
	public String getClientName();
		
	public String getNameSpace();

	/**
	 * Load the properties for a given client and/or load balancer. 
	 * @param clientName
	 */
	public void loadProperties(String clientName);
	
	/**
	 * load default values for this configuration
	 */
	public void loadDefaultValues();

	public Map getProperties();

    /**
     * @deprecated use {@link #set(IClientConfigKey, Object)} 
     */
	@Deprecated
	public void setProperty(IClientConfigKey key, Object value);

    /**
     * @deprecated use {@link #get(IClientConfigKey)}
     */
    @Deprecated
	public Object getProperty(IClientConfigKey key);

    /**
     * @deprecated use {@link #get(IClientConfigKey, Object)} 
     */
    @Deprecated
	public Object getProperty(IClientConfigKey key, Object defaultVal);

	public boolean containsProperty(IClientConfigKey key);
	
	/**
	 * Returns the applicable virtual addresses ("vip") used by this client configuration.
	 */
	public String resolveDeploymentContextbasedVipAddresses();
	
	public int getPropertyAsInteger(IClientConfigKey key, int defaultValue);

    public String getPropertyAsString(IClientConfigKey key, String defaultValue);
    
    public boolean getPropertyAsBoolean(IClientConfigKey key, boolean defaultValue);
    
    /**
     * Returns a typed property. If the property of IClientConfigKey is not set, it returns null.
     * 

* For {@link DefaultClientConfigImpl}, if the value of the property is String, * it will do basic type conversion from String to the following type: *

    *
  • Integer
  • *
  • Boolean
  • *
  • Float
  • *
  • Long
  • *
  • Double
  • *
*

*/ public T get(IClientConfigKey key); /** * Returns a typed property. If the property of IClientConfigKey is not set, * it returns the default value passed in as the parameter. */ public T get(IClientConfigKey key, T defaultValue); /** * Set the typed property with the given value. */ public IClientConfig set(IClientConfigKey key, T value); public static class Builder { private IClientConfig config; Builder() { } /** * Create a builder with no initial property and value for the configuration to be built. The configuration object * that will be built is an instance of {@link DefaultClientConfigImpl} */ public static Builder newBuilder() { Builder builder = new Builder(); builder.config = new DefaultClientConfigImpl(); return builder; } /** * Create a builder with properties for the specific client loaded. The default * {@link IClientConfig} implementation loads properties from Archaius * * @param clientName Name of client. clientName.ribbon will be used as a prefix to find corresponding properties from * Archaius */ public static Builder newBuilder(String clientName) { Builder builder = new Builder(); builder.config = new DefaultClientConfigImpl(); builder.config.loadProperties(clientName); return builder; } /** * Create a builder with properties for the specific client loaded. The default * {@link IClientConfig} implementation loads properties from Archaius * * @param clientName Name of client. clientName.propertyNameSpace will be used as a prefix to find corresponding properties from * Archaius */ public static Builder newBuilder(String clientName, String propertyNameSpace) { Builder builder = new Builder(); builder.config = new DefaultClientConfigImpl(propertyNameSpace); builder.config.loadProperties(clientName); return builder; } /** * Create a builder with properties for the specific client loaded. * * @param implClass the class of {@link IClientConfig} object to be built */ public static Builder newBuilder(Class implClass, String clientName) { Builder builder = new Builder(); try { builder.config = implClass.newInstance(); builder.config.loadProperties(clientName); } catch (Exception e) { throw new IllegalArgumentException(e); } return builder; } /** * Create a builder to build the configuration with no initial properties set * * @param implClass the class of {@link IClientConfig} object to be built */ public static Builder newBuilder(Class implClass) { Builder builder = new Builder(); try { builder.config = implClass.newInstance(); } catch (Exception e) { throw new IllegalArgumentException(e); } return builder; } public IClientConfig build() { return config; } /** * Load a set of default values for the configuration */ public Builder withDefaultValues() { config.loadDefaultValues(); return this; } public Builder withDeploymentContextBasedVipAddresses(String vipAddress) { config.set(CommonClientConfigKey.DeploymentContextBasedVipAddresses, vipAddress); return this; } public Builder withForceClientPortConfiguration(boolean forceClientPortConfiguration) { config.set(CommonClientConfigKey.ForceClientPortConfiguration, forceClientPortConfiguration); return this; } public Builder withMaxAutoRetries(int value) { config.set(CommonClientConfigKey.MaxAutoRetries, value); return this; } public Builder withMaxAutoRetriesNextServer(int value) { config.set(CommonClientConfigKey.MaxAutoRetriesNextServer, value); return this; } public Builder withRetryOnAllOperations(boolean value) { config.set(CommonClientConfigKey.OkToRetryOnAllOperations, value); return this; } public Builder withRequestSpecificRetryOn(boolean value) { config.set(CommonClientConfigKey.RequestSpecificRetryOn, value); return this; } public Builder withEnablePrimeConnections(boolean value) { config.set(CommonClientConfigKey.EnablePrimeConnections, value); return this; } public Builder withMaxConnectionsPerHost(int value) { config.set(CommonClientConfigKey.MaxHttpConnectionsPerHost, value); config.set(CommonClientConfigKey.MaxConnectionsPerHost, value); return this; } public Builder withMaxTotalConnections(int value) { config.set(CommonClientConfigKey.MaxTotalHttpConnections, value); config.set(CommonClientConfigKey.MaxTotalConnections, value); return this; } public Builder withSecure(boolean secure) { config.set(CommonClientConfigKey.IsSecure, secure); return this; } public Builder withConnectTimeout(int value) { config.set(CommonClientConfigKey.ConnectTimeout, value); return this; } public Builder withReadTimeout(int value) { config.set(CommonClientConfigKey.ReadTimeout, value); return this; } public Builder withConnectionManagerTimeout(int value) { config.set(CommonClientConfigKey.ConnectionManagerTimeout, value); return this; } public Builder withFollowRedirects(boolean value) { config.set(CommonClientConfigKey.FollowRedirects, value); return this; } public Builder withConnectionPoolCleanerTaskEnabled(boolean value) { config.set(CommonClientConfigKey.ConnectionPoolCleanerTaskEnabled, value); return this; } public Builder withConnIdleEvictTimeMilliSeconds(int value) { config.set(CommonClientConfigKey.ConnIdleEvictTimeMilliSeconds, value); return this; } public Builder withConnectionCleanerRepeatIntervalMills(int value) { config.set(CommonClientConfigKey.ConnectionCleanerRepeatInterval, value); return this; } public Builder withGZIPContentEncodingFilterEnabled(boolean value) { config.set(CommonClientConfigKey.EnableGZIPContentEncodingFilter, value); return this; } public Builder withProxyHost(String proxyHost) { config.set(CommonClientConfigKey.ProxyHost, proxyHost); return this; } public Builder withProxyPort(int value) { config.set(CommonClientConfigKey.ProxyPort, value); return this; } public Builder withKeyStore(String value) { config.set(CommonClientConfigKey.KeyStore, value); return this; } public Builder withKeyStorePassword(String value) { config.set(CommonClientConfigKey.KeyStorePassword, value); return this; } public Builder withTrustStore(String value) { config.set(CommonClientConfigKey.TrustStore, value); return this; } public Builder withTrustStorePassword(String value) { config.set(CommonClientConfigKey.TrustStorePassword, value); return this; } public Builder withClientAuthRequired(boolean value) { config.set(CommonClientConfigKey.IsClientAuthRequired, value); return this; } public Builder withCustomSSLSocketFactoryClassName(String value) { config.set(CommonClientConfigKey.CustomSSLSocketFactoryClassName, value); return this; } public Builder withHostnameValidationRequired(boolean value) { config.set(CommonClientConfigKey.IsHostnameValidationRequired, value); return this; } // see also http://hc.apache.org/httpcomponents-client-ga/tutorial/html/advanced.html public Builder ignoreUserTokenInConnectionPoolForSecureClient(boolean value) { config.set(CommonClientConfigKey.IgnoreUserTokenInConnectionPoolForSecureClient, value); return this; } public Builder withLoadBalancerEnabled(boolean value) { config.set(CommonClientConfigKey.InitializeNFLoadBalancer, value); return this; } public Builder withServerListRefreshIntervalMills(int value) { config.set(CommonClientConfigKey.ServerListRefreshInterval, value); return this; } public Builder withZoneAffinityEnabled(boolean value) { config.set(CommonClientConfigKey.EnableZoneAffinity, value); return this; } public Builder withZoneExclusivityEnabled(boolean value) { config.set(CommonClientConfigKey.EnableZoneExclusivity, value); return this; } public Builder prioritizeVipAddressBasedServers(boolean value) { config.set(CommonClientConfigKey.PrioritizeVipAddressBasedServers, value); return this; } public Builder withTargetRegion(String value) { config.set(CommonClientConfigKey.TargetRegion, value); return this; } } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy