diff --git a/atom-extensions/atom-spring-boot/properties.json b/atom-extensions/atom-spring-boot/properties.json
index fd23a8bb8..97c16b6ea 100644
--- a/atom-extensions/atom-spring-boot/properties.json
+++ b/atom-extensions/atom-spring-boot/properties.json
@@ -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"
}
diff --git a/headless-services/bosh-language-server/pom.xml b/headless-services/bosh-language-server/pom.xml
index 6cfe9f00b..ad50b4d11 100644
--- a/headless-services/bosh-language-server/pom.xml
+++ b/headless-services/bosh-language-server/pom.xml
@@ -37,6 +37,32 @@
commons-yaml
${dependencies.version}
+
+
+ com.fasterxml.jackson.core
+ jackson-core
+ ${jackson-2-version}
+
+
+ com.fasterxml.jackson.core
+ jackson-annotations
+ ${jackson-2-version}
+
+
+ com.fasterxml.jackson.core
+ jackson-databind
+ ${jackson-2-version}
+
+
+ com.fasterxml.jackson.datatype
+ jackson-datatype-jsr310
+ ${jackson-2-version}
+
+
+ com.fasterxml.jackson.datatype
+ jackson-datatype-jdk8
+ ${jackson-2-version}
+
org.springframework.ide.vscode
diff --git a/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/java/ClasspathFileBasedCache.java b/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/java/ClasspathFileBasedCache.java
index ac5827e19..5d96dc0eb 100644
--- a/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/java/ClasspathFileBasedCache.java
+++ b/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/java/ClasspathFileBasedCache.java
@@ -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;
diff --git a/headless-services/commons/commons-language-server/pom.xml b/headless-services/commons/commons-language-server/pom.xml
index 006eb5a75..54cb6b3d7 100644
--- a/headless-services/commons/commons-language-server/pom.xml
+++ b/headless-services/commons/commons-language-server/pom.xml
@@ -19,31 +19,6 @@
${project.version}
-
- com.fasterxml.jackson.core
- jackson-core
- ${jackson-2-version}
-
-
- com.fasterxml.jackson.core
- jackson-annotations
- ${jackson-2-version}
-
-
- com.fasterxml.jackson.core
- jackson-databind
- ${jackson-2-version}
-
-
- com.fasterxml.jackson.datatype
- jackson-datatype-jsr310
- ${jackson-2-version}
-
-
- com.fasterxml.jackson.datatype
- jackson-datatype-jdk8
- ${jackson-2-version}
-
io.projectreactor
reactor-core
diff --git a/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/util/SimpleLanguageServer.java b/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/util/SimpleLanguageServer.java
index 7514bc78c..aad758a86 100644
--- a/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/util/SimpleLanguageServer.java
+++ b/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/util/SimpleLanguageServer.java
@@ -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) -> {
diff --git a/headless-services/commons/commons-maven/src/main/java/org/springframework/ide/vscode/commons/maven/java/MavenProjectClasspath.java b/headless-services/commons/commons-maven/src/main/java/org/springframework/ide/vscode/commons/maven/java/MavenProjectClasspath.java
index 1987748cd..03832c58d 100644
--- a/headless-services/commons/commons-maven/src/main/java/org/springframework/ide/vscode/commons/maven/java/MavenProjectClasspath.java
+++ b/headless-services/commons/commons-maven/src/main/java/org/springframework/ide/vscode/commons/maven/java/MavenProjectClasspath.java
@@ -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
diff --git a/headless-services/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/quickfix/YamlQuickfixes.java b/headless-services/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/quickfix/YamlQuickfixes.java
index cb936ef0f..db716d708 100644
--- a/headless-services/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/quickfix/YamlQuickfixes.java
+++ b/headless-services/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/quickfix/YamlQuickfixes.java
@@ -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;
}
diff --git a/headless-services/commons/language-server-test-harness/src/main/java/org/springframework/ide/vscode/languageserver/testharness/LanguageServerHarness.java b/headless-services/commons/language-server-test-harness/src/main/java/org/springframework/ide/vscode/languageserver/testharness/LanguageServerHarness.java
index b11b9e69d..b322894f0 100644
--- a/headless-services/commons/language-server-test-harness/src/main/java/org/springframework/ide/vscode/languageserver/testharness/LanguageServerHarness.java
+++ b/headless-services/commons/language-server-test-harness/src/main/java/org/springframework/ide/vscode/languageserver/testharness/LanguageServerHarness.java
@@ -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 {
private Multimap> highlights = MultimapBuilder.hashKeys().linkedListValues().build();
private Map diagnostics = new HashMap<>();
private List activeEditors = new ArrayList<>();
+ private Gson gson = new Gson();
public LanguageServerHarness(Callable factory, LanguageId defaultLanguageId) {
@@ -657,14 +659,14 @@ public class LanguageServerHarness {
.collect(Collectors.toList());
}
- ObjectMapper mapper = new ObjectMapper();
-
@SuppressWarnings({ "unchecked", "rawtypes" })
public void perform(Command command) throws Exception {
List