jdk/src/java.base/share/classes/java/lang/Class.java
changeset 44360 a83651664fa3
parent 44335 4034fe5a6b6c
parent 44359 c6761862ca0b
child 44545 83b611b88ac8
equal deleted inserted replaced
44358:d1d1a888d492 44360:a83651664fa3
    62 import java.util.StringJoiner;
    62 import java.util.StringJoiner;
    63 
    63 
    64 import jdk.internal.HotSpotIntrinsicCandidate;
    64 import jdk.internal.HotSpotIntrinsicCandidate;
    65 import jdk.internal.loader.BootLoader;
    65 import jdk.internal.loader.BootLoader;
    66 import jdk.internal.loader.BuiltinClassLoader;
    66 import jdk.internal.loader.BuiltinClassLoader;
    67 import jdk.internal.loader.ResourceHelper;
       
    68 import jdk.internal.misc.Unsafe;
    67 import jdk.internal.misc.Unsafe;
    69 import jdk.internal.misc.VM;
    68 import jdk.internal.misc.VM;
       
    69 import jdk.internal.module.Resources;
    70 import jdk.internal.reflect.CallerSensitive;
    70 import jdk.internal.reflect.CallerSensitive;
    71 import jdk.internal.reflect.ConstantPool;
    71 import jdk.internal.reflect.ConstantPool;
    72 import jdk.internal.reflect.Reflection;
    72 import jdk.internal.reflect.Reflection;
    73 import jdk.internal.reflect.ReflectionFactory;
    73 import jdk.internal.reflect.ReflectionFactory;
    74 import jdk.internal.vm.annotation.ForceInline;
    74 import jdk.internal.vm.annotation.ForceInline;
  2561     public InputStream getResourceAsStream(String name) {
  2561     public InputStream getResourceAsStream(String name) {
  2562         name = resolveName(name);
  2562         name = resolveName(name);
  2563 
  2563 
  2564         Module module = getModule();
  2564         Module module = getModule();
  2565         if (module.isNamed()) {
  2565         if (module.isNamed()) {
  2566             if (!ResourceHelper.isSimpleResource(name)) {
  2566             if (Resources.canEncapsulate(name)) {
  2567                 Module caller = Reflection.getCallerClass().getModule();
  2567                 Module caller = Reflection.getCallerClass().getModule();
  2568                 if (caller != module) {
  2568                 if (caller != module) {
  2569                     Set<String> packages = module.getDescriptor().packages();
  2569                     Set<String> packages = module.getDescriptor().packages();
  2570                     String pn = ResourceHelper.getPackageName(name);
  2570                     String pn = Resources.toPackageName(name);
  2571                     if (packages.contains(pn) && !module.isOpen(pn, caller)) {
  2571                     if (packages.contains(pn) && !module.isOpen(pn, caller)) {
  2572                         // resource is in package not open to caller
  2572                         // resource is in package not open to caller
  2573                         return null;
  2573                         return null;
  2574                     }
  2574                     }
  2575                 }
  2575                 }
  2663     public URL getResource(String name) {
  2663     public URL getResource(String name) {
  2664         name = resolveName(name);
  2664         name = resolveName(name);
  2665 
  2665 
  2666         Module module = getModule();
  2666         Module module = getModule();
  2667         if (module.isNamed()) {
  2667         if (module.isNamed()) {
  2668             if (!ResourceHelper.isSimpleResource(name)) {
  2668             if (Resources.canEncapsulate(name)) {
  2669                 Module caller = Reflection.getCallerClass().getModule();
  2669                 Module caller = Reflection.getCallerClass().getModule();
  2670                 if (caller != module) {
  2670                 if (caller != module) {
  2671                     Set<String> packages = module.getDescriptor().packages();
  2671                     Set<String> packages = module.getDescriptor().packages();
  2672                     String pn = ResourceHelper.getPackageName(name);
  2672                     String pn = Resources.toPackageName(name);
  2673                     if (packages.contains(pn) && !module.isOpen(pn, caller)) {
  2673                     if (packages.contains(pn) && !module.isOpen(pn, caller)) {
  2674                         // resource is in package not open to caller
  2674                         // resource is in package not open to caller
  2675                         return null;
  2675                         return null;
  2676                     }
  2676                     }
  2677                 }
  2677                 }