Skip to content

Commit

Permalink
feat: apply EEAs of JDK classes to subclasses in 3rd party modules
Browse files Browse the repository at this point in the history
  • Loading branch information
sebthom committed Jun 7, 2024
1 parent 7824dfb commit f9cb165
Show file tree
Hide file tree
Showing 375 changed files with 960 additions and 918 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,6 @@ public Config(final Path outputDir, final String... packages) {
this.outputDir = outputDir;
this.packages = packages;
}

}

/**
Expand Down Expand Up @@ -473,6 +472,30 @@ public static long generateEEAFiles(final Config cfg) throws IOException {
totalModifications += pkgDeletions.sum();
}

// will hold additional EEA files found in input dirs that are not part of the packages defined in {@link Config#packages}
final var superEEAFiles = new HashMap<ClassInfo, EEAFile>();
final Function<ClassInfo, @Nullable EEAFile> getSuperEEAFile = classInfo -> {
EEAFile eeaFile = eeaFiles.get(classInfo);
if (eeaFile != null)
return eeaFile;
eeaFile = superEEAFiles.get(classInfo);
if (eeaFile != null)
return eeaFile;

for (final var inputDir : cfg.inputDirs) {
try {
eeaFile = EEAFile.loadIfExists(inputDir, classInfo.getName().replace('.', '/'));
if (eeaFile != null) {
superEEAFiles.put(classInfo, eeaFile);
return eeaFile;
}
} catch (final IOException ex) {
throw new UncheckedIOException(ex);
}
}
return null;
};

// determine inherited annotated signatures
final var recomputeInheritance = new AtomicBoolean(true);
while (recomputeInheritance.get()) {
Expand Down Expand Up @@ -508,7 +531,7 @@ public static long generateEEAFiles(final Config cfg) throws IOException {
for (final var superClass : superClasses) {
final EEAFile superClassEEA = superClass == OBJECT_CLASS_INFO //
? TEMPLATE_OBJECT
: eeaFiles.get(superClass);
: getSuperEEAFile.apply(superClass);
if (superClassEEA == null) {
continue;
}
Expand All @@ -527,7 +550,7 @@ public static long generateEEAFiles(final Config cfg) throws IOException {
boolean hasConflictingIFaceAnnotatedSignatures = false;
if (inheritableAnnotatedSignature == null) {
for (final var iface : interfaces) {
final EEAFile ifaceEEA = eeaFiles.get(iface);
final EEAFile ifaceEEA = getSuperEEAFile.apply(iface);
if (ifaceEEA == null) {
continue;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ add
(TT;)Z
iterator
()Ljava/util/Iterator<TT;>;
()Ljava/util/Iterator<TT;>;
()L1java/util/Iterator<TT;>; # @Inherited(java.lang.Iterable)
remove
(Ljava/lang/Object;)Z
(Ljava/lang/Object;)Z
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ equals
(L0java/lang/Object;)Z # @Inherited(java.lang.Object)
invoke
(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;
(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;
(L1java/lang/Object;L1java/lang/reflect/Method;[0L0java/lang/Object;)L0java/lang/Object; # @Inherited(java.lang.reflect.InvocationHandler)
toStringRepresentation
()Ljava/lang/String;
()Ljava/lang/String;
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,4 @@ equals
(L0java/lang/Object;)Z # @Inherited(java.lang.Object)
invoke
(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;
(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;
(L1java/lang/Object;L1java/lang/reflect/Method;[0L0java/lang/Object;)L0java/lang/Object; # @Inherited(java.lang.reflect.InvocationHandler)
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,4 @@ equals
(L0java/lang/Object;)Z # @Inherited(java.lang.Object)
invoke
(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;
(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;
(L1java/lang/Object;L1java/lang/reflect/Method;[0L0java/lang/Object;)L0java/lang/Object; # @Inherited(java.lang.reflect.InvocationHandler)
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,10 @@ load
(Ljava/lang/ClassLoader;ZLjava/util/Map<Ljava/lang/String;[B>;Lnet/bytebuddy/dynamic/loading/ByteArrayClassLoader$PersistenceHandler;)V
getResource
(Ljava/lang/String;)Ljava/net/URL;
(Ljava/lang/String;)Ljava/net/URL;
(L1java/lang/String;)L0java/net/URL; # @Inherited(java.lang.ClassLoader)
getResources
(Ljava/lang/String;)Ljava/util/Enumeration<Ljava/net/URL;>;
(Ljava/lang/String;)Ljava/util/Enumeration<Ljava/net/URL;>;
(L1java/lang/String;)L1java/util/Enumeration<L1java/net/URL;>; # @Inherited(java.lang.ClassLoader)
loadClass
(Ljava/lang/String;Z)Ljava/lang/Class<*>;
(Ljava/lang/String;Z)Ljava/lang/Class<*>;
(L1java/lang/String;Z)L1java/lang/Class<*>; # @Inherited(java.lang.ClassLoader)
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@ class net/bytebuddy/dynamic/loading/ByteArrayClassLoader$PersistenceHandler$UrlD
(Ljava/net/URL;Ljava/io/InputStream;)V
getInputStream
()Ljava/io/InputStream;
()Ljava/io/InputStream;
()L1java/io/InputStream; # @Inherited(java.net.URLConnection)
Original file line number Diff line number Diff line change
Expand Up @@ -62,10 +62,10 @@ doDefineClasses
(Ljava/util/Map<Ljava/lang/String;[B>;)Ljava/util/Map<Ljava/lang/String;Ljava/lang/Class<*>;>;
findClass
(Ljava/lang/String;)Ljava/lang/Class<*>;
(Ljava/lang/String;)Ljava/lang/Class<*>;
(L0java/lang/String;)L1java/lang/Class<*>; # @Inherited(java.lang.ClassLoader)
findResource
(Ljava/lang/String;)Ljava/net/URL;
(Ljava/lang/String;)L0java/net/URL;
(Ljava/lang/String;)L0java/net/URL; # @Overrides(java.lang.ClassLoader)
findResources
(Ljava/lang/String;)Ljava/util/Enumeration<Ljava/net/URL;>;
(Ljava/lang/String;)Ljava/util/Enumeration<Ljava/net/URL;>;
(L0java/lang/String;)L1java/util/Enumeration<L1java/net/URL;>; # @Inherited(java.lang.ClassLoader)
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@ doDefineClasses
(Ljava/util/Map<Ljava/lang/String;[B>;)Ljava/util/Map<Ljava/lang/String;Ljava/lang/Class<*>;>;
getResource
(Ljava/lang/String;)Ljava/net/URL;
(Ljava/lang/String;)Ljava/net/URL;
(L1java/lang/String;)L0java/net/URL; # @Inherited(java.lang.ClassLoader)
getResources
(Ljava/lang/String;)Ljava/util/Enumeration<Ljava/net/URL;>;
(Ljava/lang/String;)Ljava/util/Enumeration<Ljava/net/URL;>;
(L1java/lang/String;)L1java/util/Enumeration<L1java/net/URL;>; # @Inherited(java.lang.ClassLoader)
loadClass
(Ljava/lang/String;Z)Ljava/lang/Class<*>;
(Ljava/lang/String;Z)Ljava/lang/Class<*>;
(L1java/lang/String;Z)L1java/lang/Class<*>; # @Inherited(java.lang.ClassLoader)
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,4 @@ equals
(L0java/lang/Object;)Z # @Inherited(java.lang.Object)
invoke
(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;
(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)L0java/lang/Object;
(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)L0java/lang/Object; # @Overrides(java.lang.reflect.InvocationHandler)
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,16 @@ class io/github/classgraph/ClassGraphClassLoader

findClass
(Ljava/lang/String;)Ljava/lang/Class<*>;
(Ljava/lang/String;)Ljava/lang/Class<*>;
(L0java/lang/String;)L1java/lang/Class<*>; # @Inherited(java.lang.ClassLoader)
getResource
(Ljava/lang/String;)Ljava/net/URL;
(Ljava/lang/String;)Ljava/net/URL;
(L1java/lang/String;)L0java/net/URL; # @Inherited(java.lang.ClassLoader)
getResourceAsStream
(Ljava/lang/String;)Ljava/io/InputStream;
(Ljava/lang/String;)Ljava/io/InputStream;
(L1java/lang/String;)L0java/io/InputStream; # @Inherited(java.lang.ClassLoader)
getResources
(Ljava/lang/String;)Ljava/util/Enumeration<Ljava/net/URL;>;
(Ljava/lang/String;)Ljava/util/Enumeration<Ljava/net/URL;>;
(L1java/lang/String;)L1java/util/Enumeration<L1java/net/URL;>; # @Inherited(java.lang.ClassLoader)
getURLs
()[Ljava/net/URL;
()[Ljava/net/URL;
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ super io/github/classgraph/PotentiallyUnmodifiableList

equals
(Ljava/lang/Object;)Z
(L0java/lang/Object;)Z # @Inherited(java.lang.Object)
(L0java/lang/Object;)Z # @Inherited(java.util.ArrayList)
getAsStrings
()Ljava/util/List<Ljava/lang/String;>;
()L1java/util/List<L1java/lang/String;>;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,4 @@ getEventType
()Lorg/apache/commons/configuration2/event/EventType<+Lorg/apache/commons/configuration2/event/Event;>;
toString
()Ljava/lang/String;
()L1java/lang/String; # @Inherited(java.lang.Object)
()L1java/lang/String; # @Inherited(java.util.EventObject)
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,4 @@ addEscapes
(ZIIILjava/lang/String;CI)V
getMessage
()Ljava/lang/String;
()L0java/lang/String;
()L0java/lang/String; # @Inherited(java.lang.Throwable)
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ getLogger
()Lorg/apache/commons/configuration2/io/ConfigurationLogger;
resolveEntity
(Ljava/lang/String;Ljava/lang/String;)Lorg/xml/sax/InputSource;
(Ljava/lang/String;Ljava/lang/String;)Lorg/xml/sax/InputSource;
(L0java/lang/String;L0java/lang/String;)L0org/xml/sax/InputSource; # @Inherited(org.xml.sax.EntityResolver)
setBaseDir
(Ljava/lang/String;)V
(Ljava/lang/String;)V
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,4 @@ registerEntityId
(Ljava/lang/String;Ljava/net/URL;)V
resolveEntity
(Ljava/lang/String;Ljava/lang/String;)Lorg/xml/sax/InputSource;
(Ljava/lang/String;Ljava/lang/String;)Lorg/xml/sax/InputSource;
(L0java/lang/String;L0java/lang/String;)L0org/xml/sax/InputSource; # @Inherited(org.xml.sax.EntityResolver)
Original file line number Diff line number Diff line change
Expand Up @@ -37,4 +37,4 @@ getName
()Ljava/lang/String;
toString
()Ljava/lang/String;
()L1java/lang/String; # @Inherited(java.lang.Object)
()L1java/lang/String; # @Inherited(java.lang.Enum)
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,4 @@ create
(Ljava/nio/file/Path;)Ljava/io/RandomAccessFile;
toString
()Ljava/lang/String;
()L1java/lang/String; # @Inherited(java.lang.Object)
()L1java/lang/String; # @Inherited(java.lang.Enum)
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,4 @@ SKIP_NONE
(Ljava/io/Reader;Ljava/util/function/IntPredicate;)V
read
([CII)I
([CII)I
([1CII)I # @Inherited(java.io.FilterReader)
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ hasBOM
(Lorg/apache/commons/io/ByteOrderMark;)Z
read
([B)I
([B)I
([1B)I # @Inherited(org.apache.commons.io.input.ProxyInputStream)
read
([BII)I
([BII)I
([1BII)I # @Inherited(org.apache.commons.io.input.ProxyInputStream)
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@ builder
(Ljava/io/InputStream;J)V
read
([B)I
([B)I
([1B)I # @Inherited(org.apache.commons.io.input.ProxyInputStream)
read
([BII)I
([BII)I
([1BII)I # @Inherited(org.apache.commons.io.input.ProxyInputStream)
toString
()Ljava/lang/String;
()L1java/lang/String; # @Inherited(java.lang.Object)
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@ class org/apache/commons/io/input/BoundedReader
(Ljava/io/Reader;I)V
read
([CII)I
([CII)I
([1CII)I # @Inherited(java.io.Reader)
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,4 @@ INSTANCE
(Ljava/util/function/Supplier<Ljava/lang/Throwable;>;)V
read
([CII)I
([CII)I
([1CII)I # @Inherited(java.io.Reader)
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,4 @@ builder
(Ljava/nio/file/Path;I)V
read
([BII)I
([BII)I
([1BII)I # @Inherited(java.io.InputStream)
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ builder
(Ljava/lang/CharSequence;Ljava/nio/charset/Charset;I)V
read
([B)I
([B)I
([1B)I # @Inherited(java.io.InputStream)
read
([BII)I
([BII)I
([1BII)I # @Inherited(java.io.InputStream)
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ class org/apache/commons/io/input/CharSequenceReader
(Ljava/lang/CharSequence;II)V
read
([CII)I
([CII)I
([1CII)I # @Inherited(java.io.Reader)
toString
()Ljava/lang/String;
()L1java/lang/String; # @Inherited(java.lang.Object)
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,4 @@ INSTANCE

read
([BII)I
([BII)I
([1BII)I # @Inherited(java.io.InputStream)
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,4 @@ INSTANCE

read
([CII)I
([CII)I
([1CII)I # @Inherited(java.io.Reader)
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@ builder

read
([BII)I
([BII)I
([1BII)I # @Inherited(java.io.InputStream)
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ processBytes
([BII)V
read
([B)I
([B)I
([1B)I # @Inherited(java.io.InputStream)
read
([BII)I
([BII)I
([1BII)I # @Inherited(java.io.InputStream)
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ processChars
([CII)V
read
([C)I
([C)I
([1C)I # @Inherited(java.io.Reader)
read
([CII)I
([CII)I
([1CII)I # @Inherited(java.io.Reader)
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,10 @@ noteError
(Ljava/io/IOException;)V
read
([B)I
([B)I
([1B)I # @Inherited(org.apache.commons.io.input.ProxyInputStream)
read
([BII)I
([BII)I
([1BII)I # @Inherited(org.apache.commons.io.input.ProxyInputStream)
remove
(Lorg/apache/commons/io/input/ObservableInputStream$Observer;)V
(Lorg/apache/commons/io/input/ObservableInputStream$Observer;)V
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@ handleIOException
(Ljava/io/IOException;)V
read
([B)I
([B)I
([1B)I # @Inherited(java.io.FilterInputStream)
read
([BII)I
([BII)I
([1BII)I # @Inherited(java.io.FilterInputStream)
unwrap
()Ljava/io/InputStream;
()Ljava/io/InputStream;
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@ handleIOException
(Ljava/io/IOException;)V
read
(Ljava/nio/CharBuffer;)I
(Ljava/nio/CharBuffer;)I
(L1java/nio/CharBuffer;)I # @Inherited(java.io.Reader)
read
([C)I
([C)I
([1C)I # @Inherited(java.io.Reader)
read
([CII)I
([CII)I
([1CII)I # @Inherited(java.io.FilterReader)
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ getRandomAccessFile
()Ljava/io/RandomAccessFile;
read
([B)I
([B)I
([1B)I # @Inherited(java.io.InputStream)
read
([BII)I
([BII)I
([1BII)I # @Inherited(java.io.InputStream)
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,4 @@ builder
(Ljava/io/InputStream;ILjava/util/concurrent/ExecutorService;)V
read
([BII)I
([BII)I
([1BII)I # @Inherited(java.io.FilterInputStream)
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ builder
(Ljava/io/Reader;Ljava/nio/charset/CharsetEncoder;I)V
read
([B)I
([B)I
([1B)I # @Inherited(java.io.InputStream)
read
([BII)I
([BII)I
([1BII)I # @Inherited(java.io.InputStream)
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,4 @@ class org/apache/commons/io/input/SequenceReader
([Ljava/io/Reader;)V
read
([CII)I
([CII)I
([1CII)I # @Inherited(java.io.Reader)
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ class org/apache/commons/io/input/TeeInputStream
(Ljava/io/InputStream;Ljava/io/OutputStream;Z)V
read
([B)I
([B)I
([1B)I # @Inherited(org.apache.commons.io.input.ProxyInputStream)
read
([BII)I
([BII)I
([1BII)I # @Inherited(org.apache.commons.io.input.ProxyInputStream)
Loading

0 comments on commit f9cb165

Please sign in to comment.