summaryrefslogtreecommitdiffstats
path: root/v3po/translate-utils/src/main/java/io/fd/honeycomb/v3po/translate/util/read/registry
diff options
context:
space:
mode:
Diffstat (limited to 'v3po/translate-utils/src/main/java/io/fd/honeycomb/v3po/translate/util/read/registry')
-rw-r--r--v3po/translate-utils/src/main/java/io/fd/honeycomb/v3po/translate/util/read/registry/CompositeReader.java12
-rw-r--r--v3po/translate-utils/src/main/java/io/fd/honeycomb/v3po/translate/util/read/registry/CompositeReaderRegistry.java13
-rw-r--r--v3po/translate-utils/src/main/java/io/fd/honeycomb/v3po/translate/util/read/registry/SubtreeReader.java2
3 files changed, 25 insertions, 2 deletions
diff --git a/v3po/translate-utils/src/main/java/io/fd/honeycomb/v3po/translate/util/read/registry/CompositeReader.java b/v3po/translate-utils/src/main/java/io/fd/honeycomb/v3po/translate/util/read/registry/CompositeReader.java
index 64ecaf095..aa9b2dc92 100644
--- a/v3po/translate-utils/src/main/java/io/fd/honeycomb/v3po/translate/util/read/registry/CompositeReader.java
+++ b/v3po/translate-utils/src/main/java/io/fd/honeycomb/v3po/translate/util/read/registry/CompositeReader.java
@@ -18,6 +18,7 @@ package io.fd.honeycomb.v3po.translate.util.read.registry;
import static com.google.common.base.Preconditions.checkArgument;
+import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Optional;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Iterables;
@@ -53,6 +54,11 @@ class CompositeReader<D extends DataObject, B extends Builder<D>> extends Abstra
this.childReaders = childReaders;
}
+ @VisibleForTesting
+ ImmutableMap<Class<?>, Reader<? extends DataObject, ? extends Builder<?>>> getChildReaders() {
+ return childReaders;
+ }
+
@SuppressWarnings("unchecked")
public static <D extends DataObject> InstanceIdentifier<D> appendTypeToId(
final InstanceIdentifier<? extends DataObject> parentId, final InstanceIdentifier<D> type) {
@@ -66,11 +72,14 @@ class CompositeReader<D extends DataObject, B extends Builder<D>> extends Abstra
public Optional<? extends DataObject> read(@Nonnull final InstanceIdentifier<? extends DataObject> id,
@Nonnull final ReadContext ctx) throws ReadFailedException {
if (shouldReadCurrent(id)) {
+ LOG.trace("{}: Reading current: {}", this, id);
return readCurrent((InstanceIdentifier<D>) id, ctx);
} else if (shouldDelegateToChild(id)) {
+ LOG.trace("{}: Reading child: {}", this, id);
return readSubtree(id, ctx);
} else {
// Fallback
+ LOG.trace("{}: Delegating read: {}", this, id);
return delegate.read(id, ctx);
}
}
@@ -95,10 +104,11 @@ class CompositeReader<D extends DataObject, B extends Builder<D>> extends Abstra
@SuppressWarnings("unchecked")
private void readChildren(final InstanceIdentifier<D> id, @Nonnull final ReadContext ctx, final B builder)
throws ReadFailedException {
+ LOG.debug("{}: Reading children: {}", this, childReaders.keySet());
for (Reader child : childReaders.values()) {
- LOG.debug("{}: Reading child node from: {}", this, child);
final InstanceIdentifier childId = appendTypeToId(id, child.getManagedDataObjectType());
+ LOG.debug("{}: Reading child from: {}", this, child);
if (child instanceof ListReader) {
final List<? extends DataObject> list = ((ListReader) child).readList(childId, ctx);
((ListReader) child).merge(builder, list);
diff --git a/v3po/translate-utils/src/main/java/io/fd/honeycomb/v3po/translate/util/read/registry/CompositeReaderRegistry.java b/v3po/translate-utils/src/main/java/io/fd/honeycomb/v3po/translate/util/read/registry/CompositeReaderRegistry.java
index 0a948c7a8..a9f606ae2 100644
--- a/v3po/translate-utils/src/main/java/io/fd/honeycomb/v3po/translate/util/read/registry/CompositeReaderRegistry.java
+++ b/v3po/translate-utils/src/main/java/io/fd/honeycomb/v3po/translate/util/read/registry/CompositeReaderRegistry.java
@@ -18,6 +18,7 @@ package io.fd.honeycomb.v3po.translate.util.read.registry;
import static com.google.common.base.Preconditions.checkNotNull;
+import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Optional;
import com.google.common.collect.Iterables;
import com.google.common.collect.LinkedListMultimap;
@@ -31,6 +32,7 @@ import io.fd.honeycomb.v3po.translate.util.RWUtils;
import java.util.Collections;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
import javax.annotation.Nonnull;
import org.opendaylight.yangtools.concepts.Builder;
import org.opendaylight.yangtools.yang.binding.DataObject;
@@ -59,6 +61,11 @@ public final class CompositeReaderRegistry implements ReaderRegistry {
this.rootReaders = RWUtils.uniqueLinkedIndex(checkNotNull(rootReaders), RWUtils.MANAGER_CLASS_FUNCTION);
}
+ @VisibleForTesting
+ Map<Class<? extends DataObject>, Reader<? extends DataObject, ? extends Builder<?>>> getRootReaders() {
+ return rootReaders;
+ }
+
@Override
@Nonnull
public Multimap<InstanceIdentifier<? extends DataObject>, ? extends DataObject> readAll(
@@ -101,4 +108,10 @@ public final class CompositeReaderRegistry implements ReaderRegistry {
LOG.debug("Reading from delegate: {}", reader);
return reader.read(id, ctx);
}
+
+ @Override
+ public String toString() {
+ return getClass().getSimpleName()
+ + rootReaders.keySet().stream().map(Class::getSimpleName).collect(Collectors.toList());
+ }
}
diff --git a/v3po/translate-utils/src/main/java/io/fd/honeycomb/v3po/translate/util/read/registry/SubtreeReader.java b/v3po/translate-utils/src/main/java/io/fd/honeycomb/v3po/translate/util/read/registry/SubtreeReader.java
index 98fcac673..50a20656e 100644
--- a/v3po/translate-utils/src/main/java/io/fd/honeycomb/v3po/translate/util/read/registry/SubtreeReader.java
+++ b/v3po/translate-utils/src/main/java/io/fd/honeycomb/v3po/translate/util/read/registry/SubtreeReader.java
@@ -89,7 +89,7 @@ class SubtreeReader<D extends DataObject, B extends Builder<D>> implements Reade
LOG.debug("{}: Subtree node managed by this writer requested: {}. Reading current and filtering", this, id);
// If there's no dedicated reader, use read current
final InstanceIdentifier<D> currentId = RWUtils.cutId(id, getManagedDataObjectType());
- final Optional<? extends DataObject> current = read(currentId, ctx);
+ final Optional<? extends DataObject> current = delegate.read(currentId, ctx);
// then perform post-reading filtering (return only requested sub-node)
final Optional<? extends DataObject> readSubtree = current.isPresent()
? filterSubtree(current.get(), id, getManagedDataObjectType().getTargetType())