X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=binding%2Fyang-binding%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fbinding%2FCodeHelpers.java;h=b378a703ba86e688acb52e01afef817f51d5b333;hb=314a6573772c8593feecb69210357b193184e3be;hp=9f24fe2c45ac719f88d648e007fcf307ddd6fc8c;hpb=3cae231b09cdd529113ef0ae00e74bb109e3e830;p=mdsal.git diff --git a/binding/yang-binding/src/main/java/org/opendaylight/yangtools/yang/binding/CodeHelpers.java b/binding/yang-binding/src/main/java/org/opendaylight/yangtools/yang/binding/CodeHelpers.java index 9f24fe2c45..b378a703ba 100644 --- a/binding/yang-binding/src/main/java/org/opendaylight/yangtools/yang/binding/CodeHelpers.java +++ b/binding/yang-binding/src/main/java/org/opendaylight/yangtools/yang/binding/CodeHelpers.java @@ -16,10 +16,12 @@ import com.google.common.base.VerifyException; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import java.util.Arrays; +import java.util.Collection; import java.util.List; import java.util.Map; import java.util.NoSuchElementException; import java.util.Objects; +import java.util.Set; import java.util.regex.Pattern; import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.Nullable; @@ -386,21 +388,44 @@ public final class CodeHelpers { * @param requiredClass Required item class * @param fieldName name of the field being filled * @param list List, which items should be checked + * @return Type-checked List * @throws IllegalArgumentException if a list item is not instance of {@code requiredItemClass} * @throws NullPointerException if {@code requiredClass} or {@code fieldName} is null */ @SuppressWarnings("unchecked") public static @Nullable List checkListFieldCast(final @NonNull Class requiredClass, final @NonNull String fieldName, final @Nullable List list) { - if (list != null) { + checkCollectionField(requiredClass, fieldName, list); + return (List) list; + } + + /** + * Utility method for checking whether the items of target list is compatible. + * + * @param requiredClass Required item class + * @param fieldName name of the field being filled + * @param set Set, which items should be checked + * @return Type-checked Set + * @throws IllegalArgumentException if a set item is not instance of {@code requiredItemClass} + * @throws NullPointerException if {@code requiredClass} or {@code fieldName} is null + */ + @SuppressWarnings("unchecked") + public static @Nullable Set checkSetFieldCast(final @NonNull Class requiredClass, + final @NonNull String fieldName, final @Nullable Set set) { + checkCollectionField(requiredClass, fieldName, set); + return (Set) set; + } + + private static void checkCollectionField(final @NonNull Class requiredClass, + final @NonNull String fieldName, final @Nullable Collection collection) { + if (collection != null) { try { - list.forEach(item -> requiredClass.cast(requireNonNull(item))); + collection.forEach(item -> requiredClass.cast(requireNonNull(item))); } catch (ClassCastException | NullPointerException e) { throw new IllegalArgumentException("Invalid input list item for property \"" + requireNonNull(fieldName) + "\"", e); } } - return (List) list; } /**