Fix /version endpoint
[vid.git] / vid-app-common / src / main / java / org / onap / vid / controller / open / VersionController.java
index 0a4d6f5..a96cd74 100644 (file)
 package org.onap.vid.controller.open;
 
 
-import com.fasterxml.jackson.core.type.TypeReference;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.common.collect.ImmutableMap;
-import org.apache.commons.lang3.StringUtils;
+import javax.inject.Inject;
 import org.onap.portalsdk.core.controller.UnRestrictedBaseController;
-import org.onap.portalsdk.core.util.SystemProperties;
+import org.onap.vid.model.VersionAndFeatures;
+import org.onap.vid.services.VersionService;
 import org.springframework.http.MediaType;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
 
-import javax.inject.Inject;
-import javax.servlet.ServletContext;
-import java.io.IOException;
-import java.net.URL;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import static org.apache.commons.lang3.StringUtils.substringAfterLast;
-
 @RestController
 @RequestMapping("version")
 public class VersionController extends UnRestrictedBaseController {
 
-    private final ServletContext servletContext;
+    private final VersionService versionService;
 
     @Inject
-    public VersionController(ServletContext servletContext) {
-        this.servletContext = servletContext;
+    public VersionController(VersionService versionService) {
+        this.versionService = versionService;
     }
 
     @RequestMapping(method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
-    public Map<String,String> getVersionAndFeatures()
-    {
-        String features = SystemProperties.getProperty("features.set.filename");
-        String version;
-        try {
-            final URL resource = servletContext.getResource("/app/vid/scripts/constants/version.json");
-            HashMap<String,String> versionFile = new HashMap <>();
-            ObjectMapper mapper = new ObjectMapper();
-            versionFile.putAll(mapper.readValue(resource, new TypeReference<HashMap<String, String>>() {}));
-            version = versionFile.get("Version");
-        } catch (IOException e) {
-            version = "Error retrieving build number";
-        }
-        String majorVersion = getDisplayVersion(features, version);
-        return ImmutableMap.of("Features", features, "Build", version, "DisplayVersion", majorVersion);
+    public VersionAndFeatures getVersionAndFeatures() {
+        return versionService.retrieveVersionAndFeatures();
     }
 
-    String getDisplayVersion(String features, String build) {
-        Matcher matcher = Pattern.compile("([^/]+?)(\\.features|$)").matcher(features);
-        final String majorByFeatures = matcher.find() ? matcher.group(1) : features;
-
-        final String buildByVersion = StringUtils.defaultIfBlank(substringAfterLast(build, "."), build);
-
-        return StringUtils.join(majorByFeatures, ".", buildByVersion);
-    }
 }