Un-deprecate CopyableNode, AddedByUsesAware
[yangtools.git] / yang / yang-parser-spi / src / main / java / org / opendaylight / yangtools / yang / parser / spi / meta / InferenceException.java
index c1cb981ed75c4f0b866f021478da1ca38eaccd9d..091eb5b1f93f231c6601851cb1491fa48325e93a 100644 (file)
@@ -7,28 +7,41 @@
  */
 package org.opendaylight.yangtools.yang.parser.spi.meta;
 
-import javax.annotation.Nonnull;
+import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
 import org.opendaylight.yangtools.yang.parser.spi.source.StatementSourceReference;
 
 /**
- * Thrown when there was inference error
+ * Thrown when there is an inference error.
  */
 public class InferenceException extends SourceException {
     private static final long serialVersionUID = 1L;
 
-    public InferenceException(@Nonnull final String message, @Nonnull final StatementSourceReference source,
+    public InferenceException(final @NonNull String message, final @NonNull StatementSourceReference source) {
+        super(message, source);
+    }
+
+    public InferenceException(final @NonNull String message, final @NonNull StatementSourceReference source,
             final Throwable cause) {
         super(message, source, cause);
     }
 
-    public InferenceException(@Nonnull final String message, @Nonnull final StatementSourceReference source) {
-        super(message, source);
+    public InferenceException(final @NonNull StatementSourceReference source, final @NonNull String format,
+            final Object... args) {
+        this(String.format(format, args), source);
     }
 
-    public InferenceException(@Nonnull final StatementSourceReference source, @Nonnull final String format,
+    public InferenceException(final @NonNull String message, final @NonNull CommonStmtCtx stmt) {
+        super(message, stmt);
+    }
+
+    public InferenceException(final @NonNull String message, final @NonNull CommonStmtCtx stmt, final Throwable cause) {
+        super(message, stmt, cause);
+    }
+
+    public InferenceException(final @NonNull CommonStmtCtx stmt, final @NonNull String format,
             final Object... args) {
-        this(String.format(format, args), source);
+        this(stmt.sourceReference(), format, args);
     }
 
     /**
@@ -41,10 +54,27 @@ public class InferenceException extends SourceException {
      * @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) {
+    public static void throwIf(final boolean expression, final @NonNull StatementSourceReference source,
+            final @NonNull String format, final Object... args) {
         if (expression) {
             throw new InferenceException(source, format, args);
         }
     }
+
+    /**
+     * 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 stmt Statement context
+     * @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, final @NonNull CommonStmtCtx stmt,
+            final @NonNull String format, final Object... args) {
+        if (expression) {
+            throw new InferenceException(stmt.sourceReference(), format, args);
+        }
+    }
 }