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