### Question:
UpgradeHandler_V7 implements UpgradeHandler { @Override public void processProjectDom(UpgradeUnit upgradeUnit) { Element domain = upgradeUnit.getDocument().getDocumentElement(); domain.setAttribute("project-version", getVersion()); XPath xpath = XPathFactory.newInstance().newXPath(); Node node; try { node = (Node) xpath.evaluate("/domain/property[@name='cayenne.DataDomain.usingExternalTransactions']", upgradeUnit.getDocument(), XPathConstants.NODE); }catch (Exception ex) { return; } if(node != null) { domain.removeChild(node); } }  @Override String getVersion(); @Override void processProjectDom(UpgradeUnit upgradeUnit); @Override void processDataMapDom(UpgradeUnit upgradeUnit); @Override void processModel(DataChannelDescriptor dataChannelDescriptor);  }### Answer:
@Test public void testProjectDomUpgrade() throws Exception { Document document = processProjectDom("cayenne-project-v6.xml"); Element root = document.getDocumentElement(); assertEquals("7", root.getAttribute("project-version")); assertEquals("", root.getAttribute("xmlns")); assertEquals(2, root.getElementsByTagName("map").getLength()); assertEquals(0, root.getElementsByTagName("property").getLength()); }