]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.document.server/src/org/simantics/document/server/request/NodeRequestUtils.java
Merge commit '31664b6'
[simantics/platform.git] / bundles / org.simantics.document.server / src / org / simantics / document / server / request / NodeRequestUtils.java
1 package org.simantics.document.server.request;\r
2 \r
3 import java.io.ByteArrayOutputStream;\r
4 import java.io.PrintStream;\r
5 import java.io.UnsupportedEncodingException;\r
6 \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
15 \r
16 public class NodeRequestUtils {\r
17     private static final Logger LOGGER = LoggerFactory.getLogger(NodeRequestUtils.class);\r
18 \r
19         public static String formatErrorMessage(String name, Throwable t) {\r
20                 \r
21                 while(t.getCause() != null)\r
22             t = t.getCause();\r
23                 \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
28                                         t.getMessage();\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
40                 } else {\r
41                     LOGGER.error("Node request error:", t);\r
42                     \r
43                         ByteArrayOutputStream baos = new ByteArrayOutputStream();\r
44                         PrintStream ps = new PrintStream(baos);\r
45                         t.printStackTrace(ps);\r
46                         try {\r
47                                 return baos.toString("UTF-8");\r
48                         } catch (UnsupportedEncodingException e) {\r
49                                 return baos.toString();\r
50                         }\r
51                         \r
52                 }\r
53         }\r
54         \r
55 }\r