modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/metadata/ConfigurationDefinitionUpdateReport.java | 17 ++++++++ modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/metadata/ConfigurationMetadataManagerBean.java | 8 ++++ modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/metadata/ResourceMetadataManagerBean.java | 19 ++++++++-- 3 files changed, 41 insertions(+), 3 deletions(-)
New commits: commit e45ddc85ee546040b3d8b6b9ff3a671149d2a898 Author: John Sanda jsanda@redhat.com Date: Tue Sep 28 17:15:48 2010 -0400
[BZ 619781] Handling more scenarios for settting connection properties to default values
Adding logic to handle three additional scenarios each of which involves connection properties that are required and specify a default value:
1) A new property is added to a new group 2) An existing property not part of a group added to an existing group 3) A property previously in a group moved outside of a group
There were also some scenarios when properties were moved into or out of a group and the group reference was not getting set or unset. ConfigurationMetadataManagerBean has been modifed to update these references.
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/metadata/ConfigurationDefinitionUpdateReport.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/metadata/ConfigurationDefinitionUpdateReport.java index ad0c84b..ecad316 100644 --- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/metadata/ConfigurationDefinitionUpdateReport.java +++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/metadata/ConfigurationDefinitionUpdateReport.java @@ -25,6 +25,7 @@ package org.rhq.enterprise.server.configuration.metadata;
import org.rhq.core.domain.configuration.definition.ConfigurationDefinition; import org.rhq.core.domain.configuration.definition.PropertyDefinition; +import org.rhq.core.domain.configuration.definition.PropertyDefinitionSimple;
import java.util.HashSet; import java.util.Set; @@ -35,6 +36,8 @@ public class ConfigurationDefinitionUpdateReport {
private Set<PropertyDefinition> newPropertyDefs = new HashSet<PropertyDefinition>();
+ private Set<PropertyDefinition> updatedPropertyDefs = new HashSet<PropertyDefinition>(); + public ConfigurationDefinitionUpdateReport(ConfigurationDefinition configurationDefinition) { configurationDef = configurationDefinition; } @@ -44,11 +47,23 @@ public class ConfigurationDefinitionUpdateReport { }
public void addNewPropertyDefinition(PropertyDefinition propertyDef) { - newPropertyDefs.add(propertyDef); + if (propertyDef instanceof PropertyDefinitionSimple) { + newPropertyDefs.add(propertyDef); + } }
public Set<PropertyDefinition> getNewPropertyDefinitions() { return newPropertyDefs; }
+ public void addUpdatedPropertyDefinition(PropertyDefinition propertyDef) { + if (propertyDef instanceof PropertyDefinitionSimple) { + updatedPropertyDefs.add(propertyDef); + } + } + + public Set<PropertyDefinition> getUpdatedPropertyDefinitions() { + return updatedPropertyDefs; + } + } diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/metadata/ConfigurationMetadataManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/metadata/ConfigurationMetadataManagerBean.java index 8427c8b..04a3995 100644 --- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/metadata/ConfigurationMetadataManagerBean.java +++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/configuration/metadata/ConfigurationMetadataManagerBean.java @@ -74,6 +74,7 @@ public class ConfigurationMetadataManagerBean implements ConfigurationMetadataMa PropertyDefinition existingProp = existingDefinition.get(newProperty.getName()); if (existingProp != null) { updatePropertyDefinition(existingProp, newProperty); + updateReport.addUpdatedPropertyDefinition(newProperty); } else { existingDefinition.put(newProperty); updateReport.addNewPropertyDefinition(newProperty); @@ -130,6 +131,7 @@ public class ConfigurationMetadataManagerBean implements ConfigurationMetadataMa PropertyDefinition existingProperty = existingDefinition.getPropertyDefinitions().get(nDef.getName()); if (existingProperty != null) { updatePropertyDefinition(existingProperty, nDef); + updateReport.addUpdatedPropertyDefinition(nDef); } else { existingDefinition.put(nDef); updateReport.addNewPropertyDefinition(nDef); @@ -157,6 +159,11 @@ public class ConfigurationMetadataManagerBean implements ConfigurationMetadataMa entityManager.persist(def); def.setPropertyGroupDefinition(group); def.setConfigurationDefinition(existingDefinition); + + if (!exPDefs.containsKey(def.getName())) { + updateReport.addNewPropertyDefinition(def); + } + exPDefs.put(def.getName(), def); } } @@ -309,6 +316,7 @@ public class ConfigurationMetadataManagerBean implements ConfigurationMetadataMa existingProperty.setRequired(newProperty.isRequired()); existingProperty.setReadOnly(newProperty.isReadOnly()); existingProperty.setSummary(newProperty.isSummary()); + existingProperty.setPropertyGroupDefinition(newProperty.getPropertyGroupDefinition());
/* * After the general things have been set, go through the subtypes of PropertyDefinition. If the new type is the diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/metadata/ResourceMetadataManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/metadata/ResourceMetadataManagerBean.java index 64e9afd..53048c9 100644 --- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/metadata/ResourceMetadataManagerBean.java +++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/metadata/ResourceMetadataManagerBean.java @@ -944,7 +944,8 @@ public class ResourceMetadataManagerBean implements ResourceMetadataManagerLocal .updateConfigurationDefinition(resourceType.getPluginConfigurationDefinition(), existingConfigurationDefinition);
- if (updateReport.getNewPropertyDefinitions().size() > 0) { + if (updateReport.getNewPropertyDefinitions().size() > 0 || + updateReport.getUpdatedPropertyDefinitions().size() > 0) { Subject overlord = subjectManager.getOverlord(); ResourceCriteria criteria = new ResourceCriteria(); criteria.addFilterResourceTypeId(existingType.getId()); @@ -966,6 +967,7 @@ public class ResourceMetadataManagerBean implements ResourceMetadataManagerLocal
private void updateResourcePluginConfiguration(Resource resource, ConfigurationDefinitionUpdateReport updateReport) { Configuration pluginConfiguration = resource.getPluginConfiguration(); + boolean modified = false; int numberOfProperties = pluginConfiguration.getProperties().size(); ConfigurationTemplate template = updateReport.getConfigurationDefinition().getDefaultTemplate(); Configuration templateConfiguration = template.getConfiguration(); @@ -974,10 +976,23 @@ public class ResourceMetadataManagerBean implements ResourceMetadataManagerLocal if (propertyDef.isRequired()) { Property templateProperty = templateConfiguration.get(propertyDef.getName()); pluginConfiguration.put(templateProperty.deepCopy(false)); + modified = true; } }
- if (pluginConfiguration.getProperties().size() > numberOfProperties) { + for (PropertyDefinition propertyDef : updateReport.getUpdatedPropertyDefinitions()) { + if (propertyDef.isRequired()) { + String propertyValue = pluginConfiguration.getSimpleValue(propertyDef.getName(), null); + if (propertyValue == null) { + Property templateProperty = templateConfiguration.get(propertyDef.getName()); + pluginConfiguration.put(templateProperty.deepCopy(false)); + modified = true; + } + } + } + +// if (pluginConfiguration.getProperties().size() > numberOfProperties) { + if (modified) { resource.setMtime(new Date().getTime()); } }