Author: rmorgan
Date: 2010-03-17 09:30:34 -0700 (Wed, 17 Mar 2010)
New Revision: 14389
URL: http://svn.hyperic.org/?view=rev&root=Hyperic+HQ&revision=14389
Modified:
branches/HQ_4_2_0_PATCH/src/org/hyperic/hq/appdef/server/session/ServiceManagerEJBImpl.java
Log:
[HHQ-3265] Remove the service from the ServiceType.services() collection on
delete. This fixes "deleted object would be re-saved by cascade" errors during
plugin deployment when a service type has been removed.
[merge from trunk]
Modified: branches/HQ_4_2_0_PATCH/src/org/hyperic/hq/appdef/server/session/ServiceManagerEJBImpl.java
===================================================================
--- branches/HQ_4_2_0_PATCH/src/org/hyperic/hq/appdef/server/session/ServiceManagerEJBImpl.java 2010-03-17 16:28:12 UTC (rev 14388)
+++ branches/HQ_4_2_0_PATCH/src/org/hyperic/hq/appdef/server/session/ServiceManagerEJBImpl.java 2010-03-17 16:30:34 UTC (rev 14389)
@@ -1493,11 +1493,11 @@
resGroupMan.removeGroupsCompatibleWith(proto);
// Remove all services
- for (Iterator svcIt = serviceType.getServices().iterator();
- svcIt.hasNext(); ) {
- Service svcLocal = (Service) svcIt.next();
- removeService(overlord, svcLocal);
- }
+ Service[] services = (Service[])
+ serviceType.getServices().toArray(new Service[serviceType.getServices().size()]);
+ for (int i = 0; i < services.length; i++) {
+ removeService(overlord, services[i]);
+ }
} catch (PermissionException e) {
assert false :
"Overlord should not run into PermissionException";
@@ -1526,6 +1526,9 @@
server.getServices().remove(service);
}
+ // Remove from ServiceType collection
+ service.getServiceType().getServices().remove(service);
+
final ConfigResponseDB config = service.getConfigResponse();
// remove from appdef
|