summaryrefslogtreecommitdiffstats
path: root/infra/translate-impl/src
diff options
context:
space:
mode:
Diffstat (limited to 'infra/translate-impl/src')
-rw-r--r--infra/translate-impl/src/main/java/io/fd/honeycomb/translate/impl/read/GenericInitReader.java18
-rw-r--r--infra/translate-impl/src/main/java/io/fd/honeycomb/translate/impl/write/GenericListWriter.java2
-rw-r--r--infra/translate-impl/src/main/java/io/fd/honeycomb/translate/impl/write/registry/SubtreeWriter.java16
-rw-r--r--infra/translate-impl/src/test/java/io/fd/honeycomb/translate/impl/read/AbstractListReaderTest.java2
-rw-r--r--infra/translate-impl/src/test/java/io/fd/honeycomb/translate/impl/read/GenericInitListReaderTest.java7
-rw-r--r--infra/translate-impl/src/test/java/io/fd/honeycomb/translate/impl/read/GenericIntReaderTest.java5
-rw-r--r--infra/translate-impl/src/test/java/io/fd/honeycomb/translate/impl/write/GenericListWriterTest.java4
-rw-r--r--infra/translate-impl/src/test/java/io/fd/honeycomb/translate/impl/write/registry/SubtreeWriterTest.java23
8 files changed, 65 insertions, 12 deletions
diff --git a/infra/translate-impl/src/main/java/io/fd/honeycomb/translate/impl/read/GenericInitReader.java b/infra/translate-impl/src/main/java/io/fd/honeycomb/translate/impl/read/GenericInitReader.java
index e55bc8ab6..147cbd3cc 100644
--- a/infra/translate-impl/src/main/java/io/fd/honeycomb/translate/impl/read/GenericInitReader.java
+++ b/infra/translate-impl/src/main/java/io/fd/honeycomb/translate/impl/read/GenericInitReader.java
@@ -19,6 +19,9 @@ package io.fd.honeycomb.translate.impl.read;
import static org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType.CONFIGURATION;
import com.google.common.base.Optional;
+import com.google.common.util.concurrent.FluentFuture;
+import com.google.common.util.concurrent.FutureCallback;
+import com.google.common.util.concurrent.MoreExecutors;
import io.fd.honeycomb.translate.read.InitFailedException;
import io.fd.honeycomb.translate.read.InitReader;
import io.fd.honeycomb.translate.read.ReadContext;
@@ -26,8 +29,10 @@ import io.fd.honeycomb.translate.read.ReadFailedException;
import io.fd.honeycomb.translate.spi.read.Initialized;
import io.fd.honeycomb.translate.spi.read.InitializingReaderCustomizer;
import javax.annotation.Nonnull;
+import org.checkerframework.checker.nullness.compatqual.NullableDecl;
import org.opendaylight.controller.md.sal.binding.api.DataBroker;
import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
+import org.opendaylight.mdsal.common.api.CommitInfo;
import org.opendaylight.yangtools.concepts.Builder;
import org.opendaylight.yangtools.yang.binding.DataObject;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
@@ -68,6 +73,17 @@ public final class GenericInitReader<O extends DataObject, B extends Builder<O>>
static void writeInit(final DataBroker broker, final Initialized<? extends DataObject> init) {
final WriteTransaction writeTx = broker.newWriteOnlyTransaction();
writeTx.merge(CONFIGURATION, (InstanceIdentifier) init.getId(), init.getData(), true);
- writeTx.submit();
+ FluentFuture<? extends CommitInfo> future = writeTx.commit();
+ future.addCallback(new FutureCallback<CommitInfo>() {
+ @Override
+ public void onSuccess(@NullableDecl final CommitInfo commitInfo) {
+ LOG.debug("Transaction: {} successfully committed.", writeTx);
+ }
+
+ @Override
+ public void onFailure(final Throwable throwable) {
+ LOG.warn("Transaction: {} failed.", writeTx);
+ }
+ }, MoreExecutors.directExecutor());
}
}
diff --git a/infra/translate-impl/src/main/java/io/fd/honeycomb/translate/impl/write/GenericListWriter.java b/infra/translate-impl/src/main/java/io/fd/honeycomb/translate/impl/write/GenericListWriter.java
index ff683b810..cc4800a65 100644
--- a/infra/translate-impl/src/main/java/io/fd/honeycomb/translate/impl/write/GenericListWriter.java
+++ b/infra/translate-impl/src/main/java/io/fd/honeycomb/translate/impl/write/GenericListWriter.java
@@ -92,7 +92,7 @@ public final class GenericListWriter<D extends DataObject & Identifiable<K>, K e
// Make sure the key is present
if (isWildcarded(id)) {
return RWUtils.replaceLastInId(id,
- new InstanceIdentifier.IdentifiableItem<>(id.getTargetType(), current.getKey()));
+ new InstanceIdentifier.IdentifiableItem<>(id.getTargetType(), current.key()));
} else {
return id;
}
diff --git a/infra/translate-impl/src/main/java/io/fd/honeycomb/translate/impl/write/registry/SubtreeWriter.java b/infra/translate-impl/src/main/java/io/fd/honeycomb/translate/impl/write/registry/SubtreeWriter.java
index e510bc33c..bdda21611 100644
--- a/infra/translate-impl/src/main/java/io/fd/honeycomb/translate/impl/write/registry/SubtreeWriter.java
+++ b/infra/translate-impl/src/main/java/io/fd/honeycomb/translate/impl/write/registry/SubtreeWriter.java
@@ -24,6 +24,7 @@ import io.fd.honeycomb.translate.write.WriteContext;
import io.fd.honeycomb.translate.write.WriteFailedException;
import io.fd.honeycomb.translate.write.Writer;
import java.util.HashSet;
+import java.util.Iterator;
import java.util.Set;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
@@ -99,7 +100,20 @@ final class SubtreeWriter<D extends DataObject> implements Writer<D> {
}
return false;
}
- return handledChildTypes.contains(instanceIdentifier);
+ return handledChildTypes.parallelStream()
+ .filter(childIiD -> instanceIdentifier.getTargetType().equals(childIiD.getTargetType()))
+ .anyMatch(instanceIdentifier1 -> isPathEqual(instanceIdentifier, instanceIdentifier1));
+ }
+
+ private boolean isPathEqual(@Nonnull final InstanceIdentifier<?> iid, final InstanceIdentifier<?> childIiD) {
+ // Verifying path because the same type can be used in several places.
+ Iterator<InstanceIdentifier.PathArgument> pathArguments = iid.getPathArguments().iterator();
+ for (final InstanceIdentifier.PathArgument pathArgument : childIiD.getPathArguments()) {
+ if (!pathArguments.hasNext() || !pathArgument.getType().equals(pathArguments.next().getType())) {
+ return false;
+ }
+ }
+ return true;
}
@Override
diff --git a/infra/translate-impl/src/test/java/io/fd/honeycomb/translate/impl/read/AbstractListReaderTest.java b/infra/translate-impl/src/test/java/io/fd/honeycomb/translate/impl/read/AbstractListReaderTest.java
index 5c08ce237..e8d26b660 100644
--- a/infra/translate-impl/src/test/java/io/fd/honeycomb/translate/impl/read/AbstractListReaderTest.java
+++ b/infra/translate-impl/src/test/java/io/fd/honeycomb/translate/impl/read/AbstractListReaderTest.java
@@ -131,7 +131,7 @@ public abstract class AbstractListReaderTest {
}
@Override
- public TestingKey getKey() {
+ public TestingKey key() {
return new TestingKey();
}
diff --git a/infra/translate-impl/src/test/java/io/fd/honeycomb/translate/impl/read/GenericInitListReaderTest.java b/infra/translate-impl/src/test/java/io/fd/honeycomb/translate/impl/read/GenericInitListReaderTest.java
index f695e66d7..b7fadda6c 100644
--- a/infra/translate-impl/src/test/java/io/fd/honeycomb/translate/impl/read/GenericInitListReaderTest.java
+++ b/infra/translate-impl/src/test/java/io/fd/honeycomb/translate/impl/read/GenericInitListReaderTest.java
@@ -24,15 +24,19 @@ import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyZeroInteractions;
import static org.mockito.Mockito.when;
+import com.google.common.util.concurrent.FluentFuture;
+import com.google.common.util.concurrent.Futures;
import io.fd.honeycomb.translate.read.InitFailedException;
import io.fd.honeycomb.translate.read.ReadFailedException;
import io.fd.honeycomb.translate.spi.read.Initialized;
import io.fd.honeycomb.translate.spi.read.InitializingListReaderCustomizer;
import org.junit.Test;
import org.mockito.Mock;
+import org.mockito.stubbing.Answer;
import org.opendaylight.controller.md.sal.binding.api.DataBroker;
import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
+import org.opendaylight.mdsal.common.api.CommitInfo;
import org.opendaylight.yangtools.concepts.Builder;
public class GenericInitListReaderTest extends AbstractListReaderTest {
@@ -69,12 +73,13 @@ public class GenericInitListReaderTest extends AbstractListReaderTest {
final Initialized<TestingData> initialized = Initialized.create(DATA_OBJECT_ID, data);
when(getCustomizer().isPresent(any(), any(), any())).thenReturn(true);
doReturn(initialized).when(getCustomizer()).init(any(), any(), any());
+ when(writeTx.commit()).thenReturn(FluentFuture.from(Futures.immediateFuture(null)));
when(broker.newWriteOnlyTransaction()).thenReturn(writeTx);
getReader().init(broker, DATA_OBJECT_ID, ctx);
verify(writeTx, times(2)).merge(LogicalDatastoreType.CONFIGURATION, DATA_OBJECT_ID, data, true);
- verify(writeTx, times(2)).submit();
+ verify(writeTx, times(2)).commit();
}
@Test(expected = InitFailedException.class)
diff --git a/infra/translate-impl/src/test/java/io/fd/honeycomb/translate/impl/read/GenericIntReaderTest.java b/infra/translate-impl/src/test/java/io/fd/honeycomb/translate/impl/read/GenericIntReaderTest.java
index ef3de457f..1d9f5d55b 100644
--- a/infra/translate-impl/src/test/java/io/fd/honeycomb/translate/impl/read/GenericIntReaderTest.java
+++ b/infra/translate-impl/src/test/java/io/fd/honeycomb/translate/impl/read/GenericIntReaderTest.java
@@ -22,6 +22,8 @@ import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyZeroInteractions;
import static org.mockito.Mockito.when;
+import com.google.common.util.concurrent.FluentFuture;
+import com.google.common.util.concurrent.Futures;
import io.fd.honeycomb.translate.read.InitFailedException;
import io.fd.honeycomb.translate.read.ReadFailedException;
import io.fd.honeycomb.translate.spi.read.Initialized;
@@ -66,12 +68,13 @@ public class GenericIntReaderTest extends AbstractReaderTest {
when(getCustomizer().isPresent(DATA_OBJECT_ID, data, ctx)).thenReturn(true);
doReturn(initialized).when(getCustomizer()).init(DATA_OBJECT_ID, data, ctx);
+ when(writeTx.commit()).thenReturn(FluentFuture.from(Futures.immediateFuture(null)));
when(broker.newWriteOnlyTransaction()).thenReturn(writeTx);
getReader().init(broker, DATA_OBJECT_ID, ctx);
verify(writeTx).merge(LogicalDatastoreType.CONFIGURATION, DATA_OBJECT_ID, data, true);
- verify(writeTx).submit();
+ verify(writeTx).commit();
}
@Test(expected = InitFailedException.class)
diff --git a/infra/translate-impl/src/test/java/io/fd/honeycomb/translate/impl/write/GenericListWriterTest.java b/infra/translate-impl/src/test/java/io/fd/honeycomb/translate/impl/write/GenericListWriterTest.java
index 20cabc5b4..36ab85eff 100644
--- a/infra/translate-impl/src/test/java/io/fd/honeycomb/translate/impl/write/GenericListWriterTest.java
+++ b/infra/translate-impl/src/test/java/io/fd/honeycomb/translate/impl/write/GenericListWriterTest.java
@@ -60,8 +60,8 @@ public class GenericListWriterTest {
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
writer = new GenericListWriter<>(DATA_OBJECT_ID, customizer, validator);
- when(before.getKey()).thenReturn(beforeKey);
- when(after.getKey()).thenReturn(keyAfter);
+ when(before.key()).thenReturn(beforeKey);
+ when(after.key()).thenReturn(keyAfter);
}
@Test
diff --git a/infra/translate-impl/src/test/java/io/fd/honeycomb/translate/impl/write/registry/SubtreeWriterTest.java b/infra/translate-impl/src/test/java/io/fd/honeycomb/translate/impl/write/registry/SubtreeWriterTest.java
index 65b2f375b..839674fb4 100644
--- a/infra/translate-impl/src/test/java/io/fd/honeycomb/translate/impl/write/registry/SubtreeWriterTest.java
+++ b/infra/translate-impl/src/test/java/io/fd/honeycomb/translate/impl/write/registry/SubtreeWriterTest.java
@@ -29,6 +29,7 @@ import io.fd.honeycomb.translate.impl.write.NoopWriters.NonDirectUpdateWriterCus
import io.fd.honeycomb.translate.impl.write.NoopWriters.ParentImplDirectUpdateWriterCustomizer;
import io.fd.honeycomb.translate.util.DataObjects;
import io.fd.honeycomb.translate.write.Writer;
+import java.io.UncheckedIOException;
import java.util.Collections;
import java.util.Set;
import org.hamcrest.CoreMatchers;
@@ -66,15 +67,29 @@ public class SubtreeWriterTest {
}
@Test
+ public void testCanHandleChild() throws Exception {
+ final SubtreeWriter<?> forWriter = createSubtreeWriter();
+
+ InstanceIdentifier<DataObjects.DataObject4.DataObject41.DataObject411> testIid = InstanceIdentifier.create(
+ DataObjects.DataObject4.class).child(DataObjects.DataObject4.DataObject41.class).child(
+ DataObjects.DataObject4.DataObject41.DataObject411.class);
+ assertTrue(forWriter.canProcess(testIid));
+ }
+
+ @Test
public void testSubtreeWriterCreation() throws Exception {
- final SubtreeWriter<?> forWriter = (SubtreeWriter<?>) SubtreeWriter.createForWriter(Sets.newHashSet(
+ final SubtreeWriter<?> forWriter = createSubtreeWriter();
+
+ assertEquals(writer.getManagedDataObjectType(), forWriter.getManagedDataObjectType());
+ assertEquals(3, forWriter.getHandledChildTypes().size());
+ }
+
+ private SubtreeWriter<?> createSubtreeWriter() {
+ return (SubtreeWriter<?>) SubtreeWriter.createForWriter(Sets.newHashSet(
DataObjects.DataObject4.DataObject41.IID,
DataObjects.DataObject4.DataObject41.DataObject411.IID,
DataObjects.DataObject4.DataObject42.IID),
writer);
-
- assertEquals(writer.getManagedDataObjectType(), forWriter.getManagedDataObjectType());
- assertEquals(3, forWriter.getHandledChildTypes().size());
}
@Test