home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &n…he Search for Life DVD 2 / DVD-ROM.iso / install / jre1_3 / lib / rt.jar / java / lang / Package.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  5.6 KB  |  289 lines

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