modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleResourceDeployment.java
| 3 +++
modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleResourceDeploymentHistory.java
| 6 +++++-
modules/core/domain/src/main/java/org/rhq/core/domain/resource/Resource.java
| 6 ++++--
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerBean.java
| 4 ++++
4 files changed, 16 insertions(+), 3 deletions(-)
New commits:
commit 834e20735652dc70654b84e5eafdededa2112ad4
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Fri Nov 19 15:07:27 2010 -0500
[BZ 655187]
I believe in the past Resource uninventory was using hibernate cascade
to remove bundle resource deployments. At some point in the data model
changes it looks like I took the relation off of Resource and did not
add the needed remove logic.
I've now added to bulk delete for efficient removal of BundleResourceDeployment
and BundleResourceDeploymentHistory.
(cherry picked from commit 9aeb5a00158b7d24dbb706522d8f8bb35e03bb07)
diff --git
a/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleResourceDeployment.java
b/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleResourceDeployment.java
index 5638dc9..1bc3c25 100644
---
a/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleResourceDeployment.java
+++
b/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleResourceDeployment.java
@@ -58,6 +58,8 @@ import org.rhq.core.domain.resource.Resource;
*/
@Entity
@NamedQueries( {
+ @NamedQuery(name = BundleResourceDeployment.QUERY_DELETE_BY_RESOURCES, query =
"DELETE FROM BundleResourceDeployment brd "
+ + " WHERE brd.resource.id IN ( :resourceIds ) )"),
@NamedQuery(name = BundleResourceDeployment.QUERY_FIND_BY_DEPLOYMENT_ID_NO_FETCH,
query = "SELECT brd FROM BundleResourceDeployment brd WHERE brd.bundleDeployment.id =
:id "),
@NamedQuery(name = BundleResourceDeployment.QUERY_FIND_BY_RESOURCE_ID_NO_FETCH, query
= "SELECT brd FROM BundleResourceDeployment brd WHERE brd.resource.id = :id ")
})
@SequenceGenerator(name = "SEQ", sequenceName =
"RHQ_BUNDLE_RES_DEPLOY_ID_SEQ")
@@ -66,6 +68,7 @@ import org.rhq.core.domain.resource.Resource;
public class BundleResourceDeployment implements Serializable {
private static final long serialVersionUID = 1L;
+ public static final String QUERY_DELETE_BY_RESOURCES =
"BundleResourceDeployment.deleteByResources";
public static final String QUERY_FIND_BY_DEPLOYMENT_ID_NO_FETCH =
"BundleResourceDeployment.findByDeploymentIdNoFetch";
public static final String QUERY_FIND_BY_RESOURCE_ID_NO_FETCH =
"BundleResourceDeployment.findByResourceIdNoFetch";
diff --git
a/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleResourceDeploymentHistory.java
b/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleResourceDeploymentHistory.java
index d528f8b..eb00b26 100644
---
a/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleResourceDeploymentHistory.java
+++
b/modules/core/domain/src/main/java/org/rhq/core/domain/bundle/BundleResourceDeploymentHistory.java
@@ -48,7 +48,10 @@ import javax.xml.bind.annotation.XmlType;
* @author Jay Shaughnessy
*/
@Entity
-@NamedQueries( { @NamedQuery(name = BundleResourceDeploymentHistory.QUERY_FIND_ALL, query
= "SELECT brdh FROM BundleResourceDeploymentHistory brdh") //
+@NamedQueries( {
+ @NamedQuery(name = BundleResourceDeploymentHistory.QUERY_DELETE_BY_RESOURCES, query =
"DELETE FROM BundleResourceDeploymentHistory brdh "
+ + " WHERE brdh.resourceDeployment IN ( SELECT brd FROM
BundleResourceDeployment brd WHERE brd.resource.id IN ( :resourceIds ) ) )"),
+ @NamedQuery(name = BundleResourceDeploymentHistory.QUERY_FIND_ALL, query =
"SELECT brdh FROM BundleResourceDeploymentHistory brdh") //
})
@SequenceGenerator(name = "SEQ", sequenceName =
"RHQ_BUNDLE_RES_DEP_HIST_ID_SEQ")
@Table(name = "RHQ_BUNDLE_RES_DEP_HIST")
@@ -56,6 +59,7 @@ import javax.xml.bind.annotation.XmlType;
public class BundleResourceDeploymentHistory implements Serializable {
private static final long serialVersionUID = 1L;
+ public static final String QUERY_DELETE_BY_RESOURCES =
"BundleResourceDeploymentHistory.deleteByResources";
public static final String QUERY_FIND_ALL =
"BundleResourceDeploymentHistory.findAll";
@Column(name = "ID", nullable = false)
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/resource/Resource.java
b/modules/core/domain/src/main/java/org/rhq/core/domain/resource/Resource.java
index 52420f4..b35dfac 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/resource/Resource.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/resource/Resource.java
@@ -1032,8 +1032,10 @@ public class Resource implements Comparable<Resource>,
Serializable {
@ManyToOne(fetch = FetchType.LAZY)
private ProductVersion productVersion;
- // @OneToMany(mappedBy = "resource", fetch = FetchType.LAZY, cascade =
CascadeType.ALL)
- // private List<BundleResourceDeployment> resourceDeployments = new
ArrayList<BundleResourceDeployment>();
+ // not currently needed, but could be added if we find a need to get deployment info
via the resource
+ // bulk delete (already being done)
+ // @OneToMany(mappedBy = "resource", fetch = FetchType.LAZY)
+ // private List<BundleResourceDeployment> resourceDeployments = new
ArrayList<BundleResourceDeployment>();
@ManyToMany(mappedBy = "resources", fetch = FetchType.LAZY, cascade =
CascadeType.REMOVE)
private Set<Tag> tags;
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerBean.java
index 3687b5e..f033078 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerBean.java
@@ -55,6 +55,8 @@ import org.rhq.core.domain.alert.notification.AlertNotification;
import org.rhq.core.domain.alert.notification.AlertNotificationLog;
import org.rhq.core.domain.auth.Subject;
import org.rhq.core.domain.authz.Permission;
+import org.rhq.core.domain.bundle.BundleResourceDeployment;
+import org.rhq.core.domain.bundle.BundleResourceDeploymentHistory;
import org.rhq.core.domain.configuration.PluginConfigurationUpdate;
import org.rhq.core.domain.configuration.ResourceConfigurationUpdate;
import org.rhq.core.domain.content.ContentServiceRequest;
@@ -396,6 +398,8 @@ public class ResourceManagerBean implements ResourceManagerLocal,
ResourceManage
ResourceError.QUERY_DELETE_BY_RESOURCES, //
Event.DELETE_BY_RESOURCES, //
EventSource.QUERY_DELETE_BY_RESOURCES, //
+ BundleResourceDeploymentHistory.QUERY_DELETE_BY_RESOURCES, // resource
deployment history BEFORE resource deployment
+ BundleResourceDeployment.QUERY_DELETE_BY_RESOURCES, //
PackageInstallationStep.QUERY_DELETE_BY_RESOURCES, // steps BEFORE installed
package history
InstalledPackageHistory.QUERY_DELETE_BY_RESOURCES, // history BEFORE
installed packages & content service requests
InstalledPackage.QUERY_DELETE_BY_RESOURCES, //
Show replies by date