1 package org.codehaus.plexus.compiler.javac;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 import java.io.BufferedReader;
27 import java.io.IOException;
28 import java.io.StringReader;
29 import java.util.ArrayList;
30 import java.util.List;
31 import java.util.stream.Stream;
32
33 import org.codehaus.plexus.compiler.CompilerMessage;
34 import org.codehaus.plexus.util.Os;
35 import org.junit.jupiter.api.Test;
36 import org.junit.jupiter.params.ParameterizedTest;
37 import org.junit.jupiter.params.provider.Arguments;
38 import org.junit.jupiter.params.provider.MethodSource;
39
40 import static org.hamcrest.CoreMatchers.endsWith;
41 import static org.hamcrest.CoreMatchers.startsWith;
42 import static org.hamcrest.MatcherAssert.assertThat;
43 import static org.hamcrest.Matchers.hasSize;
44 import static org.hamcrest.Matchers.is;
45 import static org.hamcrest.Matchers.notNullValue;
46
47
48
49
50
51 public class ErrorMessageParserTest {
52 private static final String EOL = System.getProperty("line.separator");
53
54 @Test
55 public void testDeprecationMessage() throws Exception {
56 String error =
57 "target/compiler-src/testDeprecation/Foo.java:1: warning: Date(java.lang.String) in java.util.Date has been deprecated"
58 + EOL + "import java.util.Date;public class Foo{ private Date date = new Date( \"foo\");}"
59 + EOL + " ^"
60 + EOL;
61
62 CompilerMessage compilerError = JavacCompiler.parseModernError(0, error);
63
64 assertThat(compilerError, notNullValue());
65
66 assertThat(compilerError.isError(), is(false));
67
68 assertThat(compilerError.getMessage(), is("Date(java.lang.String) in java.util.Date has been deprecated"));
69
70 assertThat(compilerError.getStartColumn(), is(63));
71
72 assertThat(compilerError.getEndColumn(), is(66));
73
74 assertThat(compilerError.getStartLine(), is(1));
75
76 assertThat(compilerError.getEndLine(), is(1));
77 }
78
79 @Test
80 public void testWarningMessage() {
81 String error = "target/compiler-src/testWarning/Foo.java:8: warning: finally clause cannot complete normally"
82 + EOL + " finally { return; }"
83 + EOL + " ^"
84 + EOL;
85
86 CompilerMessage compilerError = JavacCompiler.parseModernError(0, error);
87
88 assertThat(compilerError, notNullValue());
89
90 assertThat(compilerError.isError(), is(false));
91
92 assertThat(compilerError.getMessage(), is("finally clause cannot complete normally"));
93
94 assertThat(compilerError.getStartColumn(), is(26));
95
96 assertThat(compilerError.getEndColumn(), is(27));
97
98 assertThat(compilerError.getStartLine(), is(8));
99
100 assertThat(compilerError.getEndLine(), is(8));
101 }
102
103 @Test
104 public void testErrorMessage() {
105 String error = "Foo.java:7: not a statement" + EOL + " i;" + EOL + " ^" + EOL;
106
107 CompilerMessage compilerError = JavacCompiler.parseModernError(1, error);
108
109 assertThat(compilerError, notNullValue());
110
111 assertThat(compilerError.isError(), is(true));
112
113 assertThat(compilerError.getMessage(), is("not a statement"));
114
115 assertThat(compilerError.getStartColumn(), is(9));
116
117 assertThat(compilerError.getEndColumn(), is(11));
118
119 assertThat(compilerError.getStartLine(), is(7));
120
121 assertThat(compilerError.getEndLine(), is(7));
122 }
123
124 @Test
125 public void testUnknownSymbolError() {
126 String error = "./org/codehaus/foo/UnknownSymbol.java:7: cannot find symbol" + EOL + "symbol : method foo()"
127 + EOL + "location: class org.codehaus.foo.UnknownSymbol"
128 + EOL + " foo();"
129 + EOL + " ^"
130 + EOL;
131
132 CompilerMessage compilerError = JavacCompiler.parseModernError(1, error);
133
134 assertThat(compilerError, notNullValue());
135
136 assertThat(compilerError.isError(), is(true));
137
138 assertThat(
139 compilerError.getMessage(),
140 is("cannot find symbol" + EOL + "symbol : method foo()" + EOL
141 + "location: class org.codehaus.foo.UnknownSymbol"));
142
143 assertThat(compilerError.getStartColumn(), is(8));
144
145 assertThat(compilerError.getEndColumn(), is(14));
146
147 assertThat(compilerError.getStartLine(), is(7));
148
149 assertThat(compilerError.getEndLine(), is(7));
150 }
151
152 @Test
153 public void testTwoErrors() throws IOException {
154 String errors = "./org/codehaus/foo/ExternalDeps.java:4: package org.apache.commons.lang does not exist" + EOL
155 + "import org.apache.commons.lang.StringUtils;"
156 + EOL + " ^"
157 + EOL + "./org/codehaus/foo/ExternalDeps.java:12: cannot find symbol"
158 + EOL + "symbol : variable StringUtils"
159 + EOL + "location: class org.codehaus.foo.ExternalDeps"
160 + EOL + " System.out.println( StringUtils.upperCase( str) );"
161 + EOL + " ^"
162 + EOL + "2 errors"
163 + EOL;
164
165 List<CompilerMessage> messages =
166 JavacCompiler.parseModernStream(1, new BufferedReader(new StringReader(errors)));
167
168 assertThat(messages.size(), is(2));
169 }
170
171 @Test
172 public void testAnotherTwoErrors() throws IOException {
173 String errors = "./org/codehaus/foo/ExternalDeps.java:4: package org.apache.commons.lang does not exist" + EOL
174 + "import org.apache.commons.lang.StringUtils;"
175 + EOL + " ^"
176 + EOL + "./org/codehaus/foo/ExternalDeps.java:12: cannot find symbol"
177 + EOL + "symbol : variable StringUtils"
178 + EOL + "location: class org.codehaus.foo.ExternalDeps"
179 + EOL + " System.out.println( StringUtils.upperCase( str) );"
180 + EOL + " ^"
181 + EOL + "2 errors"
182 + EOL;
183
184 List<CompilerMessage> messages =
185 JavacCompiler.parseModernStream(1, new BufferedReader(new StringReader(errors)));
186
187 assertThat(messages.size(), is(2));
188 }
189
190 @Test
191 public void testAssertError() throws IOException {
192 String errors =
193 "./org/codehaus/foo/ReservedWord.java:5: as of release 1.4, 'assert' is a keyword, and may not be used as an identifier"
194 + EOL + "(try -source 1.3 or lower to use 'assert' as an identifier)"
195 + EOL + " String assert;"
196 + EOL + " ^"
197 + EOL + "1 error"
198 + EOL;
199
200 List<CompilerMessage> messages =
201 JavacCompiler.parseModernStream(1, new BufferedReader(new StringReader(errors)));
202
203 assertThat(messages.size(), is(1));
204 }
205
206 @Test
207 public void testLocalizedWarningNotTreatedAsError() throws IOException {
208 String errors =
209 "./src/main/java/Main.java:9: \u8b66\u544a:[deprecation] java.io.File \u306e toURL() \u306f\u63a8\u5968\u3055\u308c\u307e\u305b\u3093\u3002"
210 + EOL + " new File( path ).toURL()"
211 + EOL + " ^"
212 + EOL + "\u8b66\u544a 1 \u500b"
213 + EOL;
214
215 List<CompilerMessage> messages =
216 JavacCompiler.parseModernStream(0, new BufferedReader(new StringReader(errors)));
217
218 assertThat(messages.size(), is(1));
219 assertThat(messages.get(0).isError(), is(false));
220 }
221
222 @Test
223 public void testUnixFileNames() {
224 String error = "/my/prj/src/main/java/test/prj/App.java:11: not a statement" + EOL
225 + " System.out.println( \"Hello World!\" );x"
226 + EOL + " ^"
227 + EOL;
228
229 CompilerMessage compilerError = JavacCompiler.parseModernError(1, error);
230
231 assertThat(
232 String.valueOf(compilerError), is("/my/prj/src/main/java/test/prj/App.java:[11,45] not a statement"));
233 }
234
235 @Test
236 public void testWindowsDriveLettersMCOMPILER140() {
237 String error =
238 "c:\\Documents and Settings\\My Self\\Documents\\prj\\src\\main\\java\\test\\prj\\App.java:11: not a statement"
239 + EOL + " System.out.println( \"Hello World!\" );x"
240 + EOL + " ^"
241 + EOL;
242
243 CompilerMessage compilerError = JavacCompiler.parseModernError(1, error);
244
245 assertThat(
246 String.valueOf(compilerError),
247 is(
248 "c:\\Documents and Settings\\My Self\\Documents\\prj\\src\\main\\java\\test\\prj\\App.java:[11,45] not a statement"));
249 }
250
251
252
253
254
255
256 @Test
257 public void testCRLF_windows() throws Exception {
258
259 if (!Os.isFamily("windows")) {
260 return;
261 }
262
263 String CRLF = new String(new byte[] {(byte) 0x0D, (byte) 0x0A});
264 String errors = "warning: [options] bootstrap class path not set in conjunction with -source 1.6" + CRLF
265 + "[parsing started RegularFileObject[C:\\commander\\pre\\ec\\ec-http\\src\\main\\java\\com\\electriccloud\\http\\HttpServerImpl.java]]"
266 + CRLF + "[parsing completed 19ms]"
267 + CRLF
268 + "[parsing started RegularFileObject[C:\\commander\\pre\\ec\\ec-http\\src\\main\\java\\com\\electriccloud\\http\\HttpServer.java]]"
269 + CRLF + "[parsing completed 1ms]"
270 + CRLF
271 + "[parsing started RegularFileObject[C:\\commander\\pre\\ec\\ec-http\\src\\main\\java\\com\\electriccloud\\http\\HttpServerAware.java]]"
272 + CRLF + "[parsing completed 1ms]"
273 + CRLF
274 + "[parsing started RegularFileObject[C:\\commander\\pre\\ec\\ec-http\\src\\main\\java\\com\\electriccloud\\http\\HttpUtil.java]]"
275 + CRLF + "[parsing completed 3ms]"
276 + CRLF
277 + "[parsing started RegularFileObject[C:\\commander\\pre\\ec\\ec-http\\src\\main\\java\\com\\electriccloud\\http\\HttpThreadPool.java]]"
278 + CRLF + "[parsing completed 3ms]"
279 + CRLF
280 + "[parsing started RegularFileObject[C:\\commander\\pre\\ec\\ec-http\\src\\main\\java\\com\\electriccloud\\http\\HttpQueueAware.java]]"
281 + CRLF + "[parsing completed 0ms]"
282 + CRLF
283 + "[parsing started RegularFileObject[C:\\commander\\pre\\ec\\ec-http\\src\\main\\java\\com\\electriccloud\\http\\HttpThreadPoolAware.java]]"
284 + CRLF + "[parsing completed 1ms]"
285 + CRLF + "[search path for source files: C:\\commander\\pre\\ec\\ec-http\\src\\main\\java]"
286 + CRLF
287 + "[search path for class files: C:\\Program Files\\Java\\jdk1.7.0_04\\jre\\lib\\resources.jar,C:\\Program Files\\Java\\jdk1.7.0_04\\jre\\lib\\rt.jar,C:\\Program Files\\Java\\jdk1.7.0_04\\jre\\lib\\sunrsasign.jar,C:\\Program Files\\Java\\jdk1.7.0_04\\jre\\lib\\jsse.jar,C:\\Program Files\\Java\\jdk1.7.0_04\\jre\\lib\\jce.jar,C:\\Program Files\\Java\\jdk1.7.0_04\\jre\\lib\\charsets.jar,C:\\Program Files\\Java\\jdk1.7.0_04\\jre\\lib\\jfr.jar,C:\\Program Files\\Java\\jdk1.7.0_04\\jre\\classes,C:\\Program Files\\Java\\jdk1.7.0_04\\jre\\lib\\ext\\dnsns.jar,C:\\Program Files\\Java\\jdk1.7.0_04\\jre\\lib\\ext\\localedata.jar,C:\\Program Files\\Java\\jdk1.7.0_04\\jre\\lib\\ext\\sunec.jar,C:\\Program Files\\Java\\jdk1.7.0_04\\jre\\lib\\ext\\sunjce_provider.jar,C:\\Program Files\\Java\\jdk1.7.0_04\\jre\\lib\\ext\\sunmscapi.jar,C:\\Program Files\\Java\\jdk1.7.0_04\\jre\\lib\\ext\\zipfs.jar,C:\\commander\\pre\\ec\\ec-http\\target\\classes,C:\\Users\\anders\\.m2\\repository\\com\\electriccloud\\ec-core\\1.0.0-SNAPSHOT\\ec-core-1.0.0-SNAPSHOT.jar,C:\\Users\\anders\\.m2\\repository\\com\\electriccloud\\ec-lock\\1.0.0-SNAPSHOT\\ec-lock-1.0.0-SNAPSHOT.jar,C:\\Users\\anders\\.m2\\repository\\com\\electriccloud\\ec-timer\\1.0.0-SNAPSHOT\\ec-timer-1.0.0-SNAPSHOT.jar,C:\\Users\\anders\\.m2\\repository\\org\\apache\\commons\\commons-math\\2.2\\commons-math-2.2.jar,C:\\Users\\anders\\.m2\\repository\\com\\electriccloud\\ec-validation\\1.0.0-SNAPSHOT\\ec-validation-1.0.0-SNAPSHOT.jar,C:\\Users\\anders\\.m2\\repository\\com\\electriccloud\\ec-xml\\1.0.0-SNAPSHOT\\ec-xml-1.0.0-SNAPSHOT.jar,C:\\Users\\anders\\.m2\\repository\\commons-beanutils\\commons-beanutils\\1.8.3-PATCH1\\commons-beanutils-1.8.3-PATCH1.jar,C:\\Users\\anders\\.m2\\repository\\commons-collections\\commons-collections\\3.2.1\\commons-collections-3.2.1.jar,C:\\Users\\anders\\.m2\\repository\\dom4j\\dom4j\\1.6.1-PATCH1\\dom4j-1.6.1-PATCH1.jar,C:\\Users\\anders\\.m2\\repository\\javax\\validation\\validation-api\\1.0.0.GA\\validation-api-1.0.0.GA.jar,C:\\Users\\anders\\.m2\\repository\\org\\codehaus\\jackson\\jackson-core-asl\\1.9.7\\jackson-core-asl-1.9.7.jar,C:\\Users\\anders\\.m2\\repository\\org\\codehaus\\jackson\\jackson-mapper-asl\\1.9.7\\jackson-mapper-asl-1.9.7.jar,C:\\Users\\anders\\.m2\\repository\\org\\hibernate\\hibernate-core\\3.6.7-PATCH14\\hibernate-core-3.6.7-PATCH14.jar,C:\\Users\\anders\\.m2\\repository\\antlr\\antlr\\2.7.6\\antlr-2.7.6.jar,C:\\Users\\anders\\.m2\\repository\\org\\hibernate\\hibernate-commons-annotations\\3.2.0.Final\\hibernate-commons-annotations-3.2.0.Final.jar,C:\\Users\\anders\\.m2\\repository\\javax\\transaction\\jta\\1.1\\jta-1.1.jar,C:\\Users\\anders\\.m2\\repository\\org\\hibernate\\javax\\persistence\\hibernate-jpa-2.0-api\\1.0.1.Final\\hibernate-jpa-2.0-api-1.0.1.Final.jar,C:\\Users\\anders\\.m2\\repository\\org\\hyperic\\sigar\\1.6.5.132\\sigar-1.6.5.132.jar,C:\\Users\\anders\\.m2\\repository\\org\\springframework\\spring-context\\3.1.1.RELEASE-PATCH1\\spring-context-3.1.1.RELEASE-PATCH1.jar,C:\\Users\\anders\\.m2\\repository\\org\\springframework\\spring-expression\\3.1.1.RELEASE-PATCH1\\spring-expression-3.1.1.RELEASE-PATCH1.jar,C:\\Users\\anders\\.m2\\repository\\org\\springframework\\spring-core\\3.1.1.RELEASE-PATCH1\\spring-core-3.1.1.RELEASE-PATCH1.jar,C:\\Users\\anders\\.m2\\repository\\tanukisoft\\wrapper\\3.5.14\\wrapper-3.5.14.jar,C:\\Users\\anders\\.m2\\repository\\com\\electriccloud\\ec-log\\1.0.0-SNAPSHOT\\ec-log-1.0.0-SNAPSHOT.jar,C:\\Users\\anders\\.m2\\repository\\ch\\qos\\logback\\logback-classic\\1.0.3-PATCH4\\logback-classic-1.0.3-PATCH4.jar,C:\\Users\\anders\\.m2\\repository\\ch\\qos\\logback\\logback-core\\1.0.3-PATCH4\\logback-core-1.0.3-PATCH4.jar,C:\\Users\\anders\\.m2\\repository\\org\\slf4j\\slf4j-api\\1.6.4\\slf4j-api-1.6.4.jar,C:\\Users\\anders\\.m2\\repository\\org\\slf4j\\jul-to-slf4j\\1.6.4\\jul-to-slf4j-1.6.4.jar,C:\\Users\\anders\\.m2\\repository\\com\\electriccloud\\ec-queue\\1.0.0-SNAPSHOT\\ec-queue-1.0.0-SNAPSHOT.jar,C:\\Users\\anders\\.m2\\repository\\com\\electriccloud\\ec-security\\1.0.0-SNAPSHOT\\ec-security-1.0.0-SNAPSHOT.jar,C:\\Users\\anders\\.m2\\repository\\com\\electriccloud\\ec-acl\\1.0.0-SNAPSHOT\\ec-acl-1.0.0-SNAPSHOT.jar,C:\\Users\\anders\\.m2\\repository\\com\\electriccloud\\ec-transaction\\1.0.0-SNAPSHOT\\ec-transaction-1.0.0-SNAPSHOT.jar,C:\\Users\\anders\\.m2\\repository\\org\\aspectj\\aspectjrt\\1.7.0.M1-PATCH1\\aspectjrt-1.7.0.M1-PATCH1.jar,C:\\Users\\anders\\.m2\\repository\\com\\electriccloud\\ec-crypto\\1.0.0-SNAPSHOT\\ec-crypto-1.0.0-SNAPSHOT.jar,C:\\Users\\anders\\.m2\\repository\\org\\bouncycastle\\bcprov-jdk16\\1.46\\bcprov-jdk16-1.46.jar,C:\\Users\\anders\\.m2\\repository\\com\\electriccloud\\ec-property\\1.0.0-SNAPSHOT\\ec-property-1.0.0-SNAPSHOT.jar,C:\\Users\\anders\\.m2\\repository\\org\\apache\\commons\\commons-lang3\\3.1\\commons-lang3-3.1.jar,C:\\Users\\anders\\.m2\\repository\\org\\springframework\\spring-tx\\3.1.1.RELEASE-PATCH1\\spring-tx-3.1.1.RELEASE-PATCH1.jar,C:\\Users\\anders\\.m2\\repository\\org\\aopalliance\\com.springsource.org.aopalliance\\1.0.0\\com.springsource.org.aopalliance-1.0.0.jar,C:\\Users\\anders\\.m2\\repository\\org\\springframework\\ldap\\spring-ldap-core\\1.3.1.RELEASE\\spring-ldap-core-1.3.1.RELEASE.jar,C:\\Users\\anders\\.m2\\repository\\commons-lang\\commons-lang\\2.5\\commons-lang-2.5.jar,C:\\Users\\anders\\.m2\\repository\\org\\springframework\\security\\spring-security-core\\2.0.6.PATCH1\\spring-security-core-2.0.6.PATCH1.jar,C:\\Users\\anders\\.m2\\repository\\com\\electriccloud\\ec-util\\1.0.0-SNAPSHOT\\ec-util-1.0.0-SNAPSHOT.jar,C:\\Users\\anders\\.m2\\repository\\cglib\\cglib-nodep\\2.2.2\\cglib-nodep-2.2.2.jar,C:\\Users\\anders\\.m2\\repository\\org\\apache\\commons\\commons-digester3\\3.2-PATCH5\\commons-digester3-3.2-PATCH5.jar,C:\\Users\\anders\\.m2\\repository\\cglib\\cglib\\2.2.2\\cglib-2.2.2.jar,C:\\Users\\anders\\.m2\\repository\\asm\\asm\\3.3.1\\asm-3.3.1.jar,C:\\Users\\anders\\.m2\\repository\\org\\springframework\\spring-aop\\3.1.1.RELEASE-PATCH1\\spring-aop-3.1.1.RELEASE-PATCH1.jar,C:\\Users\\anders\\.m2\\repository\\com\\google\\guava\\guava\\12.0\\guava-12.0.jar,C:\\Users\\anders\\.m2\\repository\\com\\google\\code\\findbugs\\jsr305\\2.0.0\\jsr305-2.0.0.jar,C:\\Users\\anders\\.m2\\repository\\com\\intellij\\annotations\\116.108\\annotations-116.108.jar,C:\\Users\\anders\\.m2\\repository\\commons-io\\commons-io\\2.3\\commons-io-2.3.jar,C:\\Users\\anders\\.m2\\repository\\net\\jcip\\jcip-annotations\\1.0\\jcip-annotations-1.0.jar,C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpclient\\4.2\\httpclient-4.2.jar,C:\\Users\\anders\\.m2\\repository\\commons-codec\\commons-codec\\1.6\\commons-codec-1.6.jar,C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpcore\\4.2\\httpcore-4.2.jar,C:\\Users\\anders\\.m2\\repository\\org\\eclipse\\jetty\\jetty-server\\8.1.4.v20120524\\jetty-server-8.1.4.v20120524.jar,C:\\Users\\anders\\.m2\\repository\\org\\eclipse\\jetty\\orbit\\javax.servlet\\3.0.0.v201112011016\\javax.servlet-3.0.0.v201112011016.jar,C:\\Users\\anders\\.m2\\repository\\org\\eclipse\\jetty\\jetty-continuation\\8.1.4.v20120524\\jetty-continuation-8.1.4.v20120524.jar,C:\\Users\\anders\\.m2\\repository\\org\\eclipse\\jetty\\jetty-http\\8.1.4.v20120524\\jetty-http-8.1.4.v20120524.jar,C:\\Users\\anders\\.m2\\repository\\org\\eclipse\\jetty\\jetty-io\\8.1.4.v20120524\\jetty-io-8.1.4.v20120524.jar,C:\\Users\\anders\\.m2\\repository\\org\\eclipse\\jetty\\jetty-util\\8.1.4.v20120524\\jetty-util-8.1.4.v20120524.jar,C:\\Users\\anders\\.m2\\repository\\org\\mortbay\\jetty\\servlet-api\\3.0.20100224\\servlet-api-3.0.20100224.jar,C:\\Users\\anders\\.m2\\repository\\org\\springframework\\spring-beans\\3.1.1.RELEASE-PATCH1\\spring-beans-3.1.1.RELEASE-PATCH1.jar,C:\\Users\\anders\\.m2\\repository\\org\\springframework\\spring-asm\\3.1.1.RELEASE-PATCH1\\spring-asm-3.1.1.RELEASE-PATCH1.jar,.]"
288 + CRLF
289 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/net/BindException.class)]]"
290 + CRLF
291 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/util/ArrayList.class)]]"
292 + CRLF
293 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/util/Collection.class)]]"
294 + CRLF
295 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/util/Collections.class)]]"
296 + CRLF
297 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/util/HashSet.class)]]"
298 + CRLF
299 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/util/concurrent/TimeUnit.class)]]"
300 + CRLF
301 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\eclipse\\jetty\\jetty-server\\8.1.4.v20120524\\jetty-server-8.1.4.v20120524.jar(org/eclipse/jetty/server/Handler.class)]]"
302 + CRLF
303 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\eclipse\\jetty\\jetty-server\\8.1.4.v20120524\\jetty-server-8.1.4.v20120524.jar(org/eclipse/jetty/server/Server.class)]]"
304 + CRLF
305 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\eclipse\\jetty\\jetty-server\\8.1.4.v20120524\\jetty-server-8.1.4.v20120524.jar(org/eclipse/jetty/server/nio/SelectChannelConnector.class)]]"
306 + CRLF
307 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\eclipse\\jetty\\jetty-server\\8.1.4.v20120524\\jetty-server-8.1.4.v20120524.jar(org/eclipse/jetty/server/ssl/SslSelectChannelConnector.class)]]"
308 + CRLF
309 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\eclipse\\jetty\\jetty-util\\8.1.4.v20120524\\jetty-util-8.1.4.v20120524.jar(org/eclipse/jetty/util/ssl/SslContextFactory.class)]]"
310 + CRLF
311 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\com\\intellij\\annotations\\116.108\\annotations-116.108.jar(org/jetbrains/annotations/NonNls.class)]]"
312 + CRLF
313 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\com\\intellij\\annotations\\116.108\\annotations-116.108.jar(org/jetbrains/annotations/NotNull.class)]]"
314 + CRLF
315 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\com\\intellij\\annotations\\116.108\\annotations-116.108.jar(org/jetbrains/annotations/TestOnly.class)]]"
316 + CRLF
317 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\springframework\\spring-beans\\3.1.1.RELEASE-PATCH1\\spring-beans-3.1.1.RELEASE-PATCH1.jar(org/springframework/beans/factory/BeanNameAware.class)]]"
318 + CRLF
319 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\springframework\\spring-beans\\3.1.1.RELEASE-PATCH1\\spring-beans-3.1.1.RELEASE-PATCH1.jar(org/springframework/beans/factory/annotation/Autowired.class)]]"
320 + CRLF
321 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\com\\google\\guava\\guava\\12.0\\guava-12.0.jar(com/google/common/collect/Iterables.class)]]"
322 + CRLF
323 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\com\\electriccloud\\ec-log\\1.0.0-SNAPSHOT\\ec-log-1.0.0-SNAPSHOT.jar(com/electriccloud/log/Log.class)]]"
324 + CRLF
325 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\com\\electriccloud\\ec-log\\1.0.0-SNAPSHOT\\ec-log-1.0.0-SNAPSHOT.jar(com/electriccloud/log/LogFactory.class)]]"
326 + CRLF
327 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\com\\electriccloud\\ec-core\\1.0.0-SNAPSHOT\\ec-core-1.0.0-SNAPSHOT.jar(com/electriccloud/service/ServiceManager.class)]]"
328 + CRLF
329 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\com\\electriccloud\\ec-core\\1.0.0-SNAPSHOT\\ec-core-1.0.0-SNAPSHOT.jar(com/electriccloud/service/ServiceState.class)]]"
330 + CRLF
331 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\com\\electriccloud\\ec-util\\1.0.0-SNAPSHOT\\ec-util-1.0.0-SNAPSHOT.jar(com/electriccloud/util/ExceptionUtil.class)]]"
332 + CRLF
333 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\com\\electriccloud\\ec-util\\1.0.0-SNAPSHOT\\ec-util-1.0.0-SNAPSHOT.jar(com/electriccloud/util/SystemUtil.class)]]"
334 + CRLF
335 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\com\\electriccloud\\ec-util\\1.0.0-SNAPSHOT\\ec-util-1.0.0-SNAPSHOT.jar(com/electriccloud/util/ToString.class)]]"
336 + CRLF
337 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\com\\electriccloud\\ec-util\\1.0.0-SNAPSHOT\\ec-util-1.0.0-SNAPSHOT.jar(com/electriccloud/util/ToStringSupport.class)]]"
338 + CRLF
339 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/String.class)]]"
340 + CRLF
341 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/Object.class)]]"
342 + CRLF
343 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/io/Serializable.class)]]"
344 + CRLF
345 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/Comparable.class)]]"
346 + CRLF
347 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/CharSequence.class)]]"
348 + CRLF
349 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/Enum.class)]]"
350 + CRLF
351 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\com\\electriccloud\\ec-util\\1.0.0-SNAPSHOT\\ec-util-1.0.0-SNAPSHOT.jar(com/electriccloud/util/ToStringAware.class)]]"
352 + CRLF
353 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\springframework\\spring-beans\\3.1.1.RELEASE-PATCH1\\spring-beans-3.1.1.RELEASE-PATCH1.jar(org/springframework/beans/factory/Aware.class)]]"
354 + CRLF
355 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\com\\electriccloud\\ec-core\\1.0.0-SNAPSHOT\\ec-core-1.0.0-SNAPSHOT.jar(com/electriccloud/service/Service.class)]]"
356 + CRLF
357 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/Integer.class)]]"
358 + CRLF
359 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/util/concurrent/RejectedExecutionException.class)]]"
360 + CRLF
361 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\eclipse\\jetty\\jetty-util\\8.1.4.v20120524\\jetty-util-8.1.4.v20120524.jar(org/eclipse/jetty/util/component/AbstractLifeCycle.class)]]"
362 + CRLF
363 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\eclipse\\jetty\\jetty-util\\8.1.4.v20120524\\jetty-util-8.1.4.v20120524.jar(org/eclipse/jetty/util/thread/ThreadPool.class)]]"
364 + CRLF
365 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\com\\electriccloud\\ec-queue\\1.0.0-SNAPSHOT\\ec-queue-1.0.0-SNAPSHOT.jar(com/electriccloud/queue/ExecuteQueue.class)]]"
366 + CRLF
367 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\com\\electriccloud\\ec-core\\1.0.0-SNAPSHOT\\ec-core-1.0.0-SNAPSHOT.jar(com/electriccloud/service/ServiceManagerAware.class)]]"
368 + CRLF
369 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\com\\electriccloud\\ec-util\\1.0.0-SNAPSHOT\\ec-util-1.0.0-SNAPSHOT.jar(com/electriccloud/util/ToStringImpl.class)]]"
370 + CRLF
371 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\eclipse\\jetty\\jetty-util\\8.1.4.v20120524\\jetty-util-8.1.4.v20120524.jar(org/eclipse/jetty/util/component/LifeCycle.class)]]"
372 + CRLF
373 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/InterruptedException.class)]]"
374 + CRLF
375 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/Runnable.class)]]"
376 + CRLF
377 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/Exception.class)]]"
378 + CRLF
379 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/io/IOException.class)]]"
380 + CRLF
381 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/security/KeyManagementException.class)]]"
382 + CRLF
383 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/security/NoSuchAlgorithmException.class)]]"
384 + CRLF
385 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/security/SecureRandom.class)]]"
386 + CRLF
387 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/javax/net/ssl/SSLContext.class)]]"
388 + CRLF
389 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/javax/net/ssl/TrustManager.class)]]"
390 + CRLF
391 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpcore\\4.2\\httpcore-4.2.jar(org/apache/http/HttpResponse.class)]]"
392 + CRLF
393 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpclient\\4.2\\httpclient-4.2.jar(org/apache/http/client/HttpClient.class)]]"
394 + CRLF
395 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpclient\\4.2\\httpclient-4.2.jar(org/apache/http/client/methods/HttpGet.class)]]"
396 + CRLF
397 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpclient\\4.2\\httpclient-4.2.jar(org/apache/http/client/methods/HttpPost.class)]]"
398 + CRLF
399 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpclient\\4.2\\httpclient-4.2.jar(org/apache/http/client/methods/HttpUriRequest.class)]]"
400 + CRLF
401 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpclient\\4.2\\httpclient-4.2.jar(org/apache/http/conn/scheme/Scheme.class)]]"
402 + CRLF
403 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpclient\\4.2\\httpclient-4.2.jar(org/apache/http/conn/ssl/SSLSocketFactory.class)]]"
404 + CRLF
405 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpcore\\4.2\\httpcore-4.2.jar(org/apache/http/entity/StringEntity.class)]]"
406 + CRLF
407 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpclient\\4.2\\httpclient-4.2.jar(org/apache/http/impl/client/DefaultConnectionKeepAliveStrategy.class)]]"
408 + CRLF
409 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpclient\\4.2\\httpclient-4.2.jar(org/apache/http/impl/client/DefaultHttpClient.class)]]"
410 + CRLF
411 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpclient\\4.2\\httpclient-4.2.jar(org/apache/http/impl/client/DefaultHttpRequestRetryHandler.class)]]"
412 + CRLF
413 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpclient\\4.2\\httpclient-4.2.jar(org/apache/http/impl/conn/tsccm/ThreadSafeClientConnManager.class)]]"
414 + CRLF
415 + "C:\\commander\\pre\\ec\\ec-http\\src\\main\\java\\com\\electriccloud\\http\\HttpUtil.java:31: warning: [deprecation] ThreadSafeClientConnManager in org.apache.http.impl.conn.tsccm has been deprecated"
416 + CRLF + "import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager;"
417 + CRLF + " ^"
418 + CRLF
419 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpcore\\4.2\\httpcore-4.2.jar(org/apache/http/params/HttpParams.class)]]"
420 + CRLF
421 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpcore\\4.2\\httpcore-4.2.jar(org/apache/http/protocol/HttpContext.class)]]"
422 + CRLF
423 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpcore\\4.2\\httpcore-4.2.jar(org/apache/http/util/EntityUtils.class)]]"
424 + CRLF
425 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\com\\electriccloud\\ec-security\\1.0.0-SNAPSHOT\\ec-security-1.0.0-SNAPSHOT.jar(com/electriccloud/security/DummyX509TrustManager.class)]]"
426 + CRLF
427 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpclient\\4.2\\httpclient-4.2.jar(org/apache/http/conn/scheme/SchemeLayeredSocketFactory.class)]]"
428 + CRLF
429 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpclient\\4.2\\httpclient-4.2.jar(org/apache/http/conn/scheme/SchemeSocketFactory.class)]]"
430 + CRLF
431 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpclient\\4.2\\httpclient-4.2.jar(org/apache/http/conn/scheme/LayeredSchemeSocketFactory.class)]]"
432 + CRLF
433 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpclient\\4.2\\httpclient-4.2.jar(org/apache/http/conn/scheme/LayeredSocketFactory.class)]]"
434 + CRLF
435 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpclient\\4.2\\httpclient-4.2.jar(org/apache/http/conn/scheme/SocketFactory.class)]]"
436 + CRLF
437 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpcore\\4.2\\httpcore-4.2.jar(org/apache/http/params/CoreConnectionPNames.class)]]"
438 + CRLF
439 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/SuppressWarnings.class)]]"
440 + CRLF
441 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/annotation/Retention.class)]]"
442 + CRLF
443 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/annotation/RetentionPolicy.class)]]"
444 + CRLF
445 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/annotation/Target.class)]]"
446 + CRLF
447 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/annotation/ElementType.class)]]"
448 + CRLF
449 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\com\\google\\guava\\guava\\12.0\\guava-12.0.jar(com/google/common/annotations/GwtCompatible.class)]]"
450 + CRLF
451 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\com\\google\\guava\\guava\\12.0\\guava-12.0.jar(com/google/common/annotations/GwtIncompatible.class)]]"
452 + CRLF
453 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\com\\electriccloud\\ec-core\\1.0.0-SNAPSHOT\\ec-core-1.0.0-SNAPSHOT.jar(com/electriccloud/infoset/InfosetType.class)]]"
454 + CRLF
455 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/annotation/Annotation.class)]]"
456 + CRLF
457 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/Override.class)]]"
458 + CRLF + "[checking com.electriccloud.http.HttpServerImpl]"
459 + CRLF
460 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/Error.class)]]"
461 + CRLF
462 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/Throwable.class)]]"
463 + CRLF
464 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/RuntimeException.class)]]"
465 + CRLF
466 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/AutoCloseable.class)]]"
467 + CRLF
468 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/Class.class)]]"
469 + CRLF
470 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/Number.class)]]"
471 + CRLF
472 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/util/AbstractList.class)]]"
473 + CRLF
474 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/util/AbstractCollection.class)]]"
475 + CRLF
476 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/Iterable.class)]]"
477 + CRLF
478 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/Byte.class)]]"
479 + CRLF
480 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/Character.class)]]"
481 + CRLF
482 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/Short.class)]]"
483 + CRLF
484 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\eclipse\\jetty\\jetty-server\\8.1.4.v20120524\\jetty-server-8.1.4.v20120524.jar(org/eclipse/jetty/server/nio/AbstractNIOConnector.class)]]"
485 + CRLF
486 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\eclipse\\jetty\\jetty-server\\8.1.4.v20120524\\jetty-server-8.1.4.v20120524.jar(org/eclipse/jetty/server/AbstractConnector.class)]]"
487 + CRLF
488 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\eclipse\\jetty\\jetty-util\\8.1.4.v20120524\\jetty-util-8.1.4.v20120524.jar(org/eclipse/jetty/util/component/AggregateLifeCycle.class)]]"
489 + CRLF
490 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\eclipse\\jetty\\jetty-server\\8.1.4.v20120524\\jetty-server-8.1.4.v20120524.jar(org/eclipse/jetty/server/Connector.class)]]"
491 + CRLF
492 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\eclipse\\jetty\\jetty-util\\8.1.4.v20120524\\jetty-util-8.1.4.v20120524.jar(org/eclipse/jetty/util/component/Destroyable.class)]]"
493 + CRLF
494 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\eclipse\\jetty\\jetty-util\\8.1.4.v20120524\\jetty-util-8.1.4.v20120524.jar(org/eclipse/jetty/util/component/Dumpable.class)]]"
495 + CRLF
496 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\eclipse\\jetty\\jetty-http\\8.1.4.v20120524\\jetty-http-8.1.4.v20120524.jar(org/eclipse/jetty/http/HttpBuffers.class)]]"
497 + CRLF
498 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\eclipse\\jetty\\jetty-server\\8.1.4.v20120524\\jetty-server-8.1.4.v20120524.jar(org/eclipse/jetty/server/handler/HandlerWrapper.class)]]"
499 + CRLF
500 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\eclipse\\jetty\\jetty-server\\8.1.4.v20120524\\jetty-server-8.1.4.v20120524.jar(org/eclipse/jetty/server/handler/AbstractHandlerContainer.class)]]"
501 + CRLF
502 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\eclipse\\jetty\\jetty-server\\8.1.4.v20120524\\jetty-server-8.1.4.v20120524.jar(org/eclipse/jetty/server/handler/AbstractHandler.class)]]"
503 + CRLF
504 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/net/SocketException.class)]]"
505 + CRLF
506 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/Thread.class)]]"
507 + CRLF
508 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/IllegalStateException.class)]]"
509 + CRLF
510 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/util/AbstractSet.class)]]"
511 + CRLF
512 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/util/Iterator.class)]]"
513 + CRLF
514 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/IllegalArgumentException.class)]]"
515 + CRLF
516 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/util/Locale.class)]]"
517 + CRLF
518 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/Long.class)]]"
519 + CRLF
520 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/Float.class)]]"
521 + CRLF
522 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/Double.class)]]"
523 + CRLF
524 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/Boolean.class)]]"
525 + CRLF
526 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/Void.class)]]"
527 + CRLF
528 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/AssertionError.class)]]"
529 + CRLF
530 + "[wrote RegularFileObject[C:\\commander\\pre\\ec\\ec-http\\target\\classes\\com\\electriccloud\\http\\HttpServerImpl.class]]"
531 + CRLF + "[checking com.electriccloud.http.HttpServer]"
532 + CRLF
533 + "[wrote RegularFileObject[C:\\commander\\pre\\ec\\ec-http\\target\\classes\\com\\electriccloud\\http\\HttpServer.class]]"
534 + CRLF + "[checking com.electriccloud.http.HttpThreadPoolAware]"
535 + CRLF
536 + "[wrote RegularFileObject[C:\\commander\\pre\\ec\\ec-http\\target\\classes\\com\\electriccloud\\http\\HttpThreadPoolAware.class]]"
537 + CRLF + "[checking com.electriccloud.http.HttpThreadPool]"
538 + CRLF
539 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/util/concurrent/Future.class)]]"
540 + CRLF
541 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/util/concurrent/Callable.class)]]"
542 + CRLF
543 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/util/Date.class)]]"
544 + CRLF
545 + "[wrote RegularFileObject[C:\\commander\\pre\\ec\\ec-http\\target\\classes\\com\\electriccloud\\http\\HttpThreadPool.class]]"
546 + CRLF + "[checking com.electriccloud.http.HttpQueueAware]"
547 + CRLF
548 + "[wrote RegularFileObject[C:\\commander\\pre\\ec\\ec-http\\target\\classes\\com\\electriccloud\\http\\HttpQueueAware.class]]"
549 + CRLF + "[checking com.electriccloud.http.HttpServerAware]"
550 + CRLF
551 + "[wrote RegularFileObject[C:\\commander\\pre\\ec\\ec-http\\target\\classes\\com\\electriccloud\\http\\HttpServerAware.class]]"
552 + CRLF + "[checking com.electriccloud.http.HttpUtil]"
553 + CRLF
554 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/net/URI.class)]]"
555 + CRLF
556 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpclient\\4.2\\httpclient-4.2.jar(org/apache/http/client/methods/HttpRequestBase.class)]]"
557 + CRLF
558 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpcore\\4.2\\httpcore-4.2.jar(org/apache/http/message/AbstractHttpMessage.class)]]"
559 + CRLF
560 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpcore\\4.2\\httpcore-4.2.jar(org/apache/http/HttpMessage.class)]]"
561 + CRLF
562 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpclient\\4.2\\httpclient-4.2.jar(org/apache/http/impl/client/AbstractHttpClient.class)]]"
563 + CRLF
564 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpcore\\4.2\\httpcore-4.2.jar(org/apache/http/annotation/GuardedBy.class)]]"
565 + CRLF
566 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpclient\\4.2\\httpclient-4.2.jar(org/apache/http/client/ResponseHandler.class)]]"
567 + CRLF
568 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpclient\\4.2\\httpclient-4.2.jar(org/apache/http/client/ClientProtocolException.class)]]"
569 + CRLF
570 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpcore\\4.2\\httpcore-4.2.jar(org/apache/http/HttpEntity.class)]]"
571 + CRLF
572 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpclient\\4.2\\httpclient-4.2.jar(org/apache/http/client/methods/HttpEntityEnclosingRequestBase.class)]]"
573 + CRLF
574 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpcore\\4.2\\httpcore-4.2.jar(org/apache/http/entity/AbstractHttpEntity.class)]]"
575 + CRLF
576 + "C:\\commander\\pre\\ec\\ec-http\\src\\main\\java\\com\\electriccloud\\http\\HttpUtil.java:151: warning: [deprecation] ThreadSafeClientConnManager in org.apache.http.impl.conn.tsccm has been deprecated"
577 + CRLF + " ThreadSafeClientConnManager connectionManager ="
578 + CRLF + " ^"
579 + CRLF
580 + "C:\\commander\\pre\\ec\\ec-http\\src\\main\\java\\com\\electriccloud\\http\\HttpUtil.java:152: warning: [deprecation] ThreadSafeClientConnManager in org.apache.http.impl.conn.tsccm has been deprecated"
581 + CRLF + " new ThreadSafeClientConnManager();"
582 + CRLF + " ^"
583 + CRLF
584 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/security/GeneralSecurityException.class)]]"
585 + CRLF
586 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/javax/net/ssl/X509TrustManager.class)]]"
587 + CRLF
588 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/security/KeyException.class)]]"
589 + CRLF
590 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpclient\\4.2\\httpclient-4.2.jar(org/apache/http/conn/ssl/X509HostnameVerifier.class)]]"
591 + CRLF
592 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/javax/net/ssl/SSLSocketFactory.class)]]"
593 + CRLF
594 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpclient\\4.2\\httpclient-4.2.jar(org/apache/http/conn/scheme/HostNameResolver.class)]]"
595 + CRLF
596 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/javax/net/ssl/HostnameVerifier.class)]]"
597 + CRLF
598 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpclient\\4.2\\httpclient-4.2.jar(org/apache/http/conn/ssl/TrustStrategy.class)]]"
599 + CRLF
600 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/security/KeyStore.class)]]"
601 + CRLF
602 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpclient\\4.2\\httpclient-4.2.jar(org/apache/http/conn/scheme/SchemeRegistry.class)]]"
603 + CRLF
604 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpclient\\4.2\\httpclient-4.2.jar(org/apache/http/conn/ClientConnectionManager.class)]]"
605 + CRLF
606 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpclient\\4.2\\httpclient-4.2.jar(org/apache/http/client/HttpRequestRetryHandler.class)]]"
607 + CRLF
608 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpclient\\4.2\\httpclient-4.2.jar(org/apache/http/conn/ConnectionKeepAliveStrategy.class)]]"
609 + CRLF
610 + "[loading ZipFileIndexFileObject[C:\\Users\\anders\\.m2\\repository\\org\\apache\\httpcomponents\\httpcore\\4.2\\httpcore-4.2.jar(org/apache/http/ParseException.class)]]"
611 + CRLF
612 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/io/UnsupportedEncodingException.class)]]"
613 + CRLF
614 + "[wrote RegularFileObject[C:\\commander\\pre\\ec\\ec-http\\target\\classes\\com\\electriccloud\\http\\HttpUtil$1.class]]"
615 + CRLF
616 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/StringBuilder.class)]]"
617 + CRLF
618 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/AbstractStringBuilder.class)]]"
619 + CRLF
620 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/java/lang/StringBuffer.class)]]"
621 + CRLF
622 + "[loading ZipFileIndexFileObject[C:\\Program Files\\Java\\jdk1.7.0_04\\lib\\ct.sym(META-INF/sym/rt.jar/javax/net/ssl/KeyManager.class)]]"
623 + CRLF
624 + "[wrote RegularFileObject[C:\\commander\\pre\\ec\\ec-http\\target\\classes\\com\\electriccloud\\http\\HttpUtil.class]]"
625 + CRLF + "[total 654ms]"
626 + CRLF + "4 warnings"
627 + CRLF;
628 List<CompilerMessage> compilerMessages =
629 JavacCompiler.parseModernStream(0, new BufferedReader(new StringReader(errors)));
630 assertThat("count", compilerMessages.size(), is(187));
631 List<CompilerMessage> compilerErrors = new ArrayList<>(3);
632 for (CompilerMessage message : compilerMessages) {
633 if (message.getKind() != CompilerMessage.Kind.OTHER) {
634 compilerErrors.add(message);
635 }
636 }
637
638 assertEquivalent(
639 new CompilerMessage(
640 "[options] bootstrap class path not set in conjunction with -source " + "1.6",
641 CompilerMessage.Kind.WARNING),
642 compilerErrors.get(0));
643 CompilerMessage error1 = compilerErrors.get(1);
644 assertThat(
645 "file",
646 error1.getFile(),
647 is("C:\\commander\\pre\\ec\\ec-http\\src\\main\\java\\com\\electriccloud\\http\\HttpUtil.java"));
648 assertThat(
649 "message",
650 error1.getMessage(),
651 is("[deprecation] ThreadSafeClientConnManager in org.apache.http.impl.conn.tsccm has been deprecated"));
652 assertThat("line", error1.getStartLine(), is(31));
653 assertThat("column", error1.getStartColumn(), is(38));
654 CompilerMessage error2 = compilerErrors.get(2);
655 assertThat(
656 "file",
657 error2.getFile(),
658 is("C:\\commander\\pre\\ec\\ec-http\\src\\main\\java\\com\\electriccloud\\http\\HttpUtil.java"));
659 assertThat(
660 "message",
661 error2.getMessage(),
662 is("[deprecation] ThreadSafeClientConnManager in org.apache.http.impl.conn.tsccm has been deprecated"));
663 assertThat("line", error2.getStartLine(), is(151));
664 assertThat("column", error2.getStartColumn(), is(8));
665 CompilerMessage error3 = compilerErrors.get(3);
666 assertThat(
667 "file",
668 error3.getFile(),
669 is("C:\\commander\\pre\\ec\\ec-http\\src\\main\\java\\com\\electriccloud\\http\\HttpUtil.java"));
670 assertThat(
671 "message",
672 error3.getMessage(),
673 is("[deprecation] ThreadSafeClientConnManager in org.apache.http.impl.conn.tsccm has been deprecated"));
674 assertThat("line", error3.getStartLine(), is(152));
675 assertThat("column", error3.getStartColumn(), is(16));
676 }
677
678 @Test
679 public void testJava6Error() throws Exception {
680 String out = "Error.java:3: cannot find symbol" + EOL + "symbol : class Properties"
681 + EOL + "location: class Error"
682 + EOL + " Properties p = new Properties();"
683 + EOL + " ^"
684 + EOL + "Error.java:3: cannot find symbol"
685 + EOL + "symbol : class Properties"
686 + EOL + "location: class Error"
687 + EOL + " Properties p = new Properties();"
688 + EOL + " ^"
689 + EOL + "2 errors";
690
691 List<CompilerMessage> compilerErrors =
692 JavacCompiler.parseModernStream(1, new BufferedReader(new StringReader(out)));
693
694 assertThat(compilerErrors, notNullValue());
695
696 CompilerMessage message1 = compilerErrors.get(0);
697
698 assertThat(message1.isError(), is(true));
699
700 assertThat(
701 message1.getMessage(),
702 is("cannot find symbol" + EOL + "symbol : class Properties" + EOL + "location: class Error"));
703
704 assertThat(message1.getStartColumn(), is(16));
705
706 assertThat(message1.getEndColumn(), is(26));
707
708 assertThat(message1.getStartLine(), is(3));
709
710 assertThat(message1.getEndLine(), is(3));
711
712 CompilerMessage message2 = compilerErrors.get(1);
713
714 assertThat(message2.isError(), is(true));
715
716 assertThat(
717 message2.getMessage(),
718 is("cannot find symbol" + EOL + "symbol : class Properties" + EOL + "location: class Error"));
719
720 assertThat(message2.getStartColumn(), is(35));
721
722 assertThat(message2.getEndColumn(), is(48));
723
724 assertThat(message2.getStartLine(), is(3));
725
726 assertThat(message2.getEndLine(), is(3));
727 }
728
729 @Test
730 public void testJava7Error() throws Exception {
731 String out =
732 "Error.java:3: error: cannot find symbol" + EOL + " Properties p = new Properties();"
733 + EOL + " ^"
734 + EOL + " symbol: class Properties"
735 + EOL + " location: class Error"
736 + EOL + "Error.java:3: error: cannot find symbol"
737 + EOL + " Properties p = new Properties();"
738 + EOL + " ^"
739 + EOL + " symbol: class Properties"
740 + EOL + " location: class Error"
741 + EOL + "2 errors";
742
743 List<CompilerMessage> compilerErrors =
744 JavacCompiler.parseModernStream(1, new BufferedReader(new StringReader(out)));
745
746 assertThat(compilerErrors, notNullValue());
747
748 CompilerMessage message1 = compilerErrors.get(0);
749
750 assertThat(message1.isError(), is(true));
751
752 assertThat(
753 message1.getMessage(),
754 is("error: cannot find symbol" + EOL + " symbol: class Properties" + EOL
755 + " location: class Error"));
756
757 assertThat(message1.getStartColumn(), is(16));
758
759 assertThat(message1.getEndColumn(), is(26));
760
761 assertThat(message1.getStartLine(), is(3));
762
763 assertThat(message1.getEndLine(), is(3));
764
765 CompilerMessage message2 = compilerErrors.get(1);
766
767 assertThat(message2.isError(), is(true));
768
769 assertThat(
770 message2.getMessage(),
771 is("error: cannot find symbol" + EOL + " symbol: class Properties" + EOL
772 + " location: class Error"));
773
774 assertThat(message2.getStartColumn(), is(35));
775
776 assertThat(message2.getEndColumn(), is(48));
777
778 assertThat(message2.getStartLine(), is(3));
779
780 assertThat(message2.getEndLine(), is(3));
781 }
782
783 @ParameterizedTest(name = "{0}")
784 @MethodSource("testBugParade_args")
785 public void testBugParade(String jdkAndLocale, String stackTraceHeader) throws Exception {
786 String stackTraceWithHeader = stackTraceHeader + stackTraceInternalCompilerError;
787
788 List<CompilerMessage> compilerMessages =
789 JavacCompiler.parseModernStream(4, new BufferedReader(new StringReader(stackTraceWithHeader)));
790
791 assertThat(compilerMessages, notNullValue());
792 assertThat(compilerMessages, hasSize(1));
793
794 String message = compilerMessages.get(0).getMessage().replaceAll(EOL, "\n");
795
796 assertThat(message, startsWith(stackTraceHeader));
797 assertThat(message, endsWith(stackTraceInternalCompilerError));
798 }
799
800 private static final String stackTraceInternalCompilerError =
801 "\tat com.sun.tools.javac.comp.MemberEnter.baseEnv(MemberEnter.java:1388)\n"
802 + "\tat com.sun.tools.javac.comp.MemberEnter.complete(MemberEnter.java:1046)\n"
803 + "\tat com.sun.tools.javac.code.Symbol.complete(Symbol.java:574)\n"
804 + "\tat com.sun.tools.javac.code.Symbol$ClassSymbol.complete(Symbol.java:1037)\n"
805 + "\tat com.sun.tools.javac.code.Symbol$ClassSymbol.flags(Symbol.java:973)\n"
806 + "\tat com.sun.tools.javac.code.Symbol$ClassSymbol.getKind(Symbol.java:1101)\n"
807 + "\tat com.sun.tools.javac.code.Kinds.kindName(Kinds.java:162)\n"
808 + "\tat com.sun.tools.javac.comp.Check.duplicateError(Check.java:329)\n"
809 + "\tat com.sun.tools.javac.comp.Check.checkUnique(Check.java:3435)\n"
810 + "\tat com.sun.tools.javac.comp.Enter.visitTypeParameter(Enter.java:454)\n"
811 + "\tat com.sun.tools.javac.tree.JCTree$JCTypeParameter.accept(JCTree.java:2224)\n"
812 + "\tat com.sun.tools.javac.comp.Enter.classEnter(Enter.java:258)\n"
813 + "\tat com.sun.tools.javac.comp.Enter.classEnter(Enter.java:272)\n"
814 + "\tat com.sun.tools.javac.comp.Enter.visitClassDef(Enter.java:418)\n"
815 + "\tat com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:693)\n"
816 + "\tat com.sun.tools.javac.comp.Enter.classEnter(Enter.java:258)\n"
817 + "\tat com.sun.tools.javac.comp.Enter.classEnter(Enter.java:272)\n"
818 + "\tat com.sun.tools.javac.comp.Enter.visitTopLevel(Enter.java:334)\n"
819 + "\tat com.sun.tools.javac.tree.JCTree$JCCompilationUnit.accept(JCTree.java:518)\n"
820 + "\tat com.sun.tools.javac.comp.Enter.classEnter(Enter.java:258)\n"
821 + "\tat com.sun.tools.javac.comp.Enter.classEnter(Enter.java:272)\n"
822 + "\tat com.sun.tools.javac.comp.Enter.complete(Enter.java:486)\n"
823 + "\tat com.sun.tools.javac.comp.Enter.main(Enter.java:471)\n"
824 + "\tat com.sun.tools.javac.main.JavaCompiler.enterTrees(JavaCompiler.java:982)\n"
825 + "\tat com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:857)\n"
826 + "\tat com.sun.tools.javac.main.Main.compile(Main.java:523)\n"
827 + "\tat com.sun.tools.javac.main.Main.compile(Main.java:381)\n"
828 + "\tat com.sun.tools.javac.main.Main.compile(Main.java:370)\n"
829 + "\tat com.sun.tools.javac.main.Main.compile(Main.java:361)\n"
830 + "\tat com.sun.tools.javac.Main.compile(Main.java:56)\n"
831 + "\tat com.sun.tools.javac.Main.main(Main.java:42)\n";
832
833 private static Stream<Arguments> testBugParade_args() {
834 return Stream.of(
835 Arguments.of(
836 "JDK 8 English",
837 "An exception has occurred in the compiler ({0}). Please file a bug at the Java Developer Connection (http://java.sun.com/webapps/bugreport) after checking the Bug Parade for duplicates. Include your program and the following diagnostic in your report. Thank you.\n"),
838 Arguments.of(
839 "JDK 8 Japanese",
840 "コンパイラで例外が発生しました({0})。Bug Paradeで重複がないかをご確認のうえ、Java Developer Connection (http://java.sun.com/webapps/bugreport)でbugの登録をお願いいたします。レポートには、そのプログラムと下記の診断内容を含めてください。ご協力ありがとうございます。\n"),
841 Arguments.of(
842 "JDK 8 Chinese",
843 "编译器 ({0}) 中出现异常错误。 如果在 Bug Parade 中没有找到该错误, 请在 Java Developer Connection (http://java.sun.com/webapps/bugreport) 中建立 Bug。请在报告中附上您的程序和以下诊断信息。谢谢。\n"),
844 Arguments.of(
845 "JDK 21 English",
846 "An exception has occurred in the compiler ({0}). Please file a bug against the Java compiler via the Java bug reporting page (https://bugreport.java.com) after checking the Bug Database (https://bugs.java.com) for duplicates. Include your program, the following diagnostic, and the parameters passed to the Java compiler in your report. Thank you.\n"),
847 Arguments.of(
848 "JDK 21 Japanese",
849 "コンパイラで例外が発生しました({0})。バグ・データベース(https://bugs.java.com)で重複がないかをご確認のうえ、Javaのバグ・レポート・ページ(https://bugreport.java.com)から、Javaコンパイラに対するバグの登録をお願いいたします。レポートには、該当のプログラム、次の診断内容、およびJavaコンパイラに渡されたパラメータをご入力ください。ご協力ありがとうございます。\n"),
850 Arguments.of(
851 "JDK 21 Chinese",
852 "编译器 ({0}) 中出现异常错误。如果在 Bug Database (https://bugs.java.com) 中没有找到有关该错误的 Java 编译器 Bug,请通过 Java Bug 报告页 (https://bugreport.java.com) 提交 Java 编译器 Bug。请在报告中附上您的程序、以下诊断信息以及传递到 Java 编译器的参数。谢谢。\n"),
853 Arguments.of(
854 "JDK 21 German",
855 "Im Compiler ({0}) ist eine Ausnahme aufgetreten. Erstellen Sie auf der Java-Seite zum Melden von Bugs (https://bugreport.java.com) einen Bugbericht, nachdem Sie die Bugdatenbank (https://bugs.java.com) auf Duplikate geprüft haben. Geben Sie in Ihrem Bericht Ihr Programm, die folgende Diagnose und die Parameter an, die Sie dem Java-Compiler übergeben haben. Vielen Dank.\n"));
856 }
857
858 @Test
859 public void testNonAnchoredWarning() throws IOException {
860 final String error = "warning: [options] bootstrap class path not set in conjunction with -source 1.6" + EOL
861 + "1 warning" + EOL;
862
863 final List<CompilerMessage> compilerErrors =
864 JavacCompiler.parseModernStream(0, new BufferedReader(new StringReader(error)));
865
866 assertThat(compilerErrors, notNullValue());
867 assertThat(compilerErrors.size(), is(1));
868 assertEquivalent(
869 new CompilerMessage(
870 "[options] bootstrap class path not set in conjunction with -source 1.6",
871 CompilerMessage.Kind.WARNING),
872 compilerErrors.get(0));
873 }
874
875 @Test
876 public void testAnchoredWarning() throws IOException {
877 final String error = "C:\\repo\\src\\it\\includes-output-when-compiler-forked\\src\\main"
878 + "\\java\\MyClass.java:23: warning: [divzero] division by zero"
879 + EOL + " System.out.println(1/0);"
880 + EOL + " ^"
881 + EOL + "1 warnings"
882 + EOL;
883
884 final List<CompilerMessage> compilerErrors =
885 JavacCompiler.parseModernStream(0, new BufferedReader(new StringReader(error)));
886
887 assertThat(compilerErrors, notNullValue());
888 assertThat(compilerErrors.size(), is(1));
889 assertEquivalent(
890 new CompilerMessage(
891 "C:\\repo\\src\\it\\includes-output-when-compiler-forked\\src\\main\\java\\MyClass" + ".java",
892 CompilerMessage.Kind.WARNING,
893 23,
894 27,
895 23,
896 30,
897 "[divzero] division by zero"),
898 compilerErrors.get(0));
899 }
900
901 @Test
902 public void testMixedWarnings() throws IOException {
903 final String error = "warning: [options] bootstrap class path not set in conjunction with -source 1.6" + EOL
904 + "C:\\repo\\src\\it\\includes-output-when-compiler-forked\\src\\main\\java"
905 + "\\MyClass.java:23: warning: [divzero] division by zero"
906 + EOL + " System.out.println(1/0);"
907 + EOL + " ^"
908 + EOL + "2 warnings";
909
910 final List<CompilerMessage> compilerErrors =
911 JavacCompiler.parseModernStream(0, new BufferedReader(new StringReader(error)));
912
913 assertThat(compilerErrors, notNullValue());
914 assertThat(compilerErrors.size(), is(2));
915 assertEquivalent(
916 new CompilerMessage(
917 "[options] bootstrap class path not set in conjunction with -source 1.6",
918 CompilerMessage.Kind.WARNING),
919 compilerErrors.get(0));
920 assertEquivalent(
921 new CompilerMessage(
922 "C:\\repo\\src\\it\\includes-output-when-compiler-forked\\src\\main\\java\\MyClass" + ".java",
923 CompilerMessage.Kind.WARNING,
924 23,
925 27,
926 23,
927 30,
928 "[divzero] division by zero"),
929 compilerErrors.get(1));
930 }
931
932 @Test
933 public void testIssue37() throws IOException {
934 String error =
935 "warning: [path] bad path element \"d:\\maven_repo\\.m2\\repository\\org\\ow2\\asm\\asm-xml\\5.0.3\\asm-5.0.3.jar\": no such file or directory"
936 + EOL
937 + "warning: [path] bad path element \"d:\\maven_repo\\.m2\\repository\\org\\ow2\\asm\\asm-xml\\5.0.3\\asm-util-5.0.3.jar\": no such file or directory"
938 + EOL + "warning: [options] bootstrap class path not set in conjunction with -source 1.7"
939 + EOL + "3 warnings"
940 + EOL
941 + "An exception has occurred in the compiler (9). Please file a bug against the Java compiler via the Java bug reporting page (http://bugreport.java.com) after checking the Bug Database (http://bugs.java.com) for duplicates. Include your program and the following diagnostic in your report. Thank you."
942 + EOL + "java.lang.NullPointerException"
943 + EOL + "\tat jdk.zipfs/jdk.nio.zipfs.JarFileSystem.getVersionMap(JarFileSystem.java:137)"
944 + EOL
945 + "\tat jdk.zipfs/jdk.nio.zipfs.JarFileSystem.createVersionedLinks(JarFileSystem.java:112)"
946 + EOL + "\tat jdk.zipfs/jdk.nio.zipfs.JarFileSystem.<init>(JarFileSystem.java:85)"
947 + EOL
948 + "\tat jdk.zipfs/jdk.nio.zipfs.ZipFileSystemProvider.newFileSystem(ZipFileSystemProvider.java:134)"
949 + EOL
950 + "\tat jdk.compiler/com.sun.tools.javac.file.JavacFileManager$ArchiveContainer.<init>(JavacFileManager.java:517)"
951 + EOL
952 + "\tat jdk.compiler/com.sun.tools.javac.file.JavacFileManager.getContainer(JavacFileManager.java:319)"
953 + EOL
954 + "\tat jdk.compiler/com.sun.tools.javac.file.JavacFileManager.list(JavacFileManager.java:715)"
955 + EOL + "\tat jdk.compiler/com.sun.tools.javac.code.ClassFinder.list(ClassFinder.java:722)"
956 + EOL
957 + "\tat jdk.compiler/com.sun.tools.javac.code.ClassFinder.scanUserPaths(ClassFinder.java:655)"
958 + EOL + "\tat jdk.compiler/com.sun.tools.javac.code.ClassFinder.fillIn(ClassFinder.java:526)"
959 + EOL + "\tat jdk.compiler/com.sun.tools.javac.code.ClassFinder.complete(ClassFinder.java:293)"
960 + EOL + "\tat jdk.compiler/com.sun.tools.javac.code.Symbol.complete(Symbol.java:633)"
961 + EOL
962 + "\tat jdk.compiler/com.sun.tools.javac.code.Symbol$PackageSymbol.members(Symbol.java:1120)"
963 + EOL + "\tat jdk.compiler/com.sun.tools.javac.code.Symtab.listPackageModules(Symtab.java:810)"
964 + EOL + "\tat jdk.compiler/com.sun.tools.javac.comp.Enter.visitTopLevel(Enter.java:344)"
965 + EOL
966 + "\tat jdk.compiler/com.sun.tools.javac.tree.JCTree$JCCompilationUnit.accept(JCTree.java:529)"
967 + EOL + "\tat jdk.compiler/com.sun.tools.javac.comp.Enter.classEnter(Enter.java:285)"
968 + EOL + "\tat jdk.compiler/com.sun.tools.javac.comp.Enter.classEnter(Enter.java:300)"
969 + EOL + "\tat jdk.compiler/com.sun.tools.javac.comp.Enter.complete(Enter.java:570)"
970 + EOL + "\tat jdk.compiler/com.sun.tools.javac.comp.Enter.main(Enter.java:554)"
971 + EOL
972 + "\tat jdk.compiler/com.sun.tools.javac.main.JavaCompiler.enterTrees(JavaCompiler.java:1052)"
973 + EOL + "\tat jdk.compiler/com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:923)"
974 + EOL + "\tat jdk.compiler/com.sun.tools.javac.main.Main.compile(Main.java:302)"
975 + EOL + "\tat jdk.compiler/com.sun.tools.javac.main.Main.compile(Main.java:162)"
976 + EOL + "\tat jdk.compiler/com.sun.tools.javac.Main.compile(Main.java:57)"
977 + EOL + "\tat jdk.compiler/com.sun.tools.javac.Main.main(Main.java:43)";
978
979 List<CompilerMessage> compilerErrors =
980 JavacCompiler.parseModernStream(0, new BufferedReader(new StringReader(error)));
981
982 assertThat(compilerErrors, notNullValue());
983 assertThat(compilerErrors.size(), is(4));
984
985 assertEquivalent(
986 new CompilerMessage(
987 "[path] bad path element \"d:\\maven_repo\\"
988 + ".m2\\repository\\org\\ow2\\asm\\asm-xml\\5.0.3\\asm-5.0.3.jar\": no such file or directory",
989 CompilerMessage.Kind.WARNING),
990 compilerErrors.get(0));
991 assertEquivalent(
992 new CompilerMessage(
993 "warning: [path] bad path element \"d:\\maven_repo\\.m2\\repository\\org\\ow2\\asm\\asm-xml\\5.0.3\\asm-util-5.0.3.jar\": no such file or directory",
994 CompilerMessage.Kind.WARNING),
995 compilerErrors.get(1));
996 assertEquivalent(
997 new CompilerMessage(
998 "[options] bootstrap class path not set in conjunction with -source 1.7",
999 CompilerMessage.Kind.WARNING),
1000 compilerErrors.get(2));
1001
1002 CompilerMessage finalMessage = compilerErrors.get(3);
1003 assertThat(finalMessage.getKind(), is(CompilerMessage.Kind.ERROR));
1004 assertThat(
1005 "Starts correctly", finalMessage.getMessage(), startsWith("An exception has occurred in the compiler"));
1006 assertThat(
1007 "continues through end of output",
1008 finalMessage.getMessage(),
1009 endsWith("\tat jdk.compiler/com.sun" + ".tools.javac.Main.main(Main.java:43)" + EOL));
1010 }
1011
1012 @Test
1013 public void testJvmBootLayerInitializationError() throws Exception {
1014 String out = "Error occurred during initialization of boot layer" + EOL
1015 + "java.lang.module.FindException: Module java.xml.bind not found";
1016
1017 List<CompilerMessage> compilerErrors =
1018 JavacCompiler.parseModernStream(1, new BufferedReader(new StringReader(out)));
1019
1020 assertThat(compilerErrors, notNullValue());
1021 assertThat(compilerErrors.size(), is(1));
1022 assertThat(compilerErrors.get(0).getKind(), is(CompilerMessage.Kind.ERROR));
1023 }
1024
1025 @Test
1026 public void testJvmInitializationError() throws Exception {
1027 String out = "Error occurred during initialization of VM" + EOL
1028 + "Initial heap size set to a larger value than the maximum heap size";
1029
1030 List<CompilerMessage> compilerErrors =
1031 JavacCompiler.parseModernStream(1, new BufferedReader(new StringReader(out)));
1032
1033 assertThat(compilerErrors, notNullValue());
1034 assertThat(compilerErrors.size(), is(1));
1035 assertThat(compilerErrors.get(0).getKind(), is(CompilerMessage.Kind.ERROR));
1036 }
1037
1038 @Test
1039 public void testBadSourceFileError() throws Exception {
1040 String out = "/MTOOLCHAINS-19/src/main/java/ch/pecunifex/x/Cls1.java:12: error: cannot access Cls2\n"
1041 + " Cls2 tvar;\n"
1042 + " ^\n"
1043 + " bad source file: /MTOOLCHAINS-19/src/main/java/ch/pecunifex/x/Cls2.java\n"
1044 + " file does not contain class ch.pecunifex.x.Cls2\n"
1045 + " Please remove or make sure it appears in the correct subdirectory of the sourcepath.";
1046
1047 List<CompilerMessage> compilerErrors =
1048 JavacCompiler.parseModernStream(1, new BufferedReader(new StringReader(out)));
1049
1050 assertThat(compilerErrors, notNullValue());
1051
1052 assertThat(compilerErrors.size(), is(1));
1053
1054 CompilerMessage message = compilerErrors.get(0);
1055 validateBadSourceFile(message);
1056 }
1057
1058 @Test
1059 public void testWarningFollowedByBadSourceFileError() throws Exception {
1060 String out =
1061 "/MTOOLCHAINS-19/src/main/java/ch/pecunifex/x/Cls1.java:3: warning: FontDesignMetrics is internal proprietary API and may be removed in a future release\n"
1062 + "import sun.font.FontDesignMetrics;\n"
1063 + " ^\n"
1064 + "/MTOOLCHAINS-19/src/main/java/ch/pecunifex/x/Cls1.java:12: error: cannot access Cls2\n"
1065 + " Cls2 tvar;\n"
1066 + " ^\n"
1067 + " bad source file: /MTOOLCHAINS-19/src/main/java/ch/pecunifex/x/Cls2.java\n"
1068 + " file does not contain class ch.pecunifex.x.Cls2\n"
1069 + " Please remove or make sure it appears in the correct subdirectory of the sourcepath.";
1070
1071 List<CompilerMessage> compilerErrors =
1072 JavacCompiler.parseModernStream(1, new BufferedReader(new StringReader(out)));
1073
1074 assertThat(compilerErrors, notNullValue());
1075
1076 assertThat(compilerErrors, hasSize(2));
1077
1078 CompilerMessage firstMessage = compilerErrors.get(0);
1079 assertThat("Is a Warning", firstMessage.getKind(), is(CompilerMessage.Kind.WARNING));
1080 assertThat(
1081 "On Correct File",
1082 firstMessage.getFile(),
1083 is("/MTOOLCHAINS-19/src/main/java/ch/pecunifex/x/Cls1.java"));
1084 assertThat(
1085 "Internal API Warning",
1086 firstMessage.getMessage(),
1087 is("FontDesignMetrics is internal proprietary API and may be removed in a future release"));
1088
1089 CompilerMessage secondMessage = compilerErrors.get(1);
1090 validateBadSourceFile(secondMessage);
1091 }
1092
1093 private void validateBadSourceFile(CompilerMessage message) {
1094 assertThat("Is an Error", message.getKind(), is(CompilerMessage.Kind.ERROR));
1095 assertThat("On Correct File", message.getFile(), is("/MTOOLCHAINS-19/src/main/java/ch/pecunifex/x/Cls1.java"));
1096 assertThat("Message starts with access Error", message.getMessage(), startsWith("error: cannot access Cls2"));
1097 }
1098
1099 private static void assertEquivalent(CompilerMessage expected, CompilerMessage actual) {
1100 assertThat("Message did not match", actual.getMessage(), is(expected.getMessage()));
1101 assertThat("Kind did not match", actual.getKind(), is(expected.getKind()));
1102 assertThat("File did not match", actual.getFile(), is(expected.getFile()));
1103 assertThat("Start line did not match", actual.getStartLine(), is(expected.getStartLine()));
1104 assertThat("Start column did not match", actual.getStartColumn(), is(expected.getStartColumn()));
1105 assertThat("End line did not match", actual.getEndLine(), is(expected.getEndLine()));
1106 assertThat("End column did not match", actual.getEndColumn(), is(expected.getEndColumn()));
1107 }
1108 }