HONEYCOMB-252 - Reduced scope of dump executors
[honeycomb.git] / lisp / lisp2vpp / src / main / java / io / fd / honeycomb / lisp / translate / read / LocatorSetCustomizer.java
index 52b3381..bacdd55 100755 (executable)
 package io.fd.honeycomb.lisp.translate.read;
 
 import static com.google.common.base.Preconditions.checkNotNull;
-import static io.fd.honeycomb.translate.v3po.util.cache.EntityDumpExecutor.NO_PARAMS;
+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.check.LocatorSetsDumpCheck;
-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;
-import io.fd.honeycomb.translate.v3po.util.FutureJVppCustomizer;
-import io.fd.honeycomb.translate.v3po.util.NamingContext;
-import io.fd.honeycomb.translate.v3po.util.TranslateUtils;
-import io.fd.honeycomb.translate.v3po.util.cache.DumpCacheManager;
-import io.fd.honeycomb.translate.v3po.util.cache.exceptions.execution.DumpExecutionFailedException;
+import io.fd.honeycomb.translate.util.read.cache.DumpCacheManager;
+import io.fd.honeycomb.translate.vpp.util.ByteDataTranslator;
+import io.fd.honeycomb.translate.vpp.util.FutureJVppCustomizer;
+import io.fd.honeycomb.translate.vpp.util.NamingContext;
+import io.fd.vpp.jvpp.core.dto.LispLocatorSetDetails;
+import io.fd.vpp.jvpp.core.dto.LispLocatorSetDetailsReplyDump;
+import io.fd.vpp.jvpp.core.future.FutureJVppCore;
 import java.util.Collections;
 import java.util.List;
 import java.util.stream.Collectors;
 import javax.annotation.Nonnull;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev160520.locator.sets.grouping.LocatorSetsBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev160520.locator.sets.grouping.locator.sets.LocatorSet;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev160520.locator.sets.grouping.locator.sets.LocatorSetBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev160520.locator.sets.grouping.locator.sets.LocatorSetKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.locator.sets.grouping.LocatorSetsBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.locator.sets.grouping.locator.sets.LocatorSet;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.locator.sets.grouping.locator.sets.LocatorSetBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.locator.sets.grouping.locator.sets.LocatorSetKey;
 import org.opendaylight.yangtools.concepts.Builder;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.openvpp.jvpp.core.dto.LispLocatorSetDetails;
-import org.openvpp.jvpp.core.dto.LispLocatorSetDetailsReplyDump;
-import org.openvpp.jvpp.core.future.FutureJVppCore;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 public class LocatorSetCustomizer extends FutureJVppCustomizer
-        implements ListReaderCustomizer<LocatorSet, LocatorSetKey, LocatorSetBuilder> {
+        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();
@@ -62,8 +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))
-                .withNonEmptyPredicate(new LocatorSetsDumpCheck())
+                .withExecutor(createExecutor(futureJvpp))
                 .build();
     }
 
@@ -77,15 +75,10 @@ public class LocatorSetCustomizer extends FutureJVppCustomizer
             throws ReadFailedException {
         LOG.debug("Reading attributes for Locator Set {}", id);
 
-        Optional<LispLocatorSetDetailsReplyDump> dumpOptional;
+        final Optional<LispLocatorSetDetailsReplyDump> dumpOptional =
+                dumpManager.getDump(id, LOCATOR_SETS_CACHE_ID, ctx.getModificationCache(), NO_PARAMS);
 
-        try {
-            dumpOptional = dumpManager.getDump(LOCATOR_SETS_CACHE_ID, ctx.getModificationCache(), NO_PARAMS);
-        } catch (DumpExecutionFailedException e) {
-            throw new ReadFailedException(id, e);
-        }
-        if (!dumpOptional.isPresent()) {
-            LOG.warn("No dump present for Locator Set {}", id);
+        if (!dumpOptional.isPresent() || dumpOptional.get().lispLocatorSetDetails.isEmpty()) {
             return;
         }
 
@@ -93,11 +86,11 @@ public class LocatorSetCustomizer extends FutureJVppCustomizer
         LispLocatorSetDetailsReplyDump dump = dumpOptional.get();
 
         java.util.Optional<LispLocatorSetDetails> details = dump.lispLocatorSetDetails.stream()
-                .filter(n -> keyName.equals(TranslateUtils.toString(n.locatorSetName)))
+                .filter(n -> keyName.equals(toString(n.lsName)))
                 .findFirst();
 
         if (details.isPresent()) {
-            final String name = TranslateUtils.toString(details.get().locatorSetName);
+            final String name = toString(details.get().lsName);
 
             builder.setName(name);
             builder.setKey(new LocatorSetKey(name));
@@ -111,37 +104,31 @@ public class LocatorSetCustomizer extends FutureJVppCustomizer
             throws ReadFailedException {
         LOG.debug("Dumping Locator Set {}", id);
 
-        Optional<LispLocatorSetDetailsReplyDump> dumpOptional = null;
-        try {
-            dumpOptional = dumpManager.getDump(LOCATOR_SETS_CACHE_ID, context.getModificationCache(), NO_PARAMS);
-        } catch (DumpExecutionFailedException e) {
-            LOG.error("Error dumping Locator Set {}", e, id);
-            return Collections.emptyList();
-        }
+        final Optional<LispLocatorSetDetailsReplyDump> dumpOptional =
+                dumpManager.getDump(id, LOCATOR_SETS_CACHE_ID, context.getModificationCache(), NO_PARAMS);
 
-        if (dumpOptional.isPresent()) {
-            return dumpOptional.get().lispLocatorSetDetails.stream()
-                    .map(set -> {
-
-                        final String locatorSetName = TranslateUtils.toString(set.locatorSetName);
-                        //creates mapping for existing locator-set(if it is'nt already existing one)
-                        if (!locatorSetContext.containsIndex(locatorSetName, context.getMappingContext())) {
-                            locatorSetContext.addName(set.locatorSetIndex, locatorSetName, context.getMappingContext());
-                        }
-
-                        LOG.trace("Locator Set with name: {}, VPP name: {} and index: {} found in VPP",
-                                locatorSetContext.getName(set.locatorSetIndex, context.getMappingContext()),
-                                locatorSetName,
-                                set.locatorSetIndex);
-
-                        return set;
-                    })
-                    .map(set -> new LocatorSetKey(TranslateUtils.toString(set.locatorSetName)))
-                    .collect(Collectors.toList());
-        } else {
-            LOG.warn("No data dumped for Locator Set {}", id);
+        if (!dumpOptional.isPresent() || dumpOptional.get().lispLocatorSetDetails.isEmpty()) {
             return Collections.emptyList();
         }
+
+        return dumpOptional.get().lispLocatorSetDetails.stream()
+                .map(set -> {
+
+                    final String locatorSetName = toString(set.lsName);
+                    //creates mapping for existing locator-set(if it is'nt already existing one)
+                    if (!locatorSetContext.containsIndex(locatorSetName, context.getMappingContext())) {
+                        locatorSetContext.addName(set.lsIndex, locatorSetName, context.getMappingContext());
+                    }
+
+                    LOG.trace("Locator Set with name: {}, VPP name: {} and index: {} found in VPP",
+                            locatorSetContext.getName(set.lsIndex, context.getMappingContext()),
+                            locatorSetName,
+                            set.lsIndex);
+
+                    return set;
+                })
+                .map(set -> new LocatorSetKey(toString(set.lsName)))
+                .collect(Collectors.toList());
     }
 
     @Override