1
2
3
4
5
6
7 package net.alchim31.maven.yuicompressor;
8
9 import java.io.File;
10
11 import org.apache.maven.plugin.logging.Log;
12 import org.codehaus.plexus.build.BuildContext;
13 import org.mozilla.javascript.ErrorReporter;
14 import org.mozilla.javascript.EvaluatorException;
15
16
17
18
19 public class ErrorReporter4Mojo implements ErrorReporter {
20
21
22 private String defaultFilename;
23
24
25 private boolean acceptWarn;
26
27
28 private Log log;
29
30
31 private int warningCnt;
32
33
34 private int errorCnt;
35
36
37 private BuildContext buildContext;
38
39
40 private File sourceFile;
41
42
43
44
45
46
47
48
49
50
51
52 public ErrorReporter4Mojo(Log log, boolean jswarn, BuildContext buildContext) {
53 this.log = log;
54 this.acceptWarn = jswarn;
55 this.buildContext = buildContext;
56 }
57
58
59
60
61
62
63
64 public void setDefaultFileName(String v) {
65 if (v.length() == 0) {
66 v = null;
67 }
68 defaultFilename = v;
69 }
70
71
72
73
74
75
76 public int getErrorCnt() {
77 return errorCnt;
78 }
79
80
81
82
83
84
85 public int getWarningCnt() {
86 return warningCnt;
87 }
88
89 @Override
90 public void error(String message, String sourceName, int line, String lineSource, int lineOffset) {
91 String fullMessage = newMessage(message, sourceName, line, lineSource, lineOffset);
92 buildContext.addMessage(sourceFile, line, lineOffset, message, BuildContext.SEVERITY_ERROR, null);
93 log.error(fullMessage);
94 errorCnt++;
95 }
96
97 @Override
98 public EvaluatorException runtimeError(String message, String sourceName, int line, String lineSource,
99 int lineOffset) {
100 error(message, sourceName, line, lineSource, lineOffset);
101 throw new EvaluatorException(message, sourceName, line, lineSource, lineOffset);
102 }
103
104 @Override
105 public void warning(String message, String sourceName, int line, String lineSource, int lineOffset) {
106 if (acceptWarn) {
107 String fullMessage = newMessage(message, sourceName, line, lineSource, lineOffset);
108 buildContext.addMessage(sourceFile, line, lineOffset, message, BuildContext.SEVERITY_WARNING, null);
109 log.warn(fullMessage);
110 warningCnt++;
111 }
112 }
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130 private String newMessage(String message, String sourceName, int line, String lineSource, int lineOffset) {
131 StringBuilder back = new StringBuilder();
132 if (sourceName == null || sourceName.length() == 0) {
133 sourceName = defaultFilename;
134 }
135 if (sourceName != null) {
136 back.append(sourceName).append(":line ").append(line).append(":column ").append(lineOffset).append(':');
137 }
138 if (message != null && message.length() != 0) {
139 back.append(message);
140 } else {
141 back.append("unknown error");
142 }
143 if (lineSource != null && lineSource.length() != 0) {
144 back.append("\n\t").append(lineSource);
145 }
146 return back.toString();
147 }
148
149
150
151
152
153
154
155 public void setFile(File file) {
156 sourceFile = file;
157 }
158
159 }