1 /* |
1 /* |
2 * Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved. |
2 * Copyright (c) 2006, 2014, 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. |
38 import javax.tools.*; |
38 import javax.tools.*; |
39 import com.sun.source.util.*; |
39 import com.sun.source.util.*; |
40 import com.sun.tools.javac.api.*; |
40 import com.sun.tools.javac.api.*; |
41 |
41 |
42 public class T6414633 { |
42 public class T6414633 { |
43 public static void main(String... args) { |
43 public static void main(String... args) throws IOException { |
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 String testClassPath = System.getProperty("test.class.path", testClasses); |
47 |
47 |
48 JavacTool tool = JavacTool.create(); |
48 JavacTool tool = JavacTool.create(); |
49 MyDiagListener dl = new MyDiagListener(); |
49 MyDiagListener dl = new MyDiagListener(); |
50 StandardJavaFileManager fm = tool.getStandardFileManager(dl, null, null); |
50 try (StandardJavaFileManager fm = tool.getStandardFileManager(dl, null, null)) { |
51 try { |
51 try { |
52 fm.setLocation(StandardLocation.CLASS_PATH, pathToFiles(testClassPath)); |
52 fm.setLocation(StandardLocation.CLASS_PATH, pathToFiles(testClassPath)); |
53 } catch (IOException e) { |
53 } catch (IOException e) { |
54 throw new AssertionError(e); |
54 throw new AssertionError(e); |
|
55 } |
|
56 Iterable<? extends JavaFileObject> files = |
|
57 fm.getJavaFileObjectsFromFiles(Arrays.asList(new File(testSrc, A.class.getName()+".java"))); |
|
58 String[] opts = { "-proc:only", |
|
59 "-processor", A.class.getName() }; |
|
60 JavacTask task = tool.getTask(null, fm, dl, Arrays.asList(opts), null, files); |
|
61 task.call(); |
|
62 |
|
63 // two annotations on the same element -- expect 2 diags from the processor |
|
64 if (dl.diags != 2) |
|
65 throw new AssertionError(dl.diags + " diagnostics reported"); |
55 } |
66 } |
56 Iterable<? extends JavaFileObject> files = |
|
57 fm.getJavaFileObjectsFromFiles(Arrays.asList(new File(testSrc, A.class.getName()+".java"))); |
|
58 String[] opts = { "-proc:only", |
|
59 "-processor", A.class.getName() }; |
|
60 JavacTask task = tool.getTask(null, fm, dl, Arrays.asList(opts), null, files); |
|
61 task.call(); |
|
62 |
|
63 // two annotations on the same element -- expect 2 diags from the processor |
|
64 if (dl.diags != 2) |
|
65 throw new AssertionError(dl.diags + " diagnostics reported"); |
|
66 } |
67 } |
67 |
68 |
68 private static List<File> pathToFiles(String path) { |
69 private static List<File> pathToFiles(String path) { |
69 List<File> list = new ArrayList<File>(); |
70 List<File> list = new ArrayList<File>(); |
70 for (String s: path.split(File.pathSeparator)) { |
71 for (String s: path.split(File.pathSeparator)) { |