Allow to query mapping value when receives MapRequest

Change-Id: Ic7893a397c2c16e219135a31516565d2f1323f50
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 b4fd841..a7ba95f 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
@@ -15,6 +15,7 @@
  */
 package org.onosproject.provider.lisp.mapping.impl;
 
+import com.google.common.collect.Lists;
 import org.apache.felix.scr.annotations.Activate;
 import org.apache.felix.scr.annotations.Component;
 import org.apache.felix.scr.annotations.Deactivate;
@@ -24,12 +25,14 @@
 import org.onosproject.lisp.ctl.LispMessageListener;
 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.LispEidRecord;
 import org.onosproject.lisp.msg.protocols.LispMapRecord;
 import org.onosproject.lisp.msg.protocols.LispMapRegister;
 import org.onosproject.lisp.msg.protocols.LispMapReply;
+import org.onosproject.lisp.msg.protocols.LispMapRequest;
 import org.onosproject.lisp.msg.protocols.LispMessage;
 import org.onosproject.mapping.MappingEntry;
+import org.onosproject.mapping.MappingKey;
 import org.onosproject.mapping.MappingProvider;
 import org.onosproject.mapping.MappingProviderRegistry;
 import org.onosproject.mapping.MappingProviderService;
@@ -39,6 +42,7 @@
 import org.onosproject.net.provider.AbstractProvider;
 import org.onosproject.net.provider.ProviderId;
 import org.onosproject.provider.lisp.mapping.util.MappingEntryBuilder;
+import org.onosproject.provider.lisp.mapping.util.MappingKeyBuilder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -143,8 +147,12 @@
             switch (msg.getType()) {
 
                 case LISP_MAP_REQUEST:
-                    log.warn("LISP mapping query feature will be added when " +
-                             "provider service supports it.");
+                    LispMapRequest request = (LispMapRequest) msg;
+                    List<LispEidRecord> records = request.getEids();
+                    List<MappingKey> keys = Lists.newArrayList();
+                    records.forEach(r -> keys.add(new MappingKeyBuilder(deviceService,
+                            deviceId, r.getPrefix()).build()));
+                    keys.forEach(key -> providerService.mappingQueried(key));
                     break;
 
                 case LISP_MAP_REGISTER:
@@ -173,8 +181,8 @@
                     break;
 
                 case LISP_MAP_NOTIFY:
-                    LispMapNotify notify = (LispMapNotify) msg;
-                    processMappings(deviceId, notify.getMapRecords(), MAP_DATABASE);
+                    // not take any action for map notify, and we've already
+                    // store the mapping when receives map register message
                     break;
 
                 default: