EntityPropertiesBase.java revision 4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1c
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster/**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Copyright (c) 2007 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: EntityPropertiesBase.java,v 1.4 2008/06/25 05:49:34 qcheng Exp $
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterpackage com.sun.identity.console.federation;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.iplanet.jato.model.ModelControlException;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.iplanet.jato.RequestContext;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.iplanet.jato.RequestManager;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.iplanet.jato.view.View;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.iplanet.jato.view.event.DisplayEvent;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.web.ui.view.alert.CCAlert;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.web.ui.view.pagetitle.CCPageTitle;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.iplanet.jato.view.event.RequestInvocationEvent;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.console.base.AMPropertySheet;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.console.base.AMViewBeanBase;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.console.base.AMViewConfig;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.console.base.AMPrimaryMastHeadViewBean;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.console.base.model.AMModel;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.console.base.model.AMSystemConfig;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.console.base.model.AMFormatUtils;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.console.base.model.AMAdminConstants;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.console.base.model.AMConsoleException;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.console.base.model.AMPropertySheetModel;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.console.base.model.AMModelBase;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.console.federation.model.EntityModel;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.console.federation.model.EntityModelImpl;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.web.ui.model.CCPageTitleModel;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.web.ui.view.tabs.CCTabs;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.text.MessageFormat;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.util.List;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.util.Map;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster/**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * This is the base for all of the entity propery views. It will build the
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * tab menu based on the configurations (roles) supported by the selected
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * entity type. Extender must implement the following methods:
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * protected abstract String getProfileName();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * protected abstract void createPropertyModel(String name);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * The value returned from getProfileName() must be the beginning of the name
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * of the class viewbean being invoked. For example, for a SAMLv2 protocol
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * entity, getProfileName() will return "SAMLv2" which will then be converted
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * to SAMLv2GeneralViewBean, SAMLv2General.jsp, etc...
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterpublic abstract class EntityPropertiesBase
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster extends AMPrimaryMastHeadViewBean
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster{
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public String entityName;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public String realm;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public String location;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster protected CCPageTitleModel ptModel = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster protected AMPropertySheetModel psModel = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private static final String PAGE_TITLE = "pgtitle";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static final String PROPERTY_ATTRIBUTES = "propertyAttributes";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private boolean submitCycle;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private boolean initialized = false;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static final String ENTITY_NAME = "entityName";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static final String ENTITY_REALM = "entityRealm";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static final String ENTITY_LOCATION = "entityLocation";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static final String HOSTED = "hosted";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public EntityPropertiesBase(String name) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster super(name);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void beginDisplay(DisplayEvent event)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws ModelControlException
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster super.beginDisplay(event);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster retrieveCommonProperties();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster setPageTitle(entityName);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster protected void registerChildren() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster registerChild(PROPERTY_ATTRIBUTES, AMPropertySheet.class);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster psModel.registerChildren(this);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ptModel.registerChildren(this);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster registerChild(TAB_COMMON, CCTabs.class);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster super.registerChildren();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster protected View createChild(String name) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster View view = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (name.equals(PAGE_TITLE)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster view = new CCPageTitle(this, ptModel, name);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if (name.equals(PROPERTY_ATTRIBUTES)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster view = new AMPropertySheet(this, psModel, name);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if (psModel.isChildSupported(name)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster view = psModel.createChild(this, name);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if (ptModel.isChildSupported(name)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster view = ptModel.createChild(this, name);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster view = super.createChild(name);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return view;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster protected void initialize() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (!initialized) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // get the type of entity selected, and name
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String name = (String)getPageSessionAttribute(ENTITY_NAME);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (name != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster super.initialize();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster initialized = true;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster createPageTitleModel();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster createPropertyModel();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster registerChildren();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
}
protected void setPageTitle(String title) {
ptModel.setPageTitleText(title);
}
protected void createPageTitleModel() {
ptModel = new CCPageTitleModel(
getClass().getClassLoader().getResourceAsStream(
"com/sun/identity/console/threeBtnsPageTitle.xml"));
ptModel.setValue("button1", "button.save");
ptModel.setValue("button2", "button.reset");
ptModel.setValue("button3", "button.back");
}
protected void createTabModel() {
String profile = getProfileName();
String entity = (String)getPageSessionAttribute(ENTITY_NAME);
String realm = (String)getPageSessionAttribute("entityRealm");
EntityModel eModel = (EntityModel)getEntityModel();
if (tabModel == null) {
if (profile.equals(eModel.SAMLV2)) {
AMViewConfig amconfig = AMViewConfig.getInstance();
List tabstoDisplay = eModel.getSAMLv2Roles(entity, realm);
tabModel = amconfig.getSAMLv2TabsModel("SAMLv2", "/",
getRequestContext().getRequest(), tabstoDisplay);
registerChild(TAB_COMMON, CCTabs.class);
tabModel.clear();
} else if (!profile.equals(eModel.SAMLV2)) {
AMViewConfig amconfig = AMViewConfig.getInstance();
List entries = eModel.getTabMenu(profile, entity, realm);
if ((entries != null) && (entries.size() > 0)) {
amconfig.addTabEntries(profile, entries, true);
}
tabModel = amconfig.getTabsModel(
profile, "/", getRequestContext().getRequest());
tabModel.clear();
tabModel.setSelectedNode(1);
}
}
}
protected AMModel getEntityModel() {
RequestContext rc = RequestManager.getRequestContext();
EntityModel model = new EntityModelImpl(
rc.getRequest(), getPageSessionAttributes());
return model;
}
/************************************************************************
*
* Event Handlers for the following events:
* tab selection, save button, reset button, back button.
*
************************************************************************/
public void nodeClicked(RequestInvocationEvent event, int nodeID) {
try {
// get the entity tab that was selected and forward the
// request to that vb
AMViewBeanBase vb = getTabNodeAssociatedViewBean(
getProfileName(), nodeID);
String tmp = (String)getPageSessionAttribute(
AMAdminConstants.PREVIOUS_TAB_ID);
vb.setPageSessionAttribute(AMAdminConstants.PREVIOUS_TAB_ID, tmp);
passPgSessionMap(vb);
vb.forwardTo(getRequestContext());
} catch (AMConsoleException e) {
forwardTo();
}
}
public void handleButton1Request(RequestInvocationEvent event)
throws ModelControlException
{
forwardTo();
}
public void handleButton2Request(RequestInvocationEvent event) {
forwardTo();
}
public void handleButton3Request(RequestInvocationEvent event) {
// reset the select tab to be the federation view
String tmp =
(String)getPageSessionAttribute(AMAdminConstants.PREVIOUS_TAB_ID);
setPageSessionAttribute(getTrackingTabIDName(), tmp);
FederationViewBean vb = (FederationViewBean)
getViewBean(FederationViewBean.class);
passPgSessionMap(vb);
vb.forwardTo(getRequestContext());
}
/**
* This will pull the following properties from the page session:
* entity name
* name of the realm where the entity exists
* location (either hosted or remote)
*/
public void retrieveCommonProperties() {
entityName = (String)getPageSessionAttribute(ENTITY_NAME);
realm = (String)getPageSessionAttribute(ENTITY_REALM);
location = (String)getPageSessionAttribute(ENTITY_LOCATION);
}
public boolean isHosted() {
return (location != null && location.equals(HOSTED)) ? true : false;
}
protected abstract String getProfileName();
protected abstract void createPropertyModel();
}