package org.ovirt.engine.core.dal.dbbroker.generic; import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.Set; import org.ovirt.engine.core.engineencryptutils.EncryptionUtils; public class DomainsPasswordMap implements Map<String, String> { private final Map<String, String> map; /** * This structure is a map of domains to decrypted password. It initializes from a comma separated list of * domain:password values. e.g. <code>REDHAT.COM:{encrypted-password}, JBOSS.COM:{encrypted-password}</code> * @param csvOfDomainToPassword * - comma delimited list of domain:password values * @param storeUrl * @param storePass * @param certAlias */ public DomainsPasswordMap(String csvOfDomainToPassword, String storeUrl, String storePass, String certAlias) { if (!csvOfDomainToPassword.isEmpty()) { String[] domainPasswordPairs = csvOfDomainToPassword.split(","); map = new HashMap<String, String>(domainPasswordPairs.length); for (String domainPasswordPair : domainPasswordPairs) { String[] parts = domainPasswordPair.split(":"); String domain = parts[0].trim().toLowerCase(); String password = parts[1].trim(); try { password = EncryptionUtils.decrypt((String) password, storeUrl, storePass, certAlias); } catch (Exception e) { // failed decrypting the password - password may ot be encrypted in first place or clear text // already } map.put(domain, password); } } else { map = Collections.emptyMap(); } } @Override public int size() { return map.size(); } @Override public boolean isEmpty() { return map.isEmpty(); } @Override public boolean containsKey(Object key) { return map.containsKey(key); } @Override public boolean containsValue(Object value) { return map.containsValue(value); } @Override public String get(Object key) { return map.get(key); } @Override public String put(String key, String value) { return map.put(key, value); } @Override public String remove(Object key) { return map.remove(key); } @Override public void putAll(Map<? extends String, ? extends String> m) { map.putAll(m); } @Override public void clear() { map.clear(); } @Override public Set<String> keySet() { return map.keySet(); } @Override public Collection<String> values() { return map.values(); } @Override public Set<java.util.Map.Entry<String, String>> entrySet() { return map.entrySet(); } }