From: Robert Varga Date: Mon, 22 May 2023 23:13:00 +0000 (+0200) Subject: Clean up DataContainerCodecContext exception handling X-Git-Tag: v12.0.0~120 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=469a57c3adac4b6ae0df0c6398d926096cca13e2;p=mdsal.git Clean up DataContainerCodecContext exception handling We are getting confused between immediate throws and returns. The exception factory methods should be returning the exception and not throwing it. Fix this up and add a SpotBugs annotation so that throws are guarded. Also mark IncorrectNestingException for evolution. Final improvement that we now have a completely-static factory method. Change-Id: I5262c0dbb31d6935f258909828aac5331c70801b Signed-off-by: Robert Varga --- diff --git a/binding/mdsal-binding-dom-codec-api/src/main/java/org/opendaylight/mdsal/binding/dom/codec/api/IncorrectNestingException.java b/binding/mdsal-binding-dom-codec-api/src/main/java/org/opendaylight/mdsal/binding/dom/codec/api/IncorrectNestingException.java index 995418824e..f4f8642f01 100644 --- a/binding/mdsal-binding-dom-codec-api/src/main/java/org/opendaylight/mdsal/binding/dom/codec/api/IncorrectNestingException.java +++ b/binding/mdsal-binding-dom-codec-api/src/main/java/org/opendaylight/mdsal/binding/dom/codec/api/IncorrectNestingException.java @@ -9,6 +9,7 @@ package org.opendaylight.mdsal.binding.dom.codec.api; import com.google.common.annotations.Beta; import java.io.Serial; +import org.eclipse.jdt.annotation.NonNull; /** * Thrown where incorrect nesting of data structures was detected and was caused by user. This typically indicates @@ -24,7 +25,12 @@ public class IncorrectNestingException extends IllegalArgumentException { super(message); } - public static IncorrectNestingException create(final String message, final Object... args) { - return new IncorrectNestingException(String.format(message, args)); + public IncorrectNestingException(final String message, final Object... args) { + this(message.formatted(args)); + } + + @Deprecated(since = "12.0.0", forRemoval = true) + public static @NonNull IncorrectNestingException create(final String message, final Object... args) { + return new IncorrectNestingException(message, args); } } diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/DataContainerCodecContext.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/DataContainerCodecContext.java index db0cc97f86..7a92d50219 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/DataContainerCodecContext.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/DataContainerCodecContext.java @@ -12,6 +12,7 @@ import static java.util.Objects.requireNonNull; import com.google.common.collect.ImmutableCollection; import com.google.common.collect.ImmutableSet; +import edu.umd.cs.findbugs.annotations.CheckReturnValue; import java.io.IOException; import java.lang.invoke.MethodHandles; import java.lang.invoke.VarHandle; @@ -210,17 +211,24 @@ abstract class DataContainerCodecContext childClass, final String message, + @CheckReturnValue + private @NonNull IllegalArgumentException childNullException(final Class childClass, final String message, final Object... args) { - final BindingRuntimeContext runtimeContext = factory().getRuntimeContext(); + return childNullException(factory().getRuntimeContext(), childClass, message, args); + } + + @CheckReturnValue + private static @NonNull IllegalArgumentException childNullException(final BindingRuntimeContext runtimeContext, + final Class childClass, final String message, final Object... args) { final CompositeRuntimeType schema; if (Augmentation.class.isAssignableFrom(childClass)) { schema = runtimeContext.getAugmentationDefinition(childClass.asSubclass(Augmentation.class)); @@ -228,17 +236,17 @@ abstract class DataContainerCodecContext