langtools/test/tools/javac/processing/6414633/T6414633.java
changeset 13632 40c51bd45d38
parent 6720 f16f91662ad8
child 14963 974d4423c999
equal deleted inserted replaced
13631:dc1212c348f9 13632:40c51bd45d38
     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) {