modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/disambiguation/DefaultDisambiguationUpdateStrategies.java | 25 ++++++++-- modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/disambiguation/MutableDisambiguationReport.java | 2 2 files changed, 22 insertions(+), 5 deletions(-)
New commits: commit e17e185c72596cb16740110094c199593fbe5446 Author: Joseph Marques joseph@redhat.com Date: Wed Sep 8 16:37:40 2010 -0400
provide better debug-logging for disambiguation, graceful continue if any parents are null
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/disambiguation/DefaultDisambiguationUpdateStrategies.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/disambiguation/DefaultDisambiguationUpdateStrategies.java index c11c3dd..245b105 100644 --- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/disambiguation/DefaultDisambiguationUpdateStrategies.java +++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/disambiguation/DefaultDisambiguationUpdateStrategies.java @@ -25,6 +25,9 @@ package org.rhq.enterprise.server.resource.disambiguation;
import java.util.EnumSet;
+import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + import org.rhq.enterprise.server.resource.disambiguation.MutableDisambiguationReport.Resource;
/** @@ -110,6 +113,8 @@ public enum DefaultDisambiguationUpdateStrategies implements DisambiguationUpdat } };
+ private static final Log log = LogFactory.getLog(DefaultDisambiguationUpdateStrategies.class); + /** * This updates the resources in the report according to the resolutions contained in the policy. * This method is called as part of the {@link DisambiguationUpdateStrategy#update(DisambiguationPolicy, MutableDisambiguationReport)} @@ -123,7 +128,11 @@ public enum DefaultDisambiguationUpdateStrategies implements DisambiguationUpdat */ public static <T> void updateResources(DisambiguationPolicy policy, MutableDisambiguationReport<T> report) { updateResource(policy.get(0), report.resource); - + + if (log.isDebugEnabled()) { + log.debug("updateResource called with " + report); + } + int disambiguationPolicyIndex = 1; while (disambiguationPolicyIndex < policy.size() && disambiguationPolicyIndex - 1 < report.parents.size()) { ResourceResolution parentResolution = policy.get(disambiguationPolicyIndex); @@ -147,10 +156,18 @@ public enum DefaultDisambiguationUpdateStrategies implements DisambiguationUpdat //this has to be done on all the parents, not just the ones that are immediately needed //for disambiguation. The parents update strategies might leave more parents than those needed. if (policy.get(0) == ResourceResolution.PLUGIN) { + MutableDisambiguationReport.Resource reportResource = report.resource; + MutableDisambiguationReport.ResourceType reportType = reportResource.resourceType; + String reportPlugin = reportType.plugin; for (MutableDisambiguationReport.Resource parent : report.parents) { - if (report.resource.resourceType.plugin.equals(parent.resourceType.plugin)) { - - parent.resourceType.plugin = null; + if (parent == null) { + // if any entry in the parent list was null, gracefully ignore + continue; + } + MutableDisambiguationReport.ResourceType reportParentType = parent.resourceType; + String reportParentPlugin = reportParentType.plugin; + if (reportPlugin.equals(reportParentPlugin)) { + reportParentType.plugin = null; } } } diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/disambiguation/MutableDisambiguationReport.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/disambiguation/MutableDisambiguationReport.java index 68995d9..b5bef8a 100644 --- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/disambiguation/MutableDisambiguationReport.java +++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/disambiguation/MutableDisambiguationReport.java @@ -63,7 +63,7 @@ public class MutableDisambiguationReport<T> { }
public String toString() { - return "MutableResource[id=" + id + ", name='" + name + ", resourceType=" + resourceType + "]"; + return "MutableResource[id=" + id + ", name='" + name + "', resourceType='" + resourceType + "']"; } }
rhq-commits@lists.fedorahosted.org