This is an automated email from the ASF dual-hosted git repository.
markt pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/main by this push:
new b14e9ff No need for reflection with Java 11
b14e9ff is described below
commit b14e9ff3c514078b6e9be29cae8084cd93b56c55
Author: Mark Thomas <[email protected]>
AuthorDate: Wed Jul 28 15:27:28 2021 +0100
No need for reflection with Java 11
---
.../el/TestImportHandlerStandardPackages.java | 27 +++-------------------
1 file changed, 3 insertions(+), 24 deletions(-)
diff --git a/test/jakarta/el/TestImportHandlerStandardPackages.java
b/test/jakarta/el/TestImportHandlerStandardPackages.java
index 24d90e8..5a8ca7f 100644
--- a/test/jakarta/el/TestImportHandlerStandardPackages.java
+++ b/test/jakarta/el/TestImportHandlerStandardPackages.java
@@ -17,15 +17,14 @@
package jakarta.el;
import java.io.File;
+import java.lang.module.ModuleFinder;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.net.URI;
import java.net.URL;
import java.util.Enumeration;
import java.util.Map;
-import java.util.Optional;
import java.util.Set;
-import java.util.stream.Stream;
import org.junit.Assert;
import org.junit.Test;
@@ -56,7 +55,8 @@ public class TestImportHandlerStandardPackages {
// tests are run on a newer JRE.
// The latest version of the JRE where this test is known to pass
is
// - OpenJDK 17 EA 28
- getJavaBaseClasses().filter(c -> (c.startsWith("java/lang/")))
+ ModuleFinder.ofSystem().find("java.base").get().open().list()
+ .filter(c -> (c.startsWith("java/lang/")))
.filter(c -> c.lastIndexOf('/') == 9) //
Exclude sub-packages
.filter(c -> c.endsWith(".class")) //
Exclude non-class resources
.map(c -> c.substring(10, c.length() - 6)) //
Extract class name
@@ -129,25 +129,4 @@ public class TestImportHandlerStandardPackages {
}
}
}
-
-
- private static Stream<String> getJavaBaseClasses() throws Exception {
- // While this code is only used on Java 9 and later, it needs to
compile
- // with Java 8 so use reflection for now.
- Class<?> clazzModuleFinder =
Class.forName("java.lang.module.ModuleFinder");
- Class<?> clazzModuleReference =
Class.forName("java.lang.module.ModuleReference");
- Class<?> clazzModuleReader =
Class.forName("java.lang.module.ModuleReader");
-
- // Returns ModuleFinder
- Object mf = clazzModuleFinder.getMethod("ofSystem").invoke(null);
- // Returns ModuleReference
- Object mRef = ((Optional<?>) clazzModuleFinder.getMethod(
- "find", String.class).invoke(mf, "java.base")).get();
- // Returns ModuleReader
- Object mr = clazzModuleReference.getMethod("open").invoke(mRef);
- // Returns the contents of the module
- @SuppressWarnings("unchecked")
- Stream<String> result = (Stream<String>)
clazzModuleReader.getMethod("list").invoke(mr);
- return result;
- }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]