Introduce formatting methods for SourceException
[yangtools.git] / yang / yang-parser-impl / src / main / java / org / opendaylight / yangtools / yang / parser / spi / meta / InferenceException.java
index 8e5cce13cea4b74bae56deb7af1ad534e7ac1b5d..c1cb981ed75c4f0b866f021478da1ca38eaccd9d 100644 (file)
@@ -12,21 +12,39 @@ import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
 import org.opendaylight.yangtools.yang.parser.spi.source.StatementSourceReference;
 
 /**
- *
  * Thrown when there was inference error
- *
  */
 public class InferenceException extends SourceException {
-
-
     private static final long serialVersionUID = 1L;
 
-    public InferenceException(@Nonnull String message, @Nonnull StatementSourceReference source, Throwable cause) {
+    public InferenceException(@Nonnull final String message, @Nonnull final StatementSourceReference source,
+            final Throwable cause) {
         super(message, source, cause);
     }
 
-    public InferenceException(@Nonnull String message, @Nonnull StatementSourceReference source) {
+    public InferenceException(@Nonnull final String message, @Nonnull final StatementSourceReference source) {
         super(message, source);
     }
 
+    public InferenceException(@Nonnull final StatementSourceReference source, @Nonnull final String format,
+            final Object... args) {
+        this(String.format(format, args), source);
+    }
+
+    /**
+     * Throw an instance of this exception if an expression evaluates to true. If the expression evaluates to false,
+     * this method does nothing.
+     *
+     * @param expression Expression to be evaluated
+     * @param source Statement source reference
+     * @param format Format string, according to {@link String#format(String, Object...)}.
+     * @param args Format string arguments, according to {@link String#format(String, Object...)}
+     * @throws InferenceException if the expression evaluates to true.
+     */
+    public static void throwIf(final boolean expression, @Nonnull final StatementSourceReference source,
+            @Nonnull final String format, final Object... args) {
+        if (expression) {
+            throw new InferenceException(source, format, args);
+        }
+    }
 }