1/*
2 * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.  Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26package sun.net.www.protocol.http;
27
28import java.io.Serializable;
29import java.net.PasswordAuthentication;
30
31/**
32 * AuthCacheValue: interface to minimize exposure to authentication cache
33 * for external users (ie. plugin)
34 *
35 * @author Michael McMahon
36 */
37
38public abstract class AuthCacheValue implements Serializable {
39
40    static final long serialVersionUID = 735249334068211611L;
41
42    public enum Type {
43        Proxy,
44        Server
45    };
46
47    /**
48     * Caches authentication info entered by user.  See cacheKey()
49     */
50    protected static AuthCache cache = new AuthCacheImpl();
51
52    public static void setAuthCache (AuthCache map) {
53        cache = map;
54    }
55
56    /* Package private ctor to prevent extension outside package */
57
58    AuthCacheValue() {}
59
60    /**
61     * Proxy or Server
62     */
63    abstract Type getAuthType ();
64
65    /**
66     * Authentication scheme
67     */
68    abstract AuthScheme getAuthScheme();
69
70   /**
71    * name of server/proxy
72    */
73    abstract String getHost ();
74
75   /**
76    * portnumber of server/proxy
77    */
78    abstract int getPort();
79
80   /**
81    * realm of authentication if known
82    */
83    abstract String getRealm();
84
85    /**
86     * root path of realm or the request path if the root
87     * is not known yet.
88     */
89    abstract String getPath();
90
91    /**
92     * returns http or https
93     */
94    abstract String getProtocolScheme();
95
96    /**
97     * the credentials associated with this authentication
98     */
99    abstract PasswordAuthentication credentials();
100}
101