a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster/**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Copyright (c) 2006 Sun Microsystems Inc. All Rights Reserved
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * The contents of this file are subject to the terms
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * of the Common Development and Distribution License
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * (the License). You may not use this file except in
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * compliance with the License.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * You can obtain a copy of the License at
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * https://opensso.dev.java.net/public/CDDLv1.0.html or
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * opensso/legal/CDDLv1.0.txt
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * See the License for the specific language governing
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * permission and limitations under the License.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * When distributing Covered Code, include this CDDL
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Header Notice in each file and include the License file
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * at opensso/legal/CDDLv1.0.txt.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * If applicable, add the following below the CDDL Header,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * with the fields enclosed by brackets [] replaced by
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * your own identifying information:
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * "Portions Copyrighted [year] [name of copyright owner]"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * $Id: IDPPUtils.java,v 1.3 2008/08/06 17:28:09 exu Exp $
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
23e304384f98fca4ab2e6f9f07a53465c1bfc645Peter Major/**
23e304384f98fca4ab2e6f9f07a53465c1bfc645Peter Major * Portions Copyrighted 2012 ForgeRock Inc
23e304384f98fca4ab2e6f9f07a53465c1bfc645Peter Major */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterpackage com.sun.identity.liberty.ws.idpp.common;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.util.ResourceBundle;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.util.StringTokenizer;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.util.List;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.util.HashSet;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.util.Set;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.util.Map;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.util.HashMap;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.util.Iterator;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.security.SecureRandom;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.shared.debug.Debug;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.shared.locale.Locale;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.shared.encode.Base64;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.idpp.jaxb.QueryElement;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.idpp.jaxb.DSTString;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.idpp.jaxb.QueryResponseElement;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.idpp.jaxb.QueryResponseType;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.idpp.jaxb.ObjectFactory;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.idpp.jaxb.QueryType;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.idpp.jaxb.ResourceIDElement;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.interfaces.ResourceIDMapper;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.idpp.*;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.plugin.datastore.DataStoreProvider;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.plugin.datastore.DataStoreProviderException;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.plugin.datastore.DataStoreProviderManager;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.saml.common.SAMLUtils;
23e304384f98fca4ab2e6f9f07a53465c1bfc645Peter Majorimport com.sun.identity.shared.xml.XMLUtils;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport javax.xml.bind.JAXBException;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport javax.xml.parsers.DocumentBuilder;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport javax.xml.bind.Marshaller;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport javax.xml.bind.Unmarshaller;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport javax.xml.bind.JAXBContext;
23e304384f98fca4ab2e6f9f07a53465c1bfc645Peter Majorimport javax.xml.parsers.ParserConfigurationException;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster/**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Class <code>IDPPUtils</code> is utility class used by IDPP service
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * for any common functionality in various modules.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterpublic class IDPPUtils {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private static final String IDPP = "idpp";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static Debug debug = Debug.getInstance("libIDWSF");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static ResourceBundle bundle =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Locale.getInstallResourceBundle("libPersonalProfile");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private static ObjectFactory idppFactory = new ObjectFactory();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster //This needs to change it as configurable.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private static final String idppPrefix = "pp";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private static HashMap idppElementTypes = new HashMap();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static HashMap idppIDSMap = new HashMap();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private static DataStoreProvider userProvider = null;
23e304384f98fca4ab2e6f9f07a53465c1bfc645Peter Major private static JAXBContext jaxbContext;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster static {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try {
23e304384f98fca4ab2e6f9f07a53465c1bfc645Peter Major jaxbContext = JAXBContext.newInstance(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IDPPConstants.IDPP_JAXB_PKG + ":" +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IDPPConstants.IDPP_PLUGIN_JAXB_PKG + ":" +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IDPPConstants.XMLSIG_JAXB_PKG);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster getIDPPElementsMap();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster userProvider = DataStoreProviderManager.getInstance().
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster getDataStoreProvider(IDPP);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch (Exception e) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IDPPUtils.debug.error("IDPPCommonName:static initialization" +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster " Failed.", e);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Stores the IDPPElements map
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private static void getIDPPElementsMap() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster idppElementTypes.put(IDPPConstants.IDPP_ELEMENT,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new Integer(IDPPConstants.IDPP_ELEMENT_INT));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster idppElementTypes.put(IDPPConstants.INFORMAL_NAME_ELEMENT,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new Integer(IDPPConstants.INFORMAL_NAME_ELEMENT_INT));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster idppElementTypes.put(IDPPConstants.LINFORMAL_NAME_ELEMENT,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new Integer(IDPPConstants.LINFORMAL_NAME_ELEMENT_INT));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster idppElementTypes.put(IDPPConstants.COMMON_NAME_ELEMENT,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new Integer(IDPPConstants.COMMON_NAME_ELEMENT_INT));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster idppElementTypes.put(IDPPConstants.LEGAL_IDENTITY_ELEMENT,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new Integer(IDPPConstants.LEGAL_IDENTITY_ELEMENT_INT));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster idppElementTypes.put(IDPPConstants.EMPLOYMENT_IDENTITY_ELEMENT,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new Integer(IDPPConstants.EMPLOYMENT_IDENTITY_ELEMENT_INT));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster idppElementTypes.put(IDPPConstants.ADDRESS_CARD_ELEMENT,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new Integer(IDPPConstants.ADDRESS_CARD_ELEMENT_INT));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster idppElementTypes.put(IDPPConstants.MSG_CONTACT_ELEMENT,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new Integer(IDPPConstants.MSG_CONTACT_ELEMENT_INT));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster idppElementTypes.put(IDPPConstants.FACADE_ELEMENT,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new Integer(IDPPConstants.FACADE_ELEMENT_INT));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster idppElementTypes.put(IDPPConstants.DEMOGRAPHICS_ELEMENT,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new Integer(IDPPConstants.DEMOGRAPHICS_ELEMENT_INT));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster idppElementTypes.put(IDPPConstants.SIGN_KEY_ELEMENT,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new Integer(IDPPConstants.SIGN_KEY_ELEMENT_INT));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster idppElementTypes.put(IDPPConstants.ENCRYPT_KEY_ELEMENT,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new Integer(IDPPConstants.ENCRYPT_KEY_ELEMENT_INT));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster idppElementTypes.put(IDPPConstants.EMERGENCY_CONTACT_ELEMENT,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new Integer(IDPPConstants.EMERGENCY_CONTACT_ELEMENT_INT));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster idppElementTypes.put(IDPPConstants.LEMERGENCY_CONTACT_ELEMENT,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new Integer(IDPPConstants.LEMERGENCY_CONTACT_ELEMENT_INT));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster idppElementTypes.put(IDPPConstants.FN_ELEMENT,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new Integer(IDPPConstants.FN_ELEMENT_INT));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster idppElementTypes.put(IDPPConstants.SN_ELEMENT,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new Integer(IDPPConstants.SN_ELEMENT_INT));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster idppElementTypes.put(IDPPConstants.CN_ELEMENT,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new Integer(IDPPConstants.CN_ELEMENT_INT));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster idppElementTypes.put(IDPPConstants.MN_ELEMENT,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new Integer(IDPPConstants.MN_ELEMENT_INT));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster idppElementTypes.put(IDPPConstants.ALT_CN_ELEMENT,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new Integer(IDPPConstants.ALT_CN_ELEMENT_INT));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster idppElementTypes.put(IDPPConstants.PT_ELEMENT,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new Integer(IDPPConstants.PT_ELEMENT_INT));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster idppElementTypes.put(IDPPConstants.ANALYZED_NAME_ELEMENT,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new Integer(IDPPConstants.ANALYZED_NAME_ELEMENT_INT));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster idppElementTypes.put(IDPPConstants.INFORMAL_NAME_ELEMENT,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new Integer(IDPPConstants.INFORMAL_NAME_ELEMENT_INT));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster idppElementTypes.put(IDPPConstants.LEGAL_NAME_ELEMENT,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new Integer(IDPPConstants.LEGAL_NAME_ELEMENT_INT));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster idppElementTypes.put(IDPPConstants.DOB_ELEMENT,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new Integer(IDPPConstants.DOB_ELEMENT_INT));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster idppElementTypes.put(IDPPConstants.MARITAL_STATUS_ELEMENT,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new Integer(IDPPConstants.MARITAL_STATUS_ELEMENT_INT));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster idppElementTypes.put(IDPPConstants.GENDER_ELEMENT,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new Integer(IDPPConstants.GENDER_ELEMENT_INT));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster idppElementTypes.put(IDPPConstants.ALT_ID_ELEMENT,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new Integer(IDPPConstants.ALT_ID_ELEMENT_INT));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster idppElementTypes.put(IDPPConstants.ID_TYPE_ELEMENT,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new Integer(IDPPConstants.ID_TYPE_ELEMENT_INT));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster idppElementTypes.put(IDPPConstants.ID_VALUE_ELEMENT,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new Integer(IDPPConstants.ID_VALUE_ELEMENT_INT));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster idppElementTypes.put(IDPPConstants.VAT_ELEMENT,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new Integer(IDPPConstants.VAT_ELEMENT_INT));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster idppElementTypes.put(IDPPConstants.JOB_TITLE_ELEMENT,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new Integer(IDPPConstants.JOB_TITLE_ELEMENT_INT));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster idppElementTypes.put(IDPPConstants.O_ELEMENT,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new Integer(IDPPConstants.O_ELEMENT_INT));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster idppElementTypes.put(IDPPConstants.ALT_O_ELEMENT,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new Integer(IDPPConstants.ALT_O_ELEMENT_INT));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster idppElementTypes.put(IDPPConstants.EXTENSION_ELEMENT,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new Integer(IDPPConstants.EXTENSION_ELEMENT_INT));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster //Default constructor
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public IDPPUtils() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Creates a Query Request element given a set of query expressions.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param queryExpressions a list of query expressions
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param resourceID resource id.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param includeCommonAttr include common attribute or not
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return QueryElement JAXB object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static QueryElement createQueryElement(List queryExpressions,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String resourceID,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster boolean includeCommonAttr)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws JAXBException, IDPPException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster QueryElement query = idppFactory.createQueryElement();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(queryExpressions == null || resourceID == null
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster || queryExpressions.size() == 0) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.error("IDPPUtils:createQueryElement: Either query" +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster " expressions or resource id is null.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new IDPPException("ResourceID or query expressions are null");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster query.setResourceID(createResourceIDElement(resourceID));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster query.setId(SAMLUtils.generateID());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster for (int i =0; i < queryExpressions.size(); i++) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster QueryType.QueryItemType item =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster idppFactory.createQueryTypeQueryItemType();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster item.setId(SAMLUtils.generateID());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster item.setIncludeCommonAttributes(includeCommonAttr);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster item.setItemID(SAMLUtils.generateID());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster item.setSelect(addIDPPPrefix((String)queryExpressions.get(i)));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster query.getQueryItem().add(item);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return query;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Gets the data element given a Query Response.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param response QueryResponseElement
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return List of data elements.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static List getQueryDataElements(QueryResponseElement response)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws JAXBException, IDPPException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(response == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.error("IDPPUtils:getQueryDataElements:response is null");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new IDPPException("response is null");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return response.getData();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Creates Discovery resource id type.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param resourceID resource id string.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return ResourceIDType JAXB object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static ResourceIDElement createResourceIDElement (String resourceID)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws JAXBException, IDPPException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(resourceID == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.error("IDPPUtils:ResourceIDType: Resource id is null");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new IDPPException("ResourceID is null");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ResourceIDElement resourceIDElement =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster idppFactory.createResourceIDElement();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster resourceIDElement.setValue(resourceID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return resourceIDElement;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Adds prefix "idpp" to the expression. This should be configurable
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Also, need a name space prefix mapper.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private static String addIDPPPrefix(String expression) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(expression == null || expression.length() == 0) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return expression;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(expression.indexOf("/") == -1) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.error("IDPPUtils:addIDPPPrefix:Not a valid expression");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return expression;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster StringBuffer sb = new StringBuffer(100);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster StringTokenizer st = new StringTokenizer(expression, "/");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster while(st.hasMoreTokens()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String temp = (String)st.nextToken();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String prefixedStr = "/" + idppPrefix + ":" + temp;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster sb.append(prefixedStr);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return sb.toString();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Looks for the expression context. For e.g. if the expression
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * is /idpp:IDPP/idpp:IDPPCommonName/idpp:AnalyzedName/idpp:FN, then
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * it one returns "FN".
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param select string.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return context string.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static String getExpressionContext(String select) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(select == null || select.indexOf("/") == -1) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster int i = select.lastIndexOf("/");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(i != -1) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster select = select.substring(i+1);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if((i = select.indexOf(":")) == -1) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return select;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return select.substring(i+1);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the user attribute values.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param userDN user DN.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param requiredSet a set of required attributes.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return user attribute value map.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static Map getUserAttributes(String userDN, Set requiredSet)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws IDPPException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return userProvider.getAttributes(userDN, requiredSet);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch(DataStoreProviderException dspe) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.error("IDPPUtils:getUserAttributes: Error retrieving" +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster " user attributes.", dspe);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new IDPPException(dspe);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Stores the user attribute values in the data store.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param userDN user DN
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param map user attribute value map
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static void setUserAttributes(String userDN, Map map)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws IDPPException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster userProvider.setAttributes(userDN, map);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch(DataStoreProviderException dspe) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.error("IDPPUtils:setUserAttributes:Error while storing" +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "user attributes.", dspe);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new IDPPException(dspe);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Checks for if the user attribute values exist
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * for a given set.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param userDN user DN.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param set a set of user attributes that require check.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return true if any of the user attibute values found.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static boolean checkForUserAttributes(String userDN, Set set)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws IDPPException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Map map = userProvider.getAttributes(userDN, set);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((map == null) || map.isEmpty()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return false;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return true;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch (DataStoreProviderException dspe) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.error("IDPPUtils:checkForUserAttributes:Error while " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "checking for user attributes.", dspe);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new IDPPException(dspe);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns element type.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param element a String representing an Element.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return integer value of the element.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static int getIDPPElementType(String element) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(element == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.error("IDPPUtils:getIDPPElementType:InvalidElementType");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return -1;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Integer elementType = (Integer)idppElementTypes.get(element);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(elementType == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return -1;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return elementType.intValue();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Checks is the user exists or not.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param userDN user DN
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return true if the user exists.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static boolean isUserExists(String userDN) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return userProvider.isUserExists(userDN);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch (DataStoreProviderException dspe) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.message("IDPPUtils.isUserExists: Userentry is null",
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster dspe);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return false;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Gets the IDPPFactory JAXB Object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return ObjectFactory JAXB IDPP Factory Object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static ObjectFactory getIDPPFactory() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return idppFactory;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Gets the marshaller
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return Marshaller JAXB Marshaller Object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
23e304384f98fca4ab2e6f9f07a53465c1bfc645Peter Major public static Marshaller getMarshaller() throws JAXBException {
23e304384f98fca4ab2e6f9f07a53465c1bfc645Peter Major return jaxbContext.createMarshaller();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Get the unmarshaller object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return Unmarshaller JAXB unmarshaller object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
23e304384f98fca4ab2e6f9f07a53465c1bfc645Peter Major public static Unmarshaller getUnmarshaller() throws JAXBException {
23e304384f98fca4ab2e6f9f07a53465c1bfc645Peter Major return jaxbContext.createUnmarshaller();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Gets the document builder.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return DocumentBuilder dom document builder
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static DocumentBuilder getDocumentBuilder() {
23e304384f98fca4ab2e6f9f07a53465c1bfc645Peter Major try {
23e304384f98fca4ab2e6f9f07a53465c1bfc645Peter Major return XMLUtils.getSafeDocumentBuilder(false);
23e304384f98fca4ab2e6f9f07a53465c1bfc645Peter Major } catch (ParserConfigurationException pce) {
23e304384f98fca4ab2e6f9f07a53465c1bfc645Peter Major debug.error("Unable to initialize Document Builder", pce);
23e304384f98fca4ab2e6f9f07a53465c1bfc645Peter Major }
23e304384f98fca4ab2e6f9f07a53465c1bfc645Peter Major return null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the resource expression from the select xpath expression.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param select Xpath select expression.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return String resource expression
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static String getResourceExpression(String select) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(select == null || (select.indexOf("/") == -1)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return select;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster StringBuffer sb = new StringBuffer(100);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster StringTokenizer st = new StringTokenizer(select, "/");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster while(st.hasMoreTokens()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String token = (String)st.nextToken();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster int index = token.indexOf("[");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(index != -1) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster token = token.substring(0, index);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(token == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster continue;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster index = token.indexOf(":");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(index != -1) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster token = token.substring(index+1);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(token == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster continue;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster sb.append("/").append(token);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return sb.toString();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Gets the resource id for a given user id
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param userID ID of a user
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return String Resource ID
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static String getResourceID(String userID) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IDPPServiceManager serviceManager = IDPPServiceManager.getInstance();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ResourceIDMapper mapper = serviceManager.getResourceIDMapper();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return mapper.getResourceID(serviceManager.getProviderID(), userID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster}