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 }