HONEYCOMB-252 - Reduced scope of dump executors 00/3300/2
authorJan Srnicek <jsrnicek@cisco.com>
Mon, 10 Oct 2016 07:14:09 +0000 (09:14 +0200)
committerJan Srnicek <jsrnicek@cisco.com>
Mon, 10 Oct 2016 07:14:09 +0000 (09:14 +0200)
Change-Id: Ia426f855b13323369bcc7ec2cde0861421950476
Signed-off-by: Jan Srnicek <jsrnicek@cisco.com>
31 files changed:
lisp/lisp2vpp/src/main/java/io/fd/honeycomb/lisp/translate/read/BridgeDomainSubtableCustomizer.java
lisp/lisp2vpp/src/main/java/io/fd/honeycomb/lisp/translate/read/InterfaceCustomizer.java
lisp/lisp2vpp/src/main/java/io/fd/honeycomb/lisp/translate/read/ItrRemoteLocatorSetCustomizer.java
lisp/lisp2vpp/src/main/java/io/fd/honeycomb/lisp/translate/read/LocalMappingCustomizer.java
lisp/lisp2vpp/src/main/java/io/fd/honeycomb/lisp/translate/read/LocatorSetCustomizer.java
lisp/lisp2vpp/src/main/java/io/fd/honeycomb/lisp/translate/read/MapResolverCustomizer.java
lisp/lisp2vpp/src/main/java/io/fd/honeycomb/lisp/translate/read/RemoteMappingCustomizer.java
lisp/lisp2vpp/src/main/java/io/fd/honeycomb/lisp/translate/read/VniTableCustomizer.java
lisp/lisp2vpp/src/main/java/io/fd/honeycomb/lisp/translate/read/VrfSubtableCustomizer.java
lisp/lisp2vpp/src/main/java/io/fd/honeycomb/lisp/translate/read/dump/executor/AbstractJvppDumpExecutor.java [deleted file]
lisp/lisp2vpp/src/main/java/io/fd/honeycomb/lisp/translate/read/dump/executor/ItrRemoteLocatorSetDumpExecutor.java [deleted file]
lisp/lisp2vpp/src/main/java/io/fd/honeycomb/lisp/translate/read/dump/executor/MapResolversDumpExecutor.java [deleted file]
lisp/lisp2vpp/src/main/java/io/fd/honeycomb/lisp/translate/read/dump/executor/MappingsDumpExecutor.java [deleted file]
lisp/lisp2vpp/src/main/java/io/fd/honeycomb/lisp/translate/read/dump/executor/SubtableDumpExecutor.java [deleted file]
lisp/lisp2vpp/src/main/java/io/fd/honeycomb/lisp/translate/read/dump/executor/VniTableDumpExecutor.java [deleted file]
lisp/lisp2vpp/src/main/java/io/fd/honeycomb/lisp/translate/read/dump/executor/params/MappingsDumpParams.java
lisp/lisp2vpp/src/main/java/io/fd/honeycomb/lisp/translate/read/trait/LocatorReader.java [moved from lisp/lisp2vpp/src/main/java/io/fd/honeycomb/lisp/translate/read/dump/executor/LocatorDumpExecutor.java with 50% similarity]
lisp/lisp2vpp/src/main/java/io/fd/honeycomb/lisp/translate/read/trait/LocatorSetReader.java [moved from lisp/lisp2vpp/src/main/java/io/fd/honeycomb/lisp/translate/read/dump/executor/LocatorSetsDumpExecutor.java with 53% similarity, mode: 0644]
lisp/lisp2vpp/src/main/java/io/fd/honeycomb/lisp/translate/read/trait/MappingReader.java [moved from lisp/lisp2vpp/src/main/java/io/fd/honeycomb/lisp/translate/read/trait/MappingFilterProvider.java with 67% similarity]
lisp/lisp2vpp/src/main/java/io/fd/honeycomb/lisp/translate/read/trait/SubtableReader.java
lisp/lisp2vpp/src/main/java/io/fd/honeycomb/lisp/translate/write/LocatorSetCustomizer.java
lisp/lisp2vpp/src/test/java/io/fd/honeycomb/lisp/translate/read/dump/executor/LocatorDumpExecutorTest.java [deleted file]
lisp/lisp2vpp/src/test/java/io/fd/honeycomb/lisp/translate/read/dump/executor/LocatorSetsDumpExecutorTest.java [deleted file]
lisp/lisp2vpp/src/test/java/io/fd/honeycomb/lisp/translate/read/dump/executor/MapResolversDumpExecutorTest.java [deleted file]
lisp/lisp2vpp/src/test/java/io/fd/honeycomb/lisp/translate/read/dump/executor/MappingsDumpExecutorTest.java [deleted file]
lisp/lisp2vpp/src/test/java/io/fd/honeycomb/lisp/translate/read/dump/executor/VniTableDumpExecutorTest.java [deleted file]
lisp/lisp2vpp/src/test/java/io/fd/honeycomb/lisp/translate/read/trait/MappingReaderTest.java [moved from lisp/lisp2vpp/src/test/java/io/fd/honeycomb/lisp/translate/read/trait/MappingFilterProviderTest.java with 97% similarity]
v3po/v3po2vpp/src/main/java/io/fd/honeycomb/translate/v3po/interfacesstate/ip/Ipv4AddressCustomizer.java
v3po/v3po2vpp/src/main/java/io/fd/honeycomb/translate/v3po/interfacesstate/ip/Ipv4Reader.java
v3po/v3po2vpp/src/main/java/io/fd/honeycomb/translate/v3po/interfacesstate/ip/SubInterfaceIpv4AddressCustomizer.java
v3po/v3po2vpp/src/main/java/io/fd/honeycomb/translate/v3po/interfacesstate/ip/dump/AddressDumpExecutor.java [deleted file]

index a758ab6..aa94a30 100644 (file)
@@ -19,13 +19,13 @@ package io.fd.honeycomb.lisp.translate.read;
 import static com.google.common.base.Preconditions.checkNotNull;
 
 import com.google.common.base.Optional;
-import io.fd.honeycomb.lisp.translate.read.dump.executor.SubtableDumpExecutor;
 import io.fd.honeycomb.lisp.translate.read.dump.executor.params.SubtableDumpParams;
 import io.fd.honeycomb.lisp.translate.read.trait.SubtableReader;
 import io.fd.honeycomb.translate.read.ReadContext;
 import io.fd.honeycomb.translate.read.ReadFailedException;
 import io.fd.honeycomb.translate.spi.read.ReaderCustomizer;
 import io.fd.honeycomb.translate.util.read.cache.DumpCacheManager;
+import io.fd.honeycomb.translate.util.read.cache.DumpCacheManager.DumpCacheManagerBuilder;
 import io.fd.honeycomb.translate.vpp.util.FutureJVppCustomizer;
 import io.fd.honeycomb.translate.vpp.util.NamingContext;
 import io.fd.vpp.jvpp.core.dto.LispEidTableMapDetails;
@@ -51,17 +51,14 @@ public class BridgeDomainSubtableCustomizer extends FutureJVppCustomizer impleme
     private static final String CACHE_KEY = BridgeDomainSubtableCustomizer.class.getName();
 
     private final DumpCacheManager<LispEidTableMapDetailsReplyDump, SubtableDumpParams> dumpManager;
-    private final SubtableDumpExecutor dumpExecutor;
     private final NamingContext bridgeDomainContext;
 
     public BridgeDomainSubtableCustomizer(@Nonnull final FutureJVppCore futureJvppCore,
                                           @Nonnull final NamingContext bridgeDomainContext) {
         super(futureJvppCore);
-        dumpExecutor = new SubtableDumpExecutor(futureJvppCore);
-        dumpManager =
-                new DumpCacheManager.DumpCacheManagerBuilder<LispEidTableMapDetailsReplyDump, SubtableDumpParams>()
-                        .withExecutor(dumpExecutor)
-                        .build();
+        dumpManager = new DumpCacheManagerBuilder<LispEidTableMapDetailsReplyDump, SubtableDumpParams>()
+                .withExecutor(createExecutor(futureJvppCore))
+                .build();
         this.bridgeDomainContext = checkNotNull(bridgeDomainContext, "Bridge domain context cannot be null");
     }
 
index 9387937..0e1c344 100755 (executable)
@@ -21,9 +21,9 @@ import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
 
 import com.google.common.base.Optional;
-import io.fd.honeycomb.lisp.translate.read.dump.executor.LocatorDumpExecutor;
 import io.fd.honeycomb.lisp.translate.read.dump.executor.params.LocatorDumpParams;
 import io.fd.honeycomb.lisp.translate.read.dump.executor.params.LocatorDumpParams.LocatorDumpParamsBuilder;
+import io.fd.honeycomb.lisp.translate.read.trait.LocatorReader;
 import io.fd.honeycomb.translate.read.ReadContext;
 import io.fd.honeycomb.translate.read.ReadFailedException;
 import io.fd.honeycomb.translate.spi.read.ListReaderCustomizer;
@@ -53,7 +53,7 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
  */
 public class InterfaceCustomizer
         extends FutureJVppCustomizer
-        implements ListReaderCustomizer<Interface, InterfaceKey, InterfaceBuilder> {
+        implements ListReaderCustomizer<Interface, InterfaceKey, InterfaceBuilder>, LocatorReader {
 
     private static final String KEY_BASE = InterfaceCustomizer.class.getName();
 
@@ -61,16 +61,14 @@ public class InterfaceCustomizer
     private final NamingContext locatorSetContext;
     private final DumpCacheManager<LispLocatorDetailsReplyDump, LocatorDumpParams> dumpCacheManager;
 
-    public InterfaceCustomizer(
-            @Nonnull final FutureJVppCore futureJvpp,
-            @Nonnull final NamingContext interfaceContext,
-            @Nonnull final NamingContext locatorSetContext) {
+    public InterfaceCustomizer(@Nonnull final FutureJVppCore futureJvpp, @Nonnull final NamingContext interfaceContext,
+                               @Nonnull final NamingContext locatorSetContext) {
         super(futureJvpp);
         this.interfaceContext = checkNotNull(interfaceContext, "Interface context cannot be null");
         this.locatorSetContext = checkNotNull(locatorSetContext, "Locator set context cannot be null");
         this.dumpCacheManager =
                 new DumpCacheManager.DumpCacheManagerBuilder<LispLocatorDetailsReplyDump, LocatorDumpParams>()
-                        .withExecutor(new LocatorDumpExecutor(futureJvpp))
+                        .withExecutor(createLocatorDumpExecutor(futureJvpp))
                         .build();
     }
 
index f95d6c7..9defc3c 100644 (file)
@@ -20,7 +20,6 @@ package io.fd.honeycomb.lisp.translate.read;
 import static io.fd.honeycomb.translate.util.read.cache.EntityDumpExecutor.NO_PARAMS;
 
 import com.google.common.base.Optional;
-import io.fd.honeycomb.lisp.translate.read.dump.executor.ItrRemoteLocatorSetDumpExecutor;
 import io.fd.honeycomb.translate.read.ReadContext;
 import io.fd.honeycomb.translate.read.ReadFailedException;
 import io.fd.honeycomb.translate.spi.read.ReaderCustomizer;
@@ -28,6 +27,8 @@ import io.fd.honeycomb.translate.util.read.cache.DumpCacheManager;
 import io.fd.honeycomb.translate.util.read.cache.DumpCacheManager.DumpCacheManagerBuilder;
 import io.fd.honeycomb.translate.vpp.util.ByteDataTranslator;
 import io.fd.honeycomb.translate.vpp.util.FutureJVppCustomizer;
+import io.fd.honeycomb.translate.vpp.util.JvppReplyConsumer;
+import io.fd.vpp.jvpp.core.dto.LispGetMapRequestItrRlocs;
 import io.fd.vpp.jvpp.core.dto.LispGetMapRequestItrRlocsReply;
 import io.fd.vpp.jvpp.core.future.FutureJVppCore;
 import javax.annotation.Nonnull;
@@ -39,7 +40,8 @@ import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 
 public class ItrRemoteLocatorSetCustomizer extends FutureJVppCustomizer
-        implements ReaderCustomizer<ItrRemoteLocatorSet, ItrRemoteLocatorSetBuilder>, ByteDataTranslator {
+        implements ReaderCustomizer<ItrRemoteLocatorSet, ItrRemoteLocatorSetBuilder>, ByteDataTranslator,
+        JvppReplyConsumer {
 
     private static final String CACHE_KEY = ItrRemoteLocatorSetCustomizer.class.getName();
 
@@ -48,7 +50,10 @@ public class ItrRemoteLocatorSetCustomizer extends FutureJVppCustomizer
     public ItrRemoteLocatorSetCustomizer(@Nonnull final FutureJVppCore futureJVppCore) {
         super(futureJVppCore);
         dumpCacheManager = new DumpCacheManagerBuilder<LispGetMapRequestItrRlocsReply, Void>()
-                .withExecutor(new ItrRemoteLocatorSetDumpExecutor(futureJVppCore)).build();
+                .withExecutor(((identifier, params) -> getReplyForRead(
+                        futureJVppCore.lispGetMapRequestItrRlocs(new LispGetMapRequestItrRlocs()).toCompletableFuture(),
+                        identifier)))
+                .build();
     }
 
     @Nonnull
index 4efe57e..74fbf6f 100755 (executable)
@@ -25,9 +25,8 @@ import static io.fd.honeycomb.lisp.translate.read.dump.executor.params.MappingsD
 
 import com.google.common.base.Optional;
 import io.fd.honeycomb.lisp.context.util.EidMappingContext;
-import io.fd.honeycomb.lisp.translate.read.dump.executor.MappingsDumpExecutor;
 import io.fd.honeycomb.lisp.translate.read.dump.executor.params.MappingsDumpParams;
-import io.fd.honeycomb.lisp.translate.read.trait.MappingFilterProvider;
+import io.fd.honeycomb.lisp.translate.read.trait.MappingReader;
 import io.fd.honeycomb.lisp.translate.util.EidTranslator;
 import io.fd.honeycomb.translate.read.ReadContext;
 import io.fd.honeycomb.translate.read.ReadFailedException;
@@ -63,14 +62,12 @@ import org.slf4j.LoggerFactory;
 public class LocalMappingCustomizer
         extends FutureJVppCustomizer
         implements ListReaderCustomizer<LocalMapping, LocalMappingKey, LocalMappingBuilder>, EidTranslator,
-        MappingFilterProvider {
+        MappingReader {
 
     private static final Logger LOG = LoggerFactory.getLogger(LocalMappingCustomizer.class);
     private static final String KEY = LocalMappingCustomizer.class.getName();
 
-
     private final DumpCacheManager<LispEidTableDetailsReplyDump, MappingsDumpParams> dumpManager;
-    private final MappingsDumpExecutor dumpExecutor;
     private final NamingContext locatorSetContext;
     private final EidMappingContext localMappingContext;
 
@@ -79,10 +76,9 @@ public class LocalMappingCustomizer
         super(futureJvpp);
         this.locatorSetContext = checkNotNull(locatorSetContext, "Locator Set Mapping Context cannot be null");
         this.localMappingContext = checkNotNull(localMappingsContext, "Local mappings context cannot be null");
-        this.dumpExecutor = new MappingsDumpExecutor(futureJvpp);
         this.dumpManager =
                 new DumpCacheManager.DumpCacheManagerBuilder<LispEidTableDetailsReplyDump, MappingsDumpParams>()
-                        .withExecutor(dumpExecutor)
+                        .withExecutor(createMappingDumpExecutor(futureJvpp))
                         .build();
     }
 
index 5c02097..bacdd55 100755 (executable)
@@ -20,7 +20,7 @@ import static com.google.common.base.Preconditions.checkNotNull;
 import static io.fd.honeycomb.translate.util.read.cache.EntityDumpExecutor.NO_PARAMS;
 
 import com.google.common.base.Optional;
-import io.fd.honeycomb.lisp.translate.read.dump.executor.LocatorSetsDumpExecutor;
+import io.fd.honeycomb.lisp.translate.read.trait.LocatorSetReader;
 import io.fd.honeycomb.translate.read.ReadContext;
 import io.fd.honeycomb.translate.read.ReadFailedException;
 import io.fd.honeycomb.translate.spi.read.ListReaderCustomizer;
@@ -46,7 +46,8 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 public class LocatorSetCustomizer extends FutureJVppCustomizer
-        implements ListReaderCustomizer<LocatorSet, LocatorSetKey, LocatorSetBuilder>, ByteDataTranslator {
+        implements ListReaderCustomizer<LocatorSet, LocatorSetKey, LocatorSetBuilder>, ByteDataTranslator,
+        LocatorSetReader {
 
     //TODO - temporary as public because of hack in write customizer in *.write.LocatorSetCustomizer
     public static final String LOCATOR_SETS_CACHE_ID = LocatorSetCustomizer.class.getName();
@@ -60,7 +61,7 @@ public class LocatorSetCustomizer extends FutureJVppCustomizer
         super(futureJvpp);
         this.locatorSetContext = checkNotNull(locatorSetContext, "Locator Set mapping context cannot be null");
         this.dumpManager = new DumpCacheManager.DumpCacheManagerBuilder<LispLocatorSetDetailsReplyDump, Void>()
-                .withExecutor(new LocatorSetsDumpExecutor(futureJvpp))
+                .withExecutor(createExecutor(futureJvpp))
                 .build();
     }
 
index b9a83e2..5c453d5 100755 (executable)
@@ -19,7 +19,6 @@ package io.fd.honeycomb.lisp.translate.read;
 import static io.fd.honeycomb.translate.util.read.cache.EntityDumpExecutor.NO_PARAMS;
 
 import com.google.common.base.Optional;
-import io.fd.honeycomb.lisp.translate.read.dump.executor.MapResolversDumpExecutor;
 import io.fd.honeycomb.translate.read.ReadContext;
 import io.fd.honeycomb.translate.read.ReadFailedException;
 import io.fd.honeycomb.translate.spi.read.ListReaderCustomizer;
@@ -27,8 +26,10 @@ import io.fd.honeycomb.translate.util.RWUtils;
 import io.fd.honeycomb.translate.util.read.cache.DumpCacheManager;
 import io.fd.honeycomb.translate.vpp.util.AddressTranslator;
 import io.fd.honeycomb.translate.vpp.util.FutureJVppCustomizer;
+import io.fd.honeycomb.translate.vpp.util.JvppReplyConsumer;
 import io.fd.vpp.jvpp.core.dto.LispMapResolverDetails;
 import io.fd.vpp.jvpp.core.dto.LispMapResolverDetailsReplyDump;
+import io.fd.vpp.jvpp.core.dto.LispMapResolverDump;
 import io.fd.vpp.jvpp.core.future.FutureJVppCore;
 import java.util.Arrays;
 import java.util.Collections;
@@ -46,7 +47,8 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 public class MapResolverCustomizer extends FutureJVppCustomizer
-        implements ListReaderCustomizer<MapResolver, MapResolverKey, MapResolverBuilder>, AddressTranslator {
+        implements ListReaderCustomizer<MapResolver, MapResolverKey, MapResolverBuilder>, AddressTranslator,
+        JvppReplyConsumer {
 
     private static final Logger LOG = LoggerFactory.getLogger(MapResolverCustomizer.class);
     private static final String MAP_RESOLVERS_CACHE_ID = MapResolverCustomizer.class.getName();
@@ -56,7 +58,8 @@ public class MapResolverCustomizer extends FutureJVppCustomizer
     public MapResolverCustomizer(FutureJVppCore futureJvpp) {
         super(futureJvpp);
         this.dumpManager = new DumpCacheManager.DumpCacheManagerBuilder<LispMapResolverDetailsReplyDump, Void>()
-                .withExecutor(new MapResolversDumpExecutor((futureJvpp)))
+                .withExecutor((identifier, params) -> getReplyForRead(
+                        futureJvpp.lispMapResolverDump(new LispMapResolverDump()).toCompletableFuture(), identifier))
                 .build();
     }
 
index 78da66c..18bafe1 100755 (executable)
@@ -25,13 +25,12 @@ import static org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.l
 
 import com.google.common.base.Optional;
 import io.fd.honeycomb.lisp.context.util.EidMappingContext;
-import io.fd.honeycomb.lisp.translate.read.dump.executor.LocatorDumpExecutor;
-import io.fd.honeycomb.lisp.translate.read.dump.executor.MappingsDumpExecutor;
 import io.fd.honeycomb.lisp.translate.read.dump.executor.params.LocatorDumpParams;
 import io.fd.honeycomb.lisp.translate.read.dump.executor.params.LocatorDumpParams.LocatorDumpParamsBuilder;
 import io.fd.honeycomb.lisp.translate.read.dump.executor.params.MappingsDumpParams;
 import io.fd.honeycomb.lisp.translate.read.dump.executor.params.MappingsDumpParams.QuantityType;
-import io.fd.honeycomb.lisp.translate.read.trait.MappingFilterProvider;
+import io.fd.honeycomb.lisp.translate.read.trait.LocatorReader;
+import io.fd.honeycomb.lisp.translate.read.trait.MappingReader;
 import io.fd.honeycomb.lisp.translate.util.EidTranslator;
 import io.fd.honeycomb.translate.ModificationCache;
 import io.fd.honeycomb.translate.read.ReadContext;
@@ -79,7 +78,7 @@ import org.slf4j.LoggerFactory;
  */
 public class RemoteMappingCustomizer extends FutureJVppCustomizer
         implements ListReaderCustomizer<RemoteMapping, RemoteMappingKey, RemoteMappingBuilder>,
-        EidTranslator, AddressTranslator, ByteDataTranslator, MappingFilterProvider {
+        EidTranslator, AddressTranslator, ByteDataTranslator, MappingReader, LocatorReader {
 
     private static final Logger LOG = LoggerFactory.getLogger(RemoteMappingCustomizer.class);
     private static final String KEY = RemoteMappingCustomizer.class.getName();
@@ -94,11 +93,11 @@ public class RemoteMappingCustomizer extends FutureJVppCustomizer
         this.remoteMappingContext = checkNotNull(remoteMappingContext, "Remote mappings not present");
         this.dumpManager =
                 new DumpCacheManager.DumpCacheManagerBuilder<LispEidTableDetailsReplyDump, MappingsDumpParams>()
-                        .withExecutor(new MappingsDumpExecutor(futureJvpp))
+                        .withExecutor(createMappingDumpExecutor(futureJvpp))
                         .build();
         this.locatorsDumpManager =
                 new DumpCacheManager.DumpCacheManagerBuilder<LispLocatorDetailsReplyDump, LocatorDumpParams>()
-                        .withExecutor(new LocatorDumpExecutor(futureJvpp))
+                        .withExecutor(createLocatorDumpExecutor(futureJvpp))
                         .build();
     }
 
index 8779103..d3e50f0 100755 (executable)
@@ -20,15 +20,16 @@ import static com.google.common.base.Preconditions.checkState;
 import static io.fd.honeycomb.translate.util.read.cache.EntityDumpExecutor.NO_PARAMS;
 
 import com.google.common.base.Optional;
-import io.fd.honeycomb.lisp.translate.read.dump.executor.VniTableDumpExecutor;
 import io.fd.honeycomb.translate.read.ReadContext;
 import io.fd.honeycomb.translate.read.ReadFailedException;
 import io.fd.honeycomb.translate.spi.read.ListReaderCustomizer;
 import io.fd.honeycomb.translate.util.RWUtils;
 import io.fd.honeycomb.translate.util.read.cache.DumpCacheManager;
 import io.fd.honeycomb.translate.vpp.util.FutureJVppCustomizer;
+import io.fd.honeycomb.translate.vpp.util.JvppReplyConsumer;
 import io.fd.vpp.jvpp.core.dto.LispEidTableVniDetails;
 import io.fd.vpp.jvpp.core.dto.LispEidTableVniDetailsReplyDump;
+import io.fd.vpp.jvpp.core.dto.LispEidTableVniDump;
 import io.fd.vpp.jvpp.core.future.FutureJVppCore;
 import java.util.Collections;
 import java.util.List;
@@ -48,7 +49,7 @@ import org.slf4j.LoggerFactory;
  * Handles the reads of {@link VniTable} nodes
  */
 public class VniTableCustomizer extends FutureJVppCustomizer
-        implements ListReaderCustomizer<VniTable, VniTableKey, VniTableBuilder> {
+        implements ListReaderCustomizer<VniTable, VniTableKey, VniTableBuilder>, JvppReplyConsumer {
 
     private static final Logger LOG = LoggerFactory.getLogger(VniTableCustomizer.class);
 
@@ -58,7 +59,8 @@ public class VniTableCustomizer extends FutureJVppCustomizer
     public VniTableCustomizer(@Nonnull final FutureJVppCore futureJvpp) {
         super(futureJvpp);
         this.dumpManager = new DumpCacheManager.DumpCacheManagerBuilder<LispEidTableVniDetailsReplyDump, Void>()
-                .withExecutor(new VniTableDumpExecutor(futureJvpp))
+                .withExecutor(((identifier, params) -> getReplyForRead(
+                        futureJvpp.lispEidTableVniDump(new LispEidTableVniDump()).toCompletableFuture(), identifier)))
                 .build();
     }
 
index c0d5ae5..324ae9c 100644 (file)
@@ -19,14 +19,17 @@ package io.fd.honeycomb.lisp.translate.read;
 import static com.google.common.base.Preconditions.checkNotNull;
 
 import com.google.common.base.Optional;
-import io.fd.honeycomb.lisp.translate.read.dump.executor.SubtableDumpExecutor;
 import io.fd.honeycomb.lisp.translate.read.dump.executor.params.SubtableDumpParams;
 import io.fd.honeycomb.lisp.translate.read.trait.SubtableReader;
 import io.fd.honeycomb.translate.read.ReadContext;
 import io.fd.honeycomb.translate.read.ReadFailedException;
 import io.fd.honeycomb.translate.spi.read.ReaderCustomizer;
 import io.fd.honeycomb.translate.util.read.cache.DumpCacheManager;
+import io.fd.honeycomb.translate.util.read.cache.DumpCacheManager.DumpCacheManagerBuilder;
 import io.fd.honeycomb.translate.vpp.util.FutureJVppCustomizer;
+import io.fd.vpp.jvpp.core.dto.LispEidTableMapDetails;
+import io.fd.vpp.jvpp.core.dto.LispEidTableMapDetailsReplyDump;
+import io.fd.vpp.jvpp.core.future.FutureJVppCore;
 import java.util.List;
 import java.util.stream.Collectors;
 import javax.annotation.Nonnull;
@@ -37,9 +40,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev
 import org.opendaylight.yangtools.concepts.Builder;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import io.fd.vpp.jvpp.core.dto.LispEidTableMapDetails;
-import io.fd.vpp.jvpp.core.dto.LispEidTableMapDetailsReplyDump;
-import io.fd.vpp.jvpp.core.future.FutureJVppCore;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -50,15 +50,12 @@ public class VrfSubtableCustomizer extends FutureJVppCustomizer
     private static final String CACHE_KEY = VrfSubtableCustomizer.class.getName();
 
     private final DumpCacheManager<LispEidTableMapDetailsReplyDump, SubtableDumpParams> dumpManager;
-    private final SubtableDumpExecutor dumpExecutor;
 
     public VrfSubtableCustomizer(@Nonnull final FutureJVppCore futureJvpp) {
         super(futureJvpp);
-        dumpExecutor = new SubtableDumpExecutor(futureJvpp);
-        dumpManager =
-                new DumpCacheManager.DumpCacheManagerBuilder<LispEidTableMapDetailsReplyDump, SubtableDumpParams>()
-                        .withExecutor(dumpExecutor)
-                        .build();
+        dumpManager = new DumpCacheManagerBuilder<LispEidTableMapDetailsReplyDump, SubtableDumpParams>()
+                .withExecutor(createExecutor(futureJvpp))
+                .build();
     }
 
     @Nonnull
diff --git a/lisp/lisp2vpp/src/main/java/io/fd/honeycomb/lisp/translate/read/dump/executor/AbstractJvppDumpExecutor.java b/lisp/lisp2vpp/src/main/java/io/fd/honeycomb/lisp/translate/read/dump/executor/AbstractJvppDumpExecutor.java
deleted file mode 100644 (file)
index 65f4144..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (c) 2016 Cisco and/or its affiliates.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at:
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package io.fd.honeycomb.lisp.translate.read.dump.executor;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import javax.annotation.Nonnull;
-import io.fd.vpp.jvpp.core.future.FutureJVppCore;
-
-
-/**
- * Abstract holder for jvpp reference
- */
-public abstract class AbstractJvppDumpExecutor {
-
-    protected final FutureJVppCore vppApi;
-
-    public AbstractJvppDumpExecutor(@Nonnull final FutureJVppCore vppApi) {
-        this.vppApi = checkNotNull(vppApi, "VPP Api reference cannot be null");
-    }
-}
diff --git a/lisp/lisp2vpp/src/main/java/io/fd/honeycomb/lisp/translate/read/dump/executor/ItrRemoteLocatorSetDumpExecutor.java b/lisp/lisp2vpp/src/main/java/io/fd/honeycomb/lisp/translate/read/dump/executor/ItrRemoteLocatorSetDumpExecutor.java
deleted file mode 100644 (file)
index 3b2114a..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (c) 2015 Cisco and/or its affiliates.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at:
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package io.fd.honeycomb.lisp.translate.read.dump.executor;
-
-import io.fd.honeycomb.translate.read.ReadFailedException;
-import io.fd.honeycomb.translate.util.read.cache.EntityDumpExecutor;
-import io.fd.honeycomb.translate.vpp.util.JvppReplyConsumer;
-import io.fd.vpp.jvpp.core.dto.LispGetMapRequestItrRlocs;
-import io.fd.vpp.jvpp.core.dto.LispGetMapRequestItrRlocsReply;
-import io.fd.vpp.jvpp.core.future.FutureJVppCore;
-import javax.annotation.Nonnull;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-
-public class ItrRemoteLocatorSetDumpExecutor extends AbstractJvppDumpExecutor
-        implements EntityDumpExecutor<LispGetMapRequestItrRlocsReply, Void>, JvppReplyConsumer {
-
-    public ItrRemoteLocatorSetDumpExecutor(@Nonnull final FutureJVppCore vppApi) {
-        super(vppApi);
-    }
-
-    @Override
-    public LispGetMapRequestItrRlocsReply executeDump(final InstanceIdentifier<?> identifier, final Void params) throws
-            ReadFailedException {
-        return getReplyForRead(vppApi.lispGetMapRequestItrRlocs(new LispGetMapRequestItrRlocs()).toCompletableFuture(),
-                identifier);
-    }
-}
diff --git a/lisp/lisp2vpp/src/main/java/io/fd/honeycomb/lisp/translate/read/dump/executor/MapResolversDumpExecutor.java b/lisp/lisp2vpp/src/main/java/io/fd/honeycomb/lisp/translate/read/dump/executor/MapResolversDumpExecutor.java
deleted file mode 100755 (executable)
index 8f19e70..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (c) 2016 Cisco and/or its affiliates.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at:
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package io.fd.honeycomb.lisp.translate.read.dump.executor;
-
-
-import io.fd.honeycomb.translate.read.ReadFailedException;
-import io.fd.honeycomb.translate.util.read.cache.EntityDumpExecutor;
-import io.fd.honeycomb.translate.vpp.util.JvppReplyConsumer;
-import io.fd.vpp.jvpp.core.dto.LispMapResolverDetailsReplyDump;
-import io.fd.vpp.jvpp.core.dto.LispMapResolverDump;
-import io.fd.vpp.jvpp.core.future.FutureJVppCore;
-import javax.annotation.Nonnull;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-
-
-public class MapResolversDumpExecutor extends AbstractJvppDumpExecutor
-        implements EntityDumpExecutor<LispMapResolverDetailsReplyDump, Void>, JvppReplyConsumer {
-
-    public MapResolversDumpExecutor(@Nonnull FutureJVppCore api) {
-        super(api);
-    }
-
-    @Override
-    @Nonnull
-    public LispMapResolverDetailsReplyDump executeDump(final InstanceIdentifier<?> identifier, final Void params) throws
-            ReadFailedException {
-        return getReplyForRead(vppApi.lispMapResolverDump(new LispMapResolverDump()).toCompletableFuture(), identifier);
-    }
-}
diff --git a/lisp/lisp2vpp/src/main/java/io/fd/honeycomb/lisp/translate/read/dump/executor/MappingsDumpExecutor.java b/lisp/lisp2vpp/src/main/java/io/fd/honeycomb/lisp/translate/read/dump/executor/MappingsDumpExecutor.java
deleted file mode 100755 (executable)
index 778ce53..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright (c) 2016 Cisco and/or its affiliates.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at:
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package io.fd.honeycomb.lisp.translate.read.dump.executor;
-
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import io.fd.honeycomb.lisp.translate.read.dump.executor.params.MappingsDumpParams;
-import io.fd.honeycomb.translate.read.ReadFailedException;
-import io.fd.honeycomb.translate.util.read.cache.EntityDumpExecutor;
-import io.fd.honeycomb.translate.vpp.util.JvppReplyConsumer;
-import io.fd.vpp.jvpp.core.dto.LispEidTableDetailsReplyDump;
-import io.fd.vpp.jvpp.core.dto.LispEidTableDump;
-import io.fd.vpp.jvpp.core.future.FutureJVppCore;
-import javax.annotation.Nonnull;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-
-
-/**
- * Common dump executor for both local and remote mappings
- */
-public class MappingsDumpExecutor extends AbstractJvppDumpExecutor
-        implements EntityDumpExecutor<LispEidTableDetailsReplyDump, MappingsDumpParams>, JvppReplyConsumer {
-
-    public MappingsDumpExecutor(@Nonnull FutureJVppCore vppApi) {
-        super(vppApi);
-    }
-
-
-    @Override
-    @Nonnull
-    public LispEidTableDetailsReplyDump executeDump(final InstanceIdentifier<?> identifier,
-                                                    final MappingsDumpParams params)
-            throws ReadFailedException {
-        checkNotNull(params, "Params for dump request not present");
-
-        LispEidTableDump request = new LispEidTableDump();
-        request.eid = params.getEid();
-        request.eidSet = params.getEidSet();
-        request.eidType = params.getEidType();
-        request.prefixLength = params.getPrefixLength();
-        request.vni = params.getVni();
-        request.filter = params.getFilter();
-
-        return getReplyForRead(vppApi.lispEidTableDump(request).toCompletableFuture(), identifier);
-    }
-}
diff --git a/lisp/lisp2vpp/src/main/java/io/fd/honeycomb/lisp/translate/read/dump/executor/SubtableDumpExecutor.java b/lisp/lisp2vpp/src/main/java/io/fd/honeycomb/lisp/translate/read/dump/executor/SubtableDumpExecutor.java
deleted file mode 100644 (file)
index bf54512..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (c) 2015 Cisco and/or its affiliates.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at:
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package io.fd.honeycomb.lisp.translate.read.dump.executor;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import io.fd.honeycomb.lisp.translate.read.dump.executor.params.SubtableDumpParams;
-import io.fd.honeycomb.translate.read.ReadFailedException;
-import io.fd.honeycomb.translate.util.read.cache.EntityDumpExecutor;
-import io.fd.honeycomb.translate.vpp.util.JvppReplyConsumer;
-import io.fd.vpp.jvpp.core.dto.LispEidTableMapDetailsReplyDump;
-import io.fd.vpp.jvpp.core.dto.LispEidTableMapDump;
-import io.fd.vpp.jvpp.core.future.FutureJVppCore;
-import javax.annotation.Nonnull;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.eid.table.grouping.eid.table.vni.table.BridgeDomainSubtable;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.eid.table.grouping.eid.table.vni.table.VrfSubtable;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-
-/**
- * Dump executor for {@link VrfSubtable}/{@link BridgeDomainSubtable}
- */
-public final class SubtableDumpExecutor extends AbstractJvppDumpExecutor
-        implements EntityDumpExecutor<LispEidTableMapDetailsReplyDump, SubtableDumpParams>, JvppReplyConsumer {
-
-    public SubtableDumpExecutor(@Nonnull final FutureJVppCore vppApi) {
-        super(vppApi);
-    }
-
-    @Override
-    public LispEidTableMapDetailsReplyDump executeDump(final InstanceIdentifier<?> identifier,
-                                                       final SubtableDumpParams params)
-            throws ReadFailedException {
-        LispEidTableMapDump request = new LispEidTableMapDump();
-        request.isL2 = checkNotNull(params, "Cannot bind null params").isL2();
-
-        return getReplyForRead(vppApi.lispEidTableMapDump(request).toCompletableFuture(), identifier);
-    }
-
-}
diff --git a/lisp/lisp2vpp/src/main/java/io/fd/honeycomb/lisp/translate/read/dump/executor/VniTableDumpExecutor.java b/lisp/lisp2vpp/src/main/java/io/fd/honeycomb/lisp/translate/read/dump/executor/VniTableDumpExecutor.java
deleted file mode 100755 (executable)
index 200d47c..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (c) 2016 Cisco and/or its affiliates.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at:
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package io.fd.honeycomb.lisp.translate.read.dump.executor;
-
-
-import io.fd.honeycomb.translate.read.ReadFailedException;
-import io.fd.honeycomb.translate.util.read.cache.EntityDumpExecutor;
-import io.fd.honeycomb.translate.vpp.util.JvppReplyConsumer;
-import io.fd.vpp.jvpp.core.dto.LispEidTableVniDetailsReplyDump;
-import io.fd.vpp.jvpp.core.dto.LispEidTableVniDump;
-import io.fd.vpp.jvpp.core.future.FutureJVppCore;
-import javax.annotation.Nonnull;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-
-
-public class VniTableDumpExecutor extends AbstractJvppDumpExecutor
-        implements EntityDumpExecutor<LispEidTableVniDetailsReplyDump, Void>, JvppReplyConsumer {
-
-    public VniTableDumpExecutor(@Nonnull FutureJVppCore api) {
-        super(api);
-    }
-
-    @Override
-    public LispEidTableVniDetailsReplyDump executeDump(final InstanceIdentifier<?> identifier, Void params)
-            throws ReadFailedException {
-        return getReplyForRead(vppApi.lispEidTableVniDump(new LispEidTableVniDump()).toCompletableFuture(), identifier);
-    }
-}
index 1f7990c..d1af212 100755 (executable)
 
 package io.fd.honeycomb.lisp.translate.read.dump.executor.params;
 
-import io.fd.honeycomb.lisp.translate.read.dump.executor.MappingsDumpExecutor;
 import java.util.Arrays;
 
 /**
- * Parameters for executing {@link MappingsDumpExecutor}
+ * Parameters for executing dump of mappings
  */
 public final class MappingsDumpParams {
 
  * limitations under the License.
  */
 
-package io.fd.honeycomb.lisp.translate.read.dump.executor;
+package io.fd.honeycomb.lisp.translate.read.trait;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
 import io.fd.honeycomb.lisp.translate.read.dump.executor.params.LocatorDumpParams;
-import io.fd.honeycomb.translate.read.ReadFailedException;
 import io.fd.honeycomb.translate.util.read.cache.EntityDumpExecutor;
 import io.fd.honeycomb.translate.vpp.util.JvppReplyConsumer;
 import io.fd.vpp.jvpp.core.dto.LispLocatorDetailsReplyDump;
 import io.fd.vpp.jvpp.core.dto.LispLocatorDump;
 import io.fd.vpp.jvpp.core.future.FutureJVppCore;
 import javax.annotation.Nonnull;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-
 
 /**
- * Executor for dumping of locators
+ * Provides common logic for reading of locators
  */
-public class LocatorDumpExecutor extends AbstractJvppDumpExecutor
-        implements EntityDumpExecutor<LispLocatorDetailsReplyDump, LocatorDumpParams>, JvppReplyConsumer {
-
-
-    public LocatorDumpExecutor(@Nonnull final FutureJVppCore vppApi) {
-        super(vppApi);
-    }
-
-    @Override
-    @Nonnull
-    public LispLocatorDetailsReplyDump executeDump(final InstanceIdentifier<?> identifier,
-                                                   final LocatorDumpParams params) throws
-            ReadFailedException {
-        checkNotNull(params, "Params for dump request not present");
-
-        LispLocatorDump request = new LispLocatorDump();
-        request.lsIndex = params.getLocatorSetIndex();
-        //flag that lsIndex is set
-        request.isIndexSet = (byte) 1;
-
-        return getReplyForRead(vppApi.lispLocatorDump(request).toCompletableFuture(), identifier);
+public interface LocatorReader extends JvppReplyConsumer {
+
+    default EntityDumpExecutor<LispLocatorDetailsReplyDump, LocatorDumpParams> createLocatorDumpExecutor(
+            @Nonnull final FutureJVppCore vppApi) {
+        return (identifier, params) -> {
+            checkNotNull(params, "Params for dump request not present");
+            final LispLocatorDump request = new LispLocatorDump();
+            request.lsIndex = params.getLocatorSetIndex();
+            //flag that lsIndex is set
+            request.isIndexSet = (byte) 1;
+
+            return getReplyForRead(vppApi.lispLocatorDump(request).toCompletableFuture(), identifier);
+        };
     }
 }
  * limitations under the License.
  */
 
-package io.fd.honeycomb.lisp.translate.read.dump.executor;
+package io.fd.honeycomb.lisp.translate.read.trait;
 
-
-import io.fd.honeycomb.translate.read.ReadFailedException;
 import io.fd.honeycomb.translate.util.read.cache.EntityDumpExecutor;
 import io.fd.honeycomb.translate.vpp.util.JvppReplyConsumer;
 import io.fd.vpp.jvpp.core.dto.LispLocatorSetDetailsReplyDump;
 import io.fd.vpp.jvpp.core.dto.LispLocatorSetDump;
 import io.fd.vpp.jvpp.core.future.FutureJVppCore;
 import javax.annotation.Nonnull;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-
-
-public class LocatorSetsDumpExecutor extends AbstractJvppDumpExecutor
-        implements EntityDumpExecutor<LispLocatorSetDetailsReplyDump, Void>, JvppReplyConsumer {
-
-    public LocatorSetsDumpExecutor(@Nonnull FutureJVppCore api) {
-        super(api);
-    }
-
-    @Override
-    @Nonnull
-    public LispLocatorSetDetailsReplyDump executeDump(final InstanceIdentifier<?> identifier, final Void params)
-            throws ReadFailedException {
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.locator.sets.grouping.locator.sets.LocatorSet;
 
-        LispLocatorSetDump request = new LispLocatorSetDump();
-        //only local
-        request.filter = 1;
-
-        return getReplyForRead(vppApi.lispLocatorSetDump(request).toCompletableFuture(), identifier);
+/**
+ * Provides common logic for reading {@link LocatorSet}
+ */
+public interface LocatorSetReader extends JvppReplyConsumer {
+
+    default EntityDumpExecutor<LispLocatorSetDetailsReplyDump, Void> createExecutor(
+            @Nonnull final FutureJVppCore vppApi) {
+        return (identifier, params) -> {
+            final LispLocatorSetDump request = new LispLocatorSetDump();
+            //only local
+            request.filter = 1;
+            return getReplyForRead(vppApi.lispLocatorSetDump(request).toCompletableFuture(), identifier);
+        };
     }
 }
@@ -1,9 +1,17 @@
 package io.fd.honeycomb.lisp.translate.read.trait;
 
+import static com.google.common.base.Preconditions.checkNotNull;
 import static io.fd.honeycomb.lisp.translate.read.dump.executor.params.MappingsDumpParams.EidType.IPV4;
 import static io.fd.honeycomb.lisp.translate.read.dump.executor.params.MappingsDumpParams.EidType.IPV6;
 import static io.fd.honeycomb.lisp.translate.read.dump.executor.params.MappingsDumpParams.EidType.MAC;
 
+import io.fd.honeycomb.lisp.translate.read.dump.executor.params.MappingsDumpParams;
+import io.fd.honeycomb.translate.util.read.cache.EntityDumpExecutor;
+import io.fd.honeycomb.translate.vpp.util.JvppReplyConsumer;
+import io.fd.vpp.jvpp.core.dto.LispEidTableDetails;
+import io.fd.vpp.jvpp.core.dto.LispEidTableDetailsReplyDump;
+import io.fd.vpp.jvpp.core.dto.LispEidTableDump;
+import io.fd.vpp.jvpp.core.future.FutureJVppCore;
 import java.util.function.Predicate;
 import javax.annotation.Nonnull;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.dp.subtable.grouping.local.mappings.LocalMapping;
@@ -11,12 +19,11 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.eid.table.grouping.eid.table.vni.table.BridgeDomainSubtable;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.eid.table.grouping.eid.table.vni.table.VrfSubtable;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import io.fd.vpp.jvpp.core.dto.LispEidTableDetails;
 
 /**
  * Trait providing predicates to filter mappings to respective subtables
  */
-public interface MappingFilterProvider {
+public interface MappingReader extends JvppReplyConsumer {
 
     Predicate<LispEidTableDetails> BRIDGE_DOMAIN_MAPPINGS_ONLY =
             (LispEidTableDetails detail) -> detail.eidType == MAC.getValue();
@@ -47,4 +54,21 @@ public interface MappingFilterProvider {
             throw new IllegalArgumentException("Cannot determine mappings predicate for " + identifier);
         }
     }
+
+    default EntityDumpExecutor<LispEidTableDetailsReplyDump, MappingsDumpParams> createMappingDumpExecutor(
+            @Nonnull final FutureJVppCore vppApi) {
+        return (identifier, params) -> {
+            checkNotNull(params, "Params for dump request not present");
+
+            LispEidTableDump request = new LispEidTableDump();
+            request.eid = params.getEid();
+            request.eidSet = params.getEidSet();
+            request.eidType = params.getEidType();
+            request.prefixLength = params.getPrefixLength();
+            request.vni = params.getVni();
+            request.filter = params.getFilter();
+
+            return getReplyForRead(vppApi.lispEidTableDump(request).toCompletableFuture(), identifier);
+        };
+    }
 }
index a30e489..343e0e8 100644 (file)
@@ -17,6 +17,7 @@
 package io.fd.honeycomb.lisp.translate.read.trait;
 
 
+import static com.google.common.base.Preconditions.checkNotNull;
 import static io.fd.honeycomb.lisp.translate.read.dump.executor.params.SubtableDumpParams.MapLevel.L2;
 import static io.fd.honeycomb.lisp.translate.read.dump.executor.params.SubtableDumpParams.MapLevel.L3;
 import static io.fd.honeycomb.lisp.translate.read.dump.executor.params.SubtableDumpParams.SubtableDumpParamsBuilder;
@@ -26,7 +27,11 @@ import io.fd.honeycomb.lisp.translate.read.dump.executor.params.SubtableDumpPara
 import io.fd.honeycomb.translate.ModificationCache;
 import io.fd.honeycomb.translate.read.ReadFailedException;
 import io.fd.honeycomb.translate.util.read.cache.DumpCacheManager;
+import io.fd.honeycomb.translate.util.read.cache.EntityDumpExecutor;
+import io.fd.honeycomb.translate.vpp.util.JvppReplyConsumer;
 import io.fd.vpp.jvpp.core.dto.LispEidTableMapDetailsReplyDump;
+import io.fd.vpp.jvpp.core.dto.LispEidTableMapDump;
+import io.fd.vpp.jvpp.core.future.FutureJVppCore;
 import javax.annotation.Nonnull;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.eid.table.grouping.eid.table.VniTable;
 import org.opendaylight.yangtools.yang.binding.ChildOf;
@@ -35,7 +40,7 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 /**
  * Provides common logic for reading Eid subtables
  */
-public interface SubtableReader {
+public interface SubtableReader extends JvppReplyConsumer {
 
     SubtableDumpParams L2_PARAMS = new SubtableDumpParamsBuilder().setL2(L2).build();
     SubtableDumpParams L3_PARAMS = new SubtableDumpParamsBuilder().setL2(L3).build();
@@ -48,4 +53,13 @@ public interface SubtableReader {
             @Nonnull final SubtableDumpParams params) throws ReadFailedException {
         return dumpManager.getDump(id, cacheKey, cache, params);
     }
+
+    default EntityDumpExecutor<LispEidTableMapDetailsReplyDump, SubtableDumpParams> createExecutor(
+            @Nonnull final FutureJVppCore vppApi) {
+        return (identifier, params) -> {
+            final LispEidTableMapDump request = new LispEidTableMapDump();
+            request.isL2 = checkNotNull(params, "Cannot bind null params").isL2();
+            return getReplyForRead(vppApi.lispEidTableMapDump(request).toCompletableFuture(), identifier);
+        };
+    }
 }
index f64eda8..6e15315 100755 (executable)
@@ -21,7 +21,7 @@ import static com.google.common.base.Preconditions.checkState;
 import static java.nio.charset.StandardCharsets.UTF_8;
 
 import com.google.common.base.Optional;
-import io.fd.honeycomb.lisp.translate.read.dump.executor.LocatorSetsDumpExecutor;
+import io.fd.honeycomb.lisp.translate.read.trait.LocatorSetReader;
 import io.fd.honeycomb.translate.ModificationCache;
 import io.fd.honeycomb.translate.read.ReadFailedException;
 import io.fd.honeycomb.translate.spi.write.ListWriterCustomizer;
@@ -30,7 +30,6 @@ import io.fd.honeycomb.translate.util.read.cache.DumpCacheManager;
 import io.fd.honeycomb.translate.util.read.cache.EntityDumpExecutor;
 import io.fd.honeycomb.translate.vpp.util.ByteDataTranslator;
 import io.fd.honeycomb.translate.vpp.util.FutureJVppCustomizer;
-import io.fd.honeycomb.translate.vpp.util.JvppReplyConsumer;
 import io.fd.honeycomb.translate.vpp.util.NamingContext;
 import io.fd.honeycomb.translate.write.WriteContext;
 import io.fd.honeycomb.translate.write.WriteFailedException;
@@ -55,7 +54,7 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
  */
 public class LocatorSetCustomizer extends FutureJVppCustomizer
         implements ListWriterCustomizer<LocatorSet, LocatorSetKey>, ByteDataTranslator,
-        JvppReplyConsumer {
+        LocatorSetReader {
 
     private final NamingContext locatorSetContext;
     private final DumpCacheManager<LispLocatorSetDetailsReplyDump, Void> dumpManager;
@@ -65,7 +64,7 @@ public class LocatorSetCustomizer extends FutureJVppCustomizer
         super(futureJvpp);
         this.locatorSetContext = checkNotNull(locatorSetContext, "Locator set context cannot be null");
         this.dumpManager = new DumpCacheManager.DumpCacheManagerBuilder<LispLocatorSetDetailsReplyDump, Void>()
-                .withExecutor(new LocatorSetsDumpExecutor(futureJvpp))
+                .withExecutor(createExecutor(futureJvpp))
                 .build();
     }
 
diff --git a/lisp/lisp2vpp/src/test/java/io/fd/honeycomb/lisp/translate/read/dump/executor/LocatorDumpExecutorTest.java b/lisp/lisp2vpp/src/test/java/io/fd/honeycomb/lisp/translate/read/dump/executor/LocatorDumpExecutorTest.java
deleted file mode 100644 (file)
index c2cd994..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-package io.fd.honeycomb.lisp.translate.read.dump.executor;
-
-
-import static io.fd.honeycomb.lisp.translate.read.dump.executor.params.LocatorDumpParams.LocatorDumpParamsBuilder;
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-
-import com.google.common.collect.ImmutableList;
-import io.fd.honeycomb.lisp.translate.read.dump.executor.params.LocatorDumpParams;
-import io.fd.honeycomb.translate.read.ReadFailedException;
-import io.fd.honeycomb.vpp.test.read.JvppDumpExecutorTest;
-import io.fd.vpp.jvpp.VppCallbackException;
-import io.fd.vpp.jvpp.core.dto.LispLocatorDetails;
-import io.fd.vpp.jvpp.core.dto.LispLocatorDetailsReplyDump;
-import io.fd.vpp.jvpp.core.dto.LispLocatorDump;
-import java.util.concurrent.TimeoutException;
-import org.junit.Before;
-import org.junit.Test;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Captor;
-import org.mockito.Mockito;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.locator.sets.grouping.locator.sets.LocatorSet;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-
-
-public class LocatorDumpExecutorTest extends JvppDumpExecutorTest<LocatorDumpExecutor> {
-
-    @Captor
-    private ArgumentCaptor<LispLocatorDump> requestCaptor;
-
-    private InstanceIdentifier identifier;
-    private LispLocatorDetailsReplyDump validDump;
-
-    @Before
-    public void init() {
-        identifier = InstanceIdentifier.create(LocatorSet.class);
-        validDump = new LispLocatorDetailsReplyDump();
-        LispLocatorDetails detail = new LispLocatorDetails();
-
-        detail.swIfIndex = 1;
-        detail.priority = 2;
-        detail.local = 1;
-        detail.weight = 3;
-        detail.isIpv6 = 0;
-        detail.context = 8;
-        detail.ipAddress = new byte[]{-64, -88, 4, 2};
-
-        validDump.lispLocatorDetails = ImmutableList.of(detail);
-    }
-
-    @Test
-    public void testExecuteDumpTimeout() throws Exception {
-        doThrowTimeoutExceptionWhen().lispLocatorDump(Mockito.any());
-        try {
-            getExecutor().executeDump(identifier, new LocatorDumpParamsBuilder().build());
-        } catch (Exception e) {
-            assertTrue(e instanceof ReadFailedException);
-            assertTrue(e.getCause() instanceof TimeoutException);
-            assertEquals(identifier, ((ReadFailedException) e).getFailedId());
-            return;
-        }
-        fail("Test should have thrown exception");
-    }
-
-    @Test
-    public void testExecuteDumpHalted() throws ReadFailedException {
-        doThrowFailExceptionWhen().lispLocatorDump(Mockito.any());
-        try {
-            getExecutor().executeDump(identifier, new LocatorDumpParamsBuilder().build());
-        } catch (ReadFailedException e) {
-            assertTrue(e.getCause() instanceof VppCallbackException);
-            assertEquals(identifier, ((ReadFailedException) e).getFailedId());
-            return;
-        }
-        fail("Test should have thrown ReadFailedException");
-    }
-
-    @Test
-    public void testExecuteDump() throws ReadFailedException {
-        doReturnResponseWhen(validDump).lispLocatorDump(Mockito.any());
-
-        final LocatorDumpParams params = new LocatorDumpParamsBuilder().setLocatorSetIndex(5).build();
-
-        final LispLocatorDetailsReplyDump reply = getExecutor().executeDump(identifier, params);
-        verify(api, times(1)).lispLocatorDump(requestCaptor.capture());
-
-        final LispLocatorDump request = requestCaptor.getValue();
-
-        //check passed params
-        assertNotNull(request);
-        assertEquals(5, request.lsIndex);
-
-        //check result
-        assertNotNull(reply);
-        assertEquals(1, reply.lispLocatorDetails.size());
-
-        final LispLocatorDetails details = reply.lispLocatorDetails.get(0);
-        assertEquals(1, details.swIfIndex);
-        assertEquals(2, details.priority);
-        assertEquals(1, details.local);
-        assertEquals(3, details.weight);
-        assertEquals(0, details.isIpv6);
-        assertEquals(8, details.context);
-        assertArrayEquals(new byte[]{-64, -88, 4, 2}, details.ipAddress);
-    }
-
-    @Override
-    protected LocatorDumpExecutor initExecutor() {
-        return new LocatorDumpExecutor(api);
-    }
-}
\ No newline at end of file
diff --git a/lisp/lisp2vpp/src/test/java/io/fd/honeycomb/lisp/translate/read/dump/executor/LocatorSetsDumpExecutorTest.java b/lisp/lisp2vpp/src/test/java/io/fd/honeycomb/lisp/translate/read/dump/executor/LocatorSetsDumpExecutorTest.java
deleted file mode 100644 (file)
index 3b47e9b..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-package io.fd.honeycomb.lisp.translate.read.dump.executor;
-
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-import static org.mockito.Mockito.any;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-
-import com.google.common.collect.ImmutableList;
-import io.fd.honeycomb.translate.read.ReadFailedException;
-import io.fd.honeycomb.translate.util.read.cache.EntityDumpExecutor;
-import io.fd.honeycomb.vpp.test.read.JvppDumpExecutorTest;
-import io.fd.vpp.jvpp.core.dto.LispLocatorSetDetails;
-import io.fd.vpp.jvpp.core.dto.LispLocatorSetDetailsReplyDump;
-import io.fd.vpp.jvpp.core.dto.LispLocatorSetDump;
-import java.nio.charset.StandardCharsets;
-import java.util.concurrent.TimeoutException;
-import org.junit.Before;
-import org.junit.Test;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Captor;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.locator.sets.grouping.locator.sets.LocatorSet;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-
-
-public class LocatorSetsDumpExecutorTest extends JvppDumpExecutorTest<LocatorSetsDumpExecutor> {
-
-    public static final byte[] LOCATOR_SET_NAME_BYTES = "loc-set".getBytes(StandardCharsets.UTF_8);
-
-    private LispLocatorSetDetailsReplyDump validDump;
-
-    @Captor
-    private ArgumentCaptor<LispLocatorSetDump> requestCaptor;
-
-    private InstanceIdentifier identifier;
-
-    @Before
-    public void init() {
-        identifier = InstanceIdentifier.create(LocatorSet.class);
-        validDump = new LispLocatorSetDetailsReplyDump();
-        LispLocatorSetDetails detail = new LispLocatorSetDetails();
-        detail.lsIndex = 2;
-        detail.lsName = LOCATOR_SET_NAME_BYTES;
-        detail.context = 4;
-
-        validDump.lispLocatorSetDetails = ImmutableList.of(detail);
-    }
-
-    @Test
-    public void testExecuteDumpTimeout() throws Exception {
-        doThrowTimeoutExceptionWhen().lispLocatorSetDump(any());
-        try {
-            getExecutor().executeDump(identifier, EntityDumpExecutor.NO_PARAMS);
-        } catch (Exception e) {
-            assertTrue(e instanceof ReadFailedException);
-            assertTrue(e.getCause() instanceof TimeoutException);
-            return;
-        }
-        fail("Test should have thrown exception");
-    }
-
-    @Test(expected = ReadFailedException.class)
-    public void testExecuteDumpHalted() throws ReadFailedException {
-        doThrowFailExceptionWhen().lispLocatorSetDump(any());
-        getExecutor().executeDump(identifier, EntityDumpExecutor.NO_PARAMS);
-    }
-
-    @Test
-    public void testExecuteDump() throws ReadFailedException {
-        doReturnResponseWhen(validDump).lispLocatorSetDump(any());
-
-        final LispLocatorSetDetailsReplyDump replyDump =
-                getExecutor().executeDump(identifier, EntityDumpExecutor.NO_PARAMS);
-        verify(api, times(1)).lispLocatorSetDump(requestCaptor.capture());
-
-        final LispLocatorSetDump request = requestCaptor.getValue();
-
-        assertNotNull(request);
-        assertEquals(1, request.filter);
-
-        assertNotNull(replyDump);
-        assertNotNull(replyDump.lispLocatorSetDetails);
-        assertEquals(1, replyDump.lispLocatorSetDetails.size());
-        final LispLocatorSetDetails detail = replyDump.lispLocatorSetDetails.get(0);
-
-        assertNotNull(detail);
-        assertEquals(4, detail.context);
-        assertEquals(2, detail.lsIndex);
-        assertEquals(LOCATOR_SET_NAME_BYTES, detail.lsName);
-    }
-
-    @Override
-    protected LocatorSetsDumpExecutor initExecutor() {
-        return new LocatorSetsDumpExecutor(api);
-    }
-}
\ No newline at end of file
diff --git a/lisp/lisp2vpp/src/test/java/io/fd/honeycomb/lisp/translate/read/dump/executor/MapResolversDumpExecutorTest.java b/lisp/lisp2vpp/src/test/java/io/fd/honeycomb/lisp/translate/read/dump/executor/MapResolversDumpExecutorTest.java
deleted file mode 100644 (file)
index a3c6cbe..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-package io.fd.honeycomb.lisp.translate.read.dump.executor;
-
-
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import com.google.common.collect.ImmutableList;
-import io.fd.honeycomb.translate.read.ReadFailedException;
-import io.fd.honeycomb.translate.util.read.cache.EntityDumpExecutor;
-import io.fd.honeycomb.vpp.test.read.JvppDumpExecutorTest;
-import io.fd.vpp.jvpp.VppCallbackException;
-import io.fd.vpp.jvpp.core.dto.LispMapResolverDetails;
-import io.fd.vpp.jvpp.core.dto.LispMapResolverDetailsReplyDump;
-import java.util.concurrent.TimeoutException;
-import org.junit.Before;
-import org.junit.Test;
-import org.mockito.Mockito;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.map.resolvers.grouping.map.resolvers.MapResolver;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-
-
-public class MapResolversDumpExecutorTest extends JvppDumpExecutorTest<MapResolversDumpExecutor> {
-
-    private LispMapResolverDetailsReplyDump validDump;
-
-    private InstanceIdentifier identifier;
-
-    @Before
-    public void init() {
-        identifier = InstanceIdentifier.create(MapResolver.class);
-        validDump = new LispMapResolverDetailsReplyDump();
-        final LispMapResolverDetails details = new LispMapResolverDetails();
-        details.isIpv6 = 0;
-        details.ipAddress = new byte[]{-64, -88, 5, 4};
-        details.context = 7;
-
-        validDump.lispMapResolverDetails = ImmutableList.of(details);
-    }
-
-    @Test
-    public void testExecuteDumpTimeout() throws Exception {
-        doThrowTimeoutExceptionWhen().lispMapResolverDump(Mockito.any());
-        try {
-            getExecutor().executeDump(identifier, EntityDumpExecutor.NO_PARAMS);
-        } catch (ReadFailedException e) {
-            assertTrue(e.getCause() instanceof TimeoutException);
-            assertEquals(identifier, ((ReadFailedException) e).getFailedId());
-            return;
-        }
-        fail("Test should have thrown ReadFailedException");
-    }
-
-    @Test
-    public void testExecuteDumpHalted() throws ReadFailedException {
-        doThrowFailExceptionWhen().lispMapResolverDump(Mockito.any());
-        try {
-            getExecutor().executeDump(identifier, EntityDumpExecutor.NO_PARAMS);
-        } catch (ReadFailedException e) {
-            assertTrue(e.getCause() instanceof VppCallbackException);
-            assertEquals(identifier, ((ReadFailedException) e).getFailedId());
-            return;
-        }
-        fail("Test should have thrown ReadFailedException");
-    }
-
-    @Test
-    public void testExecuteDump() throws ReadFailedException {
-        doReturnResponseWhen(validDump).lispMapResolverDump(Mockito.any());
-        final LispMapResolverDetailsReplyDump reply =
-                getExecutor().executeDump(identifier, EntityDumpExecutor.NO_PARAMS);
-
-        assertNotNull(reply);
-        assertEquals(1, reply.lispMapResolverDetails.size());
-
-        final LispMapResolverDetails detail = reply.lispMapResolverDetails.get(0);
-        assertEquals(7, detail.context);
-        assertEquals(0, detail.isIpv6);
-        assertArrayEquals(new byte[]{-64, -88, 5, 4}, detail.ipAddress);
-    }
-
-    @Override
-    protected MapResolversDumpExecutor initExecutor() {
-        return new MapResolversDumpExecutor(api);
-    }
-}
\ No newline at end of file
diff --git a/lisp/lisp2vpp/src/test/java/io/fd/honeycomb/lisp/translate/read/dump/executor/MappingsDumpExecutorTest.java b/lisp/lisp2vpp/src/test/java/io/fd/honeycomb/lisp/translate/read/dump/executor/MappingsDumpExecutorTest.java
deleted file mode 100644 (file)
index 6c1ccfa..0000000
+++ /dev/null
@@ -1,133 +0,0 @@
-package io.fd.honeycomb.lisp.translate.read.dump.executor;
-
-import static io.fd.honeycomb.lisp.translate.read.dump.executor.params.MappingsDumpParams.EidType;
-import static io.fd.honeycomb.lisp.translate.read.dump.executor.params.MappingsDumpParams.FilterType;
-import static io.fd.honeycomb.lisp.translate.read.dump.executor.params.MappingsDumpParams.MappingsDumpParamsBuilder;
-import static io.fd.honeycomb.lisp.translate.read.dump.executor.params.MappingsDumpParams.QuantityType;
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-
-import com.google.common.collect.ImmutableList;
-import io.fd.honeycomb.lisp.translate.read.dump.executor.params.MappingsDumpParams;
-import io.fd.honeycomb.translate.read.ReadFailedException;
-import io.fd.honeycomb.vpp.test.read.JvppDumpExecutorTest;
-import io.fd.vpp.jvpp.VppCallbackException;
-import io.fd.vpp.jvpp.core.dto.LispEidTableDetails;
-import io.fd.vpp.jvpp.core.dto.LispEidTableDetailsReplyDump;
-import io.fd.vpp.jvpp.core.dto.LispEidTableDump;
-import java.util.concurrent.TimeoutException;
-import org.junit.Before;
-import org.junit.Test;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Captor;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.dp.subtable.grouping.local.mappings.LocalMapping;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-
-public class MappingsDumpExecutorTest extends JvppDumpExecutorTest<MappingsDumpExecutor> {
-
-    private static final byte[] EID = {-64, -88, 2, 1};
-
-    @Captor
-    private ArgumentCaptor<LispEidTableDump> requestCaptor;
-
-    private InstanceIdentifier identifier;
-
-    private LispEidTableDetailsReplyDump validDump;
-    private MappingsDumpParams emptyParams;
-    private MappingsDumpParams validParams;
-
-    @Before
-    public void init() {
-        identifier = InstanceIdentifier.create(LocalMapping.class);
-        validDump = new LispEidTableDetailsReplyDump();
-
-        LispEidTableDetails detail = new LispEidTableDetails();
-        detail.action = 0;
-        detail.authoritative = 1;
-        detail.context = 4;
-        detail.eid = new byte[]{-64, -88, 2, 1};
-        detail.eidPrefixLen = 32;
-        detail.isLocal = 1;
-        detail.locatorSetIndex = 2;
-        detail.ttl = 7;
-        detail.vni = 2;
-
-        validDump.lispEidTableDetails = ImmutableList.of(detail);
-
-        emptyParams = MappingsDumpParamsBuilder.newInstance().build();
-        validParams =
-                MappingsDumpParamsBuilder.newInstance().setVni(2).setPrefixLength((byte) 32).setEidSet(QuantityType.ALL)
-                        .setEid(EID)
-                        .setEidType(EidType.IPV4).setFilter(FilterType.LOCAL).build();
-    }
-
-    @Test
-    public void testExecuteDumpTimeout() throws Exception {
-        doThrowTimeoutExceptionWhen().lispEidTableDump(any());
-        try {
-            getExecutor().executeDump(identifier, emptyParams);
-        } catch (Exception e) {
-            assertTrue(e instanceof ReadFailedException);
-            assertTrue(e.getCause() instanceof TimeoutException);
-            assertEquals(identifier, ((ReadFailedException) e).getFailedId());
-            return;
-        }
-        fail("Test should have thrown exception");
-    }
-
-    @Test
-    public void testExecuteDumpHalted() throws Exception {
-        doThrowFailExceptionWhen().lispEidTableDump(any());
-        try {
-            getExecutor().executeDump(identifier, emptyParams);
-        } catch (ReadFailedException e) {
-            assertTrue(e.getCause() instanceof VppCallbackException);
-            assertEquals(identifier, ((ReadFailedException) e).getFailedId());
-            return;
-        }
-        fail("Test should have thrown ReadFailedException");
-    }
-
-    @Test
-    public void testExecuteDump() throws ReadFailedException {
-        doReturnResponseWhen(validDump).lispEidTableDump(any());
-        final LispEidTableDetailsReplyDump reply = getExecutor().executeDump(identifier, validParams);
-        verify(api, times(1)).lispEidTableDump(requestCaptor.capture());
-
-        final LispEidTableDump request = requestCaptor.getValue();
-        assertNotNull(request);
-        assertEquals(2, request.vni);
-        assertEquals(QuantityType.ALL.getValue(), request.eidSet);
-        assertArrayEquals(EID, request.eid);
-        assertEquals(EidType.IPV4.getValue(), request.eidType);
-        assertEquals(FilterType.LOCAL.getValue(), request.filter);
-        assertEquals(32, request.prefixLength);
-
-        assertNotNull(reply);
-        assertEquals(1, reply.lispEidTableDetails.size());
-
-        final LispEidTableDetails detail = reply.lispEidTableDetails.get(0);
-
-        assertNotNull(detail);
-        assertEquals(0, detail.action);
-        assertEquals(1, detail.authoritative);
-        assertEquals(4, detail.context);
-        assertArrayEquals(EID, detail.eid);
-        assertEquals(32, detail.eidPrefixLen);
-        assertEquals(1, detail.isLocal);
-        assertEquals(2, detail.locatorSetIndex);
-        assertEquals(7, detail.ttl);
-        assertEquals(2, detail.vni);
-    }
-
-    @Override
-    protected MappingsDumpExecutor initExecutor() {
-        return new MappingsDumpExecutor(api);
-    }
-}
\ No newline at end of file
diff --git a/lisp/lisp2vpp/src/test/java/io/fd/honeycomb/lisp/translate/read/dump/executor/VniTableDumpExecutorTest.java b/lisp/lisp2vpp/src/test/java/io/fd/honeycomb/lisp/translate/read/dump/executor/VniTableDumpExecutorTest.java
deleted file mode 100644 (file)
index 305fa96..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-package io.fd.honeycomb.lisp.translate.read.dump.executor;
-
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import com.google.common.collect.ImmutableList;
-import io.fd.honeycomb.translate.read.ReadFailedException;
-import io.fd.honeycomb.translate.util.read.cache.EntityDumpExecutor;
-import io.fd.honeycomb.vpp.test.read.JvppDumpExecutorTest;
-import io.fd.vpp.jvpp.VppCallbackException;
-import io.fd.vpp.jvpp.core.dto.LispEidTableVniDetails;
-import io.fd.vpp.jvpp.core.dto.LispEidTableVniDetailsReplyDump;
-import java.util.concurrent.TimeoutException;
-import org.junit.Before;
-import org.junit.Test;
-import org.mockito.Mockito;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.eid.table.grouping.eid.table.VniTable;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-
-
-public class VniTableDumpExecutorTest extends JvppDumpExecutorTest<VniTableDumpExecutor> {
-
-    private LispEidTableVniDetailsReplyDump validDump;
-    private InstanceIdentifier<VniTable> identifier;
-
-    @Before
-    public void init() {
-        validDump = new LispEidTableVniDetailsReplyDump();
-        identifier = InstanceIdentifier.create(VniTable.class);
-        LispEidTableVniDetails detail = new LispEidTableVniDetails();
-        detail.vni = 2;
-        detail.context = 4;
-        validDump.lispEidTableVniDetails = ImmutableList.of(detail);
-    }
-
-    @Test
-    public void testExecuteDumpFail() throws Exception {
-        doThrowFailExceptionWhen().lispEidTableVniDump(Mockito.any());
-        try {
-            getExecutor().executeDump(identifier, EntityDumpExecutor.NO_PARAMS);
-        } catch (ReadFailedException e) {
-            assertTrue(e.getCause() instanceof VppCallbackException);
-            return;
-        }
-
-        fail("Test should have thrown ReadFailedException");
-    }
-
-    @Test
-    public void testExecuteDumpTimeout() throws Exception {
-        doThrowTimeoutExceptionWhen().lispEidTableVniDump(Mockito.any());
-        try {
-            getExecutor().executeDump(identifier, EntityDumpExecutor.NO_PARAMS);
-        } catch (ReadFailedException e) {
-            assertTrue(e.getCause() instanceof TimeoutException);
-            return;
-        }
-        fail("Test should have thrown ReadFailedException");
-    }
-
-    @Test
-    public void testExecuteDump() throws Exception {
-
-        doReturnResponseWhen(validDump).lispEidTableVniDump(Mockito.any());
-        final LispEidTableVniDetailsReplyDump reply =
-                getExecutor().executeDump(identifier, EntityDumpExecutor.NO_PARAMS);
-
-        assertNotNull(reply);
-        assertEquals(1, reply.lispEidTableVniDetails.size());
-        final LispEidTableVniDetails detail = reply.lispEidTableVniDetails.get(0);
-
-        assertEquals(4, detail.context);
-        assertEquals(2, detail.vni);
-    }
-
-    @Override
-    protected VniTableDumpExecutor initExecutor() {
-        return new VniTableDumpExecutor(api);
-    }
-}
\ No newline at end of file
@@ -13,7 +13,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.eid.table.grouping.eid.table.vni.table.VrfSubtable;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 
-public class MappingFilterProviderTest implements MappingFilterProvider {
+public class MappingReaderTest implements MappingReader {
 
     private InstanceIdentifier<LocalMapping> validVrfLocal;
     private InstanceIdentifier<LocalMapping> validBdLocal;
index f07ef3d..23e8eac 100644 (file)
@@ -23,7 +23,6 @@ import io.fd.honeycomb.translate.read.ReadContext;
 import io.fd.honeycomb.translate.read.ReadFailedException;
 import io.fd.honeycomb.translate.spi.read.ListReaderCustomizer;
 import io.fd.honeycomb.translate.util.read.cache.DumpCacheManager;
-import io.fd.honeycomb.translate.v3po.interfacesstate.ip.dump.AddressDumpExecutor;
 import io.fd.honeycomb.translate.v3po.interfacesstate.ip.dump.params.AddressDumpParams;
 import io.fd.honeycomb.translate.vpp.util.FutureJVppCustomizer;
 import io.fd.honeycomb.translate.vpp.util.NamingContext;
@@ -61,7 +60,7 @@ public class Ipv4AddressCustomizer extends FutureJVppCustomizer
         super(futureJVppCore);
         this.interfaceContext = checkNotNull(interfaceContext, "interfaceContext should not be null");
         this.dumpManager = new DumpCacheManager.DumpCacheManagerBuilder<IpAddressDetailsReplyDump, AddressDumpParams>()
-                .withExecutor(new AddressDumpExecutor(futureJVppCore))
+                .withExecutor(createExecutor(futureJVppCore))
                 .build();
     }
 
index 383cb42..a5d13bb 100644 (file)
@@ -20,8 +20,12 @@ import static com.google.common.base.Preconditions.checkNotNull;
 
 import com.google.common.base.Optional;
 import io.fd.honeycomb.translate.util.RWUtils;
+import io.fd.honeycomb.translate.util.read.cache.EntityDumpExecutor;
+import io.fd.honeycomb.translate.v3po.interfacesstate.ip.dump.params.AddressDumpParams;
 import io.fd.honeycomb.translate.vpp.util.Ipv4Translator;
 import io.fd.honeycomb.translate.vpp.util.JvppReplyConsumer;
+import io.fd.vpp.jvpp.core.dto.IpAddressDump;
+import io.fd.vpp.jvpp.core.future.FutureJVppCore;
 import java.util.Collections;
 import java.util.List;
 import java.util.function.Function;
@@ -65,4 +69,16 @@ interface Ipv4Reader extends Ipv4Translator, JvppReplyConsumer {
         return Optional.absent();
     }
 
+    default EntityDumpExecutor<IpAddressDetailsReplyDump, AddressDumpParams> createExecutor(
+            @Nonnull final FutureJVppCore vppApi) {
+        return (identifier, params) -> {
+            checkNotNull(params, "Address dump params cannot be null");
+
+            final IpAddressDump dumpRequest = new IpAddressDump();
+            dumpRequest.isIpv6 = booleanToByte(params.isIpv6());
+            dumpRequest.swIfIndex = params.getInterfaceIndex();
+
+            return getReplyForRead(vppApi.ipAddressDump(dumpRequest).toCompletableFuture(), identifier);
+        };
+    }
 }
index f7ab6d8..8eb2c92 100644 (file)
@@ -23,7 +23,6 @@ import io.fd.honeycomb.translate.read.ReadContext;
 import io.fd.honeycomb.translate.read.ReadFailedException;
 import io.fd.honeycomb.translate.spi.read.ListReaderCustomizer;
 import io.fd.honeycomb.translate.util.read.cache.DumpCacheManager;
-import io.fd.honeycomb.translate.v3po.interfacesstate.ip.dump.AddressDumpExecutor;
 import io.fd.honeycomb.translate.v3po.interfacesstate.ip.dump.params.AddressDumpParams;
 import io.fd.honeycomb.translate.vpp.util.FutureJVppCustomizer;
 import io.fd.honeycomb.translate.vpp.util.NamingContext;
@@ -63,7 +62,7 @@ public class SubInterfaceIpv4AddressCustomizer extends FutureJVppCustomizer
         super(futureJVppCore);
         this.interfaceContext = checkNotNull(interfaceContext, "interfaceContext should not be null");
         this.dumpManager = new DumpCacheManager.DumpCacheManagerBuilder<IpAddressDetailsReplyDump, AddressDumpParams>()
-                .withExecutor(new AddressDumpExecutor(futureJVppCore))
+                .withExecutor(createExecutor(futureJVppCore))
                 .build();
     }
 
diff --git a/v3po/v3po2vpp/src/main/java/io/fd/honeycomb/translate/v3po/interfacesstate/ip/dump/AddressDumpExecutor.java b/v3po/v3po2vpp/src/main/java/io/fd/honeycomb/translate/v3po/interfacesstate/ip/dump/AddressDumpExecutor.java
deleted file mode 100644 (file)
index 764717d..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-package io.fd.honeycomb.translate.v3po.interfacesstate.ip.dump;
-
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import io.fd.honeycomb.translate.read.ReadFailedException;
-import io.fd.honeycomb.translate.util.read.cache.EntityDumpExecutor;
-import io.fd.honeycomb.translate.v3po.interfacesstate.ip.dump.params.AddressDumpParams;
-import io.fd.honeycomb.translate.vpp.util.ByteDataTranslator;
-import io.fd.honeycomb.translate.vpp.util.JvppReplyConsumer;
-import io.fd.vpp.jvpp.core.dto.IpAddressDetailsReplyDump;
-import io.fd.vpp.jvpp.core.dto.IpAddressDump;
-import io.fd.vpp.jvpp.core.future.FutureJVppCore;
-import javax.annotation.Nonnull;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-
-public class AddressDumpExecutor
-        implements EntityDumpExecutor<IpAddressDetailsReplyDump, AddressDumpParams>, ByteDataTranslator,
-        JvppReplyConsumer {
-
-    private FutureJVppCore vppApi;
-
-    public AddressDumpExecutor(@Nonnull final FutureJVppCore vppApi) {
-        this.vppApi = checkNotNull(vppApi, "Vpp api refference cannot be null");
-    }
-
-    @Override
-    @Nonnull
-    public IpAddressDetailsReplyDump executeDump(final InstanceIdentifier<?> identifier, final AddressDumpParams params)
-            throws ReadFailedException {
-        checkNotNull(params, "Address dump params cannot be null");
-
-        IpAddressDump dumpRequest = new IpAddressDump();
-        dumpRequest.isIpv6 = booleanToByte(params.isIpv6());
-        dumpRequest.swIfIndex = params.getInterfaceIndex();
-
-        return getReplyForRead(vppApi.ipAddressDump(dumpRequest).toCompletableFuture(), identifier);
-    }
-}