1 /* |
1 /* |
2 * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved. |
2 * Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * |
4 * |
5 * This code is free software; you can redistribute it and/or modify it |
5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as |
6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. |
7 * published by the Free Software Foundation. |
41 |
41 |
42 public class T6414633 { |
42 public class T6414633 { |
43 public static void main(String... args) { |
43 public static void main(String... args) { |
44 String testSrc = System.getProperty("test.src", "."); |
44 String testSrc = System.getProperty("test.src", "."); |
45 String testClasses = System.getProperty("test.classes", "."); |
45 String testClasses = System.getProperty("test.classes", "."); |
|
46 String testClassPath = System.getProperty("test.class.path", testClasses); |
46 |
47 |
47 JavacTool tool = JavacTool.create(); |
48 JavacTool tool = JavacTool.create(); |
48 MyDiagListener dl = new MyDiagListener(); |
49 MyDiagListener dl = new MyDiagListener(); |
49 StandardJavaFileManager fm = tool.getStandardFileManager(dl, null, null); |
50 StandardJavaFileManager fm = tool.getStandardFileManager(dl, null, null); |
50 try { |
51 try { |
51 fm.setLocation(StandardLocation.CLASS_PATH, Arrays.asList(new File(testClasses))); |
52 fm.setLocation(StandardLocation.CLASS_PATH, pathToFiles(testClassPath)); |
52 } catch (IOException e) { |
53 } catch (IOException e) { |
53 throw new AssertionError(e); |
54 throw new AssertionError(e); |
54 } |
55 } |
55 Iterable<? extends JavaFileObject> files = |
56 Iterable<? extends JavaFileObject> files = |
56 fm.getJavaFileObjectsFromFiles(Arrays.asList(new File(testSrc, A.class.getName()+".java"))); |
57 fm.getJavaFileObjectsFromFiles(Arrays.asList(new File(testSrc, A.class.getName()+".java"))); |
57 String[] opts = { "-proc:only", |
58 String[] opts = { "-proc:only", |
58 "-processor", A.class.getName(), |
59 "-processor", A.class.getName() }; |
59 "-classpath", testClasses + System.getProperty("path.separator") + "../../lib" }; |
|
60 JavacTask task = tool.getTask(null, fm, dl, Arrays.asList(opts), null, files); |
60 JavacTask task = tool.getTask(null, fm, dl, Arrays.asList(opts), null, files); |
61 task.call(); |
61 task.call(); |
62 |
62 |
63 // two annotations on the same element -- expect 2 diags from the processor |
63 // two annotations on the same element -- expect 2 diags from the processor |
64 if (dl.diags != 2) |
64 if (dl.diags != 2) |
65 throw new AssertionError(dl.diags + " diagnostics reported"); |
65 throw new AssertionError(dl.diags + " diagnostics reported"); |
|
66 } |
|
67 |
|
68 private static List<File> pathToFiles(String path) { |
|
69 List<File> list = new ArrayList<File>(); |
|
70 for (String s: path.split(File.pathSeparator)) { |
|
71 if (!s.isEmpty()) |
|
72 list.add(new File(s)); |
|
73 } |
|
74 return list; |
66 } |
75 } |
67 |
76 |
68 private static class MyDiagListener implements DiagnosticListener<JavaFileObject> |
77 private static class MyDiagListener implements DiagnosticListener<JavaFileObject> |
69 { |
78 { |
70 public void report(Diagnostic d) { |
79 public void report(Diagnostic d) { |