From 4447021b797814e37075796171c82f14edd0331c Mon Sep 17 00:00:00 2001
From: BoykoAlex
Date: Wed, 11 Aug 2021 19:20:28 -0400
Subject: [PATCH] Switch LS to std in/out from socket with port
---
.../DelegatingStreamConnectionProvider.java | 8 -
...iveProcessCommandsQuickAccessProvider.java | 1 -
.../commons/LanguageServerProcessReaper.java | 2 +-
.../ls/eclipse/commons/ProjectSorter.java | 4 -
.../dialogs/InProjectSymbolsProvider.java | 1 -
.../dialogs/InWorkspaceSymbolsProvider.java | 1 -
.../vscode/commons/jandex/IndexRoutines.java | 4 +-
.../reconcile/BadWordReconcileEngine.java | 3 -
.../ide/vscode/commons/util/AsyncProcess.java | 6 +-
.../vscode/commons/util/ExternalCommand.java | 4 +-
.../vscode/commons/util/ExternalProcess.java | 6 +-
.../ide/vscode/commons/util/LogRedirect.java | 3 +-
.../text/linetracker/AbstractLineTracker.java | 11 +-
...ManifestYamlLanguageServerInitializer.java | 1 -
.../spring-boot-language-server/build.sh | 3 -
.../AnnotationHierarchyAwareLookup.java | 23 --
.../boot/java/utils/SpringIndexerXML.java | 1 -
.../boot/metadata/SpringPropertyIndex.java | 32 ---
...stMappingDependentConstantChangedTest.java | 6 -
.../test/ApplicationPropertiesEditorTest.java | 4 -
.../boot/test/ApplicationYamlEditorTest.java | 7 -
.../vscode/boot/test/ProblemTypesToJson.java | 1 -
.../commons-vscode/src/launch-util.ts | 218 ++++++++++--------
23 files changed, 139 insertions(+), 211 deletions(-)
diff --git a/eclipse-language-servers/org.springframework.tooling.boot.ls/src/org/springframework/tooling/boot/ls/DelegatingStreamConnectionProvider.java b/eclipse-language-servers/org.springframework.tooling.boot.ls/src/org/springframework/tooling/boot/ls/DelegatingStreamConnectionProvider.java
index 45d87c903..8e6b79ffe 100644
--- a/eclipse-language-servers/org.springframework.tooling.boot.ls/src/org/springframework/tooling/boot/ls/DelegatingStreamConnectionProvider.java
+++ b/eclipse-language-servers/org.springframework.tooling.boot.ls/src/org/springframework/tooling/boot/ls/DelegatingStreamConnectionProvider.java
@@ -53,14 +53,6 @@ import com.google.common.collect.ImmutableSet;
*/
public class DelegatingStreamConnectionProvider implements StreamConnectionProvider {
- private static final boolean DEBUG = (""+Platform.getLocation()).contains("kdvolder");
- private static void debug(String string) {
- if (DEBUG) {
- System.out.println(string);
- }
- }
-
-
private StreamConnectionProvider provider;
private ResourceListener fResourceListener;
private LanguageServer languageServer;
diff --git a/eclipse-language-servers/org.springframework.tooling.boot.ls/src/org/springframework/tooling/boot/ls/commands/LiveProcessCommandsQuickAccessProvider.java b/eclipse-language-servers/org.springframework.tooling.boot.ls/src/org/springframework/tooling/boot/ls/commands/LiveProcessCommandsQuickAccessProvider.java
index 941d7a2c9..ac850fd1a 100644
--- a/eclipse-language-servers/org.springframework.tooling.boot.ls/src/org/springframework/tooling/boot/ls/commands/LiveProcessCommandsQuickAccessProvider.java
+++ b/eclipse-language-servers/org.springframework.tooling.boot.ls/src/org/springframework/tooling/boot/ls/commands/LiveProcessCommandsQuickAccessProvider.java
@@ -75,7 +75,6 @@ public class LiveProcessCommandsQuickAccessProvider implements IQuickAccessCompu
}
private void createCommandItems(List res, Object commandResult) {
- System.out.println(commandResult);
if (commandResult instanceof List>) {
List> allCommands = (List>) commandResult;
diff --git a/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons/src/org/springframework/tooling/ls/eclipse/commons/LanguageServerProcessReaper.java b/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons/src/org/springframework/tooling/ls/eclipse/commons/LanguageServerProcessReaper.java
index 2914db8d3..f5fc91d48 100644
--- a/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons/src/org/springframework/tooling/ls/eclipse/commons/LanguageServerProcessReaper.java
+++ b/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons/src/org/springframework/tooling/ls/eclipse/commons/LanguageServerProcessReaper.java
@@ -43,7 +43,7 @@ public class LanguageServerProcessReaper extends Thread {
private static void debug(String string) {
if (DEBUG) {
- System.out.println("LanguageServerProcessReaper: "+string);
+ System.err.println("LanguageServerProcessReaper: "+string);
}
}
diff --git a/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons/src/org/springframework/tooling/ls/eclipse/commons/ProjectSorter.java b/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons/src/org/springframework/tooling/ls/eclipse/commons/ProjectSorter.java
index 417988de7..33ea5a5fa 100644
--- a/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons/src/org/springframework/tooling/ls/eclipse/commons/ProjectSorter.java
+++ b/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons/src/org/springframework/tooling/ls/eclipse/commons/ProjectSorter.java
@@ -19,21 +19,17 @@ import org.eclipse.core.filebuffers.IFileBuffer;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.IPath;
-import org.springframework.tooling.jdt.ls.commons.Logger;
public class ProjectSorter implements Comparator {
private Set projectsWithEditors;
- private Logger logger = Logger.forEclipsePlugin(() -> LanguageServerCommonsActivator.getInstance());
-
public ProjectSorter() {
this.projectsWithEditors = new HashSet();
IFileBuffer[] openBuffers = FileBuffers.getTextFileBufferManager().getFileBuffers();
for (IFileBuffer ob : openBuffers) {
IPath path = ob.getLocation();
- System.out.println(path);
if (path.segmentCount() >= 1) {
IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(path.segment(0));
projectsWithEditors.add(project);
diff --git a/eclipse-language-servers/org.springframework.tooling.ls.eclipse.gotosymbol/src/org/springframework/tooling/ls/eclipse/gotosymbol/dialogs/InProjectSymbolsProvider.java b/eclipse-language-servers/org.springframework.tooling.ls.eclipse.gotosymbol/src/org/springframework/tooling/ls/eclipse/gotosymbol/dialogs/InProjectSymbolsProvider.java
index 04c380153..d4ac77f0d 100644
--- a/eclipse-language-servers/org.springframework.tooling.ls.eclipse.gotosymbol/src/org/springframework/tooling/ls/eclipse/gotosymbol/dialogs/InProjectSymbolsProvider.java
+++ b/eclipse-language-servers/org.springframework.tooling.ls.eclipse.gotosymbol/src/org/springframework/tooling/ls/eclipse/gotosymbol/dialogs/InProjectSymbolsProvider.java
@@ -38,7 +38,6 @@ public class InProjectSymbolsProvider implements SymbolsProvider {
public static InProjectSymbolsProvider createFor(LiveExpression project) {
LiveExpression> languageServers = project.apply(p -> {
- System.out.println("project = "+(p==null?null:p.getName()));
return p == null
? ImmutableList.of()
: LanguageServiceAccessor.getLanguageServers(
diff --git a/eclipse-language-servers/org.springframework.tooling.ls.eclipse.gotosymbol/src/org/springframework/tooling/ls/eclipse/gotosymbol/dialogs/InWorkspaceSymbolsProvider.java b/eclipse-language-servers/org.springframework.tooling.ls.eclipse.gotosymbol/src/org/springframework/tooling/ls/eclipse/gotosymbol/dialogs/InWorkspaceSymbolsProvider.java
index e1d7d63a0..19f13307c 100644
--- a/eclipse-language-servers/org.springframework.tooling.ls.eclipse.gotosymbol/src/org/springframework/tooling/ls/eclipse/gotosymbol/dialogs/InWorkspaceSymbolsProvider.java
+++ b/eclipse-language-servers/org.springframework.tooling.ls.eclipse.gotosymbol/src/org/springframework/tooling/ls/eclipse/gotosymbol/dialogs/InWorkspaceSymbolsProvider.java
@@ -51,7 +51,6 @@ public class InWorkspaceSymbolsProvider implements SymbolsProvider {
return LanguageServiceAccessor.getLanguageServers(project,
WS_SYMBOL_CAP, true);
} else {
- System.out.println("project = null");
return LanguageServiceAccessor.getActiveLanguageServers(WS_SYMBOL_CAP);
}
});
diff --git a/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/jandex/IndexRoutines.java b/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/jandex/IndexRoutines.java
index a484b26be..fe0a8bce4 100644
--- a/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/jandex/IndexRoutines.java
+++ b/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/jandex/IndexRoutines.java
@@ -10,11 +10,13 @@
*******************************************************************************/
package org.springframework.ide.vscode.commons.jandex;
+import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.io.PrintStream;
import java.net.URI;
import java.net.URL;
import java.net.URLClassLoader;
@@ -190,7 +192,7 @@ public class IndexRoutines {
private static IndexView createJarIndex(File indexFile, File jarFile) {
try {
return JarIndexer.createJarIndex(jarFile, new Indexer(), indexFile, false, false,
- false, System.out, System.err).getIndex();
+ false, new PrintStream(new ByteArrayOutputStream()), System.err).getIndex();
} catch (Exception e) {
log.error("Failed to index '" + jarFile + "'", e);
return null;
diff --git a/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/reconcile/BadWordReconcileEngine.java b/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/reconcile/BadWordReconcileEngine.java
index 09bdbd066..77be5accb 100644
--- a/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/reconcile/BadWordReconcileEngine.java
+++ b/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/reconcile/BadWordReconcileEngine.java
@@ -58,9 +58,6 @@ public class BadWordReconcileEngine implements IReconcileEngine {
@Override
public void reconcile(IDocument doc, IProblemCollector problemCollector) {
String text = doc.get();
- System.out.println(">>>> reconciling for bad words ==========");
- System.out.println(text);
- System.out.println("<<<< reconciling for bad words ==========");
problemCollector.beginCollecting();
try {
diff --git a/headless-services/commons/commons-util/src/main/java/org/springframework/ide/vscode/commons/util/AsyncProcess.java b/headless-services/commons/commons-util/src/main/java/org/springframework/ide/vscode/commons/util/AsyncProcess.java
index dec66a706..02b805f2c 100644
--- a/headless-services/commons/commons-util/src/main/java/org/springframework/ide/vscode/commons/util/AsyncProcess.java
+++ b/headless-services/commons/commons-util/src/main/java/org/springframework/ide/vscode/commons/util/AsyncProcess.java
@@ -144,7 +144,7 @@ public class AsyncProcess {
if (captureStreams) {
init(workingDir, cmd, new ByteArrayOutputStream(), new ByteArrayOutputStream());
} else {
- init(workingDir, cmd, System.out, System.err);
+ init(workingDir, cmd, System.err, System.err);
}
}
@@ -197,12 +197,12 @@ public class AsyncProcess {
result.append("exitValue = "+exitValue+"\n");
String strOut = getOut();
if (strOut!=null) {
- result.append("------- System.out -------\n");
+ result.append("------- System-out -------\n");
result.append(strOut);
}
String strErr = getErr();
if (strErr!=null) {
- result.append("------- System.err -------\n");
+ result.append("------- System-err -------\n");
result.append(strErr);
}
result.append("<<<< ExternalProcess");
diff --git a/headless-services/commons/commons-util/src/main/java/org/springframework/ide/vscode/commons/util/ExternalCommand.java b/headless-services/commons/commons-util/src/main/java/org/springframework/ide/vscode/commons/util/ExternalCommand.java
index 33549a85a..2cebd70a5 100644
--- a/headless-services/commons/commons-util/src/main/java/org/springframework/ide/vscode/commons/util/ExternalCommand.java
+++ b/headless-services/commons/commons-util/src/main/java/org/springframework/ide/vscode/commons/util/ExternalCommand.java
@@ -71,9 +71,7 @@ public class ExternalCommand {
* 0 exit value an exception is thrown.
*/
public void exec(File workdir) throws IOException, InterruptedException, TimeoutException {
- System.out.println(">>> exec: "+this);
- ExternalProcess process = new ExternalProcess(workdir, this);
- System.out.println(process);
+ new ExternalProcess(workdir, this);
// org.junit.Assert.assertEquals(0, process.getExitValue());
}
diff --git a/headless-services/commons/commons-util/src/main/java/org/springframework/ide/vscode/commons/util/ExternalProcess.java b/headless-services/commons/commons-util/src/main/java/org/springframework/ide/vscode/commons/util/ExternalProcess.java
index 6157d974d..d97c78e23 100644
--- a/headless-services/commons/commons-util/src/main/java/org/springframework/ide/vscode/commons/util/ExternalProcess.java
+++ b/headless-services/commons/commons-util/src/main/java/org/springframework/ide/vscode/commons/util/ExternalProcess.java
@@ -151,7 +151,7 @@ public class ExternalProcess {
if (captureStreams) {
init(workingDir, cmd, new ByteArrayOutputStream(), new ByteArrayOutputStream(), timeout);
} else {
- init(workingDir, cmd, System.out, System.err, timeout);
+ init(workingDir, cmd, System.err, System.err, timeout);
}
}
@@ -178,12 +178,12 @@ public class ExternalProcess {
result.append("exitValue = "+exitValue+"\n");
String strOut = getOut();
if (strOut!=null) {
- result.append("------- System.out -------\n");
+ result.append("------- System-out -------\n");
result.append(strOut);
}
String strErr = getErr();
if (strErr!=null) {
- result.append("------- System.err -------\n");
+ result.append("------- System-err -------\n");
result.append(strErr);
}
result.append("<<<< ExternalProcess");
diff --git a/headless-services/commons/commons-util/src/main/java/org/springframework/ide/vscode/commons/util/LogRedirect.java b/headless-services/commons/commons-util/src/main/java/org/springframework/ide/vscode/commons/util/LogRedirect.java
index fafd6fde7..7fba9efb1 100644
--- a/headless-services/commons/commons-util/src/main/java/org/springframework/ide/vscode/commons/util/LogRedirect.java
+++ b/headless-services/commons/commons-util/src/main/java/org/springframework/ide/vscode/commons/util/LogRedirect.java
@@ -22,8 +22,7 @@ public class LogRedirect {
String logfilePath = System.getProperty("sts.log.file");
if (StringUtil.hasText(logfilePath)) {
PrintStream logFile = logFileStream(logfilePath);
- System.setErr(logFile);
- System.setOut(logFile); //Spring boot actually logs on sysout instead of syserr.
+ System.setErr(logFile);
}
}
diff --git a/headless-services/commons/commons-util/src/main/java/org/springframework/ide/vscode/commons/util/text/linetracker/AbstractLineTracker.java b/headless-services/commons/commons-util/src/main/java/org/springframework/ide/vscode/commons/util/text/linetracker/AbstractLineTracker.java
index 4880b2329..38195ebc1 100644
--- a/headless-services/commons/commons-util/src/main/java/org/springframework/ide/vscode/commons/util/text/linetracker/AbstractLineTracker.java
+++ b/headless-services/commons/commons-util/src/main/java/org/springframework/ide/vscode/commons/util/text/linetracker/AbstractLineTracker.java
@@ -34,14 +34,7 @@ import org.springframework.ide.vscode.commons.util.text.IRegion;
*
*/
public abstract class AbstractLineTracker implements ILineTracker, ILineTrackerExtension {
-
- /**
- * Tells whether this class is in debug mode.
- *
- * @since 3.1
- */
- private static final boolean DEBUG= false;
-
+
/**
* Combines the information of the occurrence of a line delimiter. delimiterIndex
* is the index where a line delimiter starts, whereas delimiterLength,
@@ -267,8 +260,6 @@ public abstract class AbstractLineTracker implements ILineTracker, ILineTrackerE
* @since 3.1
*/
protected final void flushRewriteSession() throws BadLocationException {
- if (DEBUG)
- System.out.println("AbstractLineTracker: Flushing rewrite session: " + fActiveRewriteSession); //$NON-NLS-1$
Iterator e= fPendingRequests.iterator();
diff --git a/headless-services/manifest-yaml-language-server/src/main/java/org/springframework/ide/vscode/manifest/yaml/ManifestYamlLanguageServerInitializer.java b/headless-services/manifest-yaml-language-server/src/main/java/org/springframework/ide/vscode/manifest/yaml/ManifestYamlLanguageServerInitializer.java
index 451c1827c..9d404eb29 100644
--- a/headless-services/manifest-yaml-language-server/src/main/java/org/springframework/ide/vscode/manifest/yaml/ManifestYamlLanguageServerInitializer.java
+++ b/headless-services/manifest-yaml-language-server/src/main/java/org/springframework/ide/vscode/manifest/yaml/ManifestYamlLanguageServerInitializer.java
@@ -109,7 +109,6 @@ public class ManifestYamlLanguageServerInitializer implements InitializingBean {
});
// workspace.onDidChangeConfiguraton(settings -> {
-// System.out.println("Config changed: "+params);
// Integer val = settings.getInt("languageServerExample", "maxNumberOfProblems");
// if (val!=null) {
// maxProblems = ((Number) val).intValue();
diff --git a/headless-services/spring-boot-language-server/build.sh b/headless-services/spring-boot-language-server/build.sh
index d74135dfb..c19c435a1 100755
--- a/headless-services/spring-boot-language-server/build.sh
+++ b/headless-services/spring-boot-language-server/build.sh
@@ -6,7 +6,6 @@ cd ../jdt-ls-extension
if command -v xvfb-run ; then
echo "Using xvfb to run in headless environment..."
xvfb-run ../mvnw \
- -DskipTests \
-DtrimStackTrace=false \
-f ../pom.xml \
-pl $modules \
@@ -14,7 +13,6 @@ if command -v xvfb-run ; then
clean install
else
../mvnw \
- -DskipTests \
-DtrimStackTrace=false \
-f ../pom.xml \
-pl $modules \
@@ -24,7 +22,6 @@ fi
cd ../xml-ls-extension
../mvnw \
-DtrimStackTrace=false \
- -DskipTests \
-f ../pom.xml \
-pl xml-ls-extension \
-am \
diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/annotations/AnnotationHierarchyAwareLookup.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/annotations/AnnotationHierarchyAwareLookup.java
index b2d5eab41..e8516bc83 100644
--- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/annotations/AnnotationHierarchyAwareLookup.java
+++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/annotations/AnnotationHierarchyAwareLookup.java
@@ -126,27 +126,4 @@ public class AnnotationHierarchyAwareLookup {
return bindings.containsKey(fqName);
}
-// private static int indent = 0;
-//
-// private static void debug(int indent, String msg) {
-// for (int i = 0; i < indent; i++) {
-// System.out.print(" ");
-// }
-// System.out.println(msg);
-// }
-// private static int debug_in(String msg) {
-// for (int i = 0; i < indent; i++) {
-// System.out.print(" ");
-// }
-// System.out.println(">> "+msg);
-// return indent ++;
-// }
-// private static void debug_out(String msg) {
-// indent --;
-// for (int i = 0; i < indent; i++) {
-// System.out.print(" ");
-// }
-// System.out.println("<< "+msg);
-// }
-
}
diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/utils/SpringIndexerXML.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/utils/SpringIndexerXML.java
index 158c206ad..fbaf2976e 100644
--- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/utils/SpringIndexerXML.java
+++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/utils/SpringIndexerXML.java
@@ -230,7 +230,6 @@ public class SpringIndexerXML implements SpringIndexer {
// List attributeNodes = node.getAttributeNodes();
// if (attributeNodes != null) {
// for (DOMAttr attribute : attributeNodes) {
-// System.out.println(attribute.getName() + " - " + attribute.getValue());
// }
// }
// }
diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/metadata/SpringPropertyIndex.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/metadata/SpringPropertyIndex.java
index f33e10987..1ae08f90e 100644
--- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/metadata/SpringPropertyIndex.java
+++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/metadata/SpringPropertyIndex.java
@@ -64,12 +64,6 @@ public class SpringPropertyIndex {
}
}
- // System.out.println(">>> spring properties metadata loaded "+this.size()+" items===");
- // dumpAsTestData();
- // System.out.println(">>> spring properties metadata loaded "+this.size()+" items===");
-// } catch (Exception e) {
-// LOG.log
-// }
}
}
@@ -77,32 +71,6 @@ public class SpringPropertyIndex {
properties.add(new PropertyInfo(valueProviders, propertyInfo));
}
-// /**
-// * Dumps out 'test data' based on the current contents of the index. This is not meant to be
-// * used in 'production' code. The idea is to call this method during development to dump a
-// * 'snapshot' of the index onto System.out. The data is printed in a forma so that it can be easily
-// * pasted/used into JUNit testing code.
-// */
-// public void dumpAsTestData() {
-// List> allData = this.find("");
-// for (Match match : allData) {
-// PropertyInfo d = match.data;
-// System.out.println("data("
-// +dumpString(d.getId())+", "
-// +dumpString(d.getType())+", "
-// +dumpString(d.getDefaultValue())+", "
-// +dumpString(d.getDescription()) +");"
-// );
-//// for (PropertySource source : d.getSources()) {
-//// String st = source.getSourceType();
-//// String sm = source.getSourceMethod();
-//// if (sm!=null) {
-//// System.out.println(d.getId() +" from: "+st+"::"+sm);
-//// }
-//// }
-// }
-// }
-
private String dumpString(Object v) {
if (v==null) {
return "null";
diff --git a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/requestmapping/test/RequestMappingDependentConstantChangedTest.java b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/requestmapping/test/RequestMappingDependentConstantChangedTest.java
index 4861b6572..c09993551 100644
--- a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/requestmapping/test/RequestMappingDependentConstantChangedTest.java
+++ b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/requestmapping/test/RequestMappingDependentConstantChangedTest.java
@@ -154,9 +154,6 @@ public class RequestMappingDependentConstantChangedTest {
{
List extends SymbolInformation> symbols = indexer.getSymbols(pingUri);
- for (SymbolInformation s : symbols) {
- System.out.println(s.getName());
- }
assertSymbolCount(1, symbols);
assertSymbol(pingUri, "@/pong -- GET", "@GetMapping(PongConstantRequestMapping.PONG)");
}
@@ -190,9 +187,6 @@ public class RequestMappingDependentConstantChangedTest {
{
List extends SymbolInformation> symbols = indexer.getSymbols(pingUri);
- for (SymbolInformation s : symbols) {
- System.out.println(s.getName());
- }
assertSymbolCount(1, symbols);
assertSymbol(pingUri, "@/pong -- GET", "@GetMapping(PongConstantRequestMapping.PONG)");
}
diff --git a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/test/ApplicationPropertiesEditorTest.java b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/test/ApplicationPropertiesEditorTest.java
index b16ca05dc..1acb28396 100644
--- a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/test/ApplicationPropertiesEditorTest.java
+++ b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/test/ApplicationPropertiesEditorTest.java
@@ -446,7 +446,6 @@ public class ApplicationPropertiesEditorTest extends AbstractPropsEditorTest {
}
@Test public void testHyperlinkTargets() throws Exception {
- System.out.println(">>> testHyperlinkTargets");
IJavaProject p = createPredefinedMavenProject("tricky-getters-boot-1.3.1-app");
useProject(p);
@@ -467,13 +466,11 @@ public class ApplicationPropertiesEditorTest extends AbstractPropsEditorTest {
definitionLinkAsserts.assertLinkTargets(editor, "flyway", p, editor.rangeOf("flyway.init-sqls", "flyway.init-sqls"),
method("org.springframework.boot.autoconfigure.flyway.FlywayProperties", "setInitSqls", "java.util.List"));
- System.out.println("<<< testHyperlinkTargets");
}
@Test public void testHyperlinkTargetsLoggingLevel() throws Exception {
- System.out.println(">>> testHyperlinkTargetsLoggingLevel");
IJavaProject p = createPredefinedMavenProject("tricky-getters-boot-1.3.1-app");
useProject(p);
@@ -484,7 +481,6 @@ public class ApplicationPropertiesEditorTest extends AbstractPropsEditorTest {
definitionLinkAsserts.assertLinkTargets(editor, "level", p, editor.rangeOf("logging.level", "logging.level"),
"org.springframework.boot.logging.LoggingApplicationListener");
- System.out.println("<<< testHyperlinkTargetsLoggingLevel");
}
@Test public void testReconcile() throws Exception {
diff --git a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/test/ApplicationYamlEditorTest.java b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/test/ApplicationYamlEditorTest.java
index 161382b43..81a4fc285 100644
--- a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/test/ApplicationYamlEditorTest.java
+++ b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/test/ApplicationYamlEditorTest.java
@@ -792,9 +792,6 @@ public class ApplicationYamlEditorTest extends AbstractPropsEditorTest {
//Probably that is why it fails in CI build?
//Let's check:
// IType type = project.findType("com.fasterxml.jackson.databind.SerializationFeature");
-// System.out.println(">>> source for: "+type.getFullyQualifiedName());
-// System.out.println(downloadSources(type));
-// System.out.println("<<< source for: "+type.getFullyQualifiedName());
editor = newEditor(
"spring:\n" +
@@ -824,9 +821,6 @@ public class ApplicationYamlEditorTest extends AbstractPropsEditorTest {
//Probably that is why it fails in CI build?
//Let's check:
// IType type = project.findType("com.fasterxml.jackson.databind.SerializationFeature");
-// System.out.println(">>> source for: "+type.getFullyQualifiedName());
-// System.out.println(downloadSources(type));
-// System.out.println("<<< source for: "+type.getFullyQualifiedName());
assertCompletionDetails(
"spring:\n" +
@@ -989,7 +983,6 @@ public class ApplicationYamlEditorTest extends AbstractPropsEditorTest {
" no: \n" +
" good: true\n"
);
- System.out.println(editor);
editor.assertProblems(
"extracrap: 8080|Expecting a 'int' but got a 'Mapping' node",
"snuggem|Unknown property",
diff --git a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/test/ProblemTypesToJson.java b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/test/ProblemTypesToJson.java
index d55a0bfc7..d4cca3f2f 100644
--- a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/test/ProblemTypesToJson.java
+++ b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/test/ProblemTypesToJson.java
@@ -198,7 +198,6 @@ public class ProblemTypesToJson {
}
String newContent = gson.toJson(parsed);
- System.out.println(newContent);
FileUtils.writeStringToFile(packageJsonFile, newContent);
}
diff --git a/vscode-extensions/commons-vscode/src/launch-util.ts b/vscode-extensions/commons-vscode/src/launch-util.ts
index e3f98efee..82ead132b 100644
--- a/vscode-extensions/commons-vscode/src/launch-util.ts
+++ b/vscode-extensions/commons-vscode/src/launch-util.ts
@@ -8,7 +8,7 @@ import * as Net from 'net';
import * as ChildProcess from 'child_process';
import * as CommonsCommands from './commands';
import { RequestType, LanguageClientOptions, Position } from 'vscode-languageclient';
-import {LanguageClient, StreamInfo, ServerOptions} from 'vscode-languageclient/node';
+import {LanguageClient, StreamInfo, ServerOptions, ExecutableOptions, Executable} from 'vscode-languageclient/node';
import {
Disposable,
window,
@@ -95,29 +95,16 @@ function getJdtUserDefinedJavaHome(): string {
}
export function activate(options: ActivatorOptions, context: VSCode.ExtensionContext): Thenable {
- let DEBUG = options.DEBUG;
- let jvmHeap = getUserDefinedJvmHeap(options.workspaceOptions, options.jvmHeap);
- let jvmArgs = getUserDefinedJvmArgs(options.workspaceOptions);
if (options.CONNECT_TO_LS) {
return VSCode.window.showInformationMessage("Start language server")
.then((x) => connectToLS(context, options));
} else {
- let clientOptions = options.clientOptions;
+ const clientOptions = options.clientOptions;
- var log_output = VSCode.window.createOutputChannel(options.extensionId + "-debug-log");
- log("Activating '" + options.extensionId + "' extension");
-
- function log(msg: string) {
- if (log_output) {
- log_output.append(msg + "\n");
- }
- }
-
- function error(msg: string) {
- if (log_output) {
- log_output.append("ERR: " + msg + "\n");
- }
- }
+ const outChennalName = options.extensionId + "-debug-log"
+ clientOptions.outputChannel = VSCode.window.createOutputChannel(outChennalName);
+ clientOptions.outputChannelName = outChennalName;
+ clientOptions.outputChannel.appendLine("Activating '" + options.extensionId + "' extension");
let findJRE = options.preferJdk ? findJdk : findJvm;
@@ -132,7 +119,7 @@ export function activate(options: ActivatorOptions, context: VSCode.ExtensionCon
return;
}
let javaExecutablePath = jvm.getJavaExecutable();
- log("Found java exe: " + javaExecutablePath);
+ clientOptions.outputChannel.appendLine("Found java exe: " + javaExecutablePath);
let version = jvm.getMajorVersion();
if (version<11) {
@@ -144,84 +131,131 @@ export function activate(options: ActivatorOptions, context: VSCode.ExtensionCon
);
return;
}
- log("isJavaEightOrHigher => true");
+ clientOptions.outputChannel.appendLine("isJavaEightOrHigher => true");
- function createServer(): Promise {
- return new Promise((resolve, reject) => {
- PortFinder.getPort((err, port) => {
- Net.createServer(socket => {
- log('Child process connected on port ' + port);
-
- resolve({
- reader: socket,
- writer: socket
- });
- })
- .listen(port, () => {
- let processLaunchoptions = {
- cwd: VSCode.workspace.rootPath
- };
- let logfile : string = options.workspaceOptions.get("logfile") || "/dev/null";
- //The logfile = '/dev/null' is handled specifically by the language server process so it works on all OSs.
- log('Redirecting server logs to ' + logfile);
- const args = [
- '-Dspring.lsp.client-port='+port,
- '-Dserver.port=' + port,
- '-Dsts.lsp.client=vscode',
- '-Dsts.log.file=' + logfile,
- '-XX:TieredStopAtLevel=1'
- ];
- if (isCheckingJVM(options.workspaceOptions) && options.checkjvm) {
- options.checkjvm(context, jvm);
- }
- if (jvmHeap && !hasHeapArg(jvmArgs)) {
- args.unshift("-Xmx"+jvmHeap);
- }
- if (jvmArgs) {
- args.unshift(...jvmArgs);
- }
- if (DEBUG) {
- args.unshift(DEBUG_ARG);
- }
-
- let child: ChildProcess.ChildProcess = null;
- if (options.explodedLsJarData) {
- const explodedLsJarData = options.explodedLsJarData;
- const lsRoot = Path.resolve(context.extensionPath, explodedLsJarData.lsLocation);
-
- // Add config file if needed
- if (explodedLsJarData.configFileName) {
- args.push(`-Dspring.config.location=file:${Path.resolve(lsRoot, `BOOT-INF/classes/${explodedLsJarData.configFileName}`)}`);
- }
-
- // Add classpath
- const classpath: string[] = [];
- classpath.push(Path.resolve(lsRoot, 'BOOT-INF/classes'));
- classpath.push(`${Path.resolve(lsRoot, 'BOOT-INF/lib')}${Path.sep}*`);
-
- child = jvm.mainClassLaunch(explodedLsJarData.mainClass, classpath, args, processLaunchoptions);
- } else {
- // Start the child java process
- const launcher = findServerJar(Path.resolve(context.extensionPath, 'jars'));
- child = jvm.jarLaunch(launcher, args, processLaunchoptions);
- }
- if (child) {
- child.stdout.on('data', (data) => {
- log("" + data);
- });
- child.stderr.on('data', (data) => {
- error("" + data);
- })
- }
- });
- });
- });
+ if (process.env['SPRING_LS_USE_SOCKET']) {
+ return setupLanguageClient(context, createServerOptionsForPortComm(options, context, jvm), options);
+ } else {
+ return setupLanguageClient(context, createServerOptions(options, context, jvm), options);
}
- return setupLanguageClient(context, createServer, options);
});
}
}
+function createServerOptions(options: ActivatorOptions, context: VSCode.ExtensionContext, jvm: JVM, port? : number): Executable {
+ const executable: Executable = Object.create(null);
+ const execOptions: ExecutableOptions = Object.create(null);
+ execOptions.env = Object.assign(process.env);
+ // execOptions.cwd = VSCode.workspace.rootPath
+ executable.options = execOptions;
+ executable.command = jvm.getJavaExecutable();
+ const vmArgs = prepareJvmArgs(options, context, jvm, port);
+ addCpAndLauncherToJvmArgs(vmArgs, options, context);
+ executable.args = vmArgs;
+ return executable;
+
+}
+
+function createServerOptionsForPortComm(options: ActivatorOptions, context: VSCode.ExtensionContext, jvm: JVM): ServerOptions {
+ return () =>
+ new Promise((resolve, reject) => {
+ PortFinder.getPort((err, port) => {
+ Net.createServer(socket => {
+ options.clientOptions.outputChannel.appendLine('Child process connected on port ' + port);
+
+ resolve({
+ reader: socket,
+ writer: socket
+ });
+ })
+ .listen(port, () => {
+ let processLaunchoptions = {
+ cwd: VSCode.workspace.rootPath
+ };
+ const args = prepareJvmArgs(options, context, jvm, port);
+ if (options.explodedLsJarData) {
+ const explodedLsJarData = options.explodedLsJarData;
+ const lsRoot = Path.resolve(context.extensionPath, explodedLsJarData.lsLocation);
+
+ // Add classpath
+ const classpath: string[] = [];
+ classpath.push(Path.resolve(lsRoot, 'BOOT-INF/classes'));
+ classpath.push(`${Path.resolve(lsRoot, 'BOOT-INF/lib')}${Path.sep}*`);
+
+ jvm.mainClassLaunch(explodedLsJarData.mainClass, classpath, args, processLaunchoptions);
+ } else {
+ // Start the child java process
+ const launcher = findServerJar(Path.resolve(context.extensionPath, 'jars'));
+ jvm.jarLaunch(launcher, args, processLaunchoptions);
+ }
+ });
+ });
+ });
+}
+
+function prepareJvmArgs(options: ActivatorOptions, context: VSCode.ExtensionContext, jvm: JVM, port?: number): string[] {
+ const DEBUG = options.DEBUG;
+ const jvmHeap = getUserDefinedJvmHeap(options.workspaceOptions, options.jvmHeap);
+ const jvmArgs = getUserDefinedJvmArgs(options.workspaceOptions);
+
+ let logfile : string = options.workspaceOptions.get("logfile") || "/dev/null";
+ //The logfile = '/dev/null' is handled specifically by the language server process so it works on all OSs.
+ options.clientOptions.outputChannel.appendLine('Redirecting server logs to ' + logfile);
+ const args = [
+ '-Dsts.lsp.client=vscode',
+ '-Dsts.log.file=' + logfile,
+ '-XX:TieredStopAtLevel=1'
+ ];
+ if (port && port > 0) {
+ args.push('-Dspring.lsp.client-port='+port);
+ args.push('-Dserver.port=' + port);
+ }
+ if (isCheckingJVM(options.workspaceOptions) && options.checkjvm) {
+ options.checkjvm(context, jvm);
+ }
+ if (jvmHeap && !hasHeapArg(jvmArgs)) {
+ args.unshift("-Xmx"+jvmHeap);
+ }
+ if (jvmArgs) {
+ args.unshift(...jvmArgs);
+ }
+ if (DEBUG) {
+ args.unshift(DEBUG_ARG);
+ }
+
+ if (options.explodedLsJarData) {
+ const explodedLsJarData = options.explodedLsJarData;
+ const lsRoot = Path.resolve(context.extensionPath, explodedLsJarData.lsLocation);
+ // Add config file if needed
+ if (explodedLsJarData.configFileName) {
+ args.push(`-Dspring.config.location=file:${Path.resolve(lsRoot, `BOOT-INF/classes/${explodedLsJarData.configFileName}`)}`);
+ }
+ }
+ return args;
+}
+
+function addCpAndLauncherToJvmArgs(args: string[], options: ActivatorOptions, context: VSCode.ExtensionContext) {
+ if (options.explodedLsJarData) {
+ const explodedLsJarData = options.explodedLsJarData;
+ const lsRoot = Path.resolve(context.extensionPath, explodedLsJarData.lsLocation);
+
+ // Add classpath
+ const classpath: string[] = [];
+ classpath.push(Path.resolve(lsRoot, 'BOOT-INF/classes'));
+ classpath.push(`${Path.resolve(lsRoot, 'BOOT-INF/lib')}${Path.sep}*`);
+
+
+ args.unshift(classpath.join(Path.delimiter));
+ args.unshift('-cp');
+ args.push(explodedLsJarData.mainClass);
+ } else {
+ // Start the child java process
+ args.push('-jar');
+ const launcher = findServerJar(Path.resolve(context.extensionPath, 'jars'));
+ args.push(launcher);
+ }
+}
+
function hasHeapArg(vmargs?: string[]) : boolean {
if (vmargs) {
return vmargs.some(a => a.startsWith("-Xmx"));