home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / java / lang / Package.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  6.8 KB  |  331 lines

  1. package java.lang;
  2.  
  3. import java.io.FileInputStream;
  4. import java.io.IOException;
  5. import java.lang.annotation.Annotation;
  6. import java.lang.reflect.AnnotatedElement;
  7. import java.net.URL;
  8. import java.security.AccessController;
  9. import java.util.HashMap;
  10. import java.util.Map;
  11. import java.util.jar.Attributes;
  12. import java.util.jar.JarInputStream;
  13. import java.util.jar.Manifest;
  14. import java.util.jar.Attributes.Name;
  15.  
  16. public class Package implements AnnotatedElement {
  17.    private static Map pkgs = new HashMap(31);
  18.    private static Map urls = new HashMap(10);
  19.    private static Map mans = new HashMap(10);
  20.    private final String pkgName;
  21.    private final String specTitle;
  22.    private final String specVersion;
  23.    private final String specVendor;
  24.    private final String implTitle;
  25.    private final String implVersion;
  26.    private final String implVendor;
  27.    private final URL sealBase;
  28.    private final transient ClassLoader loader;
  29.    private transient Class packageInfo;
  30.  
  31.    public String getName() {
  32.       return this.pkgName;
  33.    }
  34.  
  35.    public String getSpecificationTitle() {
  36.       return this.specTitle;
  37.    }
  38.  
  39.    public String getSpecificationVersion() {
  40.       return this.specVersion;
  41.    }
  42.  
  43.    public String getSpecificationVendor() {
  44.       return this.specVendor;
  45.    }
  46.  
  47.    public String getImplementationTitle() {
  48.       return this.implTitle;
  49.    }
  50.  
  51.    public String getImplementationVersion() {
  52.       return this.implVersion;
  53.    }
  54.  
  55.    public String getImplementationVendor() {
  56.       return this.implVendor;
  57.    }
  58.  
  59.    public boolean isSealed() {
  60.       return this.sealBase != null;
  61.    }
  62.  
  63.    public boolean isSealed(URL var1) {
  64.       return var1.equals(this.sealBase);
  65.    }
  66.  
  67.    public boolean isCompatibleWith(String var1) throws NumberFormatException {
  68.       if (this.specVersion != null && this.specVersion.length() >= 1) {
  69.          String[] var2 = this.specVersion.split("\\.", -1);
  70.          int[] var3 = new int[var2.length];
  71.  
  72.          for(int var4 = 0; var4 < var2.length; ++var4) {
  73.             var3[var4] = Integer.parseInt(var2[var4]);
  74.             if (var3[var4] < 0) {
  75.                throw NumberFormatException.forInputString("" + var3[var4]);
  76.             }
  77.          }
  78.  
  79.          String[] var10 = var1.split("\\.", -1);
  80.          int[] var5 = new int[var10.length];
  81.  
  82.          for(int var6 = 0; var6 < var10.length; ++var6) {
  83.             var5[var6] = Integer.parseInt(var10[var6]);
  84.             if (var5[var6] < 0) {
  85.                throw NumberFormatException.forInputString("" + var5[var6]);
  86.             }
  87.          }
  88.  
  89.          int var11 = Math.max(var5.length, var3.length);
  90.  
  91.          for(int var7 = 0; var7 < var11; ++var7) {
  92.             int var8 = var7 < var5.length ? var5[var7] : 0;
  93.             int var9 = var7 < var3.length ? var3[var7] : 0;
  94.             if (var9 < var8) {
  95.                return false;
  96.             }
  97.  
  98.             if (var9 > var8) {
  99.                return true;
  100.             }
  101.          }
  102.  
  103.          return true;
  104.       } else {
  105.          throw new NumberFormatException("Empty version string");
  106.       }
  107.    }
  108.  
  109.    public static Package getPackage(String var0) {
  110.       ClassLoader var1 = ClassLoader.getCallerClassLoader();
  111.       return var1 != null ? var1.getPackage(var0) : getSystemPackage(var0);
  112.    }
  113.  
  114.    public static Package[] getPackages() {
  115.       ClassLoader var0 = ClassLoader.getCallerClassLoader();
  116.       return var0 != null ? var0.getPackages() : getSystemPackages();
  117.    }
  118.  
  119.    static Package getPackage(Class var0) {
  120.       String var1 = var0.getName();
  121.       int var2 = var1.lastIndexOf(46);
  122.       if (var2 != -1) {
  123.          var1 = var1.substring(0, var2);
  124.          ClassLoader var3 = var0.getClassLoader();
  125.          return var3 != null ? var3.getPackage(var1) : getSystemPackage(var1);
  126.       } else {
  127.          return null;
  128.       }
  129.    }
  130.  
  131.    public int hashCode() {
  132.       return this.pkgName.hashCode();
  133.    }
  134.  
  135.    public String toString() {
  136.       String var1 = this.specTitle;
  137.       String var2 = this.specVersion;
  138.       if (var1 != null && var1.length() > 0) {
  139.          var1 = ", " + var1;
  140.       } else {
  141.          var1 = "";
  142.       }
  143.  
  144.       if (var2 != null && var2.length() > 0) {
  145.          var2 = ", version " + var2;
  146.       } else {
  147.          var2 = "";
  148.       }
  149.  
  150.       return "package " + this.pkgName + var1 + var2;
  151.    }
  152.  
  153.    private Class<?> getPackageInfo() {
  154.       if (this.packageInfo == null) {
  155.          try {
  156.             this.packageInfo = Class.forName(this.pkgName + ".package-info", false, this.loader);
  157.          } catch (ClassNotFoundException var2) {
  158.             this.packageInfo = 1PackageInfoProxy.class;
  159.          }
  160.       }
  161.  
  162.       return this.packageInfo;
  163.    }
  164.  
  165.    public <A extends Annotation> A getAnnotation(Class<A> var1) {
  166.       return (A)this.getPackageInfo().getAnnotation(var1);
  167.    }
  168.  
  169.    public boolean isAnnotationPresent(Class<? extends Annotation> var1) {
  170.       return this.getPackageInfo().isAnnotationPresent(var1);
  171.    }
  172.  
  173.    public Annotation[] getAnnotations() {
  174.       return this.getPackageInfo().getAnnotations();
  175.    }
  176.  
  177.    public Annotation[] getDeclaredAnnotations() {
  178.       return this.getPackageInfo().getDeclaredAnnotations();
  179.    }
  180.  
  181.    Package(String var1, String var2, String var3, String var4, String var5, String var6, String var7, URL var8, ClassLoader var9) {
  182.       this.pkgName = var1;
  183.       this.implTitle = var5;
  184.       this.implVersion = var6;
  185.       this.implVendor = var7;
  186.       this.specTitle = var2;
  187.       this.specVersion = var3;
  188.       this.specVendor = var4;
  189.       this.sealBase = var8;
  190.       this.loader = var9;
  191.    }
  192.  
  193.    private Package(String var1, Manifest var2, URL var3, ClassLoader var4) {
  194.       String var5 = var1.replace('.', '/').concat("/");
  195.       String var6 = null;
  196.       String var7 = null;
  197.       String var8 = null;
  198.       String var9 = null;
  199.       String var10 = null;
  200.       String var11 = null;
  201.       String var12 = null;
  202.       URL var13 = null;
  203.       Attributes var14 = var2.getAttributes(var5);
  204.       if (var14 != null) {
  205.          var7 = var14.getValue(Name.SPECIFICATION_TITLE);
  206.          var8 = var14.getValue(Name.SPECIFICATION_VERSION);
  207.          var9 = var14.getValue(Name.SPECIFICATION_VENDOR);
  208.          var10 = var14.getValue(Name.IMPLEMENTATION_TITLE);
  209.          var11 = var14.getValue(Name.IMPLEMENTATION_VERSION);
  210.          var12 = var14.getValue(Name.IMPLEMENTATION_VENDOR);
  211.          var6 = var14.getValue(Name.SEALED);
  212.       }
  213.  
  214.       var14 = var2.getMainAttributes();
  215.       if (var14 != null) {
  216.          if (var7 == null) {
  217.             var7 = var14.getValue(Name.SPECIFICATION_TITLE);
  218.          }
  219.  
  220.          if (var8 == null) {
  221.             var8 = var14.getValue(Name.SPECIFICATION_VERSION);
  222.          }
  223.  
  224.          if (var9 == null) {
  225.             var9 = var14.getValue(Name.SPECIFICATION_VENDOR);
  226.          }
  227.  
  228.          if (var10 == null) {
  229.             var10 = var14.getValue(Name.IMPLEMENTATION_TITLE);
  230.          }
  231.  
  232.          if (var11 == null) {
  233.             var11 = var14.getValue(Name.IMPLEMENTATION_VERSION);
  234.          }
  235.  
  236.          if (var12 == null) {
  237.             var12 = var14.getValue(Name.IMPLEMENTATION_VENDOR);
  238.          }
  239.  
  240.          if (var6 == null) {
  241.             var6 = var14.getValue(Name.SEALED);
  242.          }
  243.       }
  244.  
  245.       if ("true".equalsIgnoreCase(var6)) {
  246.          var13 = var3;
  247.       }
  248.  
  249.       this.pkgName = var1;
  250.       this.specTitle = var7;
  251.       this.specVersion = var8;
  252.       this.specVendor = var9;
  253.       this.implTitle = var10;
  254.       this.implVersion = var11;
  255.       this.implVendor = var12;
  256.       this.sealBase = var13;
  257.       this.loader = var4;
  258.    }
  259.  
  260.    static Package getSystemPackage(String var0) {
  261.       synchronized(pkgs) {
  262.          Package var2 = (Package)pkgs.get(var0);
  263.          if (var2 == null) {
  264.             var0 = var0.replace('.', '/').concat("/");
  265.             String var3 = getSystemPackage0(var0);
  266.             if (var3 != null) {
  267.                var2 = defineSystemPackage(var0, var3);
  268.             }
  269.          }
  270.  
  271.          return var2;
  272.       }
  273.    }
  274.  
  275.    static Package[] getSystemPackages() {
  276.       String[] var0 = getSystemPackages0();
  277.       synchronized(pkgs) {
  278.          for(int var2 = 0; var2 < var0.length; ++var2) {
  279.             defineSystemPackage(var0[var2], getSystemPackage0(var0[var2]));
  280.          }
  281.  
  282.          return (Package[])pkgs.values().toArray(new Package[pkgs.size()]);
  283.       }
  284.    }
  285.  
  286.    private static Package defineSystemPackage(String var0, String var1) {
  287.       return (Package)AccessController.doPrivileged(new 1(var0, var1));
  288.    }
  289.  
  290.    private static Manifest loadManifest(String var0) {
  291.       try {
  292.          FileInputStream var1 = new FileInputStream(var0);
  293.          JarInputStream var2 = new JarInputStream(var1, false);
  294.          Manifest var3 = var2.getManifest();
  295.          var2.close();
  296.          return var3;
  297.       } catch (IOException var4) {
  298.          return null;
  299.       }
  300.    }
  301.  
  302.    private static native String getSystemPackage0(String var0);
  303.  
  304.    private static native String[] getSystemPackages0();
  305.  
  306.    // $FF: synthetic method
  307.    static Map access$000() {
  308.       return urls;
  309.    }
  310.  
  311.    // $FF: synthetic method
  312.    static Manifest access$100(String var0) {
  313.       return loadManifest(var0);
  314.    }
  315.  
  316.    // $FF: synthetic method
  317.    static Map access$200() {
  318.       return mans;
  319.    }
  320.  
  321.    // $FF: synthetic method
  322.    Package(String var1, Manifest var2, URL var3, ClassLoader var4, 1 var5) {
  323.       this(var1, var2, var3, var4);
  324.    }
  325.  
  326.    // $FF: synthetic method
  327.    static Map access$400() {
  328.       return pkgs;
  329.    }
  330. }
  331.