]> WPIA git - gigi.git/blob - src/club/wpia/gigi/passwords/DelegatingPasswordChecker.java
add: DelegatingPasswordChecker implementation
[gigi.git] / src / club / wpia / gigi / passwords / DelegatingPasswordChecker.java
1 package club.wpia.gigi.passwords;
2
3 import club.wpia.gigi.GigiApiException;
4
5 /**
6  * A {@link PasswordChecker} that delegates checks to several other PasswordCheckers
7  * and merges their error messages.
8  */
9 public class DelegatingPasswordChecker implements PasswordChecker {
10
11     private final PasswordChecker[] checkers;
12
13     public DelegatingPasswordChecker(PasswordChecker[] checkers) {
14         this.checkers = checkers;
15     }
16
17     @Override
18     public GigiApiException checkPassword(String password, String[] nameParts, String email) {
19         GigiApiException exception = new GigiApiException();
20         for (PasswordChecker checker : checkers) {
21             GigiApiException currentException = checker.checkPassword(password, nameParts, email);
22             if (currentException != null) {
23                 exception.mergeInto(currentException);
24             }
25         }
26         if (exception.isEmpty()) {
27             return null;
28         } else {
29             return exception;
30         }
31     }
32 }