PT #157668103: Switch to Gson where possible - except Bosh
This commit is contained in:
@@ -1,3 +1,3 @@
|
||||
{
|
||||
"jarUrl": "https://s3-us-west-1.amazonaws.com/s3-test.spring.io/sts4/fatjars/snapshots/spring-boot-language-server-0.1.5-201803091709.jar"
|
||||
"jarUrl": "https://s3-us-west-1.amazonaws.com/s3-test.spring.io/sts4/fatjars/snapshots/spring-boot-language-server-0.2.1-201805111942.jar"
|
||||
}
|
||||
|
||||
@@ -37,6 +37,32 @@
|
||||
<artifactId>commons-yaml</artifactId>
|
||||
<version>${dependencies.version}</version>
|
||||
</dependency>
|
||||
<!-- JSON -->
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-core</artifactId>
|
||||
<version>${jackson-2-version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-annotations</artifactId>
|
||||
<version>${jackson-2-version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-databind</artifactId>
|
||||
<version>${jackson-2-version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.datatype</groupId>
|
||||
<artifactId>jackson-datatype-jsr310</artifactId>
|
||||
<version>${jackson-2-version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.datatype</groupId>
|
||||
<artifactId>jackson-datatype-jdk8</artifactId>
|
||||
<version>${jackson-2-version}</version>
|
||||
</dependency>
|
||||
<!-- Test harness -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.ide.vscode</groupId>
|
||||
|
||||
@@ -11,16 +11,21 @@
|
||||
package org.springframework.ide.vscode.commons.java;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileReader;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
|
||||
import org.springframework.ide.vscode.commons.util.Log;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.google.gson.Gson;
|
||||
|
||||
public class ClasspathFileBasedCache {
|
||||
|
||||
private static final Gson gson = new Gson();
|
||||
private static final Logger log = LoggerFactory.getLogger(ClasspathFileBasedCache.class);
|
||||
|
||||
public static final ClasspathFileBasedCache NULL = new ClasspathFileBasedCache(null);
|
||||
|
||||
public static final String CLASSPATH_DATA_CACHE_FILE = "classpath-data.json";
|
||||
@@ -38,16 +43,15 @@ public class ClasspathFileBasedCache {
|
||||
try {
|
||||
Files.createDirectories(file.getParentFile().toPath());
|
||||
writer = new FileWriter(file);
|
||||
ObjectMapper mapper = new ObjectMapper();
|
||||
mapper.writeValue(writer, data);
|
||||
gson.toJson(data, writer);
|
||||
} catch (IOException e) {
|
||||
Log.log(e);
|
||||
log.error("Failed to write JSON data to " + file, e);
|
||||
} finally {
|
||||
if (writer != null) {
|
||||
try {
|
||||
writer.close();
|
||||
} catch (IOException e) {
|
||||
Log.log(e);
|
||||
log.error("Failed to close file writer for file: " + file, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -60,11 +64,20 @@ public class ClasspathFileBasedCache {
|
||||
|
||||
public synchronized ClasspathData load() {
|
||||
if (file != null && file.exists()) {
|
||||
ObjectMapper mapper = new ObjectMapper();
|
||||
FileReader fileReader = null;
|
||||
try {
|
||||
return mapper.readValue(file, ClasspathData.class);
|
||||
fileReader = new FileReader(file);
|
||||
return gson.fromJson(fileReader, ClasspathData.class);
|
||||
} catch (Throwable e) {
|
||||
Log.log(e);
|
||||
log.error("Failed to read JSON data from " + file, e);
|
||||
} finally {
|
||||
if (fileReader != null) {
|
||||
try {
|
||||
fileReader.close();
|
||||
} catch (IOException e) {
|
||||
log.error("Failed to close file reader for file: " + file, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return ClasspathData.EMPTY_CLASSPATH_DATA;
|
||||
|
||||
@@ -19,31 +19,6 @@
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<!-- JSON -->
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-core</artifactId>
|
||||
<version>${jackson-2-version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-annotations</artifactId>
|
||||
<version>${jackson-2-version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-databind</artifactId>
|
||||
<version>${jackson-2-version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.datatype</groupId>
|
||||
<artifactId>jackson-datatype-jsr310</artifactId>
|
||||
<version>${jackson-2-version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.datatype</groupId>
|
||||
<artifactId>jackson-datatype-jdk8</artifactId>
|
||||
<version>${jackson-2-version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.projectreactor</groupId>
|
||||
<artifactId>reactor-core</artifactId>
|
||||
|
||||
@@ -10,6 +10,8 @@
|
||||
*******************************************************************************/
|
||||
package org.springframework.ide.vscode.commons.languageserver.util;
|
||||
|
||||
import static org.springframework.ide.vscode.commons.languageserver.util.AsyncRunner.thenLog;
|
||||
|
||||
import java.net.URI;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.ArrayList;
|
||||
@@ -78,12 +80,12 @@ import com.google.common.collect.ImmutableList;
|
||||
import com.google.gson.JsonArray;
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.google.gson.JsonPrimitive;
|
||||
|
||||
import reactor.core.Disposable;
|
||||
import reactor.core.publisher.Mono;
|
||||
import reactor.core.scheduler.Scheduler;
|
||||
import reactor.core.scheduler.Schedulers;
|
||||
import static org.springframework.ide.vscode.commons.languageserver.util.AsyncRunner.*;
|
||||
|
||||
/**
|
||||
* Abstract base class to implement LanguageServer. Bits and pieces copied from
|
||||
@@ -185,7 +187,7 @@ public class SimpleLanguageServer implements Sts4LanguageServer, LanguageClientA
|
||||
if (CODE_ACTION_COMMAND_ID.equals(params.getCommand())) {
|
||||
Assert.isLegal(params.getArguments().size()==2);
|
||||
QuickfixResolveParams quickfixParams = new QuickfixResolveParams(
|
||||
(String)params.getArguments().get(0), params.getArguments().get(1)
|
||||
((JsonPrimitive)params.getArguments().get(0)).getAsString(), params.getArguments().get(1)
|
||||
);
|
||||
return quickfixResolve(quickfixParams)
|
||||
.flatMap((QuickfixEdit edit) -> {
|
||||
|
||||
@@ -11,45 +11,26 @@
|
||||
package org.springframework.ide.vscode.commons.maven.java;
|
||||
|
||||
import java.io.File;
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.Callable;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import javax.annotation.Generated;
|
||||
|
||||
import org.apache.maven.artifact.Artifact;
|
||||
import org.apache.maven.artifact.repository.ArtifactRepository;
|
||||
import org.apache.maven.model.Resource;
|
||||
import org.apache.maven.project.MavenProject;
|
||||
import org.codehaus.plexus.util.DirectoryScanner;
|
||||
import org.springframework.ide.vscode.commons.jandex.JandexClasspath;
|
||||
import org.springframework.ide.vscode.commons.jandex.JandexIndex;
|
||||
import org.springframework.ide.vscode.commons.java.ClasspathData;
|
||||
import org.springframework.ide.vscode.commons.java.IClasspath;
|
||||
import org.springframework.ide.vscode.commons.java.IJavadocProvider;
|
||||
import org.springframework.ide.vscode.commons.javadoc.HtmlJavadocProvider;
|
||||
import org.springframework.ide.vscode.commons.javadoc.TypeUrlProviderFromContainerUrl;
|
||||
import org.springframework.ide.vscode.commons.languageserver.jdt.ls.Classpath;
|
||||
import org.springframework.ide.vscode.commons.languageserver.jdt.ls.Classpath.CPE;
|
||||
import org.springframework.ide.vscode.commons.maven.MavenCore;
|
||||
import org.springframework.ide.vscode.commons.maven.MavenException;
|
||||
import org.springframework.ide.vscode.commons.util.Log;
|
||||
import org.springframework.ide.vscode.commons.util.RunnableWithException;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
import com.google.common.base.Objects;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.gson.internal.Streams;
|
||||
|
||||
/**
|
||||
* Classpath for a maven project
|
||||
|
||||
@@ -13,17 +13,18 @@ package org.springframework.ide.vscode.commons.yaml.quickfix;
|
||||
import org.eclipse.lsp4j.Position;
|
||||
import org.eclipse.lsp4j.TextEdit;
|
||||
import org.eclipse.lsp4j.WorkspaceEdit;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.ide.vscode.commons.languageserver.completion.DocumentEdits.TextReplace;
|
||||
import org.springframework.ide.vscode.commons.languageserver.quickfix.QuickfixEdit;
|
||||
import org.springframework.ide.vscode.commons.languageserver.quickfix.QuickfixEdit.CursorMovement;
|
||||
import org.springframework.ide.vscode.commons.languageserver.quickfix.QuickfixRegistry;
|
||||
import org.springframework.ide.vscode.commons.languageserver.quickfix.QuickfixType;
|
||||
import org.springframework.ide.vscode.commons.languageserver.util.SimpleTextDocumentService;
|
||||
import org.springframework.ide.vscode.commons.util.Log;
|
||||
import org.springframework.ide.vscode.commons.util.text.IRegion;
|
||||
import org.springframework.ide.vscode.commons.util.text.TextDocument;
|
||||
import org.springframework.ide.vscode.commons.yaml.completion.YamlPathEdits;
|
||||
import org.springframework.ide.vscode.commons.yaml.path.YamlPath;
|
||||
import org.springframework.ide.vscode.commons.yaml.path.YamlPathSegment;
|
||||
import org.springframework.ide.vscode.commons.yaml.reconcile.MissingPropertiesData;
|
||||
import org.springframework.ide.vscode.commons.yaml.reconcile.ReplaceStringData;
|
||||
import org.springframework.ide.vscode.commons.yaml.structure.YamlDocument;
|
||||
@@ -32,14 +33,15 @@ import org.springframework.ide.vscode.commons.yaml.structure.YamlStructureParser
|
||||
import org.springframework.ide.vscode.commons.yaml.structure.YamlStructureProvider;
|
||||
import org.springframework.ide.vscode.commons.yaml.util.YamlIndentUtil;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
|
||||
import org.springframework.ide.vscode.commons.languageserver.quickfix.QuickfixEdit.CursorMovement;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.JsonElement;
|
||||
|
||||
public class YamlQuickfixes {
|
||||
|
||||
private static final Logger LOG = LoggerFactory.getLogger(YamlQuickfixes.class);
|
||||
|
||||
private static final QuickfixEdit NULL_FIX = new QuickfixEdit(
|
||||
new WorkspaceEdit(ImmutableMap.of(), null),
|
||||
null
|
||||
@@ -47,9 +49,11 @@ public class YamlQuickfixes {
|
||||
public final QuickfixType MISSING_PROP_FIX;
|
||||
public final QuickfixType SIMPLE_TEXT_EDIT;
|
||||
|
||||
private final Gson gson = new Gson();
|
||||
|
||||
public YamlQuickfixes(QuickfixRegistry r, SimpleTextDocumentService textDocumentService, YamlStructureProvider structureProvider) {
|
||||
MISSING_PROP_FIX = r.register("MISSING_PROP_FIX", (Object _params) -> {
|
||||
MissingPropertiesData params = new ObjectMapper().convertValue(_params, MissingPropertiesData.class);
|
||||
MissingPropertiesData params = gson.fromJson((JsonElement)_params, MissingPropertiesData.class);
|
||||
try {
|
||||
TextDocument _doc = textDocumentService.getDocument(params.getUri());
|
||||
if (_doc!=null) {
|
||||
@@ -90,7 +94,7 @@ public class YamlQuickfixes {
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Log.log(e);
|
||||
LOG.error("", e);
|
||||
}
|
||||
//Something went wrong. Return empty edit object.
|
||||
return NULL_FIX;
|
||||
@@ -98,7 +102,7 @@ public class YamlQuickfixes {
|
||||
|
||||
SIMPLE_TEXT_EDIT = r.register("SIMPLE_TEXT_EDIT", (_params) -> {
|
||||
try {
|
||||
ReplaceStringData params = new ObjectMapper().convertValue(_params, ReplaceStringData.class);
|
||||
ReplaceStringData params = gson.fromJson((JsonElement)_params, ReplaceStringData.class);
|
||||
TextDocument _doc = textDocumentService.getDocument(params.getUri());
|
||||
if (_doc!=null) {
|
||||
return new QuickfixEdit(
|
||||
@@ -110,7 +114,7 @@ public class YamlQuickfixes {
|
||||
);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Log.log(e);
|
||||
LOG.error("", e);
|
||||
}
|
||||
//Something went wrong. Return empty edit object.
|
||||
return NULL_FIX;
|
||||
@@ -130,7 +134,7 @@ public class YamlQuickfixes {
|
||||
return doc.toPosition(newSelection.getOffset());
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Log.log(e);
|
||||
LOG.error("", e);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -110,10 +110,11 @@ import org.springframework.ide.vscode.commons.util.UriUtil;
|
||||
import org.springframework.ide.vscode.commons.util.text.LanguageId;
|
||||
import org.springframework.ide.vscode.commons.util.text.TextDocument;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.Multimap;
|
||||
import com.google.common.collect.MultimapBuilder;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.JsonArray;
|
||||
|
||||
import reactor.core.publisher.Mono;
|
||||
|
||||
@@ -134,6 +135,7 @@ public class LanguageServerHarness<S extends SimpleLanguageServerWrapper> {
|
||||
private Multimap<String, CompletableFuture<HighlightParams>> highlights = MultimapBuilder.hashKeys().linkedListValues().build();
|
||||
private Map<String, PublishDiagnosticsParams> diagnostics = new HashMap<>();
|
||||
private List<Editor> activeEditors = new ArrayList<>();
|
||||
private Gson gson = new Gson();
|
||||
|
||||
|
||||
public LanguageServerHarness(Callable<S> factory, LanguageId defaultLanguageId) {
|
||||
@@ -657,14 +659,14 @@ public class LanguageServerHarness<S extends SimpleLanguageServerWrapper> {
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
ObjectMapper mapper = new ObjectMapper();
|
||||
|
||||
@SuppressWarnings({ "unchecked", "rawtypes" })
|
||||
public void perform(Command command) throws Exception {
|
||||
List<Object> args = command.getArguments();
|
||||
//Note convert the params to a 'typeless' Object because that is more representative on how it will be
|
||||
// received when we get it in a real client/server setting (i.e. parsed from json).
|
||||
List untypedParams = mapper.convertValue(args, List.class);
|
||||
JsonArray jsonArray = gson.toJsonTree(args).getAsJsonArray();
|
||||
List<Object> untypedParams = new ArrayList<>(jsonArray.size());
|
||||
jsonArray.forEach(e -> untypedParams.add(e));
|
||||
getServer().getWorkspaceService()
|
||||
.executeCommand(new ExecuteCommandParams(command.getCommand(), untypedParams))
|
||||
.get();
|
||||
|
||||
Reference in New Issue
Block a user