1 package org.simantics.document.server.request;
\r
3 import java.io.ByteArrayOutputStream;
\r
4 import java.io.PrintStream;
\r
5 import java.io.UnsupportedEncodingException;
\r
7 import org.simantics.db.layer0.exception.MissingVariableException;
\r
8 import org.simantics.db.layer0.scl.SCLDatabaseException;
\r
9 import org.simantics.document.server.DocumentException;
\r
10 import org.simantics.scl.compiler.module.repository.ImportFailure;
\r
11 import org.simantics.scl.compiler.module.repository.ImportFailureException;
\r
12 import org.simantics.scl.compiler.top.NotFoundException;
\r
13 import org.slf4j.Logger;
\r
14 import org.slf4j.LoggerFactory;
\r
16 public class NodeRequestUtils {
\r
17 private static final Logger LOGGER = LoggerFactory.getLogger(NodeRequestUtils.class);
\r
19 public static String formatErrorMessage(String name, Throwable t) {
\r
21 while(t.getCause() != null)
\r
24 if (t instanceof DocumentException) {
\r
25 return t.getMessage();
\r
26 } else if (t instanceof MissingVariableException) {
\r
27 return "Evaluation of property '" + name + "' failed\n" +
\r
29 } else if (t instanceof SCLDatabaseException) {
\r
30 return t.getMessage();
\r
31 } else if (t instanceof NotFoundException) {
\r
32 return t.getMessage();
\r
33 } else if (t instanceof ImportFailureException) {
\r
34 ImportFailureException e = (ImportFailureException)t;
\r
35 StringBuilder sb = new StringBuilder();
\r
36 sb.append("The following SCL modules failed to compile:\n");
\r
37 for(ImportFailure f : e.failures)
\r
38 sb.append(" " + f.moduleName + "\n");
\r
39 return sb.toString();
\r
41 LOGGER.error("Node request error:", t);
\r
43 ByteArrayOutputStream baos = new ByteArrayOutputStream();
\r
44 PrintStream ps = new PrintStream(baos);
\r
45 t.printStackTrace(ps);
\r
47 return baos.toString("UTF-8");
\r
48 } catch (UnsupportedEncodingException e) {
\r
49 return baos.toString();
\r