public void testIsDomValue() throws Throwable { final XmlFile file = (XmlFile) createFile("a.xml", "<b>42</b>"); getDomManager() .registerFileDescription( new DomFileDescription<MyElement>(MyElement.class, "b") { @Override public boolean isMyFile(@NotNull final XmlFile file, final Module module) { return /*super.isMyFile(file, module) && */ file.getText().contains("239"); } }, myDisposable); assertFalse(getDomManager().isDomFile(file)); assertNull(getDomManager().getFileElement(file)); new WriteCommandAction(getProject()) { @Override protected void run(@NotNull Result result) throws Throwable { file.getDocument().getRootTag().getValue().setText("239"); } }.execute(); assertTrue(getDomManager().isDomFile(file)); final DomFileElementImpl<MyElement> root = getDomManager().getFileElement(file); assertNotNull(root); final MyElement child = root.getRootElement().getChild(); assertTrue(root.isValid()); assertTrue(child.isValid()); new WriteCommandAction(getProject()) { @Override protected void run(@NotNull Result result) throws Throwable { file.getDocument().getRootTag().getValue().setText("57121"); } }.execute(); assertFalse(getDomManager().isDomFile(file)); assertNull(getDomManager().getFileElement(file)); assertFalse(root.isValid()); assertFalse(child.isValid()); }
public void testChangeCustomDomness() throws Throwable { getDomManager() .registerFileDescription( new DomFileDescription<MyElement>(MyElement.class, "xxx") { @Override public boolean isMyFile(@NotNull final XmlFile file, @Nullable final Module module) { return file.getText().contains("foo"); } }, myDisposable); final XmlFile file = (XmlFile) createFile("xxx.xml", "<xxx zzz=\"foo\"><boy/><boy/><xxx/>"); final MyElement boy = getDomManager().getFileElement(file, MyElement.class).getRootElement().getBoys().get(0); new WriteCommandAction(getProject()) { @Override protected void run(@NotNull Result result) throws Throwable { file.getDocument().getRootTag().setAttribute("zzz", "bar"); } }.execute(); assertFalse(getDomManager().isDomFile(file)); assertFalse(boy.isValid()); }