diff --git a/atom-extensions/atom-bosh/package.json b/atom-extensions/atom-bosh/package.json
index fd79472f5..8f5cfab0a 100644
--- a/atom-extensions/atom-bosh/package.json
+++ b/atom-extensions/atom-bosh/package.json
@@ -1,6 +1,6 @@
{
"name": "bosh-yaml",
- "version": "0.2.1",
+ "version": "0.3.0",
"description": "Provides validation and content assist for various Bosh configuration files",
"repository": "https://github.com/spring-projects/atom-bosh",
"icon": "icon.png",
diff --git a/atom-extensions/atom-cf-manifest-yaml/package.json b/atom-extensions/atom-cf-manifest-yaml/package.json
index aba86593e..c72ba6bba 100644
--- a/atom-extensions/atom-cf-manifest-yaml/package.json
+++ b/atom-extensions/atom-cf-manifest-yaml/package.json
@@ -1,6 +1,6 @@
{
"name": "cf-manifest-yaml",
- "version": "0.2.1",
+ "version": "0.3.0",
"description": "Cloud Foundry Deployment Manifest YAML support for Atom",
"repository": "https://github.com/spring-projects/atom-cf-manifest-yaml",
"icon": "icon.png",
diff --git a/atom-extensions/atom-concourse/package.json b/atom-extensions/atom-concourse/package.json
index ca2883273..a33958571 100644
--- a/atom-extensions/atom-concourse/package.json
+++ b/atom-extensions/atom-concourse/package.json
@@ -1,6 +1,6 @@
{
"name": "concourse-pipeline-yaml",
- "version": "0.2.1",
+ "version": "0.3.0",
"description": "Provides validation and content assist for Concourse CI pipeline and task configuration yml files",
"repository": "https://github.com/spring-projects/atom-concourse",
"icon": "icon.png",
diff --git a/atom-extensions/atom-spring-boot/package.json b/atom-extensions/atom-spring-boot/package.json
index 09bce63ab..947e8df66 100644
--- a/atom-extensions/atom-spring-boot/package.json
+++ b/atom-extensions/atom-spring-boot/package.json
@@ -1,6 +1,6 @@
{
"name": "spring-boot",
- "version": "0.2.1",
+ "version": "0.3.0",
"description": "Spring Boot support for Atom",
"repository": "https://github.com/spring-projects/atom-spring-boot",
"icon": "icon.png",
diff --git a/headless-services/bosh-language-server/pom.xml b/headless-services/bosh-language-server/pom.xml
index ad50b4d11..1d091e5f3 100644
--- a/headless-services/bosh-language-server/pom.xml
+++ b/headless-services/bosh-language-server/pom.xml
@@ -8,7 +8,7 @@
org.springframework.ide.vscode
commons-parent
- 0.2.1-SNAPSHOT
+ 0.3.0-SNAPSHOT
../commons/pom.xml
diff --git a/headless-services/commons/commons-boot-app-cli/pom.xml b/headless-services/commons/commons-boot-app-cli/pom.xml
index 19690bda7..cd3eb4719 100644
--- a/headless-services/commons/commons-boot-app-cli/pom.xml
+++ b/headless-services/commons/commons-boot-app-cli/pom.xml
@@ -8,7 +8,7 @@
org.springframework.ide.vscode
commons-parent
- 0.2.1-SNAPSHOT
+ 0.3.0-SNAPSHOT
../pom.xml
diff --git a/headless-services/commons/commons-cf/pom.xml b/headless-services/commons/commons-cf/pom.xml
index 2bd949424..a4ac2e7b6 100644
--- a/headless-services/commons/commons-cf/pom.xml
+++ b/headless-services/commons/commons-cf/pom.xml
@@ -8,7 +8,7 @@
org.springframework.ide.vscode
commons-parent
- 0.2.1-SNAPSHOT
+ 0.3.0-SNAPSHOT
../pom.xml
diff --git a/headless-services/commons/commons-gradle/pom.xml b/headless-services/commons/commons-gradle/pom.xml
index d3d9b88fe..7e1e86f35 100644
--- a/headless-services/commons/commons-gradle/pom.xml
+++ b/headless-services/commons/commons-gradle/pom.xml
@@ -9,7 +9,7 @@
org.springframework.ide.vscode
commons-parent
- 0.2.1-SNAPSHOT
+ 0.3.0-SNAPSHOT
../pom.xml
diff --git a/headless-services/commons/commons-gradle/src/main/java/org/springframework/ide/vscode/commons/gradle/GradleJavaProject.java b/headless-services/commons/commons-gradle/src/main/java/org/springframework/ide/vscode/commons/gradle/GradleJavaProject.java
index 6381f0b36..a4ff7c56f 100644
--- a/headless-services/commons/commons-gradle/src/main/java/org/springframework/ide/vscode/commons/gradle/GradleJavaProject.java
+++ b/headless-services/commons/commons-gradle/src/main/java/org/springframework/ide/vscode/commons/gradle/GradleJavaProject.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2017 Pivotal, Inc.
+ * Copyright (c) 2017, 2018 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
@@ -13,12 +13,14 @@ package org.springframework.ide.vscode.commons.gradle;
import java.io.File;
import java.nio.file.Path;
-import org.springframework.ide.vscode.commons.java.LegacyJavaProject;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.springframework.ide.vscode.commons.java.ClasspathFileBasedCache;
import org.springframework.ide.vscode.commons.java.DelegatingCachedClasspath;
import org.springframework.ide.vscode.commons.java.IClasspath;
+import org.springframework.ide.vscode.commons.java.LegacyJavaProject;
+import org.springframework.ide.vscode.commons.languageserver.java.JavadocService;
import org.springframework.ide.vscode.commons.util.FileObserver;
-import org.springframework.ide.vscode.commons.util.Log;
/**
* Implementation of Gradle Java project
@@ -28,11 +30,13 @@ import org.springframework.ide.vscode.commons.util.Log;
*/
public class GradleJavaProject extends LegacyJavaProject {
- private GradleJavaProject(FileObserver fileObserver, Path projectDataCache, IClasspath classpath, File projectDir) {
- super(fileObserver, projectDir.toURI(), projectDataCache, classpath);
+ private static final Logger log = LoggerFactory.getLogger(GradleJavaProject.class);
+
+ private GradleJavaProject(FileObserver fileObserver, Path projectDataCache, IClasspath classpath, File projectDir, JavadocService javadocService) {
+ super(fileObserver, projectDir.toURI(), projectDataCache, classpath, javadocService);
}
- public static GradleJavaProject create(FileObserver fileObserver, GradleCore gradle, File projectDir, Path projectDataCache) {
+ public static GradleJavaProject create(FileObserver fileObserver, GradleCore gradle, File projectDir, Path projectDataCache, JavadocService javadocService) {
File file = projectDataCache == null
? null
: projectDataCache.resolve(ClasspathFileBasedCache.CLASSPATH_DATA_CACHE_FILE).toFile();
@@ -41,16 +45,16 @@ public class GradleJavaProject extends LegacyJavaProject {
() -> new GradleProjectClasspath(gradle, projectDir),
fileBasedCache
);
- return new GradleJavaProject(fileObserver, projectDataCache, classpath, projectDir);
+ return new GradleJavaProject(fileObserver, projectDataCache, classpath, projectDir, javadocService);
}
- public static GradleJavaProject create(FileObserver fileObserver, GradleCore gradle, File projectDir) {
- GradleJavaProject thiss = create(fileObserver, gradle, projectDir, null);
+ public static GradleJavaProject create(FileObserver fileObserver, GradleCore gradle, File projectDir, JavadocService javadocService) {
+ GradleJavaProject thiss = create(fileObserver, gradle, projectDir, null, javadocService);
if (!thiss.getClasspath().isCached()) {
try {
thiss.getClasspath().update();
} catch (Exception e) {
- Log.log(e);
+ log.error("", e);
}
}
return thiss;
diff --git a/headless-services/commons/commons-gradle/src/main/java/org/springframework/ide/vscode/commons/gradle/GradleProjectCache.java b/headless-services/commons/commons-gradle/src/main/java/org/springframework/ide/vscode/commons/gradle/GradleProjectCache.java
index 02007a78b..34abe7d7a 100644
--- a/headless-services/commons/commons-gradle/src/main/java/org/springframework/ide/vscode/commons/gradle/GradleProjectCache.java
+++ b/headless-services/commons/commons-gradle/src/main/java/org/springframework/ide/vscode/commons/gradle/GradleProjectCache.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2017 Pivotal, Inc.
+ * Copyright (c) 2017, 2018 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
@@ -17,6 +17,7 @@ import org.eclipse.lsp4j.MessageParams;
import org.eclipse.lsp4j.MessageType;
import org.springframework.ide.vscode.commons.languageserver.Sts4LanguageServer;
import org.springframework.ide.vscode.commons.languageserver.java.AbstractFileToProjectCache;
+import org.springframework.ide.vscode.commons.languageserver.java.JavadocService;
import org.springframework.ide.vscode.commons.languageserver.util.ShowMessageException;
/**
@@ -28,10 +29,12 @@ import org.springframework.ide.vscode.commons.languageserver.util.ShowMessageExc
public class GradleProjectCache extends AbstractFileToProjectCache {
private GradleCore gradle;
+ private JavadocService javadocService;
- public GradleProjectCache(Sts4LanguageServer server, GradleCore gradle, boolean asyncUpdate, Path projectCacheFolder) {
+ public GradleProjectCache(Sts4LanguageServer server, GradleCore gradle, boolean asyncUpdate, Path projectCacheFolder, JavadocService javadocService) {
super(server, asyncUpdate, projectCacheFolder);
this.gradle = gradle;
+ this.javadocService = javadocService;
}
@Override
@@ -49,7 +52,8 @@ public class GradleProjectCache extends AbstractFileToProjectCache JavaDocProviders.createFor(cpe));
}
@Test
@@ -105,7 +106,7 @@ public class GradleProjectTest {
String gradelFileContents = Files.contentOf(gradleFile, Charset.defaultCharset());
try {
- GradleProjectCache manager = new GradleProjectCache(server, GradleCore.getDefault(), false, null);
+ GradleProjectCache manager = createProjectCache();
IJavaProject[] projectChanged = new IJavaProject[] { null };
IJavaProject[] projectDeleted = new IJavaProject[] { null };
manager.addListener(new Listener() {
@@ -147,9 +148,13 @@ public class GradleProjectTest {
}
}
+ private GradleProjectCache createProjectCache() {
+ return new GradleProjectCache(server, GradleCore.getDefault(), false, null, (uri, cpe) -> JavaDocProviders.createFor(cpe));
+ }
+
@Test
public void findGradleProjectWithStandardBuildFile() throws Exception {
- GradleProjectFinder finder = new GradleProjectFinder(new GradleProjectCache(server, GradleCore.getDefault(), false, null));
+ GradleProjectFinder finder = new GradleProjectFinder(createProjectCache());
File sourceFile = new File(GradleProjectTest.class.getResource("/test-app-1/src/main/java/Library.java").toURI());
Optional project = finder.find(sourceFile);
assertTrue(project.isPresent());
@@ -160,7 +165,7 @@ public class GradleProjectTest {
@Test
public void findGradleProjectWithNonStandardBuildFile() throws Exception {
- GradleProjectFinder finder = new GradleProjectFinder(new GradleProjectCache(server, GradleCore.getDefault(), false, null));
+ GradleProjectFinder finder = new GradleProjectFinder(createProjectCache());
File sourceFile = new File(GradleProjectTest.class.getResource("/test-app-2/src/main/java/Library.java").toURI());
Optional project = finder.find(sourceFile);
assertTrue(project.isPresent());
diff --git a/headless-services/commons/commons-java/pom.xml b/headless-services/commons/commons-java/pom.xml
index 4229a5326..7ddce1f27 100644
--- a/headless-services/commons/commons-java/pom.xml
+++ b/headless-services/commons/commons-java/pom.xml
@@ -8,7 +8,7 @@
org.springframework.ide.vscode
commons-parent
- 0.2.1-SNAPSHOT
+ 0.3.0-SNAPSHOT
../pom.xml
diff --git a/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/jandex/JandexIndex.java b/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/jandex/JandexIndex.java
index 23e734c01..cbbf6db29 100644
--- a/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/jandex/JandexIndex.java
+++ b/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/jandex/JandexIndex.java
@@ -20,12 +20,8 @@ import org.jboss.jandex.ClassInfo;
import org.jboss.jandex.DotName;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.ide.vscode.commons.java.IAnnotation;
-import org.springframework.ide.vscode.commons.java.IField;
import org.springframework.ide.vscode.commons.java.IJavadocProvider;
-import org.springframework.ide.vscode.commons.java.IMethod;
import org.springframework.ide.vscode.commons.java.IType;
-import org.springframework.ide.vscode.commons.javadoc.IJavadoc;
import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
@@ -43,30 +39,6 @@ public class JandexIndex extends BasicJandexIndex {
IJavadocProvider createJavadocProvider(File jarContainer);
}
- private static final IJavadocProvider ABSENT_JAVADOC_PROVIDER = new IJavadocProvider() {
-
- @Override
- public IJavadoc getJavadoc(IType type) {
- return null;
- }
-
- @Override
- public IJavadoc getJavadoc(IField field) {
- return null;
- }
-
- @Override
- public IJavadoc getJavadoc(IMethod method) {
- return null;
- }
-
- @Override
- public IJavadoc getJavadoc(IAnnotation method) {
- return null;
- }
-
- };
-
private JavadocProviderFactory javadocProviderFactory;
private Cache javadocProvidersCache = CacheBuilder.newBuilder().build();
@@ -101,7 +73,7 @@ public class JandexIndex extends BasicJandexIndex {
if (javadocProviderFactory != null) {
provider = javadocProviderFactory.createJavadocProvider(classpathResource);
}
- return provider == null ? ABSENT_JAVADOC_PROVIDER : provider;
+ return provider == null ? IJavadocProvider.NULL : provider;
});
} catch (ExecutionException e) {
log.error("Failed to retrieve javadoc provider for resource " + classpathResource, e);
diff --git a/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/java/IJavadocProvider.java b/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/java/IJavadocProvider.java
index 8ecc47799..9747108a4 100644
--- a/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/java/IJavadocProvider.java
+++ b/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/java/IJavadocProvider.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2017 Pivotal, Inc.
+ * Copyright (c) 2017, 2018 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
@@ -13,12 +13,37 @@ package org.springframework.ide.vscode.commons.java;
import org.springframework.ide.vscode.commons.javadoc.IJavadoc;
public interface IJavadocProvider {
-
+
IJavadoc getJavadoc(IType type);
-
+
IJavadoc getJavadoc(IField field);
-
+
IJavadoc getJavadoc(IMethod method);
IJavadoc getJavadoc(IAnnotation annotation);
+
+ final static IJavadocProvider NULL = new IJavadocProvider() {
+
+ @Override
+ public IJavadoc getJavadoc(IType type) {
+ return null;
+ }
+
+ @Override
+ public IJavadoc getJavadoc(IField field) {
+ return null;
+ }
+
+ @Override
+ public IJavadoc getJavadoc(IMethod method) {
+ return null;
+ }
+
+ @Override
+ public IJavadoc getJavadoc(IAnnotation method) {
+ return null;
+ }
+
+ };
+
}
diff --git a/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/java/JavaProject.java b/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/java/JavaProject.java
index 0220a6139..01150d681 100644
--- a/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/java/JavaProject.java
+++ b/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/java/JavaProject.java
@@ -15,6 +15,8 @@ import java.net.URI;
import org.springframework.ide.vscode.commons.jandex.JandexClasspath;
import org.springframework.ide.vscode.commons.jandex.JandexIndex.JavadocProviderFactory;
+import org.springframework.ide.vscode.commons.languageserver.java.JavadocService;
+import org.springframework.ide.vscode.commons.languageserver.jdt.ls.Classpath.CPE;
import org.springframework.ide.vscode.commons.util.FileObserver;
import reactor.core.Disposable;
@@ -27,12 +29,15 @@ public class JavaProject implements IJavaProject, Disposable {
private final FileObserver fileObserver;
private final JavadocProviderFactory javadocProviderFactory;
- public JavaProject(FileObserver fileObserver, URI uri, IClasspath classpath, JavadocProviderFactory javadocProviderFactory) {
+ public JavaProject(FileObserver fileObserver, URI uri, IClasspath classpath, JavadocService javadocService) {
super();
this.classpath = classpath;
this.fileObserver = fileObserver;
this.uri = uri;
- this.javadocProviderFactory = javadocProviderFactory;
+ this.javadocProviderFactory = (classpathResource) -> {
+ CPE cpe = IClasspathUtil.findEntryForBinaryRoot(classpath, classpathResource);
+ return javadocService.javadocProvider(uri.toString(), cpe);
+ };
}
@Override
diff --git a/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/java/LegacyJavaProject.java b/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/java/LegacyJavaProject.java
index f7e130a2f..31398b865 100644
--- a/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/java/LegacyJavaProject.java
+++ b/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/java/LegacyJavaProject.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2017 Pivotal, Inc.
+ * Copyright (c) 2017, 2018 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
@@ -13,8 +13,7 @@ package org.springframework.ide.vscode.commons.java;
import java.net.URI;
import java.nio.file.Path;
-import org.springframework.ide.vscode.commons.javadoc.JavaDocProviders;
-import org.springframework.ide.vscode.commons.languageserver.jdt.ls.Classpath.CPE;
+import org.springframework.ide.vscode.commons.languageserver.java.JavadocService;
import org.springframework.ide.vscode.commons.util.FileObserver;
/**
@@ -30,11 +29,8 @@ public class LegacyJavaProject extends JavaProject {
final protected Path projectDataCache;
- public LegacyJavaProject(FileObserver fileObserver, URI loactionUri, Path projectDataCache, IClasspath classpath) {
- super(fileObserver, loactionUri, classpath, classpathResource -> {
- CPE cpe = IClasspathUtil.findEntryForBinaryRoot(classpath, classpathResource);
- return JavaDocProviders.createFor(cpe);
- });
+ public LegacyJavaProject(FileObserver fileObserver, URI loactionUri, Path projectDataCache, IClasspath classpath, JavadocService javadocService) {
+ super(fileObserver, loactionUri, classpath, javadocService);
this.projectDataCache = projectDataCache;
}
diff --git a/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/javadoc/HtmlJavadoc.java b/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/javadoc/HtmlJavadoc.java
index fcb856b0f..81504a305 100644
--- a/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/javadoc/HtmlJavadoc.java
+++ b/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/javadoc/HtmlJavadoc.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2016-2017 Pivotal, Inc.
+ * Copyright (c) 2016, 2018 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
@@ -15,18 +15,13 @@ import org.springframework.ide.vscode.commons.util.Renderable;
import org.springframework.ide.vscode.commons.util.Renderables;
public class HtmlJavadoc implements IJavadoc {
-
+
private String html;
-
+
public HtmlJavadoc(String html) {
this.html = html;
}
- @Override
- public String raw() {
- throw new UnsupportedOperationException("Not yet implemnted");
- }
-
@Override
public Renderable getRenderable() {
return Renderables.htmlBlob(html);
diff --git a/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/javadoc/IJavadoc.java b/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/javadoc/IJavadoc.java
index 074e702e1..4fda2d828 100644
--- a/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/javadoc/IJavadoc.java
+++ b/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/javadoc/IJavadoc.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2016-2017 Pivotal, Inc.
+ * Copyright (c) 2016, 2018 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
@@ -14,9 +14,7 @@ package org.springframework.ide.vscode.commons.javadoc;
import org.springframework.ide.vscode.commons.util.Renderable;
public interface IJavadoc {
-
- String raw();
-
+
Renderable getRenderable();
-
+
}
diff --git a/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/javadoc/JdtLsJavadocProvider.java b/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/javadoc/JdtLsJavadocProvider.java
index 181cb6b0f..461485d22 100644
--- a/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/javadoc/JdtLsJavadocProvider.java
+++ b/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/javadoc/JdtLsJavadocProvider.java
@@ -47,11 +47,6 @@ public class JdtLsJavadocProvider implements IJavadocProvider {
final Renderable renderableDoc = Renderables.mdBlob(md);
return new IJavadoc() {
- @Override
- public String raw() {
- throw new UnsupportedOperationException("Raw content unavailable");
- }
-
@Override
public Renderable getRenderable() {
return renderableDoc;
diff --git a/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/languageserver/java/JavadocService.java b/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/languageserver/java/JavadocService.java
new file mode 100644
index 000000000..5ec443158
--- /dev/null
+++ b/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/languageserver/java/JavadocService.java
@@ -0,0 +1,20 @@
+/*******************************************************************************
+ * Copyright (c) 2018 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
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Pivotal, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.springframework.ide.vscode.commons.languageserver.java;
+
+import org.springframework.ide.vscode.commons.java.IJavadocProvider;
+import org.springframework.ide.vscode.commons.languageserver.jdt.ls.Classpath.CPE;
+
+public interface JavadocService {
+
+ IJavadocProvider javadocProvider(String projectUri, CPE classpathEntry);
+
+}
diff --git a/headless-services/commons/commons-language-server/pom.xml b/headless-services/commons/commons-language-server/pom.xml
index 54cb6b3d7..5f192d9fe 100644
--- a/headless-services/commons/commons-language-server/pom.xml
+++ b/headless-services/commons/commons-language-server/pom.xml
@@ -8,7 +8,7 @@
org.springframework.ide.vscode
commons-parent
- 0.2.1-SNAPSHOT
+ 0.3.0-SNAPSHOT
../pom.xml
diff --git a/headless-services/commons/commons-maven/pom.xml b/headless-services/commons/commons-maven/pom.xml
index 030eeb306..64e0e5e3e 100644
--- a/headless-services/commons/commons-maven/pom.xml
+++ b/headless-services/commons/commons-maven/pom.xml
@@ -10,7 +10,7 @@
org.springframework.ide.vscode
commons-parent
- 0.2.1-SNAPSHOT
+ 0.3.0-SNAPSHOT
../pom.xml
diff --git a/headless-services/commons/commons-maven/src/main/java/org/springframework/ide/vscode/commons/maven/java/MavenJavaProject.java b/headless-services/commons/commons-maven/src/main/java/org/springframework/ide/vscode/commons/maven/java/MavenJavaProject.java
index 924a39fbf..4c92f858b 100644
--- a/headless-services/commons/commons-maven/src/main/java/org/springframework/ide/vscode/commons/maven/java/MavenJavaProject.java
+++ b/headless-services/commons/commons-maven/src/main/java/org/springframework/ide/vscode/commons/maven/java/MavenJavaProject.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2016 Pivotal, Inc.
+ * Copyright (c) 2016, 2018 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
@@ -13,13 +13,15 @@ package org.springframework.ide.vscode.commons.maven.java;
import java.io.File;
import java.nio.file.Path;
-import org.springframework.ide.vscode.commons.java.LegacyJavaProject;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.springframework.ide.vscode.commons.java.ClasspathFileBasedCache;
import org.springframework.ide.vscode.commons.java.DelegatingCachedClasspath;
import org.springframework.ide.vscode.commons.java.IClasspath;
+import org.springframework.ide.vscode.commons.java.LegacyJavaProject;
+import org.springframework.ide.vscode.commons.languageserver.java.JavadocService;
import org.springframework.ide.vscode.commons.maven.MavenCore;
import org.springframework.ide.vscode.commons.util.FileObserver;
-import org.springframework.ide.vscode.commons.util.Log;
/**
* Wrapper for Maven Core project
@@ -29,14 +31,16 @@ import org.springframework.ide.vscode.commons.util.Log;
*/
public class MavenJavaProject extends LegacyJavaProject {
+ private static final Logger log = LoggerFactory.getLogger(MavenJavaProject.class);
+
private final File pom;
- private MavenJavaProject(FileObserver fileObserver, Path projectDataCache, IClasspath classpath, File pom) {
- super(fileObserver, pom.getParentFile().toURI(), projectDataCache, classpath);
+ private MavenJavaProject(FileObserver fileObserver, Path projectDataCache, IClasspath classpath, File pom, JavadocService javadocService) {
+ super(fileObserver, pom.getParentFile().toURI(), projectDataCache, classpath, javadocService);
this.pom = pom;
}
- public static MavenJavaProject create(FileObserver fileObserver, MavenCore maven, File pom, Path projectDataCache) {
+ public static MavenJavaProject create(FileObserver fileObserver, MavenCore maven, File pom, Path projectDataCache, JavadocService javadocService) {
File file = projectDataCache == null
? null
: projectDataCache.resolve(ClasspathFileBasedCache.CLASSPATH_DATA_CACHE_FILE).toFile();
@@ -45,16 +49,16 @@ public class MavenJavaProject extends LegacyJavaProject {
() -> new MavenProjectClasspath(maven, pom),
fileBasedCache
);
- return new MavenJavaProject(fileObserver, projectDataCache, classpath, pom);
+ return new MavenJavaProject(fileObserver, projectDataCache, classpath, pom, javadocService);
}
- public static MavenJavaProject create(FileObserver fileObserver, MavenCore maven, File pom) {
- MavenJavaProject thiss = create(fileObserver, maven, pom, null);
+ public static MavenJavaProject create(FileObserver fileObserver, MavenCore maven, File pom, JavadocService javadocService) {
+ MavenJavaProject thiss = create(fileObserver, maven, pom, null, javadocService);
if (!thiss.getClasspath().isCached()) {
try {
thiss.getClasspath().update();
} catch (Exception e) {
- Log.log(e);
+ log.error("", e);
}
}
return thiss;
diff --git a/headless-services/commons/commons-maven/src/main/java/org/springframework/ide/vscode/commons/maven/java/MavenProjectCache.java b/headless-services/commons/commons-maven/src/main/java/org/springframework/ide/vscode/commons/maven/java/MavenProjectCache.java
index 6dad6c2f1..e8a5de70f 100644
--- a/headless-services/commons/commons-maven/src/main/java/org/springframework/ide/vscode/commons/maven/java/MavenProjectCache.java
+++ b/headless-services/commons/commons-maven/src/main/java/org/springframework/ide/vscode/commons/maven/java/MavenProjectCache.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2016, 2017 Pivotal, Inc.
+ * Copyright (c) 2016, 2018 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
@@ -17,6 +17,7 @@ import org.eclipse.lsp4j.MessageParams;
import org.eclipse.lsp4j.MessageType;
import org.springframework.ide.vscode.commons.languageserver.Sts4LanguageServer;
import org.springframework.ide.vscode.commons.languageserver.java.AbstractFileToProjectCache;
+import org.springframework.ide.vscode.commons.languageserver.java.JavadocService;
import org.springframework.ide.vscode.commons.languageserver.util.ShowMessageException;
import org.springframework.ide.vscode.commons.maven.MavenCore;
@@ -28,10 +29,12 @@ import org.springframework.ide.vscode.commons.maven.MavenCore;
public class MavenProjectCache extends AbstractFileToProjectCache {
private MavenCore maven;
-
- public MavenProjectCache(Sts4LanguageServer server, MavenCore maven, boolean asyncUpdate, Path projectCacheFolder) {
+ private JavadocService javadocService;
+
+ public MavenProjectCache(Sts4LanguageServer server, MavenCore maven, boolean asyncUpdate, Path projectCacheFolder, JavadocService javadocService) {
super(server, asyncUpdate, projectCacheFolder);
this.maven = maven;
+ this.javadocService = javadocService;
}
@Override
@@ -48,9 +51,10 @@ public class MavenProjectCache extends AbstractFileToProjectCache JavaDocProviders.createFor(cpe));
} catch (Exception e) {
return null;
}
diff --git a/headless-services/commons/commons-maven/src/test/java/org/springframework/ide/vscode/commons/maven/JavaIndexTest.java b/headless-services/commons/commons-maven/src/test/java/org/springframework/ide/vscode/commons/maven/JavaIndexTest.java
index 6fca11381..665872e3f 100644
--- a/headless-services/commons/commons-maven/src/test/java/org/springframework/ide/vscode/commons/maven/JavaIndexTest.java
+++ b/headless-services/commons/commons-maven/src/test/java/org/springframework/ide/vscode/commons/maven/JavaIndexTest.java
@@ -32,6 +32,7 @@ import org.springframework.ide.vscode.commons.java.IMethod;
import org.springframework.ide.vscode.commons.java.IPrimitiveType;
import org.springframework.ide.vscode.commons.java.IType;
import org.springframework.ide.vscode.commons.java.IVoidType;
+import org.springframework.ide.vscode.commons.javadoc.JavaDocProviders;
import org.springframework.ide.vscode.commons.maven.java.MavenJavaProject;
import org.springframework.ide.vscode.commons.util.BasicFileObserver;
@@ -51,7 +52,7 @@ public class JavaIndexTest {
public MavenJavaProject load(String projectName) throws Exception {
Path testProjectPath = Paths.get(DependencyTreeTest.class.getResource("/" + projectName).toURI());
MavenBuilder.newBuilder(testProjectPath).clean().pack().javadoc().skipTests().execute();
- return MavenJavaProject.create(fileObserver, MavenCore.getDefault(), testProjectPath.resolve(MavenCore.POM_XML).toFile());
+ return MavenJavaProject.create(fileObserver, MavenCore.getDefault(), testProjectPath.resolve(MavenCore.POM_XML).toFile(), (uri, cpe) -> JavaDocProviders.createFor(cpe));
}
});
diff --git a/headless-services/commons/commons-maven/src/test/java/org/springframework/ide/vscode/commons/maven/MavenProjectCacheTest.java b/headless-services/commons/commons-maven/src/test/java/org/springframework/ide/vscode/commons/maven/MavenProjectCacheTest.java
index ac665d248..e7c840324 100644
--- a/headless-services/commons/commons-maven/src/test/java/org/springframework/ide/vscode/commons/maven/MavenProjectCacheTest.java
+++ b/headless-services/commons/commons-maven/src/test/java/org/springframework/ide/vscode/commons/maven/MavenProjectCacheTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2017 Pivotal, Inc.
+ * Copyright (c) 2017, 2018 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
@@ -44,6 +44,7 @@ import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
import org.springframework.ide.vscode.commons.java.ClasspathFileBasedCache;
import org.springframework.ide.vscode.commons.java.IJavaProject;
+import org.springframework.ide.vscode.commons.javadoc.JavaDocProviders;
import org.springframework.ide.vscode.commons.languageserver.DiagnosticService;
import org.springframework.ide.vscode.commons.languageserver.ProgressService;
import org.springframework.ide.vscode.commons.languageserver.Sts4LanguageServer;
@@ -59,7 +60,7 @@ import com.google.common.collect.ImmutableList;
/**
* Tests for {@link MavenProjectCache}
- *
+ *
* @author Alex Boyko
*
*/
@@ -109,7 +110,7 @@ public class MavenProjectCacheTest {
@Test
public void testPomFileChanges() throws Exception {
- MavenProjectCache cache = new MavenProjectCache(server, MavenCore.getDefault(), false, null);
+ MavenProjectCache cache = new MavenProjectCache(server, MavenCore.getDefault(), false, null, (uri, cpe) -> JavaDocProviders.createFor(cpe));
IJavaProject[] projectChanged = new IJavaProject[] { null };
IJavaProject[] projectDeleted = new IJavaProject[] { null };
cache.addListener(new Listener() {
@@ -175,7 +176,7 @@ public class MavenProjectCacheTest {
assertFalse(classpathCacheFile.exists());
- MavenProjectCache cache = new MavenProjectCache(server, MavenCore.getDefault(), true, cacheFolder);
+ MavenProjectCache cache = new MavenProjectCache(server, MavenCore.getDefault(), true, cacheFolder, (uri, cpe) -> JavaDocProviders.createFor(cpe));
MavenJavaProject project = cache.project(pomFile);
assertTrue(project.getClasspath().getClasspathEntries().isEmpty());
@@ -195,7 +196,7 @@ public class MavenProjectCacheTest {
progressDone.set(false);
// Reset the cache
- cache = new MavenProjectCache(server, MavenCore.getDefault(), true, cacheFolder);
+ cache = new MavenProjectCache(server, MavenCore.getDefault(), true, cacheFolder, (uri, cpe) -> JavaDocProviders.createFor(cpe));
// Check loaded from cache file
project = cache.project(pomFile);
@@ -225,7 +226,7 @@ public class MavenProjectCacheTest {
DiagnosticService diagnosticService = mock(DiagnosticService.class);
when(server.getDiagnosticService()).thenReturn(diagnosticService);
- MavenProjectCache cache = new MavenProjectCache(server, MavenCore.getDefault(), true, cacheFolder);
+ MavenProjectCache cache = new MavenProjectCache(server, MavenCore.getDefault(), true, cacheFolder, (uri, cpe) -> JavaDocProviders.createFor(cpe));
MavenJavaProject project = cache.project(pomFile);
assertTrue(project.getClasspath().getClasspathEntries().isEmpty());
diff --git a/headless-services/commons/commons-util/pom.xml b/headless-services/commons/commons-util/pom.xml
index 2b26e9c2f..3d85da8d8 100644
--- a/headless-services/commons/commons-util/pom.xml
+++ b/headless-services/commons/commons-util/pom.xml
@@ -7,7 +7,7 @@
org.springframework.ide.vscode
commons-parent
- 0.2.1-SNAPSHOT
+ 0.3.0-SNAPSHOT
../pom.xml
diff --git a/headless-services/commons/commons-yaml/pom.xml b/headless-services/commons/commons-yaml/pom.xml
index 2a6b8de6f..3465d1722 100644
--- a/headless-services/commons/commons-yaml/pom.xml
+++ b/headless-services/commons/commons-yaml/pom.xml
@@ -8,7 +8,7 @@
org.springframework.ide.vscode
commons-parent
- 0.2.1-SNAPSHOT
+ 0.3.0-SNAPSHOT
../pom.xml
diff --git a/headless-services/commons/java-properties/pom.xml b/headless-services/commons/java-properties/pom.xml
index b22ca9e43..98e673767 100644
--- a/headless-services/commons/java-properties/pom.xml
+++ b/headless-services/commons/java-properties/pom.xml
@@ -7,7 +7,7 @@
org.springframework.ide.vscode
commons-parent
- 0.2.1-SNAPSHOT
+ 0.3.0-SNAPSHOT
../pom.xml
diff --git a/headless-services/commons/language-server-test-harness/pom.xml b/headless-services/commons/language-server-test-harness/pom.xml
index d4a8aa31d..0e5185c4a 100644
--- a/headless-services/commons/language-server-test-harness/pom.xml
+++ b/headless-services/commons/language-server-test-harness/pom.xml
@@ -8,7 +8,7 @@
org.springframework.ide.vscode
commons-parent
- 0.2.1-SNAPSHOT
+ 0.3.0-SNAPSHOT
../pom.xml
diff --git a/headless-services/commons/pom.xml b/headless-services/commons/pom.xml
index ecba487fd..b4406ab0a 100644
--- a/headless-services/commons/pom.xml
+++ b/headless-services/commons/pom.xml
@@ -6,7 +6,7 @@
org.springframework.ide.vscode
commons-parent
pom
- 0.2.1-SNAPSHOT
+ 0.3.0-SNAPSHOT
commons-parent
diff --git a/headless-services/concourse-language-server/pom.xml b/headless-services/concourse-language-server/pom.xml
index 4c938a583..d5e4a3275 100644
--- a/headless-services/concourse-language-server/pom.xml
+++ b/headless-services/concourse-language-server/pom.xml
@@ -8,7 +8,7 @@
org.springframework.ide.vscode
commons-parent
- 0.2.1-SNAPSHOT
+ 0.3.0-SNAPSHOT
../commons/pom.xml
diff --git a/headless-services/manifest-yaml-language-server/pom.xml b/headless-services/manifest-yaml-language-server/pom.xml
index f1dc92b22..3275b147a 100644
--- a/headless-services/manifest-yaml-language-server/pom.xml
+++ b/headless-services/manifest-yaml-language-server/pom.xml
@@ -8,7 +8,7 @@
org.springframework.ide.vscode
commons-parent
- 0.2.1-SNAPSHOT
+ 0.3.0-SNAPSHOT
../commons/pom.xml
diff --git a/headless-services/spring-boot-language-server/pom.xml b/headless-services/spring-boot-language-server/pom.xml
index 4220e237f..3f2c62298 100644
--- a/headless-services/spring-boot-language-server/pom.xml
+++ b/headless-services/spring-boot-language-server/pom.xml
@@ -8,7 +8,7 @@
org.springframework.ide.vscode
commons-parent
- 0.2.1-SNAPSHOT
+ 0.3.0-SNAPSHOT
../commons/pom.xml
diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/BootLanguageServerParams.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/BootLanguageServerParams.java
index d0e69a23c..327876984 100644
--- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/BootLanguageServerParams.java
+++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/BootLanguageServerParams.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2017 Pivotal, Inc.
+ * Copyright (c) 2017, 2018 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
@@ -18,8 +18,9 @@ import java.util.Optional;
import org.eclipse.lsp4j.TextDocumentIdentifier;
import org.springframework.ide.vscode.boot.java.handlers.RunningAppProvider;
import org.springframework.ide.vscode.boot.java.utils.SpringLiveHoverWatchdog;
-import org.springframework.ide.vscode.boot.jdt.ls.JdtLsProjectCache;
import org.springframework.ide.vscode.boot.jdt.ls.JavaProjectsService;
+import org.springframework.ide.vscode.boot.jdt.ls.JavaProjectsServiceWithFallback;
+import org.springframework.ide.vscode.boot.jdt.ls.JdtLsProjectCache;
import org.springframework.ide.vscode.boot.metadata.DefaultSpringPropertyIndexProvider;
import org.springframework.ide.vscode.boot.metadata.SpringPropertyIndexProvider;
import org.springframework.ide.vscode.boot.metadata.types.TypeUtil;
@@ -29,11 +30,14 @@ import org.springframework.ide.vscode.commons.gradle.GradleProjectCache;
import org.springframework.ide.vscode.commons.gradle.GradleProjectFinder;
import org.springframework.ide.vscode.commons.java.BootProjectUtil;
import org.springframework.ide.vscode.commons.java.IJavaProject;
+import org.springframework.ide.vscode.commons.java.IJavadocProvider;
+import org.springframework.ide.vscode.commons.javadoc.JavaDocProviders;
import org.springframework.ide.vscode.commons.languageserver.java.CompositeJavaProjectFinder;
import org.springframework.ide.vscode.commons.languageserver.java.CompositeProjectOvserver;
import org.springframework.ide.vscode.commons.languageserver.java.JavaProjectFinder;
+import org.springframework.ide.vscode.commons.languageserver.java.JavadocService;
import org.springframework.ide.vscode.commons.languageserver.java.ProjectObserver;
-import org.springframework.ide.vscode.commons.languageserver.java.ProjectObserver.Listener;
+import org.springframework.ide.vscode.commons.languageserver.jdt.ls.Classpath.CPE;
import org.springframework.ide.vscode.commons.languageserver.util.LSFactory;
import org.springframework.ide.vscode.commons.languageserver.util.SimpleLanguageServer;
import org.springframework.ide.vscode.commons.maven.MavenCore;
@@ -83,7 +87,11 @@ public class BootLanguageServerParams {
public static LSFactory createDefault() {
return (SimpleLanguageServer server) -> {
// Initialize project finders, project caches and project observers
- JdtLsProjectCache jdtProjectCache = new JdtLsProjectCache(server, () -> createFallbackProjectCache(server));
+ JavaProjectsService jdtProjectCache = new JavaProjectsServiceWithFallback(
+ server,
+ new JdtLsProjectCache(server),
+ () -> createFallbackProjectCache(server)
+ );
DefaultSpringPropertyIndexProvider indexProvider = new DefaultSpringPropertyIndexProvider(jdtProjectCache, jdtProjectCache);
indexProvider.setProgressService(server.getProgressService());
@@ -101,10 +109,12 @@ public class BootLanguageServerParams {
private static JavaProjectsService createFallbackProjectCache(SimpleLanguageServer server) {
CompositeJavaProjectFinder javaProjectFinder = new CompositeJavaProjectFinder();
- MavenProjectCache mavenProjectCache = new MavenProjectCache(server, MavenCore.getDefault(), true, Paths.get(IJavaProject.PROJECT_CACHE_FOLDER));
+ JavadocService javadocService = (uri, cpe) -> JavaDocProviders.createFor(cpe);
+
+ MavenProjectCache mavenProjectCache = new MavenProjectCache(server, MavenCore.getDefault(), true, Paths.get(IJavaProject.PROJECT_CACHE_FOLDER), javadocService);
javaProjectFinder.addJavaProjectFinder(new MavenProjectFinder(mavenProjectCache));
- GradleProjectCache gradleProjectCache = new GradleProjectCache(server, GradleCore.getDefault(), true, Paths.get(IJavaProject.PROJECT_CACHE_FOLDER));
+ GradleProjectCache gradleProjectCache = new GradleProjectCache(server, GradleCore.getDefault(), true, Paths.get(IJavaProject.PROJECT_CACHE_FOLDER), javadocService);
javaProjectFinder.addJavaProjectFinder(new GradleProjectFinder(gradleProjectCache));
CompositeProjectOvserver projectObserver = new CompositeProjectOvserver(Arrays.asList(mavenProjectCache, gradleProjectCache));
@@ -125,6 +135,11 @@ public class BootLanguageServerParams {
public Optional find(TextDocumentIdentifier doc) {
return javaProjectFinder.find(doc);
}
+
+ @Override
+ public IJavadocProvider javadocProvider(String projectUri, CPE cpe) {
+ return javadocService.javadocProvider(projectUri, cpe);
+ }
};
}
@@ -132,11 +147,11 @@ public class BootLanguageServerParams {
return (SimpleLanguageServer server) -> {
// Initialize project finders, project caches and project observers
CompositeJavaProjectFinder javaProjectFinder = new CompositeJavaProjectFinder();
- MavenProjectCache mavenProjectCache = new MavenProjectCache(server, MavenCore.getDefault(), false, null);
+ MavenProjectCache mavenProjectCache = new MavenProjectCache(server, MavenCore.getDefault(), false, null, (uri, cpe) -> JavaDocProviders.createFor(cpe));
mavenProjectCache.setAlwaysFireEventOnFileChanged(true);
javaProjectFinder.addJavaProjectFinder(new MavenProjectFinder(mavenProjectCache));
- GradleProjectCache gradleProjectCache = new GradleProjectCache(server, GradleCore.getDefault(), false, null);
+ GradleProjectCache gradleProjectCache = new GradleProjectCache(server, GradleCore.getDefault(), false, null, (uri, cpe) -> JavaDocProviders.createFor(cpe));
gradleProjectCache.setAlwaysFireEventOnFileChanged(true);
javaProjectFinder.addJavaProjectFinder(new GradleProjectFinder(gradleProjectCache));
@@ -157,11 +172,11 @@ public class BootLanguageServerParams {
return (SimpleLanguageServer server) -> {
// Initialize project finders, project caches and project observers
CompositeJavaProjectFinder javaProjectFinder = new CompositeJavaProjectFinder();
- MavenProjectCache mavenProjectCache = new MavenProjectCache(server, MavenCore.getDefault(), false, null);
+ MavenProjectCache mavenProjectCache = new MavenProjectCache(server, MavenCore.getDefault(), false, null, (uri, cpe) -> JavaDocProviders.createFor(cpe));
mavenProjectCache.setAlwaysFireEventOnFileChanged(true);
javaProjectFinder.addJavaProjectFinder(new MavenProjectFinder(mavenProjectCache));
- GradleProjectCache gradleProjectCache = new GradleProjectCache(server, GradleCore.getDefault(), false, null);
+ GradleProjectCache gradleProjectCache = new GradleProjectCache(server, GradleCore.getDefault(), false, null, (uri, cpe) -> JavaDocProviders.createFor(cpe));
gradleProjectCache.setAlwaysFireEventOnFileChanged(true);
javaProjectFinder.addJavaProjectFinder(new GradleProjectFinder(gradleProjectCache));
diff --git a/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/javadoc/RawJavadoc.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/jdt/ls/InitializableJavaProjectsService.java
similarity index 50%
rename from headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/javadoc/RawJavadoc.java
rename to headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/jdt/ls/InitializableJavaProjectsService.java
index 6ddb2752b..bc34babfd 100644
--- a/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/javadoc/RawJavadoc.java
+++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/jdt/ls/InitializableJavaProjectsService.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2016-2017 Pivotal, Inc.
+ * Copyright (c) 2018 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
@@ -8,27 +8,12 @@
* Contributors:
* Pivotal, Inc. - initial API and implementation
*******************************************************************************/
+package org.springframework.ide.vscode.boot.jdt.ls;
-package org.springframework.ide.vscode.commons.javadoc;
+import reactor.core.Disposable;
-import org.springframework.ide.vscode.commons.util.Renderable;
-
-public class RawJavadoc implements IJavadoc {
+public interface InitializableJavaProjectsService extends JavaProjectsService {
- private String rawContent;
-
- public RawJavadoc(String rawContent) {
- this.rawContent = rawContent;
- }
-
- @Override
- public String raw() {
- return rawContent;
- }
-
- @Override
- public Renderable getRenderable() {
- throw new UnsupportedOperationException("Not yet implemented");
- }
+ Disposable initialize() throws Exception;
}
diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/jdt/ls/JavaProjectsService.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/jdt/ls/JavaProjectsService.java
index 7eb1e5c8a..5063d71a8 100644
--- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/jdt/ls/JavaProjectsService.java
+++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/jdt/ls/JavaProjectsService.java
@@ -11,7 +11,8 @@
package org.springframework.ide.vscode.boot.jdt.ls;
import org.springframework.ide.vscode.commons.languageserver.java.JavaProjectFinder;
+import org.springframework.ide.vscode.commons.languageserver.java.JavadocService;
import org.springframework.ide.vscode.commons.languageserver.java.ProjectObserver;
-public interface JavaProjectsService extends JavaProjectFinder, ProjectObserver {
+public interface JavaProjectsService extends JavaProjectFinder, ProjectObserver, JavadocService {
}
diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/jdt/ls/JavaProjectsServiceWithFallback.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/jdt/ls/JavaProjectsServiceWithFallback.java
new file mode 100644
index 000000000..7b24149d8
--- /dev/null
+++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/jdt/ls/JavaProjectsServiceWithFallback.java
@@ -0,0 +1,114 @@
+/*******************************************************************************
+ * Copyright (c) 2018 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
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Pivotal, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.springframework.ide.vscode.boot.jdt.ls;
+
+import java.util.Optional;
+import java.util.concurrent.CompletableFuture;
+
+import org.eclipse.lsp4j.TextDocumentIdentifier;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.ide.vscode.commons.java.IJavaProject;
+import org.springframework.ide.vscode.commons.java.IJavadocProvider;
+import org.springframework.ide.vscode.commons.languageserver.jdt.ls.Classpath.CPE;
+import org.springframework.ide.vscode.commons.languageserver.util.SimpleLanguageServer;
+import org.springframework.ide.vscode.commons.util.Assert;
+
+import com.google.common.base.Supplier;
+import com.google.common.base.Suppliers;
+
+import reactor.core.Disposable;
+
+public class JavaProjectsServiceWithFallback implements JavaProjectsService {
+
+ private Logger log = LoggerFactory.getLogger(JavaProjectsServiceWithFallback.class);
+
+ final private CompletableFuture initialized = new CompletableFuture();
+
+ final private SimpleLanguageServer server;
+ private Supplier fallback;
+ final private InitializableJavaProjectsService main;
+
+ public JavaProjectsServiceWithFallback(SimpleLanguageServer server, InitializableJavaProjectsService main, Supplier fallback) {
+ Assert.isNotNull(fallback);
+ this.main = main;
+ this.fallback = Suppliers.memoize(fallback);
+ this.server = server;
+ CompletableFuture disposable = new CompletableFuture();
+ this.server.onInitialized(() -> {
+ try {
+ disposable.complete(main.initialize());
+ initialized.complete(null);
+ } catch (Throwable e) {
+ log.info("Fallback classpath provider will be enabled");
+ disposable.complete(()-> {});
+ initialized.completeExceptionally(e);
+ }
+ });
+ this.server.onShutdown(() ->
+ disposable.thenAccept(Disposable::dispose).join()
+ );
+ }
+
+ @Override
+ public Optional find(TextDocumentIdentifier doc) {
+ if (initialized.isDone()) {
+ if (initialized.isCompletedExceptionally()) {
+ return fallback.get().find(doc);
+ } else {
+ return main.find(doc);
+ }
+ } else {
+ log.debug("find => NOT INITIALIZED YET");
+ }
+ log.debug("NOT FOUND {} ", doc.getUri());
+ return Optional.empty();
+ }
+
+ @Override
+ public void addListener(Listener listener) {
+ initialized.handle((success, failed) -> {
+ if (failed!=null) {
+ fallback.get().addListener(listener);
+ } else {
+ main.addListener(listener);
+ }
+ return null;
+ });
+ }
+
+ @Override
+ public void removeListener(Listener listener) {
+ initialized.handle((success, failed) -> {
+ if (failed!=null) {
+ fallback.get().removeListener(listener);
+ } else {
+ main.removeListener(listener);
+ }
+ return null;
+ });
+ }
+
+ @Override
+ public IJavadocProvider javadocProvider(String projectUri, CPE classpathEntry) {
+ if (initialized.isDone()) {
+ if (initialized.isCompletedExceptionally()) {
+ return fallback.get().javadocProvider(projectUri, classpathEntry);
+ } else {
+ return main.javadocProvider(projectUri, classpathEntry);
+ }
+ } else {
+ log.debug("javadoc => NOT INITIALIZED YET");
+ }
+ return IJavadocProvider.NULL;
+ }
+
+}
diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/jdt/ls/JdtLsProjectCache.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/jdt/ls/JdtLsProjectCache.java
index ed1618537..8d7d3dcf7 100644
--- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/jdt/ls/JdtLsProjectCache.java
+++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/jdt/ls/JdtLsProjectCache.java
@@ -21,101 +21,33 @@ import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Optional;
-import java.util.concurrent.CompletableFuture;
import org.eclipse.lsp4j.TextDocumentIdentifier;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.ide.vscode.commons.jandex.JandexIndex.JavadocProviderFactory;
import org.springframework.ide.vscode.commons.java.ClasspathData;
import org.springframework.ide.vscode.commons.java.IJavaProject;
+import org.springframework.ide.vscode.commons.java.IJavadocProvider;
import org.springframework.ide.vscode.commons.java.JavaProject;
import org.springframework.ide.vscode.commons.javadoc.JdtLsJavadocProvider;
-import org.springframework.ide.vscode.commons.languageserver.JavadocParams;
import org.springframework.ide.vscode.commons.languageserver.jdt.ls.Classpath.CPE;
import org.springframework.ide.vscode.commons.languageserver.jdt.ls.ClasspathListener;
import org.springframework.ide.vscode.commons.languageserver.util.SimpleLanguageServer;
-import org.springframework.ide.vscode.commons.util.Assert;
import org.springframework.ide.vscode.commons.util.ExceptionUtil;
import org.springframework.ide.vscode.commons.util.FileObserver;
import org.springframework.ide.vscode.commons.util.UriUtil;
-import com.google.common.base.Supplier;
-import com.google.common.base.Suppliers;
-
import reactor.core.Disposable;
-public class JdtLsProjectCache implements JavaProjectsService {
+public class JdtLsProjectCache implements InitializableJavaProjectsService {
- private CompletableFuture initialized = new CompletableFuture();
-
private SimpleLanguageServer server;
private Map table = new HashMap();
private Logger log = LoggerFactory.getLogger(JdtLsProjectCache.class);
private List listeners = new ArrayList<>();
- private final Supplier fallback;
-
- public JdtLsProjectCache(SimpleLanguageServer server, Supplier fallback) {
- Assert.isNotNull(fallback);
- this.fallback = Suppliers.memoize(fallback);
+ public JdtLsProjectCache(SimpleLanguageServer server) {
this.server = server;
- CompletableFuture disposable = new CompletableFuture();
- this.server.onInitialized(() -> {
- try {
- disposable.complete(server.addClasspathListener(new ClasspathListener() {
- @Override
- public void changed(Event event) {
- log.debug("claspath event received {}", event);
- initialized.thenRun(() -> {
- //log.info("initialized.thenRun block entered");
- try {
- synchronized (table) {
- String uri = UriUtil.normalize(event.projectUri);
- log.debug("uri = {}", uri);
- if (event.deleted) {
- log.debug("event.deleted = true");
- JavaProject deleted = table.remove(uri);
- if (deleted!=null) {
- log.debug("removed from table = true");
- notifyDelete(deleted);
- } else {
- log.warn("Deleted project not removed because uri {} not found in {}", uri, table.keySet());
- }
- } else {
- log.debug("deleted = false");
- JdtLsJavadocProvider javadocProvider = new JdtLsJavadocProvider(server.getClient(), uri);
- JavaProject newProject = new JavaProject(getFileObserver(), new URI(uri), new ClasspathData(event.name, event.classpath.getEntries()), classpathResource -> javadocProvider);
- JavaProject oldProject = table.put(uri, newProject);
- if (oldProject != null) {
- notifyChanged(newProject);
- } else {
- notifyCreated(newProject);
- }
- }
- }
- } catch (Exception e) {
- log.error("", e);
- }
- });
- }
- }));
- initialized.complete(null);
- } catch (Throwable e) {
- if (isNoJdtError(e)) {
- log.info("JDT Language Server not available. Fallback classpath provider will be used instead.");
- } else if (isOldJdt(e)) {
- log.info("JDT Lanuage Server too old. Fallback classpath provider will be used instead.");
- } else {
- log.error("Unexpected error registering classpath listener with JDT. Fallback classpath provider will be used instead.", e);
- }
- disposable.complete(()-> {});
- initialized.completeExceptionally(e);
- }
- });
- this.server.onShutdown(() ->
- disposable.thenAccept(Disposable::dispose).join()
- );
}
private FileObserver getFileObserver() {
@@ -132,30 +64,16 @@ public class JdtLsProjectCache implements JavaProjectsService {
@Override
public void addListener(Listener listener) {
- initialized.handle((success, failed) -> {
- if (failed!=null) {
- fallback.get().addListener(listener);
- } else {
- synchronized (listeners) {
- listeners.add(listener);
- }
- }
- return null;
- });
+ synchronized (listeners) {
+ listeners.add(listener);
+ }
}
@Override
public void removeListener(Listener listener) {
- initialized.handle((success, failed) -> {
- if (failed!=null) {
- fallback.get().removeListener(listener);
- } else {
- synchronized (listeners) {
- listeners.remove(listener);
- }
- }
- return null;
- });
+ synchronized (listeners) {
+ listeners.remove(listener);
+ }
}
private void notifyCreated(JavaProject newProject) {
@@ -215,28 +133,72 @@ public class JdtLsProjectCache implements JavaProjectsService {
public Optional find(TextDocumentIdentifier doc) {
String uri = UriUtil.normalize(doc.getUri());
log.debug("find {} ", uri);
- if (initialized.isDone()) {
- if (initialized.isCompletedExceptionally()) {
- log.debug("find {} delegating to fallback", uri);
- Optional result = fallback.get().find(doc);
- log.debug("find => {}", result);
- return result;
- }
-
- synchronized (table) {
- for (Entry e : table.entrySet()) {
- String projectUri = e.getKey();
- log.debug("projectUri = '{}'", projectUri);
- if (UriUtil.contains(projectUri, uri) ) {
- log.debug("found {} for {}", e.getValue(), uri);
- return Optional.of(e.getValue());
- }
+ synchronized (table) {
+ for (Entry e : table.entrySet()) {
+ String projectUri = e.getKey();
+ log.debug("projectUri = '{}'", projectUri);
+ if (UriUtil.contains(projectUri, uri)) {
+ log.debug("found {} for {}", e.getValue(), uri);
+ return Optional.of(e.getValue());
}
}
- } else {
- log.debug("find => NOT INITIALIZED YET");
}
- log.debug("NOT FOUND {} ", uri);
return Optional.empty();
}
+
+ @Override
+ public IJavadocProvider javadocProvider(String projectUri, CPE classpathEntry) {
+ return new JdtLsJavadocProvider(server.getClient(), projectUri);
+ }
+
+ @Override
+ public Disposable initialize() throws Exception {
+ try {
+ return server.addClasspathListener(new ClasspathListener() {
+ @Override
+ public void changed(Event event) {
+ log.debug("claspath event received {}", event);
+ server.onInitialized(() -> {
+ //log.info("initialized.thenRun block entered");
+ try {
+ synchronized (table) {
+ String uri = UriUtil.normalize(event.projectUri);
+ log.debug("uri = {}", uri);
+ if (event.deleted) {
+ log.debug("event.deleted = true");
+ JavaProject deleted = table.remove(uri);
+ if (deleted!=null) {
+ log.debug("removed from table = true");
+ notifyDelete(deleted);
+ } else {
+ log.warn("Deleted project not removed because uri {} not found in {}", uri, table.keySet());
+ }
+ } else {
+ log.debug("deleted = false");
+ JavaProject newProject = new JavaProject(getFileObserver(), new URI(uri), new ClasspathData(event.name, event.classpath.getEntries()), JdtLsProjectCache.this);
+ JavaProject oldProject = table.put(uri, newProject);
+ if (oldProject != null) {
+ notifyChanged(newProject);
+ } else {
+ notifyCreated(newProject);
+ }
+ }
+ }
+ } catch (Exception e) {
+ log.error("", e);
+ }
+ });
+ }
+ });
+ } catch (Throwable t) {
+ if (isNoJdtError(t)) {
+ log.info("JDT Language Server not available. Fallback classpath provider will be used instead.");
+ } else if (isOldJdt(t)) {
+ log.info("JDT Lanuage Server too old. Fallback classpath provider will be used instead.");
+ } else {
+ log.error("Unexpected error registering classpath listener with JDT. Fallback classpath provider will be used instead.", t);
+ }
+ throw t;
+ }
+ }
}
diff --git a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/utils/test/VSCodeSourceLinksTest.java b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/utils/test/VSCodeSourceLinksTest.java
index 3b048f37b..7852fdd9b 100644
--- a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/utils/test/VSCodeSourceLinksTest.java
+++ b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/utils/test/VSCodeSourceLinksTest.java
@@ -21,11 +21,11 @@ import java.util.Optional;
import org.junit.Test;
import org.springframework.ide.vscode.boot.java.links.VSCodeSourceLinks;
+import org.springframework.ide.vscode.commons.javadoc.JavaDocProviders;
import org.springframework.ide.vscode.commons.maven.MavenBuilder;
import org.springframework.ide.vscode.commons.maven.MavenCore;
import org.springframework.ide.vscode.commons.maven.java.MavenJavaProject;
import org.springframework.ide.vscode.commons.util.BasicFileObserver;
-import org.springframework.ide.vscode.commons.util.FileObserver;
import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
@@ -45,8 +45,10 @@ public class VSCodeSourceLinksTest {
public MavenJavaProject load(String projectName) throws Exception {
Path testProjectPath = Paths.get(VSCodeSourceLinksTest.class.getResource("/test-projects/" + projectName).toURI());
MavenBuilder.newBuilder(testProjectPath).clean().pack().javadoc().skipTests().execute();
- return MavenJavaProject.create(new BasicFileObserver(), MavenCore.getDefault(), testProjectPath.resolve(MavenCore.POM_XML).toFile());
- }
+ return MavenJavaProject.create(new BasicFileObserver(), MavenCore.getDefault(),
+ testProjectPath.resolve(MavenCore.POM_XML).toFile(),
+ (uri, cpe) -> JavaDocProviders.createFor(cpe));
+ }
});
diff --git a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/project/harness/ProjectsHarness.java b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/project/harness/ProjectsHarness.java
index 7d93071e1..88012b7af 100644
--- a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/project/harness/ProjectsHarness.java
+++ b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/project/harness/ProjectsHarness.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2016, 2017 Pivotal, Inc.
+ * Copyright (c) 2016, 2018 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
@@ -22,6 +22,7 @@ import org.apache.commons.io.FileUtils;
import org.springframework.ide.vscode.commons.java.DelegatingCachedClasspath;
import org.springframework.ide.vscode.commons.java.IJavaProject;
import org.springframework.ide.vscode.commons.java.LegacyJavaProject;
+import org.springframework.ide.vscode.commons.javadoc.JavaDocProviders;
import org.springframework.ide.vscode.commons.maven.MavenBuilder;
import org.springframework.ide.vscode.commons.maven.MavenCore;
import org.springframework.ide.vscode.commons.maven.java.MavenJavaProject;
@@ -89,7 +90,8 @@ public class ProjectsHarness {
}
public static final IJavaProject dummyProject() throws URISyntaxException {
- return new LegacyJavaProject(new BasicFileObserver(), new URI("file:///someplace/nonexistent"), null, new DelegatingCachedClasspath(() -> null, null));
+ return new LegacyJavaProject(new BasicFileObserver(), new URI("file:///someplace/nonexistent"), null,
+ new DelegatingCachedClasspath(() -> null, null), (uri, cpe) -> JavaDocProviders.createFor(cpe));
}
private ProjectsHarness(FileObserver fileObserver) {
@@ -111,7 +113,8 @@ public class ProjectsHarness {
switch (type) {
case MAVEN:
MavenBuilder.newBuilder(testProjectPath).clean().pack().javadoc().skipTests().execute();
- return MavenJavaProject.create(fileObserver, MavenCore.getDefault(), testProjectPath.resolve(MavenCore.POM_XML).toFile());
+ return MavenJavaProject.create(fileObserver, MavenCore.getDefault(),
+ testProjectPath.resolve(MavenCore.POM_XML).toFile(), (uri, cpe) -> JavaDocProviders.createFor(cpe));
default:
throw new IllegalStateException("Bug!!! Missing case");
}
diff --git a/vscode-extensions/vscode-bosh/package.json b/vscode-extensions/vscode-bosh/package.json
index 0774ecad0..c7555c0eb 100644
--- a/vscode-extensions/vscode-bosh/package.json
+++ b/vscode-extensions/vscode-bosh/package.json
@@ -3,7 +3,7 @@
"displayName": "Bosh Editor",
"description": "Provides validation and content assist for various Bosh configuration files",
"icon": "icon.png",
- "version": "0.2.1",
+ "version": "0.3.0",
"publisher": "Pivotal",
"repository": {
"type": "git",
@@ -65,11 +65,17 @@
"title": "Bosh CLI Configuration",
"properties": {
"bosh.ls.java.heap": {
- "type": ["string", "null"],
+ "type": [
+ "string",
+ "null"
+ ],
"description": "Passed as an `-Xmx` argument to the language server JVM process"
},
"bosh.ls.java.home": {
- "type": ["string", "null"],
+ "type": [
+ "string",
+ "null"
+ ],
"description": "Overrides JAVA_HOME used for launching the language server JVM process"
},
"bosh.cli.command": {
diff --git a/vscode-extensions/vscode-concourse/package.json b/vscode-extensions/vscode-concourse/package.json
index d95726b4a..69b65370d 100644
--- a/vscode-extensions/vscode-concourse/package.json
+++ b/vscode-extensions/vscode-concourse/package.json
@@ -3,7 +3,7 @@
"displayName": "Concourse CI Pipeline Editor",
"description": "Provides validation and content assist for Concourse CI pipeline and task configuration yml files",
"icon": "icon.png",
- "version": "0.2.1",
+ "version": "0.3.0",
"publisher": "Pivotal",
"repository": {
"type": "git",
diff --git a/vscode-extensions/vscode-manifest-yaml/package.json b/vscode-extensions/vscode-manifest-yaml/package.json
index 3e7236336..063174341 100644
--- a/vscode-extensions/vscode-manifest-yaml/package.json
+++ b/vscode-extensions/vscode-manifest-yaml/package.json
@@ -3,7 +3,7 @@
"displayName": "Cloudfoundry Manifest YML Support",
"description": "Adds linting, content assist and hoverinfo's for Cloudfoundry Deployment Manifests (a.k.a. `manifest.yml`) files.",
"icon": "icon.png",
- "version": "0.2.1",
+ "version": "0.3.0",
"publisher": "Pivotal",
"repository": {
"type": "git",
@@ -50,11 +50,17 @@
"title": "Cloudfoundry Manifest Language Server Configuration",
"properties": {
"cloudfoundry-manifest.ls.java.heap": {
- "type": ["string", "null"],
+ "type": [
+ "string",
+ "null"
+ ],
"description": "Passed as an `-Xmx` argument to the language server JVM process"
},
"cloudfoundry-manifest.ls.java.home": {
- "type": ["string", "null"],
+ "type": [
+ "string",
+ "null"
+ ],
"description": "Overrides JAVA_HOME used for launching the language server JVM process"
}
}
diff --git a/vscode-extensions/vscode-spring-boot/lib/Main.ts b/vscode-extensions/vscode-spring-boot/lib/Main.ts
index ce769dc77..54c3a0d1c 100644
--- a/vscode-extensions/vscode-spring-boot/lib/Main.ts
+++ b/vscode-extensions/vscode-spring-boot/lib/Main.ts
@@ -19,24 +19,7 @@ const JAVA_LANGUAGE_ID = "java";
/** Called when extension is activated */
export function activate(context: VSCode.ExtensionContext) {
- context.subscriptions.push(VSCode.commands.registerCommand('springboot.generate-concourse-pipeline', () => {
- let q = (property, defaultValue) => {
- defaultValue = defaultValue || '';
- return ;
- }
- let projectRoot = VSCode.workspace.rootPath;
- if (projectRoot) {
- return generate_pipeline(projectRoot, (property, defaultValue) =>
- new Promise((resolve, reject) => {
- VSCode.window.showInputBox({
- prompt: `Enter '${property}': `,
- value: defaultValue,
- valueSelection: [0, defaultValue.length]
- }).then(resolve, reject);
- })
- );
- }
- }));
+ // registerPipelineGenerator(context);
let options : commons.ActivatorOptions = {
DEBUG: false,
@@ -62,3 +45,31 @@ export function activate(context: VSCode.ExtensionContext) {
return commons.activate(options, context);
}
+
+// NOTE: Be sure to add this under "contributes" in package.json to enable the command:
+//
+// "commands": [
+// {
+// "command": "springboot.generate-concourse-pipeline",
+// "title": "Spring Boot: Generate Concourse Pipeline"
+// }
+// ],
+function registerPipelineGenerator(context: VSCode.ExtensionContext) {
+ context.subscriptions.push(VSCode.commands.registerCommand('springboot.generate-concourse-pipeline', () => {
+ let q = (property, defaultValue) => {
+ defaultValue = defaultValue || '';
+ return;
+ };
+ let projectRoot = VSCode.workspace.rootPath;
+ if (projectRoot) {
+ return generate_pipeline(projectRoot, (property, defaultValue) => new Promise((resolve, reject) => {
+ VSCode.window.showInputBox({
+ prompt: `Enter '${property}': `,
+ value: defaultValue,
+ valueSelection: [0, defaultValue.length]
+ }).then(resolve, reject);
+ }));
+ }
+ }));
+}
+
diff --git a/vscode-extensions/vscode-spring-boot/package.json b/vscode-extensions/vscode-spring-boot/package.json
index 2b63eb1cc..7004d3c9f 100644
--- a/vscode-extensions/vscode-spring-boot/package.json
+++ b/vscode-extensions/vscode-spring-boot/package.json
@@ -3,7 +3,7 @@
"displayName": "Spring Boot Tools",
"description": "Provides validation and content assist for Spring Boot `application.properties`, `application.yml` properties files. As well as Boot-specific support for `.java` files.",
"icon": "spring-boot-logo.png",
- "version": "0.2.1",
+ "version": "0.3.0",
"publisher": "Pivotal",
"repository": {
"type": "git",
@@ -31,12 +31,6 @@
"onLanguage:java"
],
"contributes": {
- "commands": [
- {
- "command": "springboot.generate-concourse-pipeline",
- "title": "Spring Boot: Generate Concourse Pipeline"
- }
- ],
"javaExtensions": [
"./jars/jdt-ls-commons.jar",
"./jars/jdt-ls-extension.jar"