}
// Update paramaters
try
{
PortletInstance instance =
PersistenceManager.getInstance(p, rundata);
PortletEntry regEntry =
(PortletEntry) Registry.getEntry(Registry.PORTLET, p.getName());
Iterator i = params.iterator();
//System.out.println("==========================================");
while (i.hasNext())
{
Parameter param = (Parameter) i.next();
String name = param.getName();
String newValue = null;
String[] testArray = rundata.getParameters().getStrings(name);
if (testArray != null && testArray.length > 1)
{
newValue =
org.apache.jetspeed.util.StringUtils.arrayToString(
testArray,
",");
}
else
{
newValue = rundata.getParameters().getString(name);
if (newValue == null)
{
newValue = "";
}
}
String regValue = regEntry.getParameter(name).getValue();
//param.getValue();
String psmlValue = instance.getAttribute(name);
//System.out.println(name + "= [" + psmlValue + "] in psml");
//System.out.println(name + "= [" + regValue + "] in registry");
// New value for this parameter exists
if (newValue != null)
{
//System.out.println(name + "= [" + newValue + "] in request");
// New value differs from registry - record it in psml
if (!regValue.equals(newValue)
|| !psmlValue.equals(newValue))
{
instance.setAttribute(name, newValue);
psmlValue = newValue;
//System.out.println("setting attribute for [" + name + "] to [" + newValue + "]");
}
madePsChange = true;
}
// Remove duplicate parameters from psml
if (psmlValue != null && psmlValue.equals(regValue))
{
//System.out.println("removing attribute for [" + name + "]");
instance.removeAttribute(name);
madePsChange = true;
}
}