From: <rm...@hy...> - 2010-03-17 16:30:43
|
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 |