1 package net_alchim31_maven_yuicompressor;
2
3 import java.io.File;
4 import org.apache.maven.plugin.logging.Log;
5 import org.mozilla.javascript.ErrorReporter;
6 import org.mozilla.javascript.EvaluatorException;
7 import org.sonatype.plexus.build.incremental.BuildContext;
8
9 public class ErrorReporter4Mojo implements ErrorReporter {
10
11 private String defaultFilename_;
12 private boolean acceptWarn_;
13 private Log log_;
14 private int warningCnt_;
15 private int errorCnt_;
16 private BuildContext buildContext_;
17 private File sourceFile_;
18
19 public ErrorReporter4Mojo(Log log, boolean jswarn, BuildContext buildContext) {
20 log_ = log;
21 acceptWarn_ = jswarn;
22 buildContext_=buildContext;
23 }
24
25 public void setDefaultFileName(String v) {
26 if (v.length() == 0) {
27 v = null;
28 }
29 defaultFilename_ = v;
30 }
31
32 public int getErrorCnt() {
33 return errorCnt_;
34 }
35
36 public int getWarningCnt() {
37 return warningCnt_;
38 }
39
40 public void error(String message, String sourceName, int line, String lineSource, int lineOffset) {
41 String fullMessage = newMessage(message, sourceName, line, lineSource, lineOffset);
42 buildContext_.addMessage(sourceFile_, line, lineOffset, message, BuildContext.SEVERITY_ERROR, null);
43 log_.error(fullMessage);
44 errorCnt_++;
45 }
46
47 public EvaluatorException runtimeError(String message, String sourceName, int line, String lineSource, int lineOffset) {
48 error(message, sourceName, line, lineSource, lineOffset);
49 throw new EvaluatorException(message, sourceName, line, lineSource, lineOffset);
50 }
51
52 public void warning(String message, String sourceName, int line, String lineSource, int lineOffset) {
53 if (acceptWarn_) {
54 String fullMessage = newMessage(message, sourceName, line, lineSource, lineOffset);
55 buildContext_.addMessage(sourceFile_, line, lineOffset, message, BuildContext.SEVERITY_WARNING, null);
56 log_.warn(fullMessage);
57 warningCnt_++;
58 }
59 }
60
61 private String newMessage(String message, String sourceName, int line, String lineSource, int lineOffset) {
62 StringBuilder back = new StringBuilder();
63 if ((sourceName == null) || (sourceName.length() == 0)) {
64 sourceName = defaultFilename_;
65 }
66 if (sourceName != null) {
67 back.append(sourceName)
68 .append(":line ")
69 .append(line)
70 .append(":column ")
71 .append(lineOffset)
72 .append(':')
73 ;
74 }
75 if ((message != null) && (message.length() != 0)) {
76 back.append(message);
77 } else {
78 back.append("unknown error");
79 }
80 if ((lineSource != null) && (lineSource.length() != 0)) {
81 back.append("\n\t")
82 .append(lineSource)
83 ;
84 }
85 return back.toString();
86 }
87
88 public void setFile(File file) {
89 sourceFile_=file;
90 }
91
92 }