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