This is an automated email from the ASF dual-hosted git repository.
ddekany pushed a commit to branch 2.3-gae
in repository https://gitbox.apache.org/repos/asf/freemarker.git
The following commit(s) were added to refs/heads/2.3-gae by this push:
new c31adb0b Fixed NPE on Java 9+ when check if an array type is
accessible.
c31adb0b is described below
commit c31adb0bbe442c8990ccc073a69e1408e1936577
Author: ddekany <[email protected]>
AuthorDate: Wed Mar 27 20:43:45 2024 +0100
Fixed NPE on Java 9+ when check if an array type is accessible.
---
freemarker-core9/src/main/java/freemarker/core/_Java9Impl.java | 5 ++++-
freemarker-core9/src/test/java/freemarker/core/Java9ImplTest.java | 2 ++
2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/freemarker-core9/src/main/java/freemarker/core/_Java9Impl.java
b/freemarker-core9/src/main/java/freemarker/core/_Java9Impl.java
index 700d801f..1f5182af 100644
--- a/freemarker-core9/src/main/java/freemarker/core/_Java9Impl.java
+++ b/freemarker-core9/src/main/java/freemarker/core/_Java9Impl.java
@@ -39,7 +39,10 @@ public class _Java9Impl implements _Java9 {
@Override
public boolean isAccessibleAccordingToModuleExports(Class<?>
accessedClass) {
Module accessedModule = accessedClass.getModule();
- Package accessedPackage = accessedClass.getPackage();
+ Package accessedPackage = accessedClass.getPackage(); // null for
arrays!
+ if (accessedPackage == null) {
+ return true;
+ }
return accessedModule.isExported(accessedPackage.getName(),
ACCESSOR_MODULE);
}
diff --git a/freemarker-core9/src/test/java/freemarker/core/Java9ImplTest.java
b/freemarker-core9/src/test/java/freemarker/core/Java9ImplTest.java
index 35cd1a4d..9612d5ba 100644
--- a/freemarker-core9/src/test/java/freemarker/core/Java9ImplTest.java
+++ b/freemarker-core9/src/test/java/freemarker/core/Java9ImplTest.java
@@ -41,6 +41,8 @@ public class Java9ImplTest {
assertNotNull(_JavaVersions.JAVA_9);
assertTrue(_JavaVersions.JAVA_9.isAccessibleAccordingToModuleExports(Document.class));
assertFalse(_JavaVersions.JAVA_9.isAccessibleAccordingToModuleExports(getSomeInternalClass()));
+
assertTrue(_JavaVersions.JAVA_9.isAccessibleAccordingToModuleExports(String[].class));
+
assertTrue(_JavaVersions.JAVA_9.isAccessibleAccordingToModuleExports(int.class));
}
private static Class<?> getSomeInternalClass() throws SAXException,
IOException, ParserConfigurationException,