< prev index next >

langtools/test/tools/javac/modules/AnnotationProcessing.java

Print this page




  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) {


< prev index next >