Bug 3946: Fix 'lisp:mappings' output for SrcDst 34/23834/1
authorLorand Jakab <lojakab@cisco.com>
Tue, 7 Jul 2015 11:14:15 +0000 (14:14 +0300)
committerFlorin Coras <fcoras@cisco.com>
Tue, 7 Jul 2015 13:38:55 +0000 (13:38 +0000)
Change-Id: Iea973d6af98e3446885b844385c15fabcbff3820
Signed-off-by: Lorand Jakab <lojakab@cisco.com>
(cherry picked from commit 348aaae0421edb85de3958736f3cee925425c05c)

mappingservice/implementation/src/main/java/org/opendaylight/lispflowmapping/implementation/LispMappingService.java

index 32eb945d17d413a7dfed1d43b465a1a7455ed6b9..8c150f692d57a1e94a2d2c1b201c14dcb66b513b 100644 (file)
@@ -23,6 +23,7 @@ import org.opendaylight.lispflowmapping.implementation.config.ConfigIni;
 import org.opendaylight.lispflowmapping.implementation.dao.HashMapDb;
 import org.opendaylight.lispflowmapping.implementation.dao.MappingServiceKey;
 import org.opendaylight.lispflowmapping.implementation.dao.MappingServiceNoMaskKey;
+import org.opendaylight.lispflowmapping.implementation.lisp.AbstractLispComponent;
 import org.opendaylight.lispflowmapping.implementation.lisp.MapResolver;
 import org.opendaylight.lispflowmapping.implementation.lisp.MapServer;
 import org.opendaylight.lispflowmapping.implementation.mdsal.AuthenticationKeyDataListener;
@@ -207,6 +208,20 @@ public class LispMappingService implements IFlowMapping, IFlowMappingShell, Bind
     public String printMappings() {
         final StringBuffer sb = new StringBuffer();
         sb.append("EID\tRLOCs\n");
+        final IRowVisitor innerVisitor = (new IRowVisitor() {
+            String lastKey = "";
+
+            public void visitRow(Object keyId, String valueKey, Object value) {
+                String key = keyId.getClass().getSimpleName() + "#" + keyId;
+                if (!lastKey.equals(key)) {
+                    sb.append(key + "\t");
+                }
+                if (!(valueKey.equals(AbstractLispComponent.LCAF_SRCDST_SUBKEY))) {
+                    sb.append(valueKey + "=" + value + "\t");
+                }
+                lastKey = key;
+            }
+        });
         lispDao.getAll(new IRowVisitor() {
             String lastKey = "";
 
@@ -215,7 +230,13 @@ public class LispMappingService implements IFlowMapping, IFlowMappingShell, Bind
                 if (!lastKey.equals(key)) {
                     sb.append("\n" + key + "\t");
                 }
-                sb.append(valueKey + "=" + value + "\t");
+                if (valueKey.equals(AbstractLispComponent.LCAF_SRCDST_SUBKEY)) {
+                    sb.append(valueKey + "= { ");
+                    ((ILispDAO)value).getAll(innerVisitor);
+                    sb.append("}\t");
+                } else {
+                    sb.append(valueKey + "=" + value + "\t");
+                }
                 lastKey = key;
             }
         });