private synchronized void disconnectResources(AbstractResourceAttribute attrib) { Set<AbstractResource> resources = attrib.getResources(); // get ids to avoid ConcurrentModificationException List<String> ids = new ArrayList<String>(); for (AbstractResource resource : resources) ids.add(resource.getID()); for (String id : ids) { Participant p = getParticipant(id); if (attrib instanceof Role) p.removeRole((Role) attrib); else if (attrib instanceof Capability) p.removeCapability((Capability) attrib); else if (attrib instanceof Position) p.removePosition((Position) attrib); updateParticipant(p); } }