< prev index next >

test/tools/javac/processing/loader/testClose/TestClose.java

Print this page




 115         new TestClose().run();
 116     }
 117 
 118     void run() throws IOException {
 119         JavacTool tool = (JavacTool) ToolProvider.getSystemJavaCompiler();
 120         try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
 121 
 122             File classes = new File("classes");
 123             classes.mkdirs();
 124             File extraClasses = new File("extraClasses");
 125             extraClasses.mkdirs();
 126 
 127             System.out.println("compiling classes to extraClasses");
 128             {   // setup class in extraClasses
 129                 fm.setLocation(StandardLocation.CLASS_OUTPUT,
 130                         Collections.singleton(extraClasses));
 131                 List<? extends JavaFileObject> files = Arrays.asList(
 132                         new MemFile("AnnoProc.java", annoProc),
 133                         new MemFile("Callback.java", callback));
 134                 List<String> options = Arrays.asList(
 135                         "-XaddExports:jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED",
 136                         "-XaddExports:jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED",
 137                         "-XDaccessInternalAPI");
 138                 JavacTask task = tool.getTask(null, fm, null, options, null, files);
 139                 check(task.call());
 140             }
 141 
 142             System.out.println("compiling dummy to classes with anno processor");
 143             {   // use that class in a TaskListener after processing has completed
 144                 PrintStream prev = System.out;
 145                 String out;
 146                 ByteArrayOutputStream baos = new ByteArrayOutputStream();
 147                 try (PrintStream ps = new PrintStream(baos)) {
 148                     System.setOut(ps);
 149                     File testClasses = new File(System.getProperty("test.classes"));
 150                     fm.setLocation(StandardLocation.CLASS_OUTPUT,
 151                             Collections.singleton(classes));
 152                     fm.setLocation(StandardLocation.ANNOTATION_PROCESSOR_PATH,
 153                             Arrays.asList(extraClasses, testClasses));
 154                     List<? extends JavaFileObject> files = Arrays.asList(
 155                             new MemFile("my://dummy", "class Dummy { }"));
 156                     List<String> options = Arrays.asList("-XDaccessInternalAPI", "-processor", "AnnoProc");




 115         new TestClose().run();
 116     }
 117 
 118     void run() throws IOException {
 119         JavacTool tool = (JavacTool) ToolProvider.getSystemJavaCompiler();
 120         try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
 121 
 122             File classes = new File("classes");
 123             classes.mkdirs();
 124             File extraClasses = new File("extraClasses");
 125             extraClasses.mkdirs();
 126 
 127             System.out.println("compiling classes to extraClasses");
 128             {   // setup class in extraClasses
 129                 fm.setLocation(StandardLocation.CLASS_OUTPUT,
 130                         Collections.singleton(extraClasses));
 131                 List<? extends JavaFileObject> files = Arrays.asList(
 132                         new MemFile("AnnoProc.java", annoProc),
 133                         new MemFile("Callback.java", callback));
 134                 List<String> options = Arrays.asList(
 135                         "--add-exports", "jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED",
 136                         "--add-exports", "jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED",
 137                         "-XDaccessInternalAPI");
 138                 JavacTask task = tool.getTask(null, fm, null, options, null, files);
 139                 check(task.call());
 140             }
 141 
 142             System.out.println("compiling dummy to classes with anno processor");
 143             {   // use that class in a TaskListener after processing has completed
 144                 PrintStream prev = System.out;
 145                 String out;
 146                 ByteArrayOutputStream baos = new ByteArrayOutputStream();
 147                 try (PrintStream ps = new PrintStream(baos)) {
 148                     System.setOut(ps);
 149                     File testClasses = new File(System.getProperty("test.classes"));
 150                     fm.setLocation(StandardLocation.CLASS_OUTPUT,
 151                             Collections.singleton(classes));
 152                     fm.setLocation(StandardLocation.ANNOTATION_PROCESSOR_PATH,
 153                             Arrays.asList(extraClasses, testClasses));
 154                     List<? extends JavaFileObject> files = Arrays.asList(
 155                             new MemFile("my://dummy", "class Dummy { }"));
 156                     List<String> options = Arrays.asList("-XDaccessInternalAPI", "-processor", "AnnoProc");


< prev index next >