Simplifying validators
[groupbasedpolicy.git] / groupbasedpolicy / src / main / java / org / opendaylight / groupbasedpolicy / resolver / validator / ValidationResultBuilder.java
1 /*\r
2  * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved.\r
3  *\r
4  * This program and the accompanying materials are made available under the\r
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
6  * and is available at http://www.eclipse.org/legal/epl-v10.html\r
7  */\r
8 package org.opendaylight.groupbasedpolicy.resolver.validator;\r
9 \r
10 \r
11 import javax.annotation.Nonnull;\r
12 import org.opendaylight.yangtools.concepts.Builder;\r
13 \r
14 public final class ValidationResultBuilder implements Builder<ValidationResult> {\r
15 \r
16     private static final class ValidationResultImpl implements ValidationResult {\r
17 \r
18         private final boolean success;\r
19         private final String message;\r
20 \r
21         private ValidationResultImpl(final boolean success, final String message) {\r
22             this.success = success;\r
23             this.message = message;\r
24         }\r
25 \r
26         @Override\r
27         public boolean isValid() {\r
28             return success;\r
29         }\r
30 \r
31         @Override\r
32         public String getMessage() {\r
33             return message;\r
34         }\r
35     }\r
36 \r
37     private boolean success;\r
38     private String message = "";\r
39 \r
40     public ValidationResultBuilder success() {\r
41         this.success = true;\r
42         return this;\r
43     }\r
44 \r
45     /**\r
46      * Returns a builder for a failed result.\r
47      */\r
48     public ValidationResultBuilder failed() {\r
49         this.success = false;\r
50         return this;\r
51     }\r
52 \r
53     /**\r
54      * Returns a builder for a failed result.\r
55      *\r
56      * @param message brief explanation\r
57      * @throws IllegalArgumentException when message is null\r
58      */\r
59     public ValidationResultBuilder setMessage(@Nonnull String message) {\r
60         if (message == null) {\r
61             throw new IllegalArgumentException("Result message cannot be set to NULL!");\r
62         }\r
63         this.message = message;\r
64         return this;\r
65     }\r
66 \r
67     @Override\r
68     public ValidationResult build() {\r
69         return new ValidationResultImpl(success, message);\r
70     }\r
71 \r
72 }\r