package org.vaadin.mideaas.editor; import java.io.ByteArrayInputStream; import java.io.IOException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import org.vaadin.aceeditor.ServerSideDocDiff; import org.vaadin.aceeditor.client.AceDoc; import org.vaadin.mideaas.editor.DocDiffMediator.Guard; import org.xml.sax.SAXException; public class XmlSyntaxGuard implements Guard { @Override public boolean isAcceptable(AceDoc candidate, ServerSideDocDiff diff) { try { parse(candidate.getText()); } catch (ParserConfigurationException | SAXException e) { return false; } catch (IOException e) { e.printStackTrace(); // TODO ??? return false; } return true; } private void parse(String s) throws ParserConfigurationException, SAXException, IOException { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setValidating(false); factory.setNamespaceAware(true); DocumentBuilder builder = factory.newDocumentBuilder(); builder.parse(new ByteArrayInputStream(s.getBytes())); } }