[Fix bug] (#728)

When registered dubbo version is under 2.7, the metadata returned by 'providerService.getProviderMetaData' method will represent as IP address, like 10.0.0.1. So the Json conversion will fail and throw internal server exception
diff --git a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/controller/ServiceController.java b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/controller/ServiceController.java
index d328149..8142811 100644
--- a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/controller/ServiceController.java
+++ b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/controller/ServiceController.java
@@ -19,7 +19,9 @@
 
 import com.google.gson.Gson;
 
+import com.google.gson.JsonParseException;
 import org.apache.dubbo.admin.annotation.Authority;
+import org.apache.dubbo.admin.common.exception.VersionValidationException;
 import org.apache.dubbo.admin.common.util.Constants;
 import org.apache.dubbo.admin.common.util.Tool;
 import org.apache.dubbo.admin.model.domain.Consumer;
@@ -44,6 +46,7 @@
 import java.util.List;
 import java.util.Set;
 import java.util.stream.Collectors;
+
 @Authority(needLogin = true)
 @RestController
 @RequestMapping("/api/{env}")
@@ -60,7 +63,7 @@
         this.gson = new Gson();
     }
 
-    @RequestMapping( value = "/service", method = RequestMethod.GET)
+    @RequestMapping(value = "/service", method = RequestMethod.GET)
     public Page<ServiceDTO> searchService(@RequestParam String pattern,
                                           @RequestParam String filter,
                                           @PathVariable String env,
@@ -98,8 +101,14 @@
         serviceDetailDTO.setConsumers(consumers);
         serviceDetailDTO.setProviders(providers);
         if (metadata != null) {
-            FullServiceDefinition serviceDefinition = gson.fromJson(metadata, FullServiceDefinition.class);
-            serviceDetailDTO.setMetadata(serviceDefinition);
+            try {
+                // for dubbo version under 2.7, this metadata will represent as IP address, like 10.0.0.1.
+                // So the json conversion will fail. 
+                FullServiceDefinition serviceDefinition = gson.fromJson(metadata, FullServiceDefinition.class);
+                serviceDetailDTO.setMetadata(serviceDefinition);
+            } catch (JsonParseException e) {
+                throw new VersionValidationException("dubbo 2.6 does not support metadata");
+            }
         }
         serviceDetailDTO.setConsumers(consumers);
         serviceDetailDTO.setProviders(providers);