home *** CD-ROM | disk | FTP | other *** search
- package java.lang;
-
- import java.io.FileInputStream;
- import java.io.IOException;
- import java.net.URL;
- import java.security.AccessController;
- import java.util.HashMap;
- import java.util.Map;
- import java.util.StringTokenizer;
- import java.util.jar.Attributes;
- import java.util.jar.JarInputStream;
- import java.util.jar.Manifest;
- import java.util.jar.Attributes.Name;
- import java.util.zip.ZipInputStream;
-
- public class Package {
- private static Map pkgs = new HashMap(31);
- private static Map urls = new HashMap(10);
- private static Map mans = new HashMap(10);
- private String pkgName;
- private String specTitle;
- private String specVersion;
- private String specVendor;
- private String implTitle;
- private String implVersion;
- private String implVendor;
- private URL sealBase;
-
- public String getName() {
- return this.pkgName;
- }
-
- public String getSpecificationTitle() {
- return this.specTitle;
- }
-
- public String getSpecificationVersion() {
- return this.specVersion;
- }
-
- public String getSpecificationVendor() {
- return this.specVendor;
- }
-
- public String getImplementationTitle() {
- return this.implTitle;
- }
-
- public String getImplementationVersion() {
- return this.implVersion;
- }
-
- public String getImplementationVendor() {
- return this.implVendor;
- }
-
- public boolean isSealed() {
- return this.sealBase != null;
- }
-
- public boolean isSealed(URL var1) {
- return var1.equals(this.sealBase);
- }
-
- public boolean isCompatibleWith(String var1) throws NumberFormatException {
- if (this.specVersion != null && this.specVersion.length() >= 1) {
- StringTokenizer var2 = new StringTokenizer(var1, ".", true);
- StringTokenizer var3 = new StringTokenizer(this.specVersion, ".", true);
-
- while(var2.hasMoreTokens() || var3.hasMoreTokens()) {
- int var4;
- if (var2.hasMoreTokens()) {
- var4 = Integer.parseInt(var2.nextToken());
- } else {
- var4 = 0;
- }
-
- int var5;
- if (var3.hasMoreTokens()) {
- var5 = Integer.parseInt(var3.nextToken());
- } else {
- var5 = 0;
- }
-
- if (var5 < var4) {
- return false;
- }
-
- if (var5 > var4) {
- return true;
- }
-
- if (var2.hasMoreTokens()) {
- var2.nextToken();
- }
-
- if (var3.hasMoreTokens()) {
- var3.nextToken();
- }
- }
-
- return true;
- } else {
- throw new NumberFormatException("Empty version string");
- }
- }
-
- public static Package getPackage(String var0) {
- ClassLoader var1 = ClassLoader.getCallerClassLoader();
- return var1 != null ? var1.getPackage(var0) : getSystemPackage(var0);
- }
-
- public static Package[] getPackages() {
- ClassLoader var0 = ClassLoader.getCallerClassLoader();
- return var0 != null ? var0.getPackages() : getSystemPackages();
- }
-
- static Package getPackage(Class var0) {
- String var1 = var0.getName();
- int var2 = var1.lastIndexOf(46);
- if (var2 != -1) {
- var1 = var1.substring(0, var2);
- ClassLoader var3 = var0.getClassLoader();
- return var3 != null ? var3.getPackage(var1) : getSystemPackage(var1);
- } else {
- return null;
- }
- }
-
- public int hashCode() {
- return this.pkgName.hashCode();
- }
-
- public String toString() {
- String var1 = this.specTitle;
- String var2 = this.specVersion;
- if (var1 != null && var1.length() > 0) {
- var1 = ", " + var1;
- } else {
- var1 = "";
- }
-
- if (var2 != null && var2.length() > 0) {
- var2 = ", version " + var2;
- } else {
- var2 = "";
- }
-
- return "package " + this.pkgName + var1 + var2;
- }
-
- Package(String var1, String var2, String var3, String var4, String var5, String var6, String var7, URL var8) {
- this.pkgName = var1;
- this.implTitle = var5;
- this.implVersion = var6;
- this.implVendor = var7;
- this.specTitle = var2;
- this.specVersion = var3;
- this.specVendor = var4;
- this.sealBase = var8;
- }
-
- private Package(String var1, Manifest var2, URL var3) {
- String var4 = var1.replace('.', '/').concat("/");
- String var5 = null;
- Attributes var6 = var2.getAttributes(var4);
- if (var6 != null) {
- this.specTitle = var6.getValue(Name.SPECIFICATION_TITLE);
- this.specVersion = var6.getValue(Name.SPECIFICATION_VERSION);
- this.specVendor = var6.getValue(Name.SPECIFICATION_VENDOR);
- this.implTitle = var6.getValue(Name.IMPLEMENTATION_TITLE);
- this.implVersion = var6.getValue(Name.IMPLEMENTATION_VERSION);
- this.implVendor = var6.getValue(Name.IMPLEMENTATION_VENDOR);
- var5 = var6.getValue(Name.SEALED);
- }
-
- var6 = var2.getMainAttributes();
- if (var6 != null) {
- if (this.specTitle == null) {
- this.specTitle = var6.getValue(Name.SPECIFICATION_TITLE);
- }
-
- if (this.specVersion == null) {
- this.specVersion = var6.getValue(Name.SPECIFICATION_VERSION);
- }
-
- if (this.specVendor == null) {
- this.specVendor = var6.getValue(Name.SPECIFICATION_VENDOR);
- }
-
- if (this.implTitle == null) {
- this.implTitle = var6.getValue(Name.IMPLEMENTATION_TITLE);
- }
-
- if (this.implVersion == null) {
- this.implVersion = var6.getValue(Name.IMPLEMENTATION_VERSION);
- }
-
- if (this.implVendor == null) {
- this.implVendor = var6.getValue(Name.IMPLEMENTATION_VENDOR);
- }
-
- if (var5 == null) {
- var5 = var6.getValue(Name.SEALED);
- }
- }
-
- if ("true".equalsIgnoreCase(var5)) {
- this.sealBase = var3;
- }
-
- this.pkgName = var1;
- }
-
- static Package getSystemPackage(String var0) {
- Map var1 = pkgs;
- synchronized(var1) {
- Package var2 = (Package)pkgs.get(var0);
- if (var2 == null) {
- var0 = var0.replace('.', '/').concat("/");
- String var3 = getSystemPackage0(var0);
- if (var3 != null) {
- var2 = defineSystemPackage(var0, var3);
- }
- }
-
- return var2;
- }
- }
-
- static Package[] getSystemPackages() {
- String[] var0 = getSystemPackages0();
- Map var1 = pkgs;
- synchronized(var1) {
- for(int var2 = 0; var2 < var0.length; ++var2) {
- defineSystemPackage(var0[var2], getSystemPackage0(var0[var2]));
- }
-
- Package[] var3 = (Package[])pkgs.values().toArray(new Package[pkgs.size()]);
- return var3;
- }
- }
-
- private static Package defineSystemPackage(String var0, String var1) {
- return (Package)AccessController.doPrivileged(new 1(var0, var1));
- }
-
- private static Manifest loadManifest(String var0) {
- try {
- FileInputStream var1 = new FileInputStream(var0);
- JarInputStream var2 = new JarInputStream(var1, false);
- Manifest var3 = var2.getManifest();
- ((ZipInputStream)var2).close();
- return var3;
- } catch (IOException var4) {
- return null;
- }
- }
-
- private static native String getSystemPackage0(String var0);
-
- private static native String[] getSystemPackages0();
-
- // $FF: synthetic method
- static Map access$000() {
- return urls;
- }
-
- // $FF: synthetic method
- static Manifest access$100(String var0) {
- return loadManifest(var0);
- }
-
- // $FF: synthetic method
- static Map access$200() {
- return mans;
- }
-
- // $FF: synthetic method
- Package(String var1, Manifest var2, URL var3, 1 var4) {
- this(var1, var2, var3);
- }
-
- // $FF: synthetic method
- static Map access$400() {
- return pkgs;
- }
- }
-