/** * Copyright 2016 LinkedIn Corp. All rights reserved. * * 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. */ package com.github.ambry.config; import java.util.Arrays; import java.util.List; /** * Configuration parameters required by the Admin. */ public class AdminConfig { /** * Cache validity in seconds for non-private blobs for GET. */ @Config("admin.cache.validity.seconds") @Default("365 * 24 * 60 * 60") public final long adminCacheValiditySeconds; /** * The IdConverterFactory that needs to be used by AdminBlobStorageService to convert IDs. */ @Config("admin.id.converter.factory") @Default("com.github.ambry.admin.AdminIdConverterFactory") public final String adminIdConverterFactory; /** * The SecurityServiceFactory that needs to be used by AdminBlobStorageService to validate requests. */ @Config("admin.security.service.factory") @Default("com.github.ambry.admin.AdminSecurityServiceFactory") public final String adminSecurityServiceFactory; /** * The comma separated list of prefixes to remove from paths. */ @Config("admin.path.prefixes.to.remove") @Default("") public final List<String> adminPathPrefixesToRemove; /** * Specifies the blob size in bytes beyond which chunked response will be sent for a getBlob() call */ @Config("admin.chunked.get.response.threshold.in.bytes") @Default("8192") public final Integer adminChunkedGetResponseThresholdInBytes; public AdminConfig(VerifiableProperties verifiableProperties) { adminCacheValiditySeconds = verifiableProperties.getLong("admin.cache.validity.seconds", 365 * 24 * 60 * 60); adminIdConverterFactory = verifiableProperties.getString("admin.id.converter.factory", "com.github.ambry.admin.AdminIdConverterFactory"); adminSecurityServiceFactory = verifiableProperties.getString("admin.security.service.factory", "com.github.ambry.admin.AdminSecurityServiceFactory"); adminPathPrefixesToRemove = Arrays.asList(verifiableProperties.getString("admin.path.prefixes.to.remove", "").split(",")); adminChunkedGetResponseThresholdInBytes = verifiableProperties.getInt("admin.chunked.get.response.threshold.in.bytes", 8192); } }