modules/core/domain/src/main/java/org/rhq/core/domain/resource/ResourceType.java | 5 modules/core/domain/src/test/java/org/rhq/core/domain/resource/ResourceTypeTest.java | 30 +++++ modules/core/domain/src/test/resources/org/rhq/core/domain/resource/ResourceTypeTest.xml | 52 ++++++++++ 3 files changed, 84 insertions(+), 3 deletions(-)
New commits: commit 5fbc032760c132cfe2a23e0285574a89184ab91d Author: John Sanda jsanda@redhat.com Date: Wed Oct 20 21:19:55 2010 -0400
The find child query also needs to filter on the deleted flag for child types
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/resource/ResourceType.java b/modules/core/domain/src/main/java/org/rhq/core/domain/resource/ResourceType.java index 3dd9cd0..068d0c4 100644 --- a/modules/core/domain/src/main/java/org/rhq/core/domain/resource/ResourceType.java +++ b/modules/core/domain/src/main/java/org/rhq/core/domain/resource/ResourceType.java @@ -90,8 +90,9 @@ import org.rhq.core.domain.util.Summary; "AND rt.deleted = false"),
/* authz'ed queries for ResourceTypeManagerBean */ - @NamedQuery(name = ResourceType.QUERY_FIND_CHILDREN, query = "SELECT rt.childResourceTypes " - + "FROM ResourceType rt WHERE rt.id = :resourceTypeId AND rt.deleted = false"), + @NamedQuery(name = ResourceType.QUERY_FIND_CHILDREN, query = "SELECT c " + + "FROM ResourceType rt JOIN rt.childResourceTypes c WHERE rt.id = :resourceTypeId AND rt.deleted = false " + + "AND c.deleted = false"), @NamedQuery(name = ResourceType.FIND_CHILDREN_BY_PARENT, query = "SELECT DISTINCT rt FROM ResourceType AS rt " + "JOIN FETCH rt.parentResourceTypes AS pa " + // also fetch parents, as we need them later "WHERE rt.deleted = false and pa IN (:resourceType)"), diff --git a/modules/core/domain/src/test/java/org/rhq/core/domain/resource/ResourceTypeTest.java b/modules/core/domain/src/test/java/org/rhq/core/domain/resource/ResourceTypeTest.java index bb20925..d165a06 100644 --- a/modules/core/domain/src/test/java/org/rhq/core/domain/resource/ResourceTypeTest.java +++ b/modules/core/domain/src/test/java/org/rhq/core/domain/resource/ResourceTypeTest.java @@ -49,7 +49,35 @@ public class ResourceTypeTest extends UnitilsTestNG { .setParameter("plugin", "TestPlugin1") .getResultList();
- assertEquals(results.size(), 0, "Deleted type should be ignored"); + assertEquals(results.size(), 0, "Deleted types should be ignored"); + } + + @Test + @SuppressWarnings("unchecked") + public void findAll() { + List<ResourceType> results = entityMgr.createNamedQuery(QUERY_FIND_ALL).getResultList(); + + assertTrue(results.size() > 0, "Expected a non-empty result set"); + assertDeletedTypesIgnored(results); + } + + @Test + @SuppressWarnings("unchecked") + public void findChildren() { + List<ResourceType> results = entityMgr.createNamedQuery(QUERY_FIND_CHILDREN) + .setParameter("resourceTypeId", -4) + .getResultList(); + + assertEquals(results.size(), 2, "Expected to get two resource types for resource type with id -4"); + assertDeletedTypesIgnored(results); + } + + void assertDeletedTypesIgnored(List<ResourceType> types) { + for (ResourceType type : types) { + if (type.isDeleted()) { + fail("Deleted should be ignored."); + } + } }
} diff --git a/modules/core/domain/src/test/resources/org/rhq/core/domain/resource/ResourceTypeTest.xml b/modules/core/domain/src/test/resources/org/rhq/core/domain/resource/ResourceTypeTest.xml index 15618c4..9383f3c 100644 --- a/modules/core/domain/src/test/resources/org/rhq/core/domain/resource/ResourceTypeTest.xml +++ b/modules/core/domain/src/test/resources/org/rhq/core/domain/resource/ResourceTypeTest.xml @@ -17,4 +17,56 @@ singleton="false" plugin="TestPlugin1" deleted="true"/> + <rhq_resource_type id="-3" + name="TestServer1" + category="SERVER" + creation_data_type="CONFIGURATION" + create_delete_policy="BOTH" + supports_manual_add="true" + singleton="false" + plugin="TestPlugin2" + deleted="true"/> + <rhq_resource_type id="-4" + name="ParentServer1" + category="SERVER" + creation_data_type="CONFIGURATION" + create_delete_policy="BOTH" + supports_manual_add="true" + singleton="false" + plugin="TestPlugin3" + deleted="false"/> + <rhq_resource_type id="-5" + name="ChildService1" + category="SERVICE" + creation_data_type="CONFIGURATION" + create_delete_policy="BOTH" + supports_manual_add="true" + singleton="false" + plugin="TestPlugin3" + deleted="false"/> + <rhq_resource_type id="-6" + name="ChildService2" + category="SERVICE" + creation_data_type="CONFIGURATION" + create_delete_policy="BOTH" + supports_manual_add="true" + singleton="false" + plugin="TestPlugin3" + deleted="false"/> + <rhq_resource_type id="-7" + name="ChildService3" + category="SERVICE" + creation_data_type="CONFIGURATION" + create_delete_policy="BOTH" + supports_manual_add="true" + singleton="false" + plugin="TestPlugin3" + deleted="true"/> + + <rhq_resource_type_parents resource_type_id="-5" + parent_resource_type_id="-4"/> + <rhq_resource_type_parents resource_type_id="-6" + parent_resource_type_id="-4"/> + <rhq_resource_type_parents resource_type_id="-7" + parent_resource_type_id="-4"/> </dataset> \ No newline at end of file