package org.cagrid.dorian.service.wsrf; import java.util.HashMap; import java.util.Map; import java.util.StringTokenizer; import org.cagrid.dorian.model.federation.TrustedIdentityProvider; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class TrustedIdPMetadataOverloader { private final static Logger logger = LoggerFactory.getLogger(TrustedIdPMetadataOverloader.class); private final static String SET_DELIM = ";"; private final static String ITEM_DELIM = ","; private Map<String, TrustedIdentityProvider> idps; public TrustedIdPMetadataOverloader(String properties) { idps = new HashMap<String, TrustedIdentityProvider>(); parseProperties(properties); } public TrustedIdentityProvider overload(TrustedIdentityProvider idp) { if (idps.containsKey(idp.getName())) { TrustedIdentityProvider obj = idps.get(idp.getName()); idp.setAuthenticationServiceURL(obj.getAuthenticationServiceURL()); idp.setAuthenticationServiceIdentity(obj.getAuthenticationServiceIdentity()); } return idp; } private void parseProperties(String properties) { logger.debug("Properties " + properties); StringTokenizer st = new StringTokenizer(properties, SET_DELIM); while (st.hasMoreTokens()) { String set = st.nextToken(); StringTokenizer st2 = new StringTokenizer(set, ITEM_DELIM); String name = null; String url = null; String identity = null; if (st2.hasMoreTokens()) { name = st2.nextToken(); logger.debug("Name " + name); if (st2.hasMoreTokens()) { url = st2.nextToken(); if (st2.hasMoreTokens()) { identity = st2.nextToken(); } } else { continue; } } else { continue; } logger.debug("Overloading the Trusted IdP " + name + " with url " + url + " and the identity " + identity + "."); TrustedIdentityProvider idp = new TrustedIdentityProvider(); idp.setName(name); idp.setAuthenticationServiceURL(url); idp.setAuthenticationServiceIdentity(identity); idps.put(name, idp); } } }