2323import net .bytebuddy .utility .dispatcher .JavaDispatcher ;
2424import net .bytebuddy .utility .nullability .AlwaysNull ;
2525import net .bytebuddy .utility .nullability .MaybeNull ;
26+ import org .objectweb .asm .Opcodes ;
2627
2728import java .lang .reflect .AnnotatedElement ;
2829import java .security .PrivilegedAction ;
@@ -493,31 +494,16 @@ class ForLoadedModule extends AbstractBase {
493494 */
494495 protected static final ModuleDescriptor .Exports MODULE_DESCRIPTOR_EXPORTS = doPrivileged (JavaDispatcher .of (ModuleDescriptor .Exports .class ));
495496
496- /**
497- * A dispatcher for accessing {@code java.lang.ModuleDescriptor.Exports.Modifier} methods.
498- */
499- protected static final ModuleDescriptor .Exports .Modifier MODULE_DESCRIPTOR_EXPORTS_MODIFIER = doPrivileged (JavaDispatcher .of (ModuleDescriptor .Exports .Modifier .class ));
500-
501497 /**
502498 * A dispatcher for accessing {@code java.lang.ModuleDescriptor.Opens} methods.
503499 */
504500 protected static final ModuleDescriptor .Opens MODULE_DESCRIPTOR_OPENS = doPrivileged (JavaDispatcher .of (ModuleDescriptor .Opens .class ));
505501
506- /**
507- * A dispatcher for accessing {@code java.lang.ModuleDescriptor.Opens.Modifier} methods.
508- */
509- protected static final ModuleDescriptor .Opens .Modifier MODULE_DESCRIPTOR_OPENS_MODIFIER = doPrivileged (JavaDispatcher .of (ModuleDescriptor .Opens .Modifier .class ));
510-
511502 /**
512503 * A dispatcher for accessing {@code java.lang.ModuleDescriptor.Requires} methods.
513504 */
514505 protected static final ModuleDescriptor .Requires MODULE_DESCRIPTOR_REQUIRES = doPrivileged (JavaDispatcher .of (ModuleDescriptor .Requires .class ));
515506
516- /**
517- * A dispatcher for accessing {@code java.lang.ModuleDescriptor.Requires.Modifier} methods.
518- */
519- protected static final ModuleDescriptor .Requires .Modifier MODULE_DESCRIPTOR_REQUIRES_MODIFIER = doPrivileged (JavaDispatcher .of (ModuleDescriptor .Requires .Modifier .class ));
520-
521507 /**
522508 * A dispatcher for accessing {@code java.lang.ModuleDescriptor.Provides} methods.
523509 */
@@ -615,7 +601,14 @@ public Map<String, Exports> getExports() {
615601 for (Object export : MODULE_DESCRIPTOR .exports (MODULE .getDescriptor (module ))) {
616602 int modifiers = 0 ;
617603 for (Object modifier : MODULE_DESCRIPTOR_EXPORTS .modifiers (export )) {
618- modifiers |= MODULE_DESCRIPTOR_EXPORTS_MODIFIER .mask (modifier );
604+ String name = ((Enum <?>) modifier ).name ();
605+ if (name .equals ("SYNTHETIC" )) {
606+ modifiers |= Opcodes .ACC_SYNTHETIC ;
607+ } else if (name .equals ("MANDATED" )) {
608+ modifiers |= Opcodes .ACC_MANDATED ;
609+ } else {
610+ throw new IllegalStateException ("Unknown export modifier: " + name );
611+ }
619612 }
620613 exports .put (MODULE_DESCRIPTOR_EXPORTS .source (export ), new Exports .Simple (MODULE_DESCRIPTOR_EXPORTS .targets (export ), modifiers ));
621614 }
@@ -630,7 +623,14 @@ public Map<String, Opens> getOpens() {
630623 for (Object open : MODULE_DESCRIPTOR .opens (MODULE .getDescriptor (module ))) {
631624 int modifiers = 0 ;
632625 for (Object modifier : MODULE_DESCRIPTOR_OPENS .modifiers (open )) {
633- modifiers |= MODULE_DESCRIPTOR_OPENS_MODIFIER .mask (modifier );
626+ String name = ((Enum <?>) modifier ).name ();
627+ if (name .equals ("SYNTHETIC" )) {
628+ modifiers |= Opcodes .ACC_SYNTHETIC ;
629+ } else if (name .equals ("MANDATED" )) {
630+ modifiers |= Opcodes .ACC_MANDATED ;
631+ } else {
632+ throw new IllegalStateException ("Unknown opens modifier: " + name );
633+ }
634634 }
635635 opens .put (MODULE_DESCRIPTOR_OPENS .source (open ), new Opens .Simple (MODULE_DESCRIPTOR_OPENS .targets (open ), modifiers ));
636636 }
@@ -645,7 +645,18 @@ public Map<String, Requires> getRequires() {
645645 for (Object require : MODULE_DESCRIPTOR .requires (MODULE .getDescriptor (module ))) {
646646 int modifiers = 0 ;
647647 for (Object modifier : MODULE_DESCRIPTOR_REQUIRES .modifiers (require )) {
648- modifiers |= MODULE_DESCRIPTOR_REQUIRES_MODIFIER .mask (modifier );
648+ String name = ((Enum <?>) modifier ).name ();
649+ if (name .equals ("SYNTHETIC" )) {
650+ modifiers |= Opcodes .ACC_SYNTHETIC ;
651+ } else if (name .equals ("MANDATED" )) {
652+ modifiers |= Opcodes .ACC_MANDATED ;
653+ } else if (name .equals ("TRANSITIVE" )) {
654+ modifiers |= Opcodes .ACC_TRANSITIVE ;
655+ } else if (name .equals ("STATIC" )) {
656+ modifiers |= Opcodes .ACC_STATIC_PHASE ;
657+ } else {
658+ throw new IllegalStateException ("Unknown requires modifier: " + name );
659+ }
649660 }
650661 requires .put (MODULE_DESCRIPTOR_REQUIRES .name (require ), new Requires .Simple (
651662 (String ) OPTIONAL .orElse (MODULE_DESCRIPTOR_REQUIRES .rawCompiledVersion (require ), null ),
@@ -671,7 +682,16 @@ public Map<String, Provides> getProvides() {
671682 public int getModifiers () {
672683 int modifiers = 0 ;
673684 for (Object modifier : MODULE_DESCRIPTOR .modifiers (module )) {
674- modifiers |= MODULE_DESCRIPTOR_REQUIRES_MODIFIER .mask (modifier );
685+ String name = ((Enum <?>) modifier ).name ();
686+ if (name .equals ("SYNTHETIC" )) {
687+ modifiers |= Opcodes .ACC_SYNTHETIC ;
688+ } else if (name .equals ("MANDATED" )) {
689+ modifiers |= Opcodes .ACC_MANDATED ;
690+ } else if (name .equals ("OPEN" )) {
691+ modifiers |= Opcodes .ACC_OPEN ;
692+ } else {
693+ throw new IllegalStateException ("Unknown module modifier: " + name );
694+ }
675695 }
676696 return modifiers ;
677697 }
@@ -860,21 +880,6 @@ interface Requires {
860880 * @return The raw compiled version as an {@code Optional}.
861881 */
862882 Object rawCompiledVersion (Object value );
863-
864- /**
865- * A proxy for interacting with {@code java.lang.ModuleDescriptor.Requires.Modifier}.
866- */
867- @ JavaDispatcher .Proxied ("java.lang.module.ModuleDescriptor$Requires$Modifier" )
868- interface Modifier {
869-
870- /**
871- * Returns the mask value for this modifier.
872- *
873- * @param value The {@code java.lang.ModuleDescriptor.Requires.Modifier} instance.
874- * @return The mask value for this modifier.
875- */
876- int mask (Object value );
877- }
878883 }
879884
880885 /**
@@ -906,21 +911,6 @@ interface Exports {
906911 * @return The target modules for this export.
907912 */
908913 Set <String > targets (Object value );
909-
910- /**
911- * A proxy for interacting with {@code java.lang.ModuleDescriptor.Exports.Modifier}.
912- */
913- @ JavaDispatcher .Proxied ("java.lang.module.ModuleDescriptor$Exports$Modifier" )
914- interface Modifier {
915-
916- /**
917- * Returns the mask value for this modifier.
918- *
919- * @param value The {@code java.lang.ModuleDescriptor.Exports.Modifier} instance.
920- * @return The mask value for this modifier.
921- */
922- int mask (Object value );
923- }
924914 }
925915
926916 /**
@@ -952,21 +942,6 @@ interface Opens {
952942 * @return The target modules for this opens declaration.
953943 */
954944 Set <String > targets (Object value );
955-
956- /**
957- * A proxy for interacting with {@code java.lang.ModuleDescriptor.Opens.Modifier}.
958- */
959- @ JavaDispatcher .Proxied ("java.lang.module.ModuleDescriptor$Opens$Modifier" )
960- interface Modifier {
961-
962- /**
963- * Returns the mask value for this modifier.
964- *
965- * @param value The {@code java.lang.ModuleDescriptor.Opens.Modifier} instance.
966- * @return The mask value for this modifier.
967- */
968- int mask (Object value );
969- }
970945 }
971946
972947 /**
0 commit comments