private IStatus updateServerRefs( IModule[] modulesToRemove, IServer affectedServer, IProgressMonitor monitor) throws CoreException { if (modulesToRemove == null || modulesToRemove.length == 0) { return Status.OK_STATUS; } monitor.beginTask(MODS_FROM_SERVERS, modulesToRemove.length * 100); for (int j = 0; j < modulesToRemove.length; j++) { IServerWorkingCopy wc = null; try { wc = affectedServer.createWorkingCopy(); List list = Arrays.asList(affectedServer.getModules()); if (list.contains(modulesToRemove[j])) { ServerUtil.modifyModules(wc, null, new IModule[] {modulesToRemove[j]}, null); } } catch (CoreException ce) { // Add it to a multistatus list? throw ce; // J2EEPlugin.logError(ce); } finally { try { if (wc != null) { IServer newServer = wc.saveAll(true, null); int state = newServer.getServerState(); if (state == IServer.STATE_STARTED) { newServer.publish( IServer.PUBLISH_INCREMENTAL, new NullProgressMonitor()); // TODO use child progress? } } } catch (CoreException ce) { throw ce; } } } return Status.OK_STATUS; }