|
77 | 77 | import java.util.zip.ZipOutputStream;
|
78 | 78 |
|
79 | 79 | import static com.github.javaparser.ParseStart.COMPILATION_UNIT;
|
80 |
| -import static net.bytebuddy.jar.asm.Opcodes.ACC_MANDATED; |
81 |
| -import static net.bytebuddy.jar.asm.Opcodes.ACC_MODULE; |
82 |
| -import static net.bytebuddy.jar.asm.Opcodes.ACC_OPEN; |
83 |
| -import static net.bytebuddy.jar.asm.Opcodes.ACC_TRANSITIVE; |
| 80 | +import static net.bytebuddy.jar.asm.Opcodes.*; |
84 | 81 |
|
85 | 82 | public class ModuleGenerator {
|
86 | 83 |
|
@@ -277,7 +274,7 @@ public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
|
277 | 274 | ModuleVisitor moduleVisitor = classWriter.visitModule(moduleName, isOpen ? ACC_OPEN : 0, null);
|
278 | 275 | moduleVisitor.visitRequire("java.base", ACC_MANDATED, null);
|
279 | 276 |
|
280 |
| - moduleDeclaration.accept(new MyModuleVisitor(classLoader, hides, moduleVisitor), null); |
| 277 | + moduleDeclaration.accept(new MyModuleVisitor(classLoader, exportedPackages, hides, moduleVisitor), null); |
281 | 278 |
|
282 | 279 | moduleVisitor.visitEnd();
|
283 | 280 |
|
@@ -360,13 +357,16 @@ private static Set<String> inferPackages(Path inJar) {
|
360 | 357 | private static class MyModuleVisitor extends VoidVisitorAdapter<Void> {
|
361 | 358 |
|
362 | 359 | private final ClassLoader classLoader;
|
363 |
| - private Set<String> seenExports; |
| 360 | + private final Set<String> seenExports; |
| 361 | + private final Set<String> packages; |
364 | 362 | private final ModuleVisitor byteBuddyVisitor;
|
365 | 363 |
|
366 |
| - MyModuleVisitor(ClassLoader classLoader, Set<String> excluded, ModuleVisitor byteBuddyVisitor) { |
| 364 | + MyModuleVisitor(ClassLoader classLoader, Set<String> packages, Set<String> excluded, ModuleVisitor byteBuddyVisitor) { |
367 | 365 | this.classLoader = classLoader;
|
368 | 366 | this.byteBuddyVisitor = byteBuddyVisitor;
|
| 367 | + |
369 | 368 | // Set is modifiable
|
| 369 | + this.packages = new HashSet<>(packages); |
370 | 370 | this.seenExports = new HashSet<>(excluded);
|
371 | 371 | }
|
372 | 372 |
|
@@ -408,7 +408,8 @@ public void visit(ModuleUsesDirective n, Void arg) {
|
408 | 408 |
|
409 | 409 | @Override
|
410 | 410 | public void visit(ModuleOpensDirective n, Void arg) {
|
411 |
| - throw new UnsupportedOperationException(n.toString()); |
| 411 | +// packages.forEach(pkg -> byteBuddyVisitor.visitOpen(pkg, ACC_MANDATED | ACC_SYNTHETIC, n.getNameAsString())); |
| 412 | + packages.forEach(pkg -> byteBuddyVisitor.visitOpen(pkg.replace('.', '/'), 0, n.getNameAsString())); |
412 | 413 | }
|
413 | 414 |
|
414 | 415 | private int getByteBuddyModifier(NodeList<Modifier> modifiers) {
|
|
0 commit comments