33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington/*
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington * The contents of this file are subject to the terms of the Common Development and
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington * Distribution License (the License). You may not use this file except in compliance with the
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington * License.
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington *
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington * You can obtain a copy of the License at legal/CDDLv1.0.txt. See the License for the
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington * specific language governing permission and limitations under the License.
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington *
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington * When distributing Covered Software, include this CDDL Header Notice in each file and include
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington * the License file at legal/CDDLv1.0.txt. If applicable, add the following below the CDDL
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington * Header, with the fields enclosed by brackets [] replaced by your own identifying
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington * information: "Portions copyright [year] [name of copyright owner]".
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington *
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington * Copyright 2014 ForgeRock AS.
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington */
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunningtonpackage com.sun.identity.authentication.service;
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunningtonimport com.iplanet.sso.SSOToken;
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunningtonimport com.sun.identity.authentication.config.AMAuthenticationManager;
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunningtonimport com.sun.identity.security.AdminTokenAction;
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunningtonimport com.sun.identity.shared.Constants;
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunningtonimport com.sun.identity.sm.ChoiceValues;
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunningtonimport com.sun.identity.sm.SMSEntry;
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunningtonimport java.security.AccessController;
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunningtonimport java.util.Collections;
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunningtonimport java.util.HashMap;
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunningtonimport java.util.Map;
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunningtonimport java.util.Set;
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington/**
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington * The class determines all configured Module Instances for realm
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington * This list is computed per realm.
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington */
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunningtonpublic class AllConfiguredModuleInstances extends ChoiceValues {
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington /**
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington * Creates <code>ConfiguredModuleInstances</code> object.
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington * Default constructor that will be used by the SMS
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington * to create an instance of this class
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington */
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington public AllConfiguredModuleInstances() {
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington // do nothing
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington }
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington /**
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington * Returns the choice values and their corresponding I18N keys for top
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington * organization.
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington * @return the map of choice values.
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington */
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington public Map getChoiceValues() {
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington return getChoiceValues(Collections.EMPTY_MAP);
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington }
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington /**
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington * Returns the map of choice values for given environment params.
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington * @param envParams to get the map of choice values
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington * @return the map of choice values for given environment params.
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington */
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington public Map getChoiceValues(Map envParams) {
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington String orgDN = null;
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington if (envParams != null) {
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington orgDN = (String)envParams.get(Constants.ORGANIZATION_NAME);
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington }
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington if (orgDN == null || orgDN.length() == 0) {
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington orgDN = SMSEntry.getRootSuffix();
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington }
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington Map<String, String> answer = new HashMap<String, String>();
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington try {
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington SSOToken adminToken = AccessController.doPrivileged(AdminTokenAction.getInstance());
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington AMAuthenticationManager amAM = new AMAuthenticationManager(adminToken, orgDN);
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington Set<String> instanceNames = amAM.getAllowedModuleNames();
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington for (String config : instanceNames) {
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington answer.put(config, config);
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington }
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington } catch (Exception e) {
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington // do nothing as instanceNames will be empty.
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington }
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington return answer;
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington }
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington
33908fb93167e643fbb21b47d87c5b632df0dc59Phill Cunnington}