View Javadoc
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  }