Introduce formatting methods for SourceException
[yangtools.git] / yang / yang-parser-impl / src / main / java / org / opendaylight / yangtools / yang / parser / spi / meta / InferenceException.java
1 /*
2  * Copyright (c) 2015 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.yangtools.yang.parser.spi.meta;
9
10 import javax.annotation.Nonnull;
11 import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
12 import org.opendaylight.yangtools.yang.parser.spi.source.StatementSourceReference;
13
14 /**
15  * Thrown when there was inference error
16  */
17 public class InferenceException extends SourceException {
18     private static final long serialVersionUID = 1L;
19
20     public InferenceException(@Nonnull final String message, @Nonnull final StatementSourceReference source,
21             final Throwable cause) {
22         super(message, source, cause);
23     }
24
25     public InferenceException(@Nonnull final String message, @Nonnull final StatementSourceReference source) {
26         super(message, source);
27     }
28
29     public InferenceException(@Nonnull final StatementSourceReference source, @Nonnull final String format,
30             final Object... args) {
31         this(String.format(format, args), source);
32     }
33
34     /**
35      * Throw an instance of this exception if an expression evaluates to true. If the expression evaluates to false,
36      * this method does nothing.
37      *
38      * @param expression Expression to be evaluated
39      * @param source Statement source reference
40      * @param format Format string, according to {@link String#format(String, Object...)}.
41      * @param args Format string arguments, according to {@link String#format(String, Object...)}
42      * @throws InferenceException if the expression evaluates to true.
43      */
44     public static void throwIf(final boolean expression, @Nonnull final StatementSourceReference source,
45             @Nonnull final String format, final Object... args) {
46         if (expression) {
47             throw new InferenceException(source, format, args);
48         }
49     }
50 }