001 /*
002 * CDDL HEADER START
003 *
004 * The contents of this file are subject to the terms of the
005 * Common Development and Distribution License, Version 1.0 only
006 * (the "License"). You may not use this file except in compliance
007 * with the License.
008 *
009 * You can obtain a copy of the license at
010 * trunk/opends/resource/legal-notices/OpenDS.LICENSE
011 * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
012 * See the License for the specific language governing permissions
013 * and limitations under the License.
014 *
015 * When distributing Covered Code, include this CDDL HEADER in each
016 * file and include the License file at
017 * trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable,
018 * add the following below this CDDL HEADER, with the fields enclosed
019 * by brackets "[]" replaced with your own identifying information:
020 * Portions Copyright [yyyy] [name of copyright owner]
021 *
022 * CDDL HEADER END
023 *
024 *
025 * Copyright 2006-2008 Sun Microsystems, Inc.
026 */
027 package org.opends.server.controls;
028 import org.opends.messages.Message;
029
030
031
032 import static org.opends.messages.ProtocolMessages.*;
033
034
035
036 /**
037 * This enumeration defines the set of password policy warnings that may be
038 * included in the password policy response control defined in
039 * draft-behera-ldap-password-policy.
040 */
041 public enum PasswordPolicyWarningType
042 {
043 /**
044 * The warning type that will be used to indicate that the password will
045 * expire in the near future and to provide the length of time in seconds
046 * until expiration.
047 */
048 TIME_BEFORE_EXPIRATION(PasswordPolicyWarningType.TYPE_TIME_BEFORE_EXPIRATION,
049 INFO_PWPWARNTYPE_DESCRIPTION_TIME_BEFORE_EXPIRATION.get()),
050
051
052
053 /**
054 * The warning type that will be used to indicate that the user is
055 * authenticating using a grace login and to provide the number of grace
056 * logins that the user has left.
057 */
058 GRACE_LOGINS_REMAINING(PasswordPolicyWarningType.TYPE_GRACE_LOGINS_REMAINING,
059 INFO_PWPWARNTYPE_DESCRIPTION_GRACE_LOGINS_REMAINING.get());
060
061
062
063 /**
064 * The BER type that will be used for the time before expiration type.
065 */
066 public static final byte TYPE_TIME_BEFORE_EXPIRATION = (byte) 0x80;
067
068
069
070 /**
071 * The BER type that will be used for the grace logins remaining type.
072 */
073 public static final byte TYPE_GRACE_LOGINS_REMAINING = (byte) 0x81;
074
075
076
077 // The BER type to use for the associated element in the password policy
078 // control.
079 private byte type;
080
081 // The message ID for the description of this password policy error type.
082 private Message description;
083
084
085
086 /**
087 * Creates a new instance of a password policy warning type with the provided
088 * BER type.
089 *
090 * @param type The BER type to use for the associated element in
091 * the password policy control.
092 * @param description The message for the description of this password
093 * policy error type.
094 */
095 private PasswordPolicyWarningType(byte type, Message description)
096 {
097 this.type = type;
098 this.description = description;
099 }
100
101
102
103 /**
104 * Retrieves the BER type to use for the associated element in the password
105 * policy control.
106 *
107 * @return The BER type to use for the associated element in the password
108 * policy control.
109 */
110 public byte getType()
111 {
112 return type;
113 }
114
115
116
117 /**
118 * Retrieves the password policy warning type for the provided BER type.
119 *
120 * @param type The BER type for which to retrieve the corresponding password
121 * policy warning type.
122 *
123 * @return The requested password policy warning type, or <CODE>null</CODE>
124 * if none of the defined warning types have the provided BER type.
125 */
126 public static PasswordPolicyWarningType valueOf(byte type)
127 {
128 switch (type)
129 {
130 case TYPE_TIME_BEFORE_EXPIRATION:
131 return PasswordPolicyWarningType.TIME_BEFORE_EXPIRATION;
132 case TYPE_GRACE_LOGINS_REMAINING:
133 return PasswordPolicyWarningType.GRACE_LOGINS_REMAINING;
134 default:
135 return null;
136 }
137 }
138
139
140
141 /**
142 * Retrieves a string representation of this password policy warning type.
143 *
144 * @return A string representation of this password policy warning type.
145 */
146 public String toString()
147 {
148 return Message.toString(description);
149 }
150 }
151