64 public class AnnotationProcessing extends ModuleTestBase { 65 66 public static void main(String... args) throws Exception { 67 new AnnotationProcessing().runTests(); 68 } 69 70 @Test 71 public void testAPSingleModule(Path base) throws Exception { 72 Path moduleSrc = base.resolve("module-src"); 73 Path m1 = moduleSrc.resolve("m1"); 74 75 Path classes = base.resolve("classes"); 76 77 Files.createDirectories(classes); 78 79 tb.writeJavaFiles(m1, 80 "module m1 { }", 81 "package impl; public class Impl { }"); 82 83 String log = new JavacTask(tb) 84 .options("-modulesourcepath", moduleSrc.toString(), 85 "-processor", AP.class.getName(), 86 "-AexpectedEnclosedElements=m1=>impl") 87 .outdir(classes) 88 .files(findJavaFiles(moduleSrc)) 89 .run() 90 .writeAll() 91 .getOutput(Task.OutputKind.DIRECT); 92 93 if (!log.isEmpty()) 94 throw new AssertionError("Unexpected output: " + log); 95 } 96 97 @Test 98 public void testAPMultiModule(Path base) throws Exception { 99 Path moduleSrc = base.resolve("module-src"); 100 Path m1 = moduleSrc.resolve("m1"); 101 Path m2 = moduleSrc.resolve("m2"); 102 103 Path classes = base.resolve("classes"); 104 105 Files.createDirectories(classes); 106 107 tb.writeJavaFiles(m1, 108 "module m1 { }", 109 "package impl1; public class Impl1 { }"); 110 111 tb.writeJavaFiles(m2, 112 "module m2 { }", 113 "package impl2; public class Impl2 { }"); 114 115 String log = new JavacTask(tb) 116 .options("-modulesourcepath", moduleSrc.toString(), 117 "-processor", AP.class.getName(), 118 "-AexpectedEnclosedElements=m1=>impl1,m2=>impl2") 119 .outdir(classes) 120 .files(findJavaFiles(moduleSrc)) 121 .run() 122 .writeAll() 123 .getOutput(Task.OutputKind.DIRECT); 124 125 if (!log.isEmpty()) 126 throw new AssertionError("Unexpected output: " + log); 127 } 128 129 @SupportedAnnotationTypes("*") 130 @SupportedOptions("expectedEnclosedElements") 131 public static final class AP extends AbstractProcessor { 132 133 private Map<String, List<String>> module2ExpectedEnclosedElements; 134 135 @Override 136 public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) { | 64 public class AnnotationProcessing extends ModuleTestBase { 65 66 public static void main(String... args) throws Exception { 67 new AnnotationProcessing().runTests(); 68 } 69 70 @Test 71 public void testAPSingleModule(Path base) throws Exception { 72 Path moduleSrc = base.resolve("module-src"); 73 Path m1 = moduleSrc.resolve("m1"); 74 75 Path classes = base.resolve("classes"); 76 77 Files.createDirectories(classes); 78 79 tb.writeJavaFiles(m1, 80 "module m1 { }", 81 "package impl; public class Impl { }"); 82 83 String log = new JavacTask(tb) 84 .options("--module-source-path", moduleSrc.toString(), 85 "-processor", AP.class.getName(), 86 "-AexpectedEnclosedElements=m1=>impl") 87 .outdir(classes) 88 .files(findJavaFiles(moduleSrc)) 89 .run() 90 .writeAll() 91 .getOutput(Task.OutputKind.DIRECT); 92 93 if (!log.isEmpty()) 94 throw new AssertionError("Unexpected output: " + log); 95 } 96 97 @Test 98 public void testAPMultiModule(Path base) throws Exception { 99 Path moduleSrc = base.resolve("module-src"); 100 Path m1 = moduleSrc.resolve("m1"); 101 Path m2 = moduleSrc.resolve("m2"); 102 103 Path classes = base.resolve("classes"); 104 105 Files.createDirectories(classes); 106 107 tb.writeJavaFiles(m1, 108 "module m1 { }", 109 "package impl1; public class Impl1 { }"); 110 111 tb.writeJavaFiles(m2, 112 "module m2 { }", 113 "package impl2; public class Impl2 { }"); 114 115 String log = new JavacTask(tb) 116 .options("--module-source-path", moduleSrc.toString(), 117 "-processor", AP.class.getName(), 118 "-AexpectedEnclosedElements=m1=>impl1,m2=>impl2") 119 .outdir(classes) 120 .files(findJavaFiles(moduleSrc)) 121 .run() 122 .writeAll() 123 .getOutput(Task.OutputKind.DIRECT); 124 125 if (!log.isEmpty()) 126 throw new AssertionError("Unexpected output: " + log); 127 } 128 129 @SupportedAnnotationTypes("*") 130 @SupportedOptions("expectedEnclosedElements") 131 public static final class AP extends AbstractProcessor { 132 133 private Map<String, List<String>> module2ExpectedEnclosedElements; 134 135 @Override 136 public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) { |