Version validator API independent

This commit is contained in:
aboyko
2022-11-28 11:08:19 -05:00
parent 434cea41e1
commit 8f3e0f3664
5 changed files with 53 additions and 44 deletions

View File

@@ -46,10 +46,9 @@ public class BootVersionValidator {
String url = getSpringProjectsUrl(preferences);
SpringProjectsClient client = new SpringProjectsClient(url);
SpringProjectsProvider provider = new SpringIoProjectsProvider(client);
VersionValidators validators = new VersionValidators(server.getDiagnosticSeverityProvider());
VersionValidators validators = new VersionValidators(server.getDiagnosticSeverityProvider(), provider);
ProjectVersionDiagnosticProvider diagnosticProvider = new ProjectVersionDiagnosticProvider(provider,
validators);
ProjectVersionDiagnosticProvider diagnosticProvider = new ProjectVersionDiagnosticProvider(validators);
try {
DiagnosticResult result = diagnosticProvider.getDiagnostics(project);

View File

@@ -46,6 +46,7 @@ import org.springframework.ide.vscode.commons.protocol.java.ProjectBuild;
import org.springframework.ide.vscode.commons.util.FileObserver;
import org.springframework.ide.vscode.commons.util.UriUtil;
import com.google.common.collect.ImmutableList;
import com.google.gson.JsonObject;
import com.google.gson.JsonPrimitive;
@@ -291,7 +292,7 @@ public class JdtLsProjectCache implements InitializableJavaProjectsService, Serv
@Override
public Collection<? extends IJavaProject> all() {
return table.values();
return ImmutableList.copyOf(table.values());
}
@Override

View File

@@ -16,19 +16,20 @@ import java.util.ArrayList;
import java.util.List;
import org.eclipse.lsp4j.Diagnostic;
import org.springframework.ide.vscode.boot.validation.generations.json.ResolvedSpringProject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.ide.vscode.commons.java.IJavaProject;
import org.springframework.ide.vscode.commons.java.SpringProjectUtil;
import org.springframework.ide.vscode.commons.java.Version;
public class ProjectVersionDiagnosticProvider {
private static final Logger log = LoggerFactory.getLogger(ProjectVersionDiagnosticProvider.class);
private final SpringProjectsProvider provider;
private final VersionValidators validators;
public ProjectVersionDiagnosticProvider(SpringProjectsProvider provider, VersionValidators validators) {
public ProjectVersionDiagnosticProvider(VersionValidators validators) {
this.validators = validators;
this.provider = provider;
}
@@ -39,7 +40,6 @@ public class ProjectVersionDiagnosticProvider {
throw new Exception("Unable to find build file in project while computing version validation for: ");
}
ResolvedSpringProject springProject = provider.getProject(SpringProjectUtil.SPRING_BOOT);
Version javaProjectVersion = SpringProjectUtil.getSpringBootVersion(javaProject);
if (javaProjectVersion == null) {
@@ -49,9 +49,13 @@ public class ProjectVersionDiagnosticProvider {
List<Diagnostic> diagnostics = new ArrayList<Diagnostic>();
for (VersionValidator validator : validators.getValidators()) {
Diagnostic diagnostic = validator.validate(springProject, javaProject, javaProjectVersion);
if (diagnostic != null) {
diagnostics.add(diagnostic);
try {
Diagnostic diagnostic = validator.validate(javaProject, javaProjectVersion);
if (diagnostic != null) {
diagnostics.add(diagnostic);
}
} catch (Exception e) {
log.error("", e);
}
}

View File

@@ -11,13 +11,11 @@
package org.springframework.ide.vscode.boot.validation.generations;
import org.eclipse.lsp4j.Diagnostic;
import org.springframework.ide.vscode.boot.validation.generations.json.ResolvedSpringProject;
import org.springframework.ide.vscode.commons.java.IJavaProject;
import org.springframework.ide.vscode.commons.java.Version;
public interface VersionValidator {
Diagnostic validate(ResolvedSpringProject springProject, IJavaProject javaProject, Version javaProjectVersion)
throws Exception;
Diagnostic validate(IJavaProject javaProject, Version javaProjectVersion) throws Exception;
}

View File

@@ -35,12 +35,12 @@ public class VersionValidators {
private final VersionValidator[] validators;
public VersionValidators(DiagnosticSeverityProvider diagnosticSeverityProvider) {
public VersionValidators(DiagnosticSeverityProvider diagnosticSeverityProvider, SpringProjectsProvider provider) {
this.validators = new VersionValidator[] {
// new SupportedOssValidator(diagnosticSeverityProvider),
// new UnsupportedCommercialValidator(diagnosticSeverityProvider),
// new UnsupportedOssValidator(diagnosticSeverityProvider),
// new SupportedCommercialValidator(diagnosticSeverityProvider),
// new SupportedOssValidator(diagnosticSeverityProvider, provider),
// new UnsupportedCommercialValidator(diagnosticSeverityProvider, provider),
// new UnsupportedOssValidator(diagnosticSeverityProvider, provider),
// new SupportedCommercialValidator(diagnosticSeverityProvider, provider),
new UpdateLatestMajorVersion(diagnosticSeverityProvider),
new UpdateLatestMinorVersion(diagnosticSeverityProvider),
new UpdateLatestPatchVersion(diagnosticSeverityProvider) };
@@ -68,14 +68,16 @@ public class VersionValidators {
//
// private static class SupportedOssValidator extends AbstractDiagnosticValidator {
//
// public SupportedOssValidator(DiagnosticSeverityProvider diagnosticSeverityProvider) {
// private SpringProjectsProvider provider;
//
// public SupportedOssValidator(DiagnosticSeverityProvider diagnosticSeverityProvider, SpringProjectsProvider provider) {
// super(diagnosticSeverityProvider);
// this.provider = provider;
// }
//
// @Override
// public Diagnostic validate(ResolvedSpringProject springProject, IJavaProject javaProject,
// Version javaProjectVersion) throws Exception {
//
// public Diagnostic validate(IJavaProject javaProject, Version javaProjectVersion) throws Exception {
// ResolvedSpringProject springProject = provider.getProject(SpringProjectUtil.SPRING_BOOT);
// Generation javaProjectGen = getGenerationForJavaProject(javaProject, springProject);
// Assert.isLegal(javaProjectGen != null, "Unable to find Spring Project Generation for project: " + javaProjectVersion.toString());
// if (VersionValidationUtils.isOssValid(javaProjectGen)) {
@@ -93,14 +95,16 @@ public class VersionValidators {
//
// private static class SupportedCommercialValidator extends AbstractDiagnosticValidator {
//
// public SupportedCommercialValidator(DiagnosticSeverityProvider diagnosticSeverityProvider) {
// private SpringProjectsProvider provider;
//
// public SupportedCommercialValidator(DiagnosticSeverityProvider diagnosticSeverityProvider, SpringProjectsProvider provider) {
// super(diagnosticSeverityProvider);
// this.provider = provider;
// }
//
// @Override
// public Diagnostic validate(ResolvedSpringProject springProject, IJavaProject javaProject,
// Version javaProjectVersion) throws Exception {
//
// public Diagnostic validate(IJavaProject javaProject, Version javaProjectVersion) throws Exception {
// ResolvedSpringProject springProject = provider.getProject(SpringProjectUtil.SPRING_BOOT);
// Generation javaProjectGen = getGenerationForJavaProject(javaProject, springProject);
// Assert.isLegal(javaProjectGen != null, "Unable to find Spring Project Generation for project: " + javaProjectVersion.toString());
//
@@ -120,13 +124,16 @@ public class VersionValidators {
//
// private static class UnsupportedOssValidator extends AbstractDiagnosticValidator {
//
// public UnsupportedOssValidator(DiagnosticSeverityProvider diagnosticSeverityProvider) {
// private SpringProjectsProvider provider;
//
// public UnsupportedOssValidator(DiagnosticSeverityProvider diagnosticSeverityProvider, SpringProjectsProvider provider) {
// super(diagnosticSeverityProvider);
// this.provider = provider;
// }
//
// @Override
// public Diagnostic validate(ResolvedSpringProject springProject, IJavaProject javaProject,
// Version javaProjectVersion) throws Exception {
// public Diagnostic validate(IJavaProject javaProject, Version javaProjectVersion) throws Exception {
// ResolvedSpringProject springProject = provider.getProject(SpringProjectUtil.SPRING_BOOT);
// Generation javaProjectGen = getGenerationForJavaProject(javaProject, springProject);
// Assert.isLegal(javaProjectGen != null, "Unable to find Spring Project Generation for project: " + javaProjectVersion.toString());
//
@@ -146,13 +153,16 @@ public class VersionValidators {
//
// private static class UnsupportedCommercialValidator extends AbstractDiagnosticValidator {
//
// public UnsupportedCommercialValidator(DiagnosticSeverityProvider diagnosticSeverityProvider) {
// private SpringProjectsProvider provider;
//
// public UnsupportedCommercialValidator(DiagnosticSeverityProvider diagnosticSeverityProvider, SpringProjectsProvider provider) {
// super(diagnosticSeverityProvider);
// this.provider = provider;
// }
//
// @Override
// public Diagnostic validate(ResolvedSpringProject springProject, IJavaProject javaProject,
// Version javaProjectVersion) throws Exception {
// public Diagnostic validate(IJavaProject javaProject, Version javaProjectVersion) throws Exception {
// ResolvedSpringProject springProject = provider.getProject(SpringProjectUtil.SPRING_BOOT);
// Generation javaProjectGen = getGenerationForJavaProject(javaProject, springProject);
// Assert.isLegal(javaProjectGen != null, "Unable to find Spring Project Generation for project: " + javaProjectVersion.toString());
//
@@ -177,9 +187,8 @@ public class VersionValidators {
}
@Override
public Diagnostic validate(ResolvedSpringProject springProject, IJavaProject javaProject,
Version javaProjectVersion) throws Exception {
Version latest = VersionValidationUtils.getNewerLatestPatchRelease(springProject.getReleases(), javaProjectVersion);
public Diagnostic validate(IJavaProject javaProject, Version javaProjectVersion) throws Exception {
Version latest = VersionValidationUtils.getNewerLatestPatchRelease(CachedBootVersionsFromMavenCentral.getBootVersions(), javaProjectVersion);
if (latest != null) {
VersionValidationProblemType problemType = VersionValidationProblemType.UPDATE_LATEST_PATCH_VERSION;
@@ -209,9 +218,8 @@ public class VersionValidators {
}
@Override
public Diagnostic validate(ResolvedSpringProject springProject, IJavaProject javaProject,
Version javaProjectVersion) throws Exception {
Version latest = VersionValidationUtils.getNewerLatestMinorRelease(springProject.getReleases(), javaProjectVersion);
public Diagnostic validate(IJavaProject javaProject, Version javaProjectVersion) throws Exception {
Version latest = VersionValidationUtils.getNewerLatestMinorRelease(CachedBootVersionsFromMavenCentral.getBootVersions(), javaProjectVersion);
if (latest != null) {
VersionValidationProblemType problemType = VersionValidationProblemType.UPDATE_LATEST_MINOR_VERSION;
@@ -241,9 +249,8 @@ public class VersionValidators {
}
@Override
public Diagnostic validate(ResolvedSpringProject springProject, IJavaProject javaProject,
Version javaProjectVersion) throws Exception {
Version latest = VersionValidationUtils.getNewerLatestMajorRelease(springProject.getReleases(), javaProjectVersion);
public Diagnostic validate(IJavaProject javaProject, Version javaProjectVersion) throws Exception {
Version latest = VersionValidationUtils.getNewerLatestMajorRelease(CachedBootVersionsFromMavenCentral.getBootVersions(), javaProjectVersion);
if (latest != null) {
VersionValidationProblemType problemType = VersionValidationProblemType.UPDATE_LATEST_MAJOR_VERSION;