|
23 | 23 | * questions. |
24 | 24 | */ |
25 | 25 |
|
26 | | -package com.oracle.svm.hosted; |
| 26 | +package com.oracle.svm.hosted.jdk11; |
27 | 27 |
|
28 | 28 | import java.util.ArrayDeque; |
29 | 29 | import java.util.ArrayList; |
|
45 | 45 |
|
46 | 46 | import com.oracle.svm.core.ClassLoaderSupport; |
47 | 47 | import com.oracle.svm.core.annotate.AutomaticFeature; |
48 | | -import com.oracle.svm.core.util.VMError; |
| 48 | +import com.oracle.svm.hosted.FeatureImpl; |
| 49 | +import com.oracle.svm.hosted.NativeImageClassLoaderSupport; |
| 50 | +import com.oracle.svm.hosted.NativeImageSystemClassLoader; |
49 | 51 |
|
50 | 52 | import jdk.internal.module.Modules; |
51 | 53 |
|
52 | | -@AutomaticFeature |
53 | | -public class ClassLoaderSupportFeature implements Feature { |
54 | | - @Override |
55 | | - public void afterRegistration(AfterRegistrationAccess a) { |
56 | | - VMError.guarantee(JavaVersionUtil.JAVA_SPEC > 8); |
57 | | - FeatureImpl.AfterRegistrationAccessImpl access = (FeatureImpl.AfterRegistrationAccessImpl) a; |
58 | | - ImageSingletons.add(ClassLoaderSupport.class, new ClassLoaderSupportImpl11(access.getImageClassLoader().classLoaderSupport)); |
59 | | - } |
60 | | -} |
61 | | - |
62 | | -final class ClassLoaderSupportImpl11 extends ClassLoaderSupport { |
| 54 | +public final class ClassLoaderSupportImplJDK11OrLater extends ClassLoaderSupport { |
63 | 55 |
|
64 | 56 | private final NativeImageClassLoaderSupport classLoaderSupport; |
65 | 57 | private final Map<String, Set<Module>> packageToModules; |
66 | 58 |
|
67 | | - ClassLoaderSupportImpl11(NativeImageClassLoaderSupport classLoaderSupport) { |
| 59 | + ClassLoaderSupportImplJDK11OrLater(NativeImageClassLoaderSupport classLoaderSupport) { |
68 | 60 | this.classLoaderSupport = classLoaderSupport; |
69 | 61 | packageToModules = new HashMap<>(); |
70 | 62 | buildPackageToModulesMap(classLoaderSupport); |
@@ -102,7 +94,7 @@ public List<ResourceBundle> getResourceBundle(String bundleSpec, Locale locale) |
102 | 94 | } |
103 | 95 | ArrayList<ResourceBundle> resourceBundles = new ArrayList<>(); |
104 | 96 | for (Module module : modules) { |
105 | | - Module exportTargetModule = ClassLoaderSupportImpl8.class.getModule(); |
| 97 | + Module exportTargetModule = ClassLoaderSupportImplJDK11OrLater.class.getModule(); |
106 | 98 | if (!module.isExported(packageName, exportTargetModule)) { |
107 | 99 | Modules.addOpens(module, packageName, exportTargetModule); |
108 | 100 | } |
@@ -172,3 +164,17 @@ private void addToPackageNameModules(Module moduleName, String packageName) { |
172 | 164 | } |
173 | 165 |
|
174 | 166 | } |
| 167 | + |
| 168 | +@AutomaticFeature |
| 169 | +class ClassLoaderSupportFeatureJDK11OrLater implements Feature { |
| 170 | + @Override |
| 171 | + public boolean isInConfiguration(IsInConfigurationAccess access) { |
| 172 | + return JavaVersionUtil.JAVA_SPEC >= 11; |
| 173 | + } |
| 174 | + |
| 175 | + @Override |
| 176 | + public void afterRegistration(AfterRegistrationAccess a) { |
| 177 | + FeatureImpl.AfterRegistrationAccessImpl access = (FeatureImpl.AfterRegistrationAccessImpl) a; |
| 178 | + ImageSingletons.add(ClassLoaderSupport.class, new ClassLoaderSupportImplJDK11OrLater(access.getImageClassLoader().classLoaderSupport)); |
| 179 | + } |
| 180 | +} |
0 commit comments