1/*
2 * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/auth/AuthState.java $
3 * $Revision: 659971 $
4 * $Date: 2008-05-25 05:01:22 -0700 (Sun, 25 May 2008) $
5 *
6 * ====================================================================
7 *
8 *  Licensed to the Apache Software Foundation (ASF) under one or more
9 *  contributor license agreements.  See the NOTICE file distributed with
10 *  this work for additional information regarding copyright ownership.
11 *  The ASF licenses this file to You under the Apache License, Version 2.0
12 *  (the "License"); you may not use this file except in compliance with
13 *  the License.  You may obtain a copy of the License at
14 *
15 *      http://www.apache.org/licenses/LICENSE-2.0
16 *
17 *  Unless required by applicable law or agreed to in writing, software
18 *  distributed under the License is distributed on an "AS IS" BASIS,
19 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20 *  See the License for the specific language governing permissions and
21 *  limitations under the License.
22 * ====================================================================
23 *
24 * This software consists of voluntary contributions made by many
25 * individuals on behalf of the Apache Software Foundation.  For more
26 * information on the Apache Software Foundation, please see
27 * <http://www.apache.org/>.
28 *
29 */
30
31package org.apache.http.auth;
32
33
34/**
35 * This class provides detailed information about the state of the
36 * authentication process.
37 *
38 * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
39 *
40 * @since 4.0
41 */
42public class AuthState {
43
44    /** Actual authentication scheme */
45    private AuthScheme authScheme;
46
47    /** Actual authentication scope */
48    private AuthScope authScope;
49
50    /** Credentials selected for authentication */
51    private Credentials credentials;
52
53    /**
54     * Default constructor.
55     *
56     */
57    public AuthState() {
58        super();
59    }
60
61    /**
62     * Invalidates the authentication state by resetting its parameters.
63     */
64    public void invalidate() {
65        this.authScheme = null;
66        this.authScope = null;
67        this.credentials = null;
68    }
69
70    public boolean isValid() {
71        return this.authScheme != null;
72    }
73
74    /**
75     * Assigns the given {@link AuthScheme authentication scheme}.
76     *
77     * @param authScheme the {@link AuthScheme authentication scheme}
78     */
79    public void setAuthScheme(final AuthScheme authScheme) {
80        if (authScheme == null) {
81            invalidate();
82            return;
83        }
84        this.authScheme = authScheme;
85    }
86
87    /**
88     * Returns the {@link AuthScheme authentication scheme}.
89     *
90     * @return {@link AuthScheme authentication scheme}
91     */
92    public AuthScheme getAuthScheme() {
93        return this.authScheme;
94    }
95
96
97    /**
98     * Returns user {@link Credentials} selected for authentication if available
99     *
100     * @return user credentials if available, <code>null</code otherwise
101     */
102    public Credentials getCredentials() {
103        return this.credentials;
104    }
105
106
107    /**
108     * Sets user {@link Credentials} to be used for authentication
109     *
110     * @param credentials User credentials
111     */
112    public void setCredentials(final Credentials credentials) {
113        this.credentials = credentials;
114    }
115
116
117    /**
118     * Returns actual {@link AuthScope} if available
119     *
120     * @return actual authentication scope if available, <code>null</code otherwise
121     */
122     public AuthScope getAuthScope() {
123        return this.authScope;
124     }
125
126     /**
127      * Sets actual {@link AuthScope}.
128      *
129      * @param authScope Authentication scope
130      */
131     public void setAuthScope(final AuthScope authScope) {
132        this.authScope = authScope;
133     }
134
135
136    @Override
137    public String toString() {
138        StringBuilder buffer = new StringBuilder();
139        buffer.append("auth scope [");
140        buffer.append(this.authScope);
141        buffer.append("]; credentials set [");
142        buffer.append(this.credentials != null ? "true" : "false");
143        buffer.append("]");
144        return buffer.toString();
145    }
146
147}
148