/* * Copyright 2000-2001,2004 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jetspeed.util; import org.apache.turbine.util.RunData; import org.apache.jetspeed.portal.portlets.VelocityPortlet; import org.apache.jetspeed.services.Registry; import org.apache.jetspeed.om.registry.Parameter; import org.apache.jetspeed.om.registry.PortletEntry; import org.apache.jetspeed.portal.Portlet; import org.apache.jetspeed.portal.PortletConfig; /** * Defines standard utility functions for config parameters * * @author <a href="mailto:david@apache.org">David Sean Taylor</a> * @author <a href="mailto:morciuch@apache.org">Mark Orciuch</a> * @author <a href="mailto:weaver@apache.org">Scott T. Weaver</a> * @version $Id: PortletConfigState.java,v 1.4 2004/02/23 03:23:42 jford Exp $ */ public class PortletConfigState { /** Returns the parameter for this name from the xreg */ public static String getConfigParameter(Portlet portlet, String attrName, String attrDefaultValue) { PortletConfig pc = portlet.getPortletConfig(); return pc.getInitParameter(attrName, attrDefaultValue); } /** Returns the parameter for this name from the psml */ public static String getInstanceParameter(Portlet portlet, RunData rundata, String attrName) { return portlet.getAttribute( attrName, null, rundata); } /** * Sets the parameter in the psml */ public static void setInstanceParameter(Portlet portlet, RunData rundata, String attrName, String attrValue) { portlet.setAttribute(attrName, attrValue, rundata); } public static void clearInstanceParameter(Portlet portlet, RunData rundata, String attrName) { if( portlet.getAttribute(attrName, null, rundata) != null ) portlet.setAttribute(attrName, null, rundata); } /* * Gets the parameter using the fallback routine - first checks PSML, * in case it doesn't find it then it looks up the registry */ public static String getParameter(Portlet portlet, RunData rundata, String attrName, String attrDefValue) { String str = getInstanceParameter( portlet, rundata, attrName); if (str == null) { str = getConfigParameter(portlet, attrName, attrDefValue); } return str; } /** Returns the parameter for this name from the xreg */ public static String getConfigParameter(VelocityPortlet portlet, String attrName, String attrDefaultValue) { return getConfigParameter((Portlet) portlet, attrName, attrDefaultValue); } /** Returns the parameter for this name from the psml */ public static String getInstanceParameter(VelocityPortlet portlet, RunData rundata, String attrName) { return getInstanceParameter((Portlet) portlet, rundata, attrName); } /** * Sets the parameter in the psml */ public static void setInstanceParameter(VelocityPortlet portlet, RunData rundata, String attrName, String attrValue) { setInstanceParameter((Portlet) portlet, rundata, attrName, attrValue); } public static void clearInstanceParameter(VelocityPortlet portlet, RunData rundata, String attrName) { clearInstanceParameter((Portlet) portlet,rundata,attrName); } /* * Gets the parameter using the fallback routine - first checks PSML, * in case it doesn't find it then it looks up the registry */ public static String getParameter(VelocityPortlet portlet, RunData rundata, String attrName, String attrDefValue) { return getParameter((Portlet) portlet, rundata, attrName, attrDefValue); } /** * Sets the registry (.xreg) value of this portlet. Use this method because * PortletConfig.setInitParameter() is all but useless in this case. The portlet * config availble in the Portlet is never saved back to the registry. */ public static void setPortletConfigParameter(Portlet portlet, String name, String value) { PortletEntry pEntry = (PortletEntry) Registry.getEntry(Registry.PORTLET, portlet.getName()); if (pEntry != null) { Parameter param = pEntry.getParameter(name); portlet.getPortletConfig().setInitParameter(name, value); if (param != null) { param.setValue(value); } else { pEntry.addParameter(name, value); } } } }