Author: thomas.heute(a)jboss.com
Date: 2007-08-31 05:57:29 -0400 (Fri, 31 Aug 2007)
New Revision: 8120
Modified:
branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/deployment/jboss/PortletAppDeployment.java
Log:
JBPORTAL-1666: When redploying, removed preferences in portlet-instances.xml are not
deleted
Modified:
branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/deployment/jboss/PortletAppDeployment.java
===================================================================
---
branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/deployment/jboss/PortletAppDeployment.java 2007-08-31
00:48:25 UTC (rev 8119)
+++
branches/JBoss_Portal_Branch_2_6/core/src/main/org/jboss/portal/core/deployment/jboss/PortletAppDeployment.java 2007-08-31
09:57:29 UTC (rev 8120)
@@ -42,6 +42,7 @@
import org.jboss.portal.portlet.PortletInvokerException;
import org.jboss.portal.portlet.impl.jsr168.metadata.PreferenceMetaData;
import org.jboss.portal.portlet.state.PropertyChange;
+import org.jboss.portal.portlet.state.PropertyMap;
import org.jboss.portal.security.RoleSecurityBinding;
import org.jboss.portal.security.SecurityConstants;
import org.jboss.portal.security.metadata.SecurityConstraintsMetaData;
@@ -396,22 +397,39 @@
private void configureInstance(Instance instance, InstanceMetaData metaData) throws
PortletInvokerException, SecurityConfigurationException
{
+ List changes = new ArrayList();
+
+ // Reset all preferences that are not overridden
PreferencesMetaData preferencesMetaData = metaData.getPreferences();
-
+ PropertyMap propertyMap = instance.getProperties();
+ if (propertyMap != null && propertyMap.size() > 0)
+ {
+ for (Iterator i = propertyMap.keySet().iterator(); i.hasNext();)
+ {
+ String key = (String)i.next();
+ if (preferencesMetaData == null || preferencesMetaData.getPreference(key) ==
null)
+ {
+ changes.add(PropertyChange.newReset(key));
+ }
+ }
+ }
+
// Configure preferences only if needed
if (preferencesMetaData != null && preferencesMetaData.size() > 0)
{
- PropertyChange[] changes = new PropertyChange[preferencesMetaData.size()];
- int idx = 0;
for (Iterator i = preferencesMetaData.iterator(); i.hasNext();)
{
PreferenceMetaData preference = (PreferenceMetaData)i.next();
Value value = new StringValue(preference.getValues());
- changes[idx++] = PropertyChange.newUpdate(preference.getName(), value);
+ changes.add(PropertyChange.newUpdate(preference.getName(), value));
}
- instance.setProperties(changes);
}
+ if (changes.size() > 0)
+ {
+ instance.setProperties((PropertyChange[])changes.toArray(new
PropertyChange[changes.size()]));
+ }
+
// Configure security
SecurityConstraintsMetaData securityConstraints =
metaData.getSecurityConstraints();
if (securityConstraints == null)
Show replies by date