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