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 / sun / net / www / protocol / http / AuthenticationInfo.class (.txt) next >
Encoding:
Java Class File  |  1979-12-31  |  2.9 KB  |  114 lines

  1. package sun.net.www.protocol.http;
  2.  
  3. import java.net.URL;
  4. import java.util.Hashtable;
  5. import sun.net.www.HeaderParser;
  6.  
  7. abstract class AuthenticationInfo {
  8.    static final char SERVER_AUTHENTICATION = 's';
  9.    static final char PROXY_AUTHENTICATION = 'p';
  10.    private static Hashtable cache = new Hashtable();
  11.    char type;
  12.    String host;
  13.    int port;
  14.    String realm;
  15.    String path;
  16.  
  17.    AuthenticationInfo(char var1, String var2, int var3, String var4) {
  18.       this.type = var1;
  19.       this.host = var2;
  20.       this.port = var3;
  21.       this.realm = var4;
  22.       this.path = null;
  23.    }
  24.  
  25.    AuthenticationInfo(char var1, URL var2, String var3) {
  26.       this.type = var1;
  27.       this.host = var2.getHost();
  28.       this.port = var2.getPort();
  29.       this.realm = var3;
  30.       String var4 = var2.getPath();
  31.       if (var4.length() == 0) {
  32.          this.path = var4;
  33.       } else {
  34.          int var5 = var4.lastIndexOf(47);
  35.          int var6 = var4.lastIndexOf(46);
  36.          if (var5 != -1) {
  37.             if (var5 < var6) {
  38.                this.path = var4.substring(0, var5 + 1);
  39.             } else {
  40.                this.path = var4;
  41.             }
  42.          } else {
  43.             this.path = null;
  44.          }
  45.       }
  46.  
  47.    }
  48.  
  49.    static AuthenticationInfo getServerAuth(URL var0) {
  50.       String var1 = "s:" + var0.getHost() + ":" + var0.getPort();
  51.       return getAuth(var1, var0);
  52.    }
  53.  
  54.    static AuthenticationInfo getServerAuth(URL var0, String var1) {
  55.       String var2 = "s:" + var0.getHost() + ":" + var0.getPort() + ":" + var1;
  56.       return getAuth(var2, var0);
  57.    }
  58.  
  59.    private static AuthenticationInfo getAuth(String var0, URL var1) {
  60.       AuthenticationInfo var2 = (AuthenticationInfo)cache.get(var0);
  61.       if (var2 != null) {
  62.          String var3 = var1.getPath();
  63.          if (var2.path != null && !var3.startsWith(var2.path)) {
  64.             var2 = null;
  65.          }
  66.       }
  67.  
  68.       return var2;
  69.    }
  70.  
  71.    static AuthenticationInfo getProxyAuth(String var0, int var1) {
  72.       String var2 = "p:" + var0 + ":" + var1;
  73.       AuthenticationInfo var3 = (AuthenticationInfo)cache.get(var2);
  74.       return var3;
  75.    }
  76.  
  77.    static AuthenticationInfo getProxyAuth(String var0, int var1, String var2) {
  78.       String var3 = "p:" + var0 + ":" + var1 + ":" + var2;
  79.       AuthenticationInfo var4 = (AuthenticationInfo)cache.get(var3);
  80.       return var4;
  81.    }
  82.  
  83.    void addToCache() {
  84.       cache.put(this.cacheKey(true), this);
  85.       if (this.supportsPreemptiveAuthorization()) {
  86.          cache.put(this.cacheKey(false), this);
  87.       }
  88.  
  89.    }
  90.  
  91.    void removeFromCache() {
  92.       cache.remove(this.cacheKey(true));
  93.       if (this.supportsPreemptiveAuthorization()) {
  94.          cache.remove(this.cacheKey(false));
  95.       }
  96.  
  97.    }
  98.  
  99.    abstract boolean supportsPreemptiveAuthorization();
  100.  
  101.    abstract String getHeaderName();
  102.  
  103.    abstract String getHeaderValue();
  104.  
  105.    boolean setHeaders(HttpURLConnection var1, HeaderParser var2) {
  106.       var1.setAuthenticationProperty(this.getHeaderName(), this.getHeaderValue());
  107.       return true;
  108.    }
  109.  
  110.    String cacheKey(boolean var1) {
  111.       return var1 ? this.type + ":" + this.host + ":" + this.port + ":" + this.realm : this.type + ":" + this.host + ":" + this.port;
  112.    }
  113. }
  114.