Initial code drop of yang model driven configuration system
[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(JmxAttribute jmxAttribute) {
24         this(Arrays.asList(jmxAttribute));
25     }
26
27     public JmxAttributeValidationException(List<JmxAttribute> jmxAttribute) {
28         this.attributeNames = jmxAttribute;
29     }
30
31     public JmxAttributeValidationException(String message,
32             JmxAttribute jmxAttribute) {
33         this(message, Arrays.asList(jmxAttribute));
34     }
35
36     public JmxAttributeValidationException(String message,
37             List<JmxAttribute> jmxAttributes) {
38         super(message);
39         this.attributeNames = jmxAttributes;
40     }
41
42     public JmxAttributeValidationException(String message, Throwable cause,
43             JmxAttribute jmxAttribute) {
44         this(message, cause, Arrays.asList(jmxAttribute));
45     }
46
47     public JmxAttributeValidationException(String message, Throwable cause,
48             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(T param, JmxAttribute jmxAttribute) {
58         String message = "is null";
59         return checkNotNull(param, message, jmxAttribute);
60     }
61
62     public static <T> T checkNotNull(T param, String message,
63             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(Throwable throwable,
73             JmxAttribute jmxAttribute) throws JmxAttributeValidationException {
74         return wrap(throwable, throwable.getMessage(), jmxAttribute);
75     }
76
77     public static JmxAttributeValidationException wrap(Throwable throwable,
78             String message, JmxAttribute jmxAttribute) {
79
80         throw new JmxAttributeValidationException(
81                 jmxAttribute.getAttributeName() + " " + message, throwable,
82                 jmxAttribute);
83     }
84
85     public static void checkCondition(boolean condition, String message,
86             JmxAttribute jmxAttribute) throws JmxAttributeValidationException {
87         if (condition == false) {
88             throw new JmxAttributeValidationException(
89                     jmxAttribute.getAttributeName() + " " + message,
90                     jmxAttribute);
91         }
92     }
93 }

©2013 OpenDaylight, A Linux Foundation Collaborative Project. All Rights Reserved.
OpenDaylight is a registered trademark of The OpenDaylight Project, Inc.
Linux Foundation and OpenDaylight are registered trademarks of the Linux Foundation.
Linux is a registered trademark of Linus Torvalds.