Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/jdk17u
Path: blob/master/src/java.base/share/classes/javax/security/auth/login/AppConfigurationEntry.java
67848 views
1
/*
2
* Copyright (c) 1998, 2015, 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
26
package javax.security.auth.login;
27
28
import java.util.Map;
29
import java.util.Collections;
30
31
/**
32
* This class represents a single {@code LoginModule} entry
33
* configured for the application specified in the
34
* {@code getAppConfigurationEntry(String appName)}
35
* method in the {@code Configuration} class. Each respective
36
* {@code AppConfigurationEntry} contains a {@code LoginModule} name,
37
* a control flag (specifying whether this {@code LoginModule} is
38
* REQUIRED, REQUISITE, SUFFICIENT, or OPTIONAL), and LoginModule-specific
39
* options. Please refer to the {@code Configuration} class for
40
* more information on the different control flags and their semantics.
41
*
42
* @since 1.4
43
* @see javax.security.auth.login.Configuration
44
*/
45
public class AppConfigurationEntry {
46
47
private String loginModuleName;
48
private LoginModuleControlFlag controlFlag;
49
private Map<String,?> options;
50
51
/**
52
* Default constructor for this class.
53
*
54
* <p> This entry represents a single {@code LoginModule}
55
* entry configured for the application specified in the
56
* {@code getAppConfigurationEntry(String appName)}
57
* method from the {@code Configuration} class.
58
*
59
* @param loginModuleName String representing the class name of the
60
* {@code LoginModule} configured for the
61
* specified application.
62
*
63
* @param controlFlag either REQUIRED, REQUISITE, SUFFICIENT,
64
* or OPTIONAL.
65
*
66
* @param options the options configured for this {@code LoginModule}.
67
*
68
* @exception IllegalArgumentException if {@code loginModuleName}
69
* is null, if {@code LoginModuleName}
70
* has a length of 0, if {@code controlFlag}
71
* is not either REQUIRED, REQUISITE, SUFFICIENT
72
* or OPTIONAL, or if {@code options} is null.
73
*/
74
public AppConfigurationEntry(String loginModuleName,
75
LoginModuleControlFlag controlFlag,
76
Map<String,?> options)
77
{
78
if (loginModuleName == null || loginModuleName.isEmpty() ||
79
(controlFlag != LoginModuleControlFlag.REQUIRED &&
80
controlFlag != LoginModuleControlFlag.REQUISITE &&
81
controlFlag != LoginModuleControlFlag.SUFFICIENT &&
82
controlFlag != LoginModuleControlFlag.OPTIONAL) ||
83
options == null)
84
throw new IllegalArgumentException();
85
86
this.loginModuleName = loginModuleName;
87
this.controlFlag = controlFlag;
88
this.options = Collections.unmodifiableMap(options);
89
}
90
91
/**
92
* Get the class name of the configured {@code LoginModule}.
93
*
94
* @return the class name of the configured {@code LoginModule} as
95
* a String.
96
*/
97
public String getLoginModuleName() {
98
return loginModuleName;
99
}
100
101
/**
102
* Return the controlFlag
103
* (either REQUIRED, REQUISITE, SUFFICIENT, or OPTIONAL)
104
* for this {@code LoginModule}.
105
*
106
* @return the controlFlag
107
* (either REQUIRED, REQUISITE, SUFFICIENT, or OPTIONAL)
108
* for this {@code LoginModule}.
109
*/
110
public LoginModuleControlFlag getControlFlag() {
111
return controlFlag;
112
}
113
114
/**
115
* Get the options configured for this {@code LoginModule}.
116
*
117
* @return the options configured for this {@code LoginModule}
118
* as an unmodifiable {@code Map}.
119
*/
120
public Map<String,?> getOptions() {
121
return options;
122
}
123
124
/**
125
* This class represents whether or not a {@code LoginModule}
126
* is REQUIRED, REQUISITE, SUFFICIENT or OPTIONAL.
127
*/
128
public static class LoginModuleControlFlag {
129
130
private String controlFlag;
131
132
/**
133
* Required {@code LoginModule}.
134
*/
135
public static final LoginModuleControlFlag REQUIRED =
136
new LoginModuleControlFlag("required");
137
138
/**
139
* Requisite {@code LoginModule}.
140
*/
141
public static final LoginModuleControlFlag REQUISITE =
142
new LoginModuleControlFlag("requisite");
143
144
/**
145
* Sufficient {@code LoginModule}.
146
*/
147
public static final LoginModuleControlFlag SUFFICIENT =
148
new LoginModuleControlFlag("sufficient");
149
150
/**
151
* Optional {@code LoginModule}.
152
*/
153
public static final LoginModuleControlFlag OPTIONAL =
154
new LoginModuleControlFlag("optional");
155
156
private LoginModuleControlFlag(String controlFlag) {
157
this.controlFlag = controlFlag;
158
}
159
160
/**
161
* Return a String representation of this controlFlag.
162
*
163
* <p> The String has the format, "LoginModuleControlFlag: <i>flag</i>",
164
* where <i>flag</i> is either <i>required</i>, <i>requisite</i>,
165
* <i>sufficient</i>, or <i>optional</i>.
166
*
167
* @return a String representation of this controlFlag.
168
*/
169
public String toString() {
170
return (sun.security.util.ResourcesMgr.getString
171
("LoginModuleControlFlag.") + controlFlag);
172
}
173
}
174
}
175
176