authorization-utils/src/main/java/org/gcube/common/authorization/utils/manager/SecretManagerProvider.java

42 lines
1.2 KiB
Java

package org.gcube.common.authorization.utils.manager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class SecretManagerProvider {
private static Logger logger = LoggerFactory.getLogger(SecretManagerProvider.class);
public static SecretManagerProvider instance = new SecretManagerProvider();
// Thread local variable containing each thread's ID
private static final InheritableThreadLocal<SecretManager> thread = new InheritableThreadLocal<SecretManager>() {
@Override
protected SecretManager initialValue() {
logger.trace("Creating SecretManager of Thread with name '{}' and id '{}'", Thread.currentThread().getName(), Thread.currentThread().getId());
return new SecretManager();
}
};
private SecretManagerProvider(){}
public SecretManager get(){
logger.trace("Thread name {} id {} ", Thread.currentThread().getName(), Thread.currentThread().getId());
SecretManager secretManager = thread.get();
return secretManager;
}
public void set(SecretManager secretManager){
thread.set(secretManager);
}
public void reset(){
SecretManager secretManager = thread.get();
secretManager.reset();
thread.remove();
}
}