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(a)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());
}
}
Show replies by date