From 422b14a763cf573cc539e45bf6a7b375cc4fc091 Mon Sep 17 00:00:00 2001 From: Nieraj Singh Date: Sat, 12 Nov 2022 05:10:34 -0800 Subject: [PATCH] Simplified handling of embedded --- .../generations/SpringProjectsClient.java | 27 ++++++++++------- .../generations/json/Generations.java | 4 --- .../generations/json/GenerationsEmbedded.java | 21 -------------- .../generations/json/JsonHalEmbedded.java | 16 ---------- .../generations/json/JsonHalLinks.java | 4 --- .../generations/json/JsonHalParser.java | 25 ---------------- .../validation/generations/json/Link.java | 4 --- .../generations/json/SpringProjects.java | 4 --- .../json/SpringProjectsEmbedded.java | 20 ------------- .../ProjectGenerationsValidationTest.java | 1 - .../test}/SampleProjectsProvider.java | 29 ++++++++++++++----- 11 files changed, 37 insertions(+), 118 deletions(-) delete mode 100644 headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/validation/generations/json/GenerationsEmbedded.java delete mode 100644 headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/validation/generations/json/JsonHalEmbedded.java delete mode 100644 headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/validation/generations/json/JsonHalParser.java delete mode 100644 headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/validation/generations/json/SpringProjectsEmbedded.java rename headless-services/spring-boot-language-server/src/{main/java/org/springframework/ide/vscode/boot/validation/generations => test/java/org/springframework/ide/vscode/boot/validation/test}/SampleProjectsProvider.java (89%) diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/validation/generations/SpringProjectsClient.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/validation/generations/SpringProjectsClient.java index 94cbd6340..325fe3568 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/validation/generations/SpringProjectsClient.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/validation/generations/SpringProjectsClient.java @@ -10,18 +10,19 @@ *******************************************************************************/ package org.springframework.ide.vscode.boot.validation.generations; +import java.util.Map; + import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.ide.vscode.boot.validation.generations.json.Generations; -import org.springframework.ide.vscode.boot.validation.generations.json.GenerationsEmbedded; -import org.springframework.ide.vscode.boot.validation.generations.json.JsonHalEmbedded; import org.springframework.ide.vscode.boot.validation.generations.json.SpringProjects; -import org.springframework.ide.vscode.boot.validation.generations.json.SpringProjectsEmbedded; import org.springframework.web.client.RestTemplate; +import com.fasterxml.jackson.databind.ObjectMapper; + public class SpringProjectsClient { private final String url; @@ -31,23 +32,27 @@ public class SpringProjectsClient { } public SpringProjects getSpringProjects() throws Exception { - return getEmbedded(url, SpringProjectsEmbedded.class); + return fromEmbedded(url, SpringProjects.class); } public Generations getGenerations(String generationsUrl) throws Exception { - return getEmbedded(generationsUrl, GenerationsEmbedded.class); + return fromEmbedded(generationsUrl, Generations.class); } - - private T getEmbedded(String url, Class> clazz) throws Exception { + + private T fromEmbedded(String url, Class clazz) throws Exception { if (url != null) { - JsonHalEmbedded embedded = get(url, clazz); - if (embedded != null) { - return embedded.get_embedded(); + Map result = get(url, Map.class); + if (result != null) { + Object obj = result.get("_embedded"); + if (obj != null) { + ObjectMapper mapper = new ObjectMapper(); + return mapper.convertValue(obj, clazz); + } } } return null; } - + private T get(String url, Class clazz) throws Exception { HttpHeaders headers = new HttpHeaders(); diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/validation/generations/json/Generations.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/validation/generations/json/Generations.java index 7bf560bc1..1a2d25c27 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/validation/generations/json/Generations.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/validation/generations/json/Generations.java @@ -19,8 +19,4 @@ public class Generations { public List getGenerations() { return generations; } - - public void setGenerations(List generations) { - this.generations = generations; - } } \ No newline at end of file diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/validation/generations/json/GenerationsEmbedded.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/validation/generations/json/GenerationsEmbedded.java deleted file mode 100644 index f3ece6f86..000000000 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/validation/generations/json/GenerationsEmbedded.java +++ /dev/null @@ -1,21 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2020 Pivotal, Inc. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Pivotal, Inc. - initial API and implementation - *******************************************************************************/ -package org.springframework.ide.vscode.boot.validation.generations.json; - -public class GenerationsEmbedded extends JsonHalLinks implements JsonHalEmbedded { - - - private Generations _embedded; - - public Generations get_embedded() { - return _embedded; - } -} diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/validation/generations/json/JsonHalEmbedded.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/validation/generations/json/JsonHalEmbedded.java deleted file mode 100644 index 9e084ded0..000000000 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/validation/generations/json/JsonHalEmbedded.java +++ /dev/null @@ -1,16 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2020 Pivotal, Inc. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Pivotal, Inc. - initial API and implementation - *******************************************************************************/ -package org.springframework.ide.vscode.boot.validation.generations.json; - -public interface JsonHalEmbedded { - - T get_embedded(); -} diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/validation/generations/json/JsonHalLinks.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/validation/generations/json/JsonHalLinks.java index d41f94fea..c4917c800 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/validation/generations/json/JsonHalLinks.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/validation/generations/json/JsonHalLinks.java @@ -17,8 +17,4 @@ public class JsonHalLinks { public Links get_links() { return _links; } - - public void set_links(Links _links) { - this._links = _links; - } } diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/validation/generations/json/JsonHalParser.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/validation/generations/json/JsonHalParser.java deleted file mode 100644 index 26433a32f..000000000 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/validation/generations/json/JsonHalParser.java +++ /dev/null @@ -1,25 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2020 Pivotal, Inc. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Pivotal, Inc. - initial API and implementation - *******************************************************************************/ -package org.springframework.ide.vscode.boot.validation.generations.json; - -import com.google.gson.Gson; - -public class JsonHalParser { - - public T getEmbedded(String json, Class> clazz) throws Exception { - if (json != null) { - Gson gson = new Gson(); - JsonHalEmbedded embedded = gson.fromJson(json, clazz); - return embedded.get_embedded(); - } - return null; - } -} diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/validation/generations/json/Link.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/validation/generations/json/Link.java index abfbde5de..5eb74f121 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/validation/generations/json/Link.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/validation/generations/json/Link.java @@ -14,10 +14,6 @@ public class Link { private String href; - public void setHref(String href) { - this.href = href; - } - public String getHref() { return this.href; } diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/validation/generations/json/SpringProjects.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/validation/generations/json/SpringProjects.java index f16d0e9f6..5199729c5 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/validation/generations/json/SpringProjects.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/validation/generations/json/SpringProjects.java @@ -18,8 +18,4 @@ public class SpringProjects { public List getProjects() { return projects; } - - public void setProjects(List projects) { - this.projects = projects; - } } \ No newline at end of file diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/validation/generations/json/SpringProjectsEmbedded.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/validation/generations/json/SpringProjectsEmbedded.java deleted file mode 100644 index 8b0482b1d..000000000 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/validation/generations/json/SpringProjectsEmbedded.java +++ /dev/null @@ -1,20 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2020 Pivotal, Inc. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Pivotal, Inc. - initial API and implementation - *******************************************************************************/ -package org.springframework.ide.vscode.boot.validation.generations.json; - -public class SpringProjectsEmbedded extends JsonHalLinks implements JsonHalEmbedded { - - private SpringProjects _embedded; - - public SpringProjects get_embedded() { - return _embedded; - } -} diff --git a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/validation/test/ProjectGenerationsValidationTest.java b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/validation/test/ProjectGenerationsValidationTest.java index 769dd664b..49f5f81f0 100644 --- a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/validation/test/ProjectGenerationsValidationTest.java +++ b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/validation/test/ProjectGenerationsValidationTest.java @@ -24,7 +24,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Import; import org.springframework.ide.vscode.boot.bootiful.BootLanguageServerTest; import org.springframework.ide.vscode.boot.bootiful.HoverTestConf; -import org.springframework.ide.vscode.boot.validation.generations.SampleProjectsProvider; import org.springframework.ide.vscode.boot.validation.generations.SpringIoProjectsProvider; import org.springframework.ide.vscode.boot.validation.generations.SpringProjectsClient; import org.springframework.ide.vscode.boot.validation.generations.SpringProjectsProvider; diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/validation/generations/SampleProjectsProvider.java b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/validation/test/SampleProjectsProvider.java similarity index 89% rename from headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/validation/generations/SampleProjectsProvider.java rename to headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/validation/test/SampleProjectsProvider.java index 4dd745416..bece551ac 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/validation/generations/SampleProjectsProvider.java +++ b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/validation/test/SampleProjectsProvider.java @@ -8,16 +8,18 @@ * Contributors: * Pivotal, Inc. - initial API and implementation *******************************************************************************/ -package org.springframework.ide.vscode.boot.validation.generations; +package org.springframework.ide.vscode.boot.validation.test; import java.util.List; +import java.util.Map; +import org.springframework.ide.vscode.boot.validation.generations.SpringProjectsProvider; import org.springframework.ide.vscode.boot.validation.generations.json.Generations; -import org.springframework.ide.vscode.boot.validation.generations.json.GenerationsEmbedded; -import org.springframework.ide.vscode.boot.validation.generations.json.JsonHalParser; import org.springframework.ide.vscode.boot.validation.generations.json.SpringProject; import org.springframework.ide.vscode.boot.validation.generations.json.SpringProjects; -import org.springframework.ide.vscode.boot.validation.generations.json.SpringProjectsEmbedded; + +import com.fasterxml.jackson.databind.ObjectMapper; + /** @@ -32,8 +34,7 @@ public class SampleProjectsProvider implements SpringProjectsProvider { @Override public SpringProject getProject(String projectSlug) throws Exception { if (this.projects == null) { - JsonHalParser parser = new JsonHalParser(); - this.projects = parser.getEmbedded(SPRING_PROJECTS_JSON_SAMPLE, SpringProjectsEmbedded.class); + this.projects = parse(SPRING_PROJECTS_JSON_SAMPLE, SpringProjects.class); } List projectList = this.projects.getProjects(); for (SpringProject springProject : projectList) { @@ -48,8 +49,20 @@ public class SampleProjectsProvider implements SpringProjectsProvider { public Generations getGenerations(String projectSlug) throws Exception { SpringProject project = getProject(projectSlug); if (project != null && project.getSlug().equals("spring-boot")) { - JsonHalParser parser = new JsonHalParser(); - return parser.getEmbedded(SPRING_BOOT_PROJECT_GENERATIONS, GenerationsEmbedded.class); + return parse(SPRING_BOOT_PROJECT_GENERATIONS, Generations.class); + } + return null; + } + + private T parse(String json, Class clazz) throws Exception { + ObjectMapper mapper = new ObjectMapper(); + + Map result = mapper.readValue(json, Map.class); + if (result != null) { + Object obj = result.get("_embedded"); + if (obj != null) { + return mapper.convertValue(obj, clazz); + } } return null; }