package org.gcube.common.authorization.utils.manager; import java.util.Collection; import java.util.SortedSet; import java.util.TreeSet; import org.gcube.common.authorization.utils.secret.Secret; import org.gcube.common.authorization.utils.user.User; import org.gcube.common.scope.api.ScopeProvider; /** * @author Luca Frosini (ISTI - CNR) */ public class SecretHolder { private SortedSet secrets; public SecretHolder() { this.secrets = new TreeSet(); } public SecretHolder(Secret secret) { this.secrets = new TreeSet(); addSecret(secret); } public SecretHolder(Collection secrets) { this.secrets = new TreeSet(secrets); } public void addSecret(Secret secret) { if(secret!=null) { secrets.add(secret); } } public void addSecrets(Collection secrets) { for(Secret secret : secrets){ addSecret(secret); } } public void set() throws Exception { boolean first = true; for(Secret secret : secrets) { /* * Only the most important Secret must set * AuthorizationProvider and ScopeProvider * the others just need to set their token * in the correspondent provider */ if(first) { secret.set(); first = false; }else { secret.setToken(); } } } public SortedSet getSecrets() { return secrets; } public User getUser() { for(Secret secret : secrets) { try { return secret.getUser(); }catch (Exception e) { // trying the next one } } return null; } public String getContext() { for(Secret secret : secrets) { try { return secret.getContext(); }catch (Exception e) { // trying the next one } } return ScopeProvider.instance.get(); } public void reset() { boolean first = true; for(Secret secret : secrets) { try { if(first) { secret.reset(); first = false; }else { secret.resetToken(); } }catch (Exception e) { // trying the next one } } if(first) { ScopeProvider.instance.reset(); } } }