35 import java.util.Set; 36 import java.util.stream.Stream; 37 import jdk.internal.jimage.decompressor.CompressedResourceHeader; 38 import jdk.internal.loader.ResourceHelper; 39 import jdk.tools.jlink.plugin.ResourcePool; 40 import jdk.tools.jlink.plugin.ResourcePoolBuilder; 41 import jdk.tools.jlink.plugin.ResourcePoolEntry; 42 import jdk.tools.jlink.plugin.ResourcePoolModule; 43 import jdk.tools.jlink.plugin.ResourcePoolModuleView; 44 import jdk.tools.jlink.plugin.PluginException; 45 46 /** 47 * A manager for pool of resources. 48 */ 49 public class ResourcePoolManager { 50 // utility to read ModuleDescriptor of the given ResourcePoolModule 51 static ModuleDescriptor readModuleDescriptor(ResourcePoolModule mod) { 52 String p = "/" + mod.name() + "/module-info.class"; 53 Optional<ResourcePoolEntry> content = mod.findEntry(p); 54 if (!content.isPresent()) { 55 throw new PluginException("No module-info for " + mod.name() 56 + " module"); 57 } 58 ByteBuffer bb = ByteBuffer.wrap(content.get().contentBytes()); 59 return ModuleDescriptor.read(bb); 60 } 61 62 /** 63 * Returns true if a resource has an effective package. 64 */ 65 public static boolean isNamedPackageResource(String path) { 66 return (path.endsWith(".class") && !path.endsWith("module-info.class")) || 67 !ResourceHelper.isSimpleResource(path); 68 } 69 70 class ResourcePoolModuleImpl implements ResourcePoolModule { 71 72 final Map<String, ResourcePoolEntry> moduleContent = new LinkedHashMap<>(); 73 // lazily initialized 74 private ModuleDescriptor descriptor; 75 final String name; 76 | 35 import java.util.Set; 36 import java.util.stream.Stream; 37 import jdk.internal.jimage.decompressor.CompressedResourceHeader; 38 import jdk.internal.loader.ResourceHelper; 39 import jdk.tools.jlink.plugin.ResourcePool; 40 import jdk.tools.jlink.plugin.ResourcePoolBuilder; 41 import jdk.tools.jlink.plugin.ResourcePoolEntry; 42 import jdk.tools.jlink.plugin.ResourcePoolModule; 43 import jdk.tools.jlink.plugin.ResourcePoolModuleView; 44 import jdk.tools.jlink.plugin.PluginException; 45 46 /** 47 * A manager for pool of resources. 48 */ 49 public class ResourcePoolManager { 50 // utility to read ModuleDescriptor of the given ResourcePoolModule 51 static ModuleDescriptor readModuleDescriptor(ResourcePoolModule mod) { 52 String p = "/" + mod.name() + "/module-info.class"; 53 Optional<ResourcePoolEntry> content = mod.findEntry(p); 54 if (!content.isPresent()) { 55 throw new PluginException("module-info.class not found for " + 56 mod.name() + " module"); 57 } 58 ByteBuffer bb = ByteBuffer.wrap(content.get().contentBytes()); 59 return ModuleDescriptor.read(bb); 60 } 61 62 /** 63 * Returns true if a resource has an effective package. 64 */ 65 public static boolean isNamedPackageResource(String path) { 66 return (path.endsWith(".class") && !path.endsWith("module-info.class")) || 67 !ResourceHelper.isSimpleResource(path); 68 } 69 70 class ResourcePoolModuleImpl implements ResourcePoolModule { 71 72 final Map<String, ResourcePoolEntry> moduleContent = new LinkedHashMap<>(); 73 // lazily initialized 74 private ModuleDescriptor descriptor; 75 final String name; 76 |