langtools/test/tools/javac/processing/6414633/T6414633.java
changeset 27319 030080f03e4f
parent 14963 974d4423c999
child 30730 d3ce7619db2c
equal deleted inserted replaced
27318:4660a5da7d90 27319:030080f03e4f
     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)) {