< prev index next >
src/jdk.jlink/share/classes/jdk/tools/jlink/internal/ImagePluginStack.java
Print this page
@@ -41,10 +41,12 @@
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import jdk.internal.jimage.decompressor.Decompressor;
+import jdk.internal.module.ModuleInfo.Attributes;
+import jdk.internal.module.ModuleTarget;
import jdk.tools.jlink.plugin.Plugin;
import jdk.tools.jlink.builder.ImageBuilder;
import jdk.tools.jlink.plugin.PluginException;
import jdk.tools.jlink.plugin.ResourcePool;
import jdk.tools.jlink.plugin.ResourcePoolModule;
@@ -296,10 +298,11 @@
private class LastModule implements ResourcePoolModule {
final ResourcePoolModule module;
// lazily initialized
ModuleDescriptor descriptor;
+ ModuleTarget target;
LastModule(ResourcePoolModule module) {
this.module = module;
}
@@ -314,17 +317,35 @@
return d.isPresent()? Optional.of(getUncompressed(d.get())) : Optional.empty();
}
@Override
public ModuleDescriptor descriptor() {
- if (descriptor == null) {
- descriptor = ResourcePoolManager.readModuleDescriptor(this);
- }
+ initModuleAttributes();
return descriptor;
}
@Override
+ public String osName() {
+ initModuleAttributes();
+ return target != null? target.osName() : null;
+ }
+
+ @Override
+ public String osArch() {
+ initModuleAttributes();
+ return target != null? target.osArch() : null;
+ }
+
+ private void initModuleAttributes() {
+ if (this.descriptor == null) {
+ Attributes attr = ResourcePoolManager.readModuleAttributes(this);
+ this.descriptor = attr.descriptor();
+ this.target = attr.target();
+ }
+ }
+
+ @Override
public Set<String> packages() {
return module.packages();
}
@Override
< prev index next >