jdk/src/share/classes/java/lang/Package.java
changeset 16906 44dfee24cb71
parent 16051 649a03329639
child 18546 862067c6481c
equal deleted inserted replaced
16905:0419f45c7761 16906:44dfee24cb71
    47 import java.util.Map;
    47 import java.util.Map;
    48 import java.util.HashMap;
    48 import java.util.HashMap;
    49 import java.util.Iterator;
    49 import java.util.Iterator;
    50 
    50 
    51 import sun.net.www.ParseUtil;
    51 import sun.net.www.ParseUtil;
       
    52 import sun.reflect.CallerSensitive;
       
    53 import sun.reflect.Reflection;
    52 
    54 
    53 import java.lang.annotation.Annotation;
    55 import java.lang.annotation.Annotation;
    54 
    56 
    55 /**
    57 /**
    56  * {@code Package} objects contain version information
    58  * {@code Package} objects contain version information
   271      *
   273      *
   272      * @param name a package name, for example, java.lang.
   274      * @param name a package name, for example, java.lang.
   273      * @return the package of the requested name. It may be null if no package
   275      * @return the package of the requested name. It may be null if no package
   274      *          information is available from the archive or codebase.
   276      *          information is available from the archive or codebase.
   275      */
   277      */
       
   278     @CallerSensitive
   276     public static Package getPackage(String name) {
   279     public static Package getPackage(String name) {
   277         ClassLoader l = ClassLoader.getCallerClassLoader();
   280         ClassLoader l = ClassLoader.getClassLoader(Reflection.getCallerClass());
   278         if (l != null) {
   281         if (l != null) {
   279             return l.getPackage(name);
   282             return l.getPackage(name);
   280         } else {
   283         } else {
   281             return getSystemPackage(name);
   284             return getSystemPackage(name);
   282         }
   285         }
   292      * {@code ClassLoader} instance will be returned.
   295      * {@code ClassLoader} instance will be returned.
   293      *
   296      *
   294      * @return a new array of packages known to the callers {@code ClassLoader}
   297      * @return a new array of packages known to the callers {@code ClassLoader}
   295      * instance.  An zero length array is returned if none are known.
   298      * instance.  An zero length array is returned if none are known.
   296      */
   299      */
       
   300     @CallerSensitive
   297     public static Package[] getPackages() {
   301     public static Package[] getPackages() {
   298         ClassLoader l = ClassLoader.getCallerClassLoader();
   302         ClassLoader l = ClassLoader.getClassLoader(Reflection.getCallerClass());
   299         if (l != null) {
   303         if (l != null) {
   300             return l.getPackages();
   304             return l.getPackages();
   301         } else {
   305         } else {
   302             return getSystemPackages();
   306             return getSystemPackages();
   303         }
   307         }