c7b1ed3348c1c05371819091080d762bd87ee5e2
[controller.git] / opendaylight / config / config-api / src / main / java / org / opendaylight / controller / config / api / JmxAttributeValidationException.java
1 /*
2  * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.controller.config.api;
9
10 import java.util.Arrays;
11 import java.util.List;
12
13 /**
14  * Exception that can be thrown during validation phase. This allows for
15  * pointing user to a specific list of parameters that fail the validation. Note
16  * that {@link org.opendaylight.controller.config.spi.Module#validate()} can
17  * throw any runtime exception to trigger validation failure.
18  */
19 public class JmxAttributeValidationException extends RuntimeException {
20     private static final long serialVersionUID = 1L;
21     private final List<JmxAttribute> attributeNames;
22
23     public JmxAttributeValidationException(final JmxAttribute jmxAttribute) {
24         this(Arrays.asList(jmxAttribute));
25     }
26
27     public JmxAttributeValidationException(final List<JmxAttribute> jmxAttribute) {
28         this.attributeNames = jmxAttribute;
29     }
30
31     public JmxAttributeValidationException(final String message,
32             final JmxAttribute jmxAttribute) {
33         this(message, Arrays.asList(jmxAttribute));
34     }
35
36     public JmxAttributeValidationException(final String message,
37             final List<JmxAttribute> jmxAttributes) {
38         super(message);
39         this.attributeNames = jmxAttributes;
40     }
41
42     public JmxAttributeValidationException(final String message, final Throwable cause,
43             final JmxAttribute jmxAttribute) {
44         this(message, cause, Arrays.asList(jmxAttribute));
45     }
46
47     public JmxAttributeValidationException(final String message, final Throwable cause,
48             final List<JmxAttribute> jmxAttributes) {
49         super(message, cause);
50         this.attributeNames = jmxAttributes;
51     }
52
53     public List<JmxAttribute> getAttributeNames() {
54         return attributeNames;
55     }
56
57     public static <T> T checkNotNull(final T param, final JmxAttribute jmxAttribute) {
58         String message = "is null";
59         return checkNotNull(param, message, jmxAttribute);
60     }
61
62     public static <T> T checkNotNull(final T param, final String message,
63             final JmxAttribute jmxAttribute) {
64         if (param == null) {
65             throw new JmxAttributeValidationException(
66                     jmxAttribute.getAttributeName() + " " + message,
67                     jmxAttribute);
68         }
69         return param;
70     }
71
72     public static JmxAttributeValidationException wrap(final Throwable throwable,
73             final JmxAttribute jmxAttribute) throws JmxAttributeValidationException {
74         return wrap(throwable, throwable.getMessage(), jmxAttribute);
75     }
76
77     public static JmxAttributeValidationException wrap(final Throwable throwable,
78             final String message, final JmxAttribute jmxAttribute) {
79
80         throw new JmxAttributeValidationException(
81                 jmxAttribute.getAttributeName() + " " + message, throwable,
82                 jmxAttribute);
83     }
84
85     public static void checkCondition(final boolean condition, final String message,
86             final JmxAttribute jmxAttribute) throws JmxAttributeValidationException {
87         if (!condition) {
88             throw new JmxAttributeValidationException(
89                     jmxAttribute.getAttributeName() + " " + message,
90                     jmxAttribute);
91         }
92     }
93 }