1069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project/*
2069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/auth/AuthState.java $
3069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project * $Revision: 659971 $
4069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project * $Date: 2008-05-25 05:01:22 -0700 (Sun, 25 May 2008) $
5069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project *
6069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project * ====================================================================
7069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project *
8069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project *  Licensed to the Apache Software Foundation (ASF) under one or more
9069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project *  contributor license agreements.  See the NOTICE file distributed with
10069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project *  this work for additional information regarding copyright ownership.
11069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project *  The ASF licenses this file to You under the Apache License, Version 2.0
12069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project *  (the "License"); you may not use this file except in compliance with
13069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project *  the License.  You may obtain a copy of the License at
14069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project *
15069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
16069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project *
17069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project *  Unless required by applicable law or agreed to in writing, software
18069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project *  distributed under the License is distributed on an "AS IS" BASIS,
19069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project *  See the License for the specific language governing permissions and
21069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project *  limitations under the License.
22069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project * ====================================================================
23069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project *
24069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project * This software consists of voluntary contributions made by many
25069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project * individuals on behalf of the Apache Software Foundation.  For more
26069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project * information on the Apache Software Foundation, please see
27069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project * <http://www.apache.org/>.
28069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project *
29069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project */
30069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project
31069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Projectpackage org.apache.http.auth;
32069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project
33069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project
34069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project/**
35069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project * This class provides detailed information about the state of the
36069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project * authentication process.
37069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project *
38069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
39069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project *
40069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project * @since 4.0
41d42abb2fd917184764daf22f5f299e848b8701d7Narayan Kamath *
42d42abb2fd917184764daf22f5f299e848b8701d7Narayan Kamath * @deprecated Please use {@link java.net.URL#openConnection} instead.
43d42abb2fd917184764daf22f5f299e848b8701d7Narayan Kamath *     Please visit <a href="http://android-developers.blogspot.com/2011/09/androids-http-clients.html">this webpage</a>
44d42abb2fd917184764daf22f5f299e848b8701d7Narayan Kamath *     for further details.
45069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project */
46d42abb2fd917184764daf22f5f299e848b8701d7Narayan Kamath@Deprecated
47069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Projectpublic class AuthState {
48069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project
49069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    /** Actual authentication scheme */
50069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    private AuthScheme authScheme;
51069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project
52069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    /** Actual authentication scope */
53069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    private AuthScope authScope;
54069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project
55069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    /** Credentials selected for authentication */
56069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    private Credentials credentials;
57069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project
58069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    /**
59069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * Default constructor.
60069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     *
61069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     */
62069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    public AuthState() {
63069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project        super();
64069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    }
65069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project
66069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    /**
67069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * Invalidates the authentication state by resetting its parameters.
68069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     */
69069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    public void invalidate() {
70069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project        this.authScheme = null;
71069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project        this.authScope = null;
72069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project        this.credentials = null;
73069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    }
74069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project
75069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    public boolean isValid() {
76069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project        return this.authScheme != null;
77069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    }
78069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project
79069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    /**
80069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * Assigns the given {@link AuthScheme authentication scheme}.
81069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     *
82069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * @param authScheme the {@link AuthScheme authentication scheme}
83069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     */
84069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    public void setAuthScheme(final AuthScheme authScheme) {
85069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project        if (authScheme == null) {
86069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project            invalidate();
87069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project            return;
88069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project        }
89069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project        this.authScheme = authScheme;
90069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    }
91069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project
92069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    /**
93069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * Returns the {@link AuthScheme authentication scheme}.
94069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     *
95069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * @return {@link AuthScheme authentication scheme}
96069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     */
97069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    public AuthScheme getAuthScheme() {
98069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project        return this.authScheme;
99069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    }
100069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project
101069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project
102069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    /**
103069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * Returns user {@link Credentials} selected for authentication if available
104069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     *
105069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * @return user credentials if available, <code>null</code otherwise
106069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     */
107069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    public Credentials getCredentials() {
108069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project        return this.credentials;
109069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    }
110069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project
111069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project
112069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    /**
113069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * Sets user {@link Credentials} to be used for authentication
114069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     *
115069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * @param credentials User credentials
116069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     */
117069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    public void setCredentials(final Credentials credentials) {
118069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project        this.credentials = credentials;
119069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    }
120069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project
121069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project
122069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    /**
123069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * Returns actual {@link AuthScope} if available
124069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     *
125069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * @return actual authentication scope if available, <code>null</code otherwise
126069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     */
127069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     public AuthScope getAuthScope() {
128069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project        return this.authScope;
129069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     }
130069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project
131069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     /**
132069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project      * Sets actual {@link AuthScope}.
133069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project      *
134069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project      * @param authScope Authentication scope
135069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project      */
136069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     public void setAuthScope(final AuthScope authScope) {
137069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project        this.authScope = authScope;
138069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     }
139069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project
140069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project
141069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    @Override
142069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    public String toString() {
143069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project        StringBuilder buffer = new StringBuilder();
144069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project        buffer.append("auth scope [");
145069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project        buffer.append(this.authScope);
146069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project        buffer.append("]; credentials set [");
147069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project        buffer.append(this.credentials != null ? "true" : "false");
148069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project        buffer.append("]");
149069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project        return buffer.toString();
150069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    }
151069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project
152069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project}
153