package org.vaadin.mideaas.editor; import japa.parser.JavaParser; import japa.parser.ParseException; import japa.parser.TokenMgrError; import japa.parser.ast.CompilationUnit; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import org.vaadin.aceeditor.ServerSideDocDiff; import org.vaadin.aceeditor.client.AceDoc; import org.vaadin.mideaas.editor.DocDiffMediator.Guard; public class JavaSyntaxGuard implements Guard { @Override public boolean isAcceptable(AceDoc candidate, ServerSideDocDiff diff) { try { getCu(candidate.getText()); return true; } catch (ParseException | TokenMgrError e) { return false; } } private static CompilationUnit getCu(InputStream is) throws ParseException { try { return JavaParser.parse(is); } finally { try { is.close(); } catch (IOException e) { e.printStackTrace(); } } } private static CompilationUnit getCu(String code) throws ParseException { return getCu(new ByteArrayInputStream(code.getBytes())); } }