< prev index next >

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

Print this page




  77     @Test
  78     public void testUnnamed(Path base) throws Exception {
  79         Path moduleSrc = base.resolve("module-src");
  80         Path m1 = moduleSrc.resolve("m1");
  81 
  82         tb.writeJavaFiles(m1,
  83                           "module m1 { exports m1; }",
  84                           "package m1; public class M1 {}");
  85 
  86         Path m2 = moduleSrc.resolve("m2");
  87 
  88         tb.writeJavaFiles(m2,
  89                           "module m2 { exports m2; }",
  90                           "package m2; public class M2 {}");
  91 
  92         Path modulePath = base.resolve("module-path");
  93 
  94         Files.createDirectories(modulePath);
  95 
  96         new JavacTask(tb)
  97                 .options("-modulesourcepath", moduleSrc.toString())
  98                 .outdir(modulePath)
  99                 .files(findJavaFiles(moduleSrc))
 100                 .run()
 101                 .writeAll();
 102 
 103         Path cpSrc = base.resolve("cp-src");
 104 
 105         tb.writeJavaFiles(cpSrc,
 106                           "package cp; public class CP {}");
 107 
 108         Path cp = base.resolve("cp");
 109 
 110         Files.createDirectories(cp);
 111 
 112         new JavacTask(tb)
 113                 .outdir(cp)
 114                 .files(findJavaFiles(cpSrc))
 115                 .run()
 116                 .writeAll();
 117 
 118         Path src = base.resolve("src");
 119 
 120         tb.writeJavaFiles(src,
 121                           "package test; public class Test1 {}",
 122                           "package test; public class Test2 {}");
 123 
 124         Path out = base.resolve("out");
 125 
 126         Files.createDirectories(out);
 127 
 128         JavaCompiler javaCompiler = ToolProvider.getSystemJavaCompiler();
 129         try (StandardJavaFileManager fm = javaCompiler.getStandardFileManager(null, null, null)) {
 130             com.sun.source.util.JavacTask task =
 131                 (com.sun.source.util.JavacTask) javaCompiler.getTask(null,
 132                                                               null,
 133                                                               d -> { throw new IllegalStateException(d.toString()); },
 134                                                               Arrays.asList("-modulepath", modulePath.toString(),
 135                                                                             "-classpath", cp.toString(),
 136                                                                             "-sourcepath", src.toString()),
 137                                                               null,
 138                                                               fm.getJavaFileObjects(src.resolve("test").resolve("Test2.java")));
 139             assertNotNull(task.getElements().getTypeElement("java.lang.String"));
 140             assertNotNull(task.getElements().getTypeElement("javax.tools.ToolProvider"));
 141             assertNull(task.getElements().getTypeElement("m1.M1"));
 142             assertNull(task.getElements().getTypeElement("m2.M2"));
 143             assertNotNull(task.getElements().getTypeElement("cp.CP"));
 144             assertNotNull(task.getElements().getTypeElement("test.Test1"));
 145             assertNotNull(task.getElements().getTypeElement("test.Test2"));
 146             assertNotNull(task.getElements().getModuleElement("java.base"));
 147             assertNotNull(task.getElements().getModuleElement("java.compiler"));
 148             assertNull(task.getElements().getModuleElement("m1"));
 149             assertNull(task.getElements().getModuleElement("m2"));
 150         }
 151     }
 152 
 153     @Test
 154     public void testSingleNamed(Path base) throws Exception {
 155         Path moduleSrc = base.resolve("module-src");
 156         Path m1 = moduleSrc.resolve("m1");
 157 
 158         tb.writeJavaFiles(m1,
 159                           "module m1 { exports m1; }",
 160                           "package m1; public class M1 {}");
 161 
 162         Path m2 = moduleSrc.resolve("m2");
 163 
 164         tb.writeJavaFiles(m2,
 165                           "module m2 { exports m2; }",
 166                           "package m2; public class M2 {}");
 167 
 168         Path modulePath = base.resolve("module-path");
 169 
 170         Files.createDirectories(modulePath);
 171 
 172         new JavacTask(tb)
 173                 .options("-modulesourcepath", moduleSrc.toString())
 174                 .outdir(modulePath)
 175                 .files(findJavaFiles(moduleSrc))
 176                 .run()
 177                 .writeAll();
 178 
 179         Path cpSrc = base.resolve("cp-src");
 180 
 181         tb.writeJavaFiles(cpSrc,
 182                           "package cp; public class CP {}");
 183 
 184         Path cp = base.resolve("cp");
 185 
 186         Files.createDirectories(cp);
 187 
 188         new JavacTask(tb)
 189                 .outdir(cp)
 190                 .files(findJavaFiles(cpSrc))
 191                 .run()
 192                 .writeAll();
 193 
 194         Path src = base.resolve("src");
 195 
 196         tb.writeJavaFiles(src,
 197                           "module test { requires java.base; requires m1; } ",
 198                           "package test; public class Test {}");
 199 
 200         Path out = base.resolve("out");
 201 
 202         Files.createDirectories(out);
 203 
 204         JavaCompiler javaCompiler = ToolProvider.getSystemJavaCompiler();
 205         try (StandardJavaFileManager fm = javaCompiler.getStandardFileManager(null, null, null)) {
 206             com.sun.source.util.JavacTask task =
 207                 (com.sun.source.util.JavacTask) javaCompiler.getTask(null,
 208                                                               null,
 209                                                               d -> { throw new IllegalStateException(d.toString()); },
 210                                                               Arrays.asList("-modulepath", modulePath.toString(),
 211                                                                             "-classpath", cp.toString(),
 212                                                                             "-sourcepath", src.toString()),
 213                                                               null,
 214                                                               fm.getJavaFileObjects(findJavaFiles(src)));
 215             assertNotNull(task.getElements().getTypeElement("java.lang.String"));
 216             assertNull(task.getElements().getTypeElement("javax.tools.ToolProvider"));
 217             assertNotNull(task.getElements().getTypeElement("m1.M1"));
 218             assertNull(task.getElements().getTypeElement("m2.M2"));
 219             assertNotNull(task.getElements().getTypeElement("test.Test"));
 220             assertNotNull(task.getElements().getModuleElement("java.base"));
 221             assertNull(task.getElements().getModuleElement("java.compiler"));
 222             assertNotNull(task.getElements().getModuleElement("m1"));
 223             assertNull(task.getElements().getModuleElement("m2"));
 224             assertNotNull(task.getElements().getModuleElement("test"));
 225         }
 226     }
 227 
 228     @Test
 229     public void testMultiModule(Path base) throws Exception {
 230         Path modulePathSrc = base.resolve("module-path-src");
 231         Path m1 = modulePathSrc.resolve("m1");
 232 
 233         tb.writeJavaFiles(m1,
 234                           "module m1 { exports m1; }",
 235                           "package m1; public class M1 {}");
 236 
 237         Path m2 = modulePathSrc.resolve("m2");
 238 
 239         tb.writeJavaFiles(m2,
 240                           "module m2 { exports m2; }",
 241                           "package m2; public class M2 {}");
 242 
 243         Path modulePath = base.resolve("module-path");
 244 
 245         Files.createDirectories(modulePath);
 246 
 247         new JavacTask(tb)
 248                 .options("-modulesourcepath", modulePathSrc.toString())
 249                 .outdir(modulePath)
 250                 .files(findJavaFiles(modulePathSrc))
 251                 .run()
 252                 .writeAll();
 253 
 254         Path cpSrc = base.resolve("cp-src");
 255 
 256         tb.writeJavaFiles(cpSrc,
 257                           "package cp; public class CP {}");
 258 
 259         Path cp = base.resolve("cp");
 260 
 261         Files.createDirectories(cp);
 262 
 263         new JavacTask(tb)
 264                 .outdir(cp)
 265                 .files(findJavaFiles(cpSrc))
 266                 .run()
 267                 .writeAll();
 268 


 272         tb.writeJavaFiles(m3,
 273                           "module m3 { requires m1; exports m3; }",
 274                           "package m3; public class M3 {  }");
 275 
 276         Path m4 = moduleSrc.resolve("m4");
 277 
 278         tb.writeJavaFiles(m4,
 279                           "module m4 { exports m4; }",
 280                           "package m4; public class M4 {}");
 281 
 282         Path out = base.resolve("out");
 283 
 284         Files.createDirectories(out);
 285 
 286         JavaCompiler javaCompiler = ToolProvider.getSystemJavaCompiler();
 287         try (StandardJavaFileManager fm = javaCompiler.getStandardFileManager(null, null, null)) {
 288             com.sun.source.util.JavacTask task =
 289                 (com.sun.source.util.JavacTask) javaCompiler.getTask(null,
 290                                                               null,
 291                                                               d -> { throw new IllegalStateException(d.toString()); },
 292                                                               Arrays.asList("-modulepath", modulePath.toString(),
 293                                                                             "-classpath", cp.toString(),
 294                                                                             "-modulesourcepath", moduleSrc.toString(),
 295                                                                             "-d", out.toString()),
 296                                                               null,
 297                                                               fm.getJavaFileObjects(findJavaFiles(moduleSrc)));
 298             assertNotNull(task.getElements().getTypeElement("java.lang.String"));
 299             assertNull(task.getElements().getTypeElement("javax.tools.ToolProvider"));
 300             assertNotNull(task.getElements().getTypeElement("m1.M1"));
 301             assertNull(task.getElements().getTypeElement("m2.M2"));
 302             assertNotNull(task.getElements().getTypeElement("m3.M3"));
 303             assertNotNull(task.getElements().getTypeElement("m4.M4"));
 304             assertNotNull(task.getElements().getModuleElement("java.base"));
 305             assertNull(task.getElements().getModuleElement("java.compiler"));
 306             assertNotNull(task.getElements().getModuleElement("m1"));
 307             assertNull(task.getElements().getModuleElement("m2"));
 308             assertNotNull(task.getElements().getModuleElement("m3"));
 309             assertNotNull(task.getElements().getModuleElement("m4"));
 310         }
 311     }
 312 
 313     @Test
 314     public void testTooSoon(Path base) throws Exception {


 322         Files.createDirectories(out);
 323 
 324         Path reg = base.resolve("reg");
 325         Path regFile = reg.resolve("META-INF").resolve("services").resolve(Plugin.class.getName());
 326 
 327         Files.createDirectories(regFile.getParent());
 328 
 329         try (OutputStream regOut = Files.newOutputStream(regFile)) {
 330             regOut.write(PluginImpl.class.getName().getBytes());
 331         }
 332 
 333         String processorPath = System.getProperty("test.class.path") + File.pathSeparator + reg.toString();
 334 
 335         JavaCompiler javaCompiler = ToolProvider.getSystemJavaCompiler();
 336         Path testSource = src.resolve("test").resolve("Test.java");
 337         try (StandardJavaFileManager fm = javaCompiler.getStandardFileManager(null, null, null)) {
 338             com.sun.source.util.JavacTask task =
 339                 (com.sun.source.util.JavacTask) javaCompiler.getTask(null,
 340                                                               null,
 341                                                               d -> { throw new IllegalStateException(d.toString()); },
 342                                                               Arrays.asList("-processorpath", processorPath,
 343                                                                             "-processor", AP.class.getName(),
 344                                                                             "-Xplugin:test"),
 345                                                               null,
 346                                                               fm.getJavaFileObjects(testSource));
 347             task.call();
 348         }
 349 
 350         Main.compile(new String[] {"-processorpath", processorPath,
 351                                    "-Xplugin:test",
 352                                    testSource.toString()});
 353     }
 354 
 355     public static class PluginImpl implements Plugin {
 356 
 357         @Override
 358         public String getName() {
 359             return "test";
 360         }
 361 
 362         @Override
 363         public void init(com.sun.source.util.JavacTask task, String... args) {
 364             task.addTaskListener(new TaskListener() {
 365                 boolean wasEntered;
 366                 @Override
 367                 public void started(TaskEvent e) {
 368                     switch (e.getKind()) {
 369                         case COMPILATION: case PARSE:
 370                             shouldFail(e.getKind());




  77     @Test
  78     public void testUnnamed(Path base) throws Exception {
  79         Path moduleSrc = base.resolve("module-src");
  80         Path m1 = moduleSrc.resolve("m1");
  81 
  82         tb.writeJavaFiles(m1,
  83                           "module m1 { exports m1; }",
  84                           "package m1; public class M1 {}");
  85 
  86         Path m2 = moduleSrc.resolve("m2");
  87 
  88         tb.writeJavaFiles(m2,
  89                           "module m2 { exports m2; }",
  90                           "package m2; public class M2 {}");
  91 
  92         Path modulePath = base.resolve("module-path");
  93 
  94         Files.createDirectories(modulePath);
  95 
  96         new JavacTask(tb)
  97                 .options("--module-source-path", moduleSrc.toString())
  98                 .outdir(modulePath)
  99                 .files(findJavaFiles(moduleSrc))
 100                 .run()
 101                 .writeAll();
 102 
 103         Path cpSrc = base.resolve("cp-src");
 104 
 105         tb.writeJavaFiles(cpSrc,
 106                           "package cp; public class CP {}");
 107 
 108         Path cp = base.resolve("cp");
 109 
 110         Files.createDirectories(cp);
 111 
 112         new JavacTask(tb)
 113                 .outdir(cp)
 114                 .files(findJavaFiles(cpSrc))
 115                 .run()
 116                 .writeAll();
 117 
 118         Path src = base.resolve("src");
 119 
 120         tb.writeJavaFiles(src,
 121                           "package test; public class Test1 {}",
 122                           "package test; public class Test2 {}");
 123 
 124         Path out = base.resolve("out");
 125 
 126         Files.createDirectories(out);
 127 
 128         JavaCompiler javaCompiler = ToolProvider.getSystemJavaCompiler();
 129         try (StandardJavaFileManager fm = javaCompiler.getStandardFileManager(null, null, null)) {
 130             com.sun.source.util.JavacTask task =
 131                 (com.sun.source.util.JavacTask) javaCompiler.getTask(null,
 132                                                               null,
 133                                                               d -> { throw new IllegalStateException(d.toString()); },
 134                                                               Arrays.asList("--module-path", modulePath.toString(),
 135                                                                             "--class-path", cp.toString(),
 136                                                                             "-sourcepath", src.toString()),
 137                                                               null,
 138                                                               fm.getJavaFileObjects(src.resolve("test").resolve("Test2.java")));
 139             assertNotNull(task.getElements().getTypeElement("java.lang.String"));
 140             assertNotNull(task.getElements().getTypeElement("javax.tools.ToolProvider"));
 141             assertNull(task.getElements().getTypeElement("m1.M1"));
 142             assertNull(task.getElements().getTypeElement("m2.M2"));
 143             assertNotNull(task.getElements().getTypeElement("cp.CP"));
 144             assertNotNull(task.getElements().getTypeElement("test.Test1"));
 145             assertNotNull(task.getElements().getTypeElement("test.Test2"));
 146             assertNotNull(task.getElements().getModuleElement("java.base"));
 147             assertNotNull(task.getElements().getModuleElement("java.compiler"));
 148             assertNull(task.getElements().getModuleElement("m1"));
 149             assertNull(task.getElements().getModuleElement("m2"));
 150         }
 151     }
 152 
 153     @Test
 154     public void testSingleNamed(Path base) throws Exception {
 155         Path moduleSrc = base.resolve("module-src");
 156         Path m1 = moduleSrc.resolve("m1");
 157 
 158         tb.writeJavaFiles(m1,
 159                           "module m1 { exports m1; }",
 160                           "package m1; public class M1 {}");
 161 
 162         Path m2 = moduleSrc.resolve("m2");
 163 
 164         tb.writeJavaFiles(m2,
 165                           "module m2 { exports m2; }",
 166                           "package m2; public class M2 {}");
 167 
 168         Path modulePath = base.resolve("module-path");
 169 
 170         Files.createDirectories(modulePath);
 171 
 172         new JavacTask(tb)
 173                 .options("--module-source-path", moduleSrc.toString())
 174                 .outdir(modulePath)
 175                 .files(findJavaFiles(moduleSrc))
 176                 .run()
 177                 .writeAll();
 178 
 179         Path cpSrc = base.resolve("cp-src");
 180 
 181         tb.writeJavaFiles(cpSrc,
 182                           "package cp; public class CP {}");
 183 
 184         Path cp = base.resolve("cp");
 185 
 186         Files.createDirectories(cp);
 187 
 188         new JavacTask(tb)
 189                 .outdir(cp)
 190                 .files(findJavaFiles(cpSrc))
 191                 .run()
 192                 .writeAll();
 193 
 194         Path src = base.resolve("src");
 195 
 196         tb.writeJavaFiles(src,
 197                           "module test { requires java.base; requires m1; } ",
 198                           "package test; public class Test {}");
 199 
 200         Path out = base.resolve("out");
 201 
 202         Files.createDirectories(out);
 203 
 204         JavaCompiler javaCompiler = ToolProvider.getSystemJavaCompiler();
 205         try (StandardJavaFileManager fm = javaCompiler.getStandardFileManager(null, null, null)) {
 206             com.sun.source.util.JavacTask task =
 207                 (com.sun.source.util.JavacTask) javaCompiler.getTask(null,
 208                                                               null,
 209                                                               d -> { throw new IllegalStateException(d.toString()); },
 210                                                               Arrays.asList("--module-path", modulePath.toString(),
 211                                                                             "--class-path", cp.toString(),
 212                                                                             "-sourcepath", src.toString()),
 213                                                               null,
 214                                                               fm.getJavaFileObjects(findJavaFiles(src)));
 215             assertNotNull(task.getElements().getTypeElement("java.lang.String"));
 216             assertNull(task.getElements().getTypeElement("javax.tools.ToolProvider"));
 217             assertNotNull(task.getElements().getTypeElement("m1.M1"));
 218             assertNull(task.getElements().getTypeElement("m2.M2"));
 219             assertNotNull(task.getElements().getTypeElement("test.Test"));
 220             assertNotNull(task.getElements().getModuleElement("java.base"));
 221             assertNull(task.getElements().getModuleElement("java.compiler"));
 222             assertNotNull(task.getElements().getModuleElement("m1"));
 223             assertNull(task.getElements().getModuleElement("m2"));
 224             assertNotNull(task.getElements().getModuleElement("test"));
 225         }
 226     }
 227 
 228     @Test
 229     public void testMultiModule(Path base) throws Exception {
 230         Path modulePathSrc = base.resolve("module-path-src");
 231         Path m1 = modulePathSrc.resolve("m1");
 232 
 233         tb.writeJavaFiles(m1,
 234                           "module m1 { exports m1; }",
 235                           "package m1; public class M1 {}");
 236 
 237         Path m2 = modulePathSrc.resolve("m2");
 238 
 239         tb.writeJavaFiles(m2,
 240                           "module m2 { exports m2; }",
 241                           "package m2; public class M2 {}");
 242 
 243         Path modulePath = base.resolve("module-path");
 244 
 245         Files.createDirectories(modulePath);
 246 
 247         new JavacTask(tb)
 248                 .options("--module-source-path", modulePathSrc.toString())
 249                 .outdir(modulePath)
 250                 .files(findJavaFiles(modulePathSrc))
 251                 .run()
 252                 .writeAll();
 253 
 254         Path cpSrc = base.resolve("cp-src");
 255 
 256         tb.writeJavaFiles(cpSrc,
 257                           "package cp; public class CP {}");
 258 
 259         Path cp = base.resolve("cp");
 260 
 261         Files.createDirectories(cp);
 262 
 263         new JavacTask(tb)
 264                 .outdir(cp)
 265                 .files(findJavaFiles(cpSrc))
 266                 .run()
 267                 .writeAll();
 268 


 272         tb.writeJavaFiles(m3,
 273                           "module m3 { requires m1; exports m3; }",
 274                           "package m3; public class M3 {  }");
 275 
 276         Path m4 = moduleSrc.resolve("m4");
 277 
 278         tb.writeJavaFiles(m4,
 279                           "module m4 { exports m4; }",
 280                           "package m4; public class M4 {}");
 281 
 282         Path out = base.resolve("out");
 283 
 284         Files.createDirectories(out);
 285 
 286         JavaCompiler javaCompiler = ToolProvider.getSystemJavaCompiler();
 287         try (StandardJavaFileManager fm = javaCompiler.getStandardFileManager(null, null, null)) {
 288             com.sun.source.util.JavacTask task =
 289                 (com.sun.source.util.JavacTask) javaCompiler.getTask(null,
 290                                                               null,
 291                                                               d -> { throw new IllegalStateException(d.toString()); },
 292                                                               Arrays.asList("--module-path", modulePath.toString(),
 293                                                                             "--class-path", cp.toString(),
 294                                                                             "--module-source-path", moduleSrc.toString(),
 295                                                                             "-d", out.toString()),
 296                                                               null,
 297                                                               fm.getJavaFileObjects(findJavaFiles(moduleSrc)));
 298             assertNotNull(task.getElements().getTypeElement("java.lang.String"));
 299             assertNull(task.getElements().getTypeElement("javax.tools.ToolProvider"));
 300             assertNotNull(task.getElements().getTypeElement("m1.M1"));
 301             assertNull(task.getElements().getTypeElement("m2.M2"));
 302             assertNotNull(task.getElements().getTypeElement("m3.M3"));
 303             assertNotNull(task.getElements().getTypeElement("m4.M4"));
 304             assertNotNull(task.getElements().getModuleElement("java.base"));
 305             assertNull(task.getElements().getModuleElement("java.compiler"));
 306             assertNotNull(task.getElements().getModuleElement("m1"));
 307             assertNull(task.getElements().getModuleElement("m2"));
 308             assertNotNull(task.getElements().getModuleElement("m3"));
 309             assertNotNull(task.getElements().getModuleElement("m4"));
 310         }
 311     }
 312 
 313     @Test
 314     public void testTooSoon(Path base) throws Exception {


 322         Files.createDirectories(out);
 323 
 324         Path reg = base.resolve("reg");
 325         Path regFile = reg.resolve("META-INF").resolve("services").resolve(Plugin.class.getName());
 326 
 327         Files.createDirectories(regFile.getParent());
 328 
 329         try (OutputStream regOut = Files.newOutputStream(regFile)) {
 330             regOut.write(PluginImpl.class.getName().getBytes());
 331         }
 332 
 333         String processorPath = System.getProperty("test.class.path") + File.pathSeparator + reg.toString();
 334 
 335         JavaCompiler javaCompiler = ToolProvider.getSystemJavaCompiler();
 336         Path testSource = src.resolve("test").resolve("Test.java");
 337         try (StandardJavaFileManager fm = javaCompiler.getStandardFileManager(null, null, null)) {
 338             com.sun.source.util.JavacTask task =
 339                 (com.sun.source.util.JavacTask) javaCompiler.getTask(null,
 340                                                               null,
 341                                                               d -> { throw new IllegalStateException(d.toString()); },
 342                                                               Arrays.asList("--processor-path", processorPath,
 343                                                                             "-processor", AP.class.getName(),
 344                                                                             "-Xplugin:test"),
 345                                                               null,
 346                                                               fm.getJavaFileObjects(testSource));
 347             task.call();
 348         }
 349 
 350         Main.compile(new String[] {"--processor-path", processorPath,
 351                                    "-Xplugin:test",
 352                                    testSource.toString()});
 353     }
 354 
 355     public static class PluginImpl implements Plugin {
 356 
 357         @Override
 358         public String getName() {
 359             return "test";
 360         }
 361 
 362         @Override
 363         public void init(com.sun.source.util.JavacTask task, String... args) {
 364             task.addTaskListener(new TaskListener() {
 365                 boolean wasEntered;
 366                 @Override
 367                 public void started(TaskEvent e) {
 368                     switch (e.getKind()) {
 369                         case COMPILATION: case PARSE:
 370                             shouldFail(e.getKind());


< prev index next >