When we encounter an empty keyed/unkeyed list, we need to treat
it as it were not present. This adjusts the appropriate codecs
to ensure that is the case.
JIRA: MDSAL-452
Change-Id: Iba70207642e014d59a94cc09a69da988ee71c63f
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
import java.lang.reflect.Method;
import java.util.Collection;
import java.util.List;
import java.lang.reflect.Method;
import java.util.Collection;
import java.util.List;
import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.yangtools.yang.binding.DataObject;
import org.opendaylight.yangtools.yang.binding.Identifiable;
import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.yangtools.yang.binding.DataObject;
import org.opendaylight.yangtools.yang.binding.Identifiable;
- Map<?, D> fromMap(final MapNode nodes) {
- final Collection<MapEntryNode> value = nodes.getValue();
- final Builder<Object, D> builder = ImmutableMap.builderWithExpectedSize(value.size());
+ Object fromMap(final MapNode map, final Collection<MapEntryNode> value) {
// FIXME: Could be this lazy transformed map?
// FIXME: Could be this lazy transformed map?
+ final Builder<Object, D> builder = ImmutableMap.builderWithExpectedSize(value.size());
for (MapEntryNode node : value) {
final D entry = fromMapEntry(node);
builder.put(getKey(entry), entry);
for (MapEntryNode node : value) {
final D entry = fromMapEntry(node);
builder.put(getKey(entry), entry);
- Object fromMap(final MapNode nodes) {
- final Collection<MapEntryNode> value = nodes.getValue();
- final Builder<D> builder = ImmutableList.builderWithExpectedSize(value.size());
+ private Object fromMap(final MapNode map) {
+ final Collection<MapEntryNode> value = map.getValue();
+ // This should never happen, but we do need to ensure users never see an empty Map
+ return value.isEmpty() ? null : fromMap(map, value);
+ }
+
+ Object fromMap(final MapNode map, final Collection<MapEntryNode> value) {
// FIXME: Could be this lazy transformed list?
// FIXME: Could be this lazy transformed list?
+ final Builder<D> builder = ImmutableList.builderWithExpectedSize(value.size());
for (MapEntryNode node : value) {
builder.add(createBindingProxy(node));
}
for (MapEntryNode node : value) {
builder.add(createBindingProxy(node));
}
private List<D> fromUnkeyedList(final UnkeyedListNode nodes) {
final Collection<UnkeyedListEntryNode> value = nodes.getValue();
private List<D> fromUnkeyedList(final UnkeyedListNode nodes) {
final Collection<UnkeyedListEntryNode> value = nodes.getValue();
+ if (value.isEmpty()) {
+ // This should never happen, but we do need to ensure users never see an empty List
+ return null;
+ }
+
// FIXME: Could be this lazy transformed list?
final Builder<D> builder = ImmutableList.builderWithExpectedSize(value.size());
for (UnkeyedListEntryNode node : value) {
// FIXME: Could be this lazy transformed list?
final Builder<D> builder = ImmutableList.builderWithExpectedSize(value.size());
for (UnkeyedListEntryNode node : value) {
for (Entry<Class<? extends Augmentation<Top>>, ? extends Augmentation<Top>> augment : augments.entrySet()) {
topBuilder.addAugmentation(augment.getKey(), augment.getValue());
}
for (Entry<Class<? extends Augmentation<Top>>, ? extends Augmentation<Top>> augment : augments.entrySet()) {
topBuilder.addAugmentation(augment.getKey(), augment.getValue());
}
- return topBuilder.setTopLevelList(Collections.emptyMap()).build();
+ return topBuilder.build();