001    /*
002     * Copyright 2015 UnboundID Corp.
003     * All Rights Reserved.
004     */
005    /*
006     * Copyright (C) 2015 UnboundID Corp.
007     *
008     * This program is free software; you can redistribute it and/or modify
009     * it under the terms of the GNU General Public License (GPLv2 only)
010     * or the terms of the GNU Lesser General Public License (LGPLv2.1 only)
011     * as published by the Free Software Foundation.
012     *
013     * This program is distributed in the hope that it will be useful,
014     * but WITHOUT ANY WARRANTY; without even the implied warranty of
015     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
016     * GNU General Public License for more details.
017     *
018     * You should have received a copy of the GNU General Public License
019     * along with this program; if not, see <http://www.gnu.org/licenses>.
020     */
021    package com.unboundid.ldap.sdk.unboundidds.controls;
022    
023    
024    
025    import com.unboundid.util.ThreadSafety;
026    import com.unboundid.util.ThreadSafetyLevel;
027    
028    
029    
030    /**
031     * <BLOCKQUOTE>
032     *   <B>NOTE:</B>  This class is part of the Commercial Edition of the UnboundID
033     *   LDAP SDK for Java.  It is not available for use in applications that
034     *   include only the Standard Edition of the LDAP SDK, and is not supported for
035     *   use in conjunction with non-UnboundID products.
036     * </BLOCKQUOTE>
037     * This enum defines the set of response types that can be used in the
038     * password validation details response control.
039     */
040    @ThreadSafety(level=ThreadSafetyLevel.COMPLETELY_THREADSAFE)
041    public enum PasswordValidationDetailsResponseType
042    {
043      /**
044       * The response type that indicates that the server was able to perform
045       * validation against the proposed password, and that the response includes
046       * a set of validation results.
047       */
048      VALIDATION_DETAILS((byte) 0xA0),
049    
050    
051    
052      /**
053       * The response type that indicates that the server was unable to provide
054       * validation results because the associated request did not include any
055       * password.
056       */
057      NO_PASSWORD_PROVIDED((byte) 0x81),
058    
059    
060    
061      /**
062       * The response type that indicates that the server was unable to provide
063       * validation results because the associated request included multiple
064       * passwords.
065       */
066      MULTIPLE_PASSWORDS_PROVIDED((byte) 0x82),
067    
068    
069    
070      /**
071       * The response type that indicates that the server encountered a problem with
072       * the request that caused processing to end before any password validation
073       * was attempted.
074       */
075      NO_VALIDATION_ATTEMPTED((byte) 0x83);
076    
077    
078    
079      // The BER type that will be used for this response type in an encoded
080      // password validation details response control.
081      private final byte berType;
082    
083    
084    
085      /**
086       * Creates a new password validation details response type with the provided
087       * BER type.
088       *
089       * @param  berType  The BER type that will be used for this response type in
090       *                  an encoded password validation details response control.
091       */
092      private PasswordValidationDetailsResponseType(final byte berType)
093      {
094        this.berType = berType;
095      }
096    
097    
098    
099      /**
100       * Retrieves the BER type that will be used for this response type in an
101       * encoded password validation details response control.
102       *
103       * @return  The BER type that will be used for this response type in an
104       *          encoded password validation details response control.
105       */
106      public byte getBERType()
107      {
108        return berType;
109      }
110    
111    
112    
113      /**
114       * Retrieves the password validation details response type with the specified
115       * BER type.
116       *
117       * @param  berType  The BER type for the password validation details response
118       *                  type to retrieve.
119       *
120       * @return  The password validation details response type with the specified
121       *          BER type, or {@code null} if there is no response type with the
122       *          specified BER type.
123       */
124      public static PasswordValidationDetailsResponseType
125                         forBERType(final byte berType)
126      {
127        for (final PasswordValidationDetailsResponseType t : values())
128        {
129          if (t.berType == berType)
130          {
131            return t;
132          }
133        }
134    
135        return null;
136      }
137    }