Hey Daniel.
The fix you've done doesn't seem to take into account that some arrays should
be inaccessible.
I assume that's the case and that the following test should be added:
assertFalse(_JavaVersions.JAVA_9.isAccessibleAccordingToModuleExports(getSomeInternalClass().arrayType()));
Here's one idea for a fix:
Package accessedPackage = accessedClass.getPackage(); // null for arrays and
primitives!
if (accessedPackage == null) {
Class<?> componentClass = accessedClass.getComponentType(); // null for
non-arrays!
if (componentClass != null) {
accessedPackage = componentClass.getPackage();
}
}
if (accessedPackage == null) {
return true;
}
P.S.
That Class.arrayType() method was added in Java12, but if that's a problem then
it's implementation is a one liner anyway:
public Class<?> arrayType() {
return Array.newInstance(this, 0).getClass();
}
P.P.S
Class has a componentType() method that was added in 12,
but there already existed getComponentType() which is identical.
Cheers,
Simon
On Thursday, 28 March 2024 at 00:40:46 GMT, Daniel Dekany
<[email protected]> wrote:
Yes, thanks for running into that! That was a bug with new code that
checks if we have access to a class according to Java 9+ modules. It
was because I didn't realize that for the class of an array,
Class.getPackage() returns null. The fixed version was pushed to the
Maven snapshot repo already.