package com.netflix.appinfo; import com.netflix.archaius.api.Config; import com.netflix.archaius.api.annotations.ConfigurationSource; import com.netflix.discovery.CommonConstants; import com.netflix.discovery.internal.util.InternalPrefixedConfig; import javax.inject.Inject; import javax.inject.Singleton; import static com.netflix.appinfo.PropertyBasedAmazonInfoConfigConstants.*; /** * @author David Liu */ @Singleton @ConfigurationSource(CommonConstants.CONFIG_FILE_NAME) public class Archaius2AmazonInfoConfig implements AmazonInfoConfig { private final Config configInstance; private final InternalPrefixedConfig prefixedConfig; private final String namespace; @Inject public Archaius2AmazonInfoConfig(Config configInstance) { this(configInstance, CommonConstants.DEFAULT_CONFIG_NAMESPACE); } public Archaius2AmazonInfoConfig(Config configInstance, String namespace) { this.namespace = namespace; this.configInstance = configInstance; this.prefixedConfig = new InternalPrefixedConfig(configInstance, namespace); } @Override public String getNamespace() { return namespace; } @Override public boolean shouldLogAmazonMetadataErrors() { return prefixedConfig.getBoolean(LOG_METADATA_ERROR_KEY, false); } @Override public int getReadTimeout() { return prefixedConfig.getInteger(READ_TIMEOUT_KEY, Values.DEFAULT_READ_TIMEOUT); } @Override public int getConnectTimeout() { return prefixedConfig.getInteger(CONNECT_TIMEOUT_KEY, Values.DEFAULT_CONNECT_TIMEOUT); } @Override public int getNumRetries() { return prefixedConfig.getInteger(NUM_RETRIES_KEY, Values.DEFAULT_NUM_RETRIES); } @Override public boolean shouldFailFastOnFirstLoad() { return prefixedConfig.getBoolean(FAIL_FAST_ON_FIRST_LOAD_KEY, true); } @Override public boolean shouldValidateInstanceId() { return prefixedConfig.getBoolean(SHOULD_VALIDATE_INSTANCE_ID_KEY, true); } }