Author: rmorgan
Date: 2010-03-17 09:28:12 -0700 (Wed, 17 Mar 2010)
New Revision: 14388
URL: http://svn.hyperic.org/?view=rev&root=Hyperic+HQ&revision=14388
Modified:
trunk/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.
Modified: trunk/src/org/hyperic/hq/appdef/server/session/ServiceManagerEJBImpl.java
===================================================================
--- trunk/src/org/hyperic/hq/appdef/server/session/ServiceManagerEJBImpl.java 2010-03-17 07:54:44 UTC (rev 14387)
+++ trunk/src/org/hyperic/hq/appdef/server/session/ServiceManagerEJBImpl.java 2010-03-17 16:28:12 UTC (rev 14388)
@@ -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
|