import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
class YiidSerializationTest extends AbstractSerializationTest {
- @ParameterizedTest
- @MethodSource
- void testEmptyIdentifier(final NormalizedNodeStreamVersion version, final int size) {
- assertSame(version, YangInstanceIdentifier.of(), size);
- }
-
- static List<Arguments> testEmptyIdentifier() {
- return List.of(Arguments.of(NormalizedNodeStreamVersion.POTASSIUM, 96));
- }
-
@ParameterizedTest
@MethodSource
void testOneIdentifier(final NormalizedNodeStreamVersion version, final int size) {
assertEquals(version, YangInstanceIdentifier.of(TestModel.TEST_QNAME), size);
}
- static List<Arguments> testOneIdentifier() {
+ private static List<Arguments> testOneIdentifier() {
return List.of(Arguments.of(NormalizedNodeStreamVersion.POTASSIUM, 98));
}
assertEquals(version, fillUniqueIdentifier(31), uniqueSize);
}
- static List<Arguments> test31() {
+ private static List<Arguments> test31() {
return List.of(Arguments.of(NormalizedNodeStreamVersion.POTASSIUM, 158, 359));
}
assertEquals(version, fillUniqueIdentifier(32), uniqueSize);
}
- static List<Arguments> test32() {
+ private static List<Arguments> test32() {
return List.of(Arguments.of(NormalizedNodeStreamVersion.POTASSIUM, 164, 372));
}
assertEquals(version, fillUniqueIdentifier(256), uniqueSize);
}
- static List<Arguments> test256() {
+ private static List<Arguments> test256() {
return List.of(Arguments.of(NormalizedNodeStreamVersion.POTASSIUM, 612, 2_388));
}
assertEquals(version, fillUniqueIdentifier(65792), uniqueSize);
}
- static List<Arguments> test65792() {
+ private static List<Arguments> test65792() {
return List.of(Arguments.of(NormalizedNodeStreamVersion.POTASSIUM, 131_684, 719_700));
}
}
}
- static List<Arguments> testTwice65536() {
+ private static List<Arguments> testTwice65536() {
return List.of(Arguments.of(NormalizedNodeStreamVersion.POTASSIUM, 916_815));
}
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
import org.opendaylight.yangtools.yang.data.api.schema.builder.NormalizedNodeBuilder;
@Override
public NormalizedNodeBuilder<I, V, R> withValue(final V withValue) {
- this.value = requireNonNull(withValue);
+ this.value = checkValue(withValue);
return this;
}
}
return obj;
}
+
+ protected static final <T> @NonNull T checkValue(final @Nullable T value) {
+ final var nonNull = requireNonNull(value);
+ if (nonNull instanceof YangInstanceIdentifier yiid && yiid.isEmpty()) {
+ throw new IllegalArgumentException("Node value cannot be an empty instance identifier");
+ }
+ return nonNull;
+ }
}
import static java.util.Objects.requireNonNull;
import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
import org.opendaylight.yangtools.yang.data.api.schema.AbstractLeafNode;
@SuppressWarnings("unchecked")
final var ret = (ImmutableLeafNode<T>) new Binary(identifier, bytes);
return ret;
+ } else if (value instanceof YangInstanceIdentifier yiid && yiid.isEmpty()) {
+ throw new IllegalArgumentException("Leaf node value cannot be an empty instance identifier");
}
return new Regular<>(identifier, value);
}
import java.util.Arrays;
import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue;
import org.opendaylight.yangtools.yang.data.api.schema.AbstractLeafSetEntryNode;
}
public static <T> @NonNull ImmutableLeafSetEntryNode<T> of(final NodeWithValue<T> name) {
- if (name.getValue() instanceof byte[]) {
+ final var nameValue = name.getValue();
+ if (nameValue instanceof byte[]) {
@SuppressWarnings("unchecked")
final var ret = (ImmutableLeafSetEntryNode<T>) new Binary((NodeWithValue<byte[]>) name);
return ret;
+ } else if (nameValue instanceof YangInstanceIdentifier yiid && yiid.isEmpty()) {
+ throw new IllegalArgumentException("Leafset entry node value cannot be an empty instance identifier");
}
return new Regular<>(name);
}
final var ret = (ImmutableLeafSetEntryNode<T>) new Binary((NodeWithValue<byte[]>) name);
return ret;
}
+ } else if (nameValue instanceof YangInstanceIdentifier yiid && yiid.isEmpty()) {
+ throw new IllegalArgumentException("Leafset entry node value cannot be an empty instance identifier");
} else if (nameValue.equals(body)) {
return new Regular<>(name);
}
--- /dev/null
+/*
+ * Copyright (c) 2024 PANTHEON.tech, s.r.o. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.yangtools.yang.data.spi.node.impl;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
+import org.junit.jupiter.api.Test;
+import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue;
+
+class YT1494Test {
+ private static final QName FOO = QName.create("foo", "foo");
+
+ @Test
+ void testLeafNode() {
+ final var ex = assertThrows(IllegalArgumentException.class,
+ () -> ImmutableLeafNode.of(new NodeIdentifier(FOO), YangInstanceIdentifier.of()));
+ assertEquals("Leaf node value cannot be an empty instance identifier", ex.getMessage());
+ }
+
+ @Test
+ void testLeafSetEntryNode() {
+ final var ex = assertThrows(IllegalArgumentException.class,
+ () -> ImmutableLeafSetEntryNode.of(new NodeWithValue<>(FOO, YangInstanceIdentifier.of())));
+ assertEquals("Leafset entry node value cannot be an empty instance identifier", ex.getMessage());
+ }
+}