[ONOS-5750] Add MappingEntryBuilder with unit test
Change-Id: Ia4e2f4b6cb3a9b07a00376b12b506f43255bad11
diff --git a/providers/lisp/mapping/src/main/java/org/onosproject/provider/lisp/mapping/impl/LispMappingProvider.java b/providers/lisp/mapping/src/main/java/org/onosproject/provider/lisp/mapping/impl/LispMappingProvider.java
index 05e5dd7..3cf1e3b 100644
--- a/providers/lisp/mapping/src/main/java/org/onosproject/provider/lisp/mapping/impl/LispMappingProvider.java
+++ b/providers/lisp/mapping/src/main/java/org/onosproject/provider/lisp/mapping/impl/LispMappingProvider.java
@@ -25,12 +25,14 @@
import org.onosproject.lisp.ctl.LispRouterId;
import org.onosproject.lisp.ctl.LispRouterListener;
import org.onosproject.lisp.msg.protocols.LispMapNotify;
+import org.onosproject.lisp.msg.protocols.LispMapRecord;
import org.onosproject.lisp.msg.protocols.LispMapReply;
import org.onosproject.lisp.msg.protocols.LispMessage;
import org.onosproject.mapping.MappingEntry;
import org.onosproject.mapping.MappingProvider;
import org.onosproject.mapping.MappingProviderRegistry;
import org.onosproject.mapping.MappingProviderService;
+import org.onosproject.mapping.MappingStore;
import org.onosproject.net.DeviceId;
import org.onosproject.net.provider.AbstractProvider;
import org.onosproject.net.provider.ProviderId;
@@ -38,6 +40,8 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.List;
+
import static org.onosproject.mapping.MappingStore.Type.MAP_CACHE;
import static org.onosproject.mapping.MappingStore.Type.MAP_DATABASE;
@@ -138,21 +142,33 @@
case LISP_MAP_REPLY:
LispMapReply reply = (LispMapReply) msg;
-
- MappingEntry replyMe = new MappingEntryBuilder(deviceId, reply).build();
- providerService.mappingAdded(replyMe, MAP_CACHE);
+ processMappings(deviceId, reply.getMapRecords(), MAP_CACHE);
break;
case LISP_MAP_NOTIFY:
LispMapNotify notify = (LispMapNotify) msg;
-
- MappingEntry notifyMe = new MappingEntryBuilder(deviceId, notify).build();
- providerService.mappingAdded(notifyMe, MAP_DATABASE);
+ processMappings(deviceId, notify.getMapRecords(), MAP_DATABASE);
break;
default:
log.warn("Unhandled message type: {}", msg.getType());
}
}
+
+ /**
+ * Converts map records into mapping, notifies to provider.
+ *
+ * @param deviceId device identifier
+ * @param records a collection of map records
+ * @param type MappingStore type
+ */
+ private void processMappings(DeviceId deviceId,
+ List<LispMapRecord> records,
+ MappingStore.Type type) {
+ records.forEach(r -> {
+ MappingEntry me = new MappingEntryBuilder(deviceId, r).build();
+ providerService.mappingAdded(me, type);
+ });
+ }
}
}