View Javadoc
1   /*
2    *   Licensed to the Apache Software Foundation (ASF) under one
3    *   or more contributor license agreements.  See the NOTICE file
4    *   distributed with this work for additional information
5    *   regarding copyright ownership.  The ASF licenses this file
6    *   to you under the Apache License, Version 2.0 (the
7    *   "License"); you may not use this file except in compliance
8    *   with the License.  You may obtain a copy of the License at
9    *
10   *     http://www.apache.org/licenses/LICENSE-2.0
11   *
12   *   Unless required by applicable law or agreed to in writing,
13   *   software distributed under the License is distributed on an
14   *   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   *   KIND, either express or implied.  See the License for the
16   *   specific language governing permissions and limitations
17   *   under the License.
18   *
19   */
20  package org.apache.directory.server.core.api.authn.ppolicy;
21  
22  
23  import org.apache.directory.api.ldap.model.exception.LdapException;
24  
25  
26  /**
27   * A exception class defined for PasswordPolicy related errors.
28   *
29   * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
30   */
31  public class PasswordPolicyException extends LdapException
32  {
33      private static final long serialVersionUID = -9158126177779964262L;
34  
35      /** password policy error code */
36      private int errorCode;
37  
38      /** the array of valid error codes representing password policy errors */
39      private static final int[] VALID_CODES =
40          { 0, 1, 2, 3, 4, 5, 6, 7, 8 };
41  
42  
43      public PasswordPolicyException( Throwable cause )
44      {
45          super( cause );
46      }
47  
48  
49      public PasswordPolicyException( String message )
50      {
51          super( message );
52      }
53  
54  
55      public PasswordPolicyException( String message, int errorCode )
56      {
57          super( message );
58          validateErrorCode( errorCode );
59          this.errorCode = errorCode;
60      }
61  
62  
63      public PasswordPolicyException( int errorCode )
64      {
65          validateErrorCode( errorCode );
66          this.errorCode = errorCode;
67      }
68  
69  
70      public int getErrorCode()
71      {
72          return errorCode;
73      }
74  
75  
76      /**
77       * this method checks if the given error code is valid or not.
78       * This method was created cause using PasswordPolicyErrorEnum class creates some 
79       * unwanted dependency issues on core-api
80       * 
81       * @param errorCode the error code of password policy
82       */
83      private void validateErrorCode( int errorCode )
84      {
85          for ( int i : VALID_CODES )
86          {
87              if ( i == errorCode )
88              {
89                  return;
90              }
91          }
92  
93          throw new IllegalArgumentException( "Unknown password policy response error code " + errorCode );
94      }
95  }