mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
SSR: provide more clear error message on invalid script
This commit is contained in:
+24
-2
@@ -11,8 +11,15 @@ import groovy.lang.GroovyRuntimeException;
|
||||
import groovy.lang.GroovyShell;
|
||||
import groovy.lang.Script;
|
||||
import org.codehaus.groovy.control.CompilationFailedException;
|
||||
import org.codehaus.groovy.control.ErrorCollector;
|
||||
import org.codehaus.groovy.control.MultipleCompilationErrorsException;
|
||||
import org.codehaus.groovy.control.messages.Message;
|
||||
import org.codehaus.groovy.control.messages.SyntaxErrorMessage;
|
||||
import org.codehaus.groovy.syntax.SyntaxException;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Maxim.Mossienko
|
||||
@@ -58,10 +65,25 @@ public class ScriptSupport {
|
||||
}
|
||||
}
|
||||
|
||||
public static String checkValidScript(String script) {
|
||||
public static String checkValidScript(String scriptText) {
|
||||
try {
|
||||
final Object o = new GroovyShell().parse(script);
|
||||
final File scriptFile = new File(scriptText);
|
||||
final GroovyShell shell = new GroovyShell();
|
||||
final Script script = scriptFile.exists() ? shell.parse(scriptFile) : shell.parse(scriptText);
|
||||
return null;
|
||||
} catch (IOException e) {
|
||||
return e.getMessage();
|
||||
} catch (MultipleCompilationErrorsException e) {
|
||||
final ErrorCollector errorCollector = e.getErrorCollector();
|
||||
final List<Message> errors = errorCollector.getErrors();
|
||||
for (Message error : errors) {
|
||||
if (error instanceof SyntaxErrorMessage) {
|
||||
final SyntaxErrorMessage errorMessage = (SyntaxErrorMessage)error;
|
||||
final SyntaxException cause = errorMessage.getCause();
|
||||
return cause.getMessage();
|
||||
}
|
||||
}
|
||||
return e.getMessage();
|
||||
} catch (CompilationFailedException ex) {
|
||||
return ex.getLocalizedMessage();
|
||||
}
|
||||
|
||||
+3
-3
@@ -467,10 +467,10 @@ class EditVarConstraintsDialog extends DialogWrapper {
|
||||
final String text = field.getText();
|
||||
|
||||
if (text.length() > 0) {
|
||||
final String s = ScriptSupport.checkValidScript(text);
|
||||
final String message = ScriptSupport.checkValidScript(text);
|
||||
|
||||
if (s != null) {
|
||||
Messages.showErrorDialog(SSRBundle.message("invalid.groovy.script"), SSRBundle.message("invalid.groovy.script"));
|
||||
if (message != null) {
|
||||
Messages.showErrorDialog(message, SSRBundle.message("invalid.groovy.script"));
|
||||
field.requestFocus();
|
||||
return false;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user