ResponseProviderTypeManager.java revision 6636284dd99df27fda992fb77fb6236657269ec9
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster/**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Copyright (c) 2006 Sun Microsystems Inc. All Rights Reserved
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * The contents of this file are subject to the terms
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * of the Common Development and Distribution License
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * (the License). You may not use this file except in
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * compliance with the License.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * You can obtain a copy of the License at
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * https://opensso.dev.java.net/public/CDDLv1.0.html or
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * opensso/legal/CDDLv1.0.txt
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * See the License for the specific language governing
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * permission and limitations under the License.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * When distributing Covered Code, include this CDDL
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Header Notice in each file and include the License file
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * at opensso/legal/CDDLv1.0.txt.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * If applicable, add the following below the CDDL Header,
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * with the fields enclosed by brackets [] replaced by
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * your own identifying information:
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * "Portions Copyrighted [year] [name of copyright owner]"
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * $Id: ResponseProviderTypeManager.java,v 1.3 2008/06/25 05:43:45 qcheng Exp $
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Portions Copyrighted 2014 ForgeRock AS.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
01a939641aeb0a095851921879620c3fab295cb2Robert Wapshott
01a939641aeb0a095851921879620c3fab295cb2Robert Wapshott
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Fosterpackage com.sun.identity.policy;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Fosterimport java.util.*;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Fosterimport com.iplanet.sso.SSOToken;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Fosterimport com.iplanet.sso.SSOException;
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshottimport com.sun.identity.sm.*;
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshottimport com.sun.identity.policy.interfaces.ResponseProvider;
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshottimport com.sun.identity.shared.locale.AMResourceBundleCache;
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshottimport com.sun.identity.shared.debug.Debug;
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshottimport com.sun.identity.shared.locale.Locale;
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott
01a939641aeb0a095851921879620c3fab295cb2Robert Wapshott/**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * The class <code>ResponseProviderTypeManager</code> provides
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * methods to get a list of configured <code>ResponseProvider
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * </code> objects, and to obtain a factory object for it.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @supported.all.api
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @deprecated since 12.0.0
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster@Deprecated
8af80418ba1ec431c8027fa9668e5678658d3611Allan Fosterpublic class ResponseProviderTypeManager {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
01a939641aeb0a095851921879620c3fab295cb2Robert Wapshott private static String RESPONSE_PROVIDER = "ResponseProvider";
01a939641aeb0a095851921879620c3fab295cb2Robert Wapshott
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster private SSOToken token;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster private PolicyManager pm;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster private ResourceBundle rb;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster private static AMResourceBundleCache amCache =
01a939641aeb0a095851921879620c3fab295cb2Robert Wapshott AMResourceBundleCache.getInstance();
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster private static Debug debug = PolicyManager.debug;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
01a939641aeb0a095851921879620c3fab295cb2Robert Wapshott /**
01a939641aeb0a095851921879620c3fab295cb2Robert Wapshott * Constructs a <code>ResponseProviderTypeManager</code> object
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster ResponseProviderTypeManager() throws SSOException {
01a939641aeb0a095851921879620c3fab295cb2Robert Wapshott token = ServiceTypeManager.getSSOToken();
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster String lstr;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster lstr = token.getProperty("Locale");
01a939641aeb0a095851921879620c3fab295cb2Robert Wapshott java.util.Locale loc =
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster com.sun.identity.shared.locale.Locale.getLocale(lstr);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster rb = amCache.getResBundle(ResBundleUtils.rbName, loc);
01a939641aeb0a095851921879620c3fab295cb2Robert Wapshott }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Constructs a <code>ResponseProviderTypeManager</code> object
01a939641aeb0a095851921879620c3fab295cb2Robert Wapshott * @param pm <code>PolicyManager</code> to initialize the
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * <code>ResponseProviderTypeManager</code> with
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public ResponseProviderTypeManager(PolicyManager pm) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster this.pm = pm;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster token = pm.token;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster java.util.Locale loc ;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster try {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster String lstr = token.getProperty("Locale");
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster loc = com.sun.identity.shared.locale.Locale.getLocale(lstr);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster } catch (SSOException ex) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster debug.error ("ResponseProviderTypeManager:Unable to retreive "
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster +"locale from SSOToken", ex);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster loc = Locale.getDefaultLocale();
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster if (debug.messageEnabled()) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster debug.message("ResponseProviderTypeManager locale="+loc+
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster "\tI18nFileName = "+ ResBundleUtils.rbName);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster rb = amCache.getResBundle(ResBundleUtils.rbName, loc);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Returns a set of all valid <code>ResponseProvider</code> type names
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * defined in the <code>PolicyConfig</code> service.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Out of the box will have only
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * <code>IDRepoResponseProvider</code>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @return a set of all valid <code>ResponseProvider</code> type
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * names defined in the <code>PolicyConfig</code> service.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @throws SSOException if the <code>SSOToken</code> used to create
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * the <code>PolicyManager</code> has become invalid
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @throws PolicyException for any other abnormal condition.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public Set getResponseProviderTypeNames() throws SSOException,
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster PolicyException {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster return (PolicyManager.getPluginSchemaNames(RESPONSE_PROVIDER));
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott /**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Returns a set of valid <code>ResponseProvider</code> type names
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * configured.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Examples are <code>IDRepoResponseProvider</code> and any other
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * configured providers.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @return a set of all valid <code>ResponseProvider</code> type names
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * defined in the <code>PolicyConfig</code> service.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @throws SSOException if the <code>SSOToken</code> used to create
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * the <code>PolicyManager</code> has become invalid
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @throws PolicyException for any other abnormal condition
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public Set getSelectedResponseProviderTypeNames() throws SSOException,
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster PolicyException {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster String org = pm.getOrganizationDN();
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster Map map = PolicyConfig.getPolicyConfig(org);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster if (map != null) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster Object answer = map.get(PolicyConfig.SELECTED_RESPONSE_PROVIDERS);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster if (answer != null) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster return (Set) answer;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster return Collections.EMPTY_SET;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Returns the type of the <code>ResponseProvider</code> object.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * For example <code>IDRepoResponseProvider</code> or any other
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * configured providers.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @param respProvider <code>ResponseProvider</code> object for which this
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * method will return its associated type
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @return type of the responseprovider, e.g. <code>IDRepoResponseProvider
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * </code> . Returns <code>null</code> if not present.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public String getResponseProviderTypeName(ResponseProvider respProvider) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster return responseProviderTypeName(respProvider);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Returns <code>ResponseProvider</code> type name
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @param respProvider <code>ResponseProvider</code> for which
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * to get the type name
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @return <code>ResponseProvider</code> type name for the given
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * <code>ResponseProvider</code>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public static String responseProviderTypeName(
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster ResponseProvider respProvider)
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster if (respProvider == null) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster return (null);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster String name = null;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster String className = respProvider.getClass().getName();
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster Iterator items = PolicyManager.getPluginSchemaNames(RESPONSE_PROVIDER).
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster iterator();
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster while (items.hasNext()) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster String pluginName = (String) items.next();
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster PluginSchema ps = PolicyManager.getPluginSchema(RESPONSE_PROVIDER,
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster pluginName);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster if (className.equals(ps.getClassName())) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster name = pluginName;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster break;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster return (name);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Returns the I18N properties file name that should be
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * used to localize display names for the given
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * responseprovider name.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @param responseProviderTypeName response provider type name
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @return i18n properties file name
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster protected String getI18NPropertiesFileName(
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster String responseProviderTypeName)
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster PluginSchema ps = PolicyManager.getPluginSchema(RESPONSE_PROVIDER,
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster responseProviderTypeName);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster if (ps != null) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster return ps.getI18NFileName();
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster return null;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Returns the I18N key to be used to localize the
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * display name for the responseprovider name.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @param responseProviderName Response provider type name.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @return i18n key to obtain the display name.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public String getI18NKey(String responseProviderName) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster PluginSchema ps = PolicyManager.getPluginSchema(RESPONSE_PROVIDER,
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster responseProviderName);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster if (ps != null) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster return (ps.getI18NKey());
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster return null;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Returns the display name for the response provider
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @param responseProviderTypeName responseprovider type name
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @return display name for the response provider
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public String getDisplayName(String responseProviderTypeName) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster String displayName = null;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster String i18nKey = getI18NKey(responseProviderTypeName);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster if (i18nKey == null || i18nKey.length()==0 ) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster displayName = responseProviderTypeName;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster } else {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster displayName = Locale.getString(rb,i18nKey,debug);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster return displayName;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Returns an instance of the <code>ResponseProvider</code>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * given the response provider type name.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @param responseProviderTypeName response provider type name.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @return an instance of the <code>ResponseProvider</code>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * given the response provider type name.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @throws NameNotFoundException if the <code>ResponseProvider</code>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * not found
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @throws PolicyException for any other abnormal condition
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public ResponseProvider getResponseProvider(String responseProviderTypeName)
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster throws NameNotFoundException, PolicyException
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster PluginSchema ps = PolicyManager.getPluginSchema(RESPONSE_PROVIDER,
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster responseProviderTypeName);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster if (ps == null) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster throw (new NameNotFoundException(ResBundleUtils.rbName,
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster "invalid_response_provider", null, responseProviderTypeName,
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster PolicyException.RESPONSE_PROVIDER_COLLECTION));
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster // Construct the object
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster ResponseProvider respProvider = null;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster try {
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott String className = ps.getClassName();
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster respProvider = (ResponseProvider) Class.forName(className).
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster newInstance();
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster } catch (Exception e) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster throw (new PolicyException(e));
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster respProvider.initialize(pm.getPolicyConfig());
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster return respProvider;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Returns the view bean URL given the <code>ResponseProvider</code>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @param respProvider <code>ResponseProvider</code> for which
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * to get the view bean URL
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @return view bean URL defined for the <code>ResponseProvider</code>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * plugin in the policy service <code>PluginSchema</code>.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public String getViewBeanURL(ResponseProvider respProvider) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster return PolicyManager.getViewBeanURL(RESPONSE_PROVIDER,
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster respProvider.getClass().getName());
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster}
f79113ae65937c28690ec71f68f54f862b758baePhill Cunnington