/** @see edu.buffalo.cse.green.editor.model.commands.DeleteCommand#doDelete() */ public void doDelete() { RootModel root = _typeModel.getRootModel(); // Remove relationships first List<RelationshipModel> rels = root.getRelationships(); // No iterators here due to CME's (ConcurrentModificationException) // Removal of relationships causes modifications to the rels list. for (int i = 0; i < rels.size(); i++) { IType t = _typeModel.getType(); RelationshipModel r = rels.get(i); if (r.getSourceType() == t || r.getTargetType() == t) { DeleteCommand drc = r.getDeleteCommand(DiagramEditor.findProjectEditor(root.getProject())); drc.suppressMessage(true); drc.execute(); } } _typeModel.removeChildren(); // remove fields/methods _typeModel.removeFromParent(); try { IType type = _typeModel.getType(); ICompilationUnit cu = (ICompilationUnit) type.getAncestor(IJavaElement.COMPILATION_UNIT); if (type.equals(cu.findPrimaryType())) { cu.delete(true, PlugIn.getEmptyProgressMonitor()); } else { type.delete(true, PlugIn.getEmptyProgressMonitor()); } } catch (JavaModelException e) { e.printStackTrace(); } root.updateRelationships(); }
@Test public void delegatesToTracker() throws Exception { command.executeWithTracker(mockTracker); verify(mockTracker).delete("key", "domain"); }