From 5a0cdd6e2615638d9fb8a2785732bbb4916e1dd9 Mon Sep 17 00:00:00 2001 From: Snjezana Peco <snjezana.peco@redhat.com> Date: Sat, 1 Dec 2018 21:38:04 +0100 Subject: [PATCH] Migrate to Buildship 3.0 Signed-off-by: Snjezana Peco <snjezana.peco@redhat.com> --- org.eclipse.jdt.ls.core/META-INF/MANIFEST.MF | 4 --- .../jdt/ls/core/internal/ProjectUtils.java | 2 +- .../internal/managers/GradleBuildSupport.java | 20 ++++++------- .../managers/GradleProjectImporter.java | 30 ++++++++----------- .../org.eclipse.jdt.ls.tp.target | 9 +++--- .../managers/GradleProjectImporterTest.java | 2 +- 6 files changed, 29 insertions(+), 38 deletions(-) diff --git a/org.eclipse.jdt.ls.core/META-INF/MANIFEST.MF b/org.eclipse.jdt.ls.core/META-INF/MANIFEST.MF index a9bc78060e..cf121ca3c7 100644 --- a/org.eclipse.jdt.ls.core/META-INF/MANIFEST.MF +++ b/org.eclipse.jdt.ls.core/META-INF/MANIFEST.MF @@ -19,10 +19,6 @@ Require-Bundle: org.eclipse.core.runtime;bundle-version="3.12.0", org.eclipse.core.filebuffers;bundle-version="3.6.0", org.eclipse.m2e.maven.runtime, org.eclipse.buildship.core;bundle-version="1.0.18", - com.gradleware.tooling.client;bundle-version="0.14.0", - com.gradleware.tooling.model;bundle-version="0.14.0", - com.gradleware.tooling.utils;bundle-version="0.14.0", - org.gradle.toolingapi, org.eclipse.jdt.launching, org.eclipse.jdt.core.manipulation;bundle-version="1.8.0", org.apache.log4j;bundle-version="1.2.15", diff --git a/org.eclipse.jdt.ls.core/src/org/eclipse/jdt/ls/core/internal/ProjectUtils.java b/org.eclipse.jdt.ls.core/src/org/eclipse/jdt/ls/core/internal/ProjectUtils.java index 0350f113d8..33e81074df 100644 --- a/org.eclipse.jdt.ls.core/src/org/eclipse/jdt/ls/core/internal/ProjectUtils.java +++ b/org.eclipse.jdt.ls.core/src/org/eclipse/jdt/ls/core/internal/ProjectUtils.java @@ -15,7 +15,7 @@ import java.util.stream.Collectors; import java.util.stream.Stream; -import org.eclipse.buildship.core.configuration.GradleProjectNature; +import org.eclipse.buildship.core.internal.configuration.GradleProjectNature; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; diff --git a/org.eclipse.jdt.ls.core/src/org/eclipse/jdt/ls/core/internal/managers/GradleBuildSupport.java b/org.eclipse.jdt.ls.core/src/org/eclipse/jdt/ls/core/internal/managers/GradleBuildSupport.java index 79a6267c7c..ff78e61a92 100644 --- a/org.eclipse.jdt.ls.core/src/org/eclipse/jdt/ls/core/internal/managers/GradleBuildSupport.java +++ b/org.eclipse.jdt.ls.core/src/org/eclipse/jdt/ls/core/internal/managers/GradleBuildSupport.java @@ -11,12 +11,13 @@ package org.eclipse.jdt.ls.core.internal.managers; import java.io.File; +import java.util.Optional; -import org.eclipse.buildship.core.CorePlugin; -import org.eclipse.buildship.core.util.file.FileUtils; -import org.eclipse.buildship.core.workspace.GradleBuild; -import org.eclipse.buildship.core.workspace.NewProjectHandler; -import org.eclipse.buildship.core.workspace.WorkbenchShutdownEvent; +import org.eclipse.buildship.core.GradleBuild; +import org.eclipse.buildship.core.internal.CorePlugin; +import org.eclipse.buildship.core.internal.util.file.FileUtils; +import org.eclipse.buildship.core.internal.workspace.DefaultGradleWorkspace; +import org.eclipse.buildship.core.internal.workspace.WorkbenchShutdownEvent; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.ResourcesPlugin; @@ -29,8 +30,6 @@ import org.eclipse.jdt.ls.core.internal.JavaLanguageServerPlugin; import org.eclipse.jdt.ls.core.internal.ProjectUtils; -import com.google.common.base.Optional; - /** * @author Fred Bricon * @@ -50,9 +49,10 @@ public void update(IProject project, boolean force, IProgressMonitor monitor) th return; } JavaLanguageServerPlugin.logInfo("Starting Gradle update for "+project.getName()); - Optional<GradleBuild> build = CorePlugin.gradleWorkspaceManager().getGradleBuild(project); - if (build.isPresent()){ - build.get().synchronize(NewProjectHandler.IMPORT_AND_MERGE); + DefaultGradleWorkspace gradleWorkspace = (DefaultGradleWorkspace) CorePlugin.internalGradleWorkspace(); + Optional<GradleBuild> build = gradleWorkspace.getBuild(project); + if (build.isPresent()) { + build.get().synchronize(monitor); } } diff --git a/org.eclipse.jdt.ls.core/src/org/eclipse/jdt/ls/core/internal/managers/GradleProjectImporter.java b/org.eclipse.jdt.ls.core/src/org/eclipse/jdt/ls/core/internal/managers/GradleProjectImporter.java index a05a097f35..447d9199e4 100644 --- a/org.eclipse.jdt.ls.core/src/org/eclipse/jdt/ls/core/internal/managers/GradleProjectImporter.java +++ b/org.eclipse.jdt.ls.core/src/org/eclipse/jdt/ls/core/internal/managers/GradleProjectImporter.java @@ -19,13 +19,11 @@ import java.util.Map; import java.util.Properties; -import org.eclipse.buildship.core.CorePlugin; -import org.eclipse.buildship.core.configuration.BuildConfiguration; -import org.eclipse.buildship.core.preferences.PersistentModel; -import org.eclipse.buildship.core.util.gradle.GradleDistributionWrapper; -import org.eclipse.buildship.core.util.gradle.GradleDistributionWrapper.DistributionType; -import org.eclipse.buildship.core.workspace.GradleBuild; -import org.eclipse.buildship.core.workspace.NewProjectHandler; +import org.eclipse.buildship.core.GradleDistribution; +import org.eclipse.buildship.core.internal.CorePlugin; +import org.eclipse.buildship.core.internal.configuration.BuildConfiguration; +import org.eclipse.buildship.core.internal.preferences.PersistentModel; +import org.eclipse.buildship.core.internal.workspace.InternalGradleBuild; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; @@ -34,10 +32,6 @@ import org.eclipse.jdt.ls.core.internal.JavaLanguageServerPlugin; import org.eclipse.jdt.ls.core.internal.ProjectUtils; import org.eclipse.jdt.ls.core.internal.preferences.PreferenceManager; -import org.gradle.tooling.GradleConnector; - -import com.gradleware.tooling.toolingclient.GradleDistribution; -import com.gradleware.tooling.toolingmodel.repository.FetchStrategy; /** * @author Fred Bricon @@ -85,9 +79,10 @@ public void importToWorkspace(IProgressMonitor monitor) throws CoreException { return; } int projectSize = directories.size(); - SubMonitor subMonitor = SubMonitor.convert(monitor, projectSize); + SubMonitor subMonitor = SubMonitor.convert(monitor, projectSize + 1); subMonitor.setTaskName(IMPORTING_GRADLE_PROJECTS); JavaLanguageServerPlugin.logInfo(IMPORTING_GRADLE_PROJECTS); + subMonitor.worked(1); directories.forEach(d -> importDir(d, subMonitor.newChild(1))); subMonitor.done(); } @@ -102,7 +97,7 @@ private void importDir(Path rootFolder, IProgressMonitor monitor) { public static GradleDistribution getGradleDistribution(Path rootFolder) { GradleDistribution distribution = DEFAULT_DISTRIBUTION; if (Files.exists(rootFolder.resolve("gradlew"))) { - distribution = GradleDistributionWrapper.from(DistributionType.WRAPPER, null).toGradleDistribution(); + distribution = GradleDistribution.fromBuild(); } else { File gradleHomeFile = getGradleHomeFile(); if (gradleHomeFile != null) { @@ -147,10 +142,11 @@ protected void startSynchronization(Path rootFolder, IProgressMonitor monitor) { if (shouldSynchronize) { boolean overrideWorkspaceSettings = getGradleHomeFile() != null; GradleDistribution distribution = getGradleDistribution(rootFolder); - BuildConfiguration configuration = CorePlugin.configurationManager().createBuildConfiguration(location, overrideWorkspaceSettings, distribution, null, false, false, false); - GradleBuild build = CorePlugin.gradleWorkspaceManager().getGradleBuild(configuration); - build.getModelProvider().fetchEclipseGradleProjects(FetchStrategy.LOAD_IF_NOT_CACHED, GradleConnector.newCancellationTokenSource().token(), monitor); - build.synchronize(NewProjectHandler.IMPORT_AND_MERGE); + String javaHomeStr = JavaLanguageServerPlugin.getPreferencesManager().getPreferences().getJavaHome(); + File javaHome = javaHomeStr == null ? null : new File(javaHomeStr); + BuildConfiguration configuration = CorePlugin.configurationManager().createBuildConfiguration(location, overrideWorkspaceSettings, distribution, getGradleHomeFile(), javaHome, false, false, false, null, null, false, false); + InternalGradleBuild build = CorePlugin.internalGradleWorkspace().getGradleBuild(configuration); + build.synchronize(monitor); } } diff --git a/org.eclipse.jdt.ls.target/org.eclipse.jdt.ls.tp.target b/org.eclipse.jdt.ls.target/org.eclipse.jdt.ls.tp.target index 7c152a13cf..67031b46ad 100644 --- a/org.eclipse.jdt.ls.target/org.eclipse.jdt.ls.tp.target +++ b/org.eclipse.jdt.ls.target/org.eclipse.jdt.ls.tp.target @@ -1,5 +1,4 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<?pde version="3.8"?><target name="Java Language Server Target Definition" sequenceNumber="113"> +<?xml version="1.0" encoding="UTF-8" standalone="no"?><?pde version="3.8"?><target name="Java Language Server Target Definition" sequenceNumber="113"> <locations> <location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit"> <unit id="org.mockito.mockito-all" version="1.9.5"/> @@ -15,8 +14,8 @@ <repository location="http://download.eclipse.org/tools/orbit/R-builds/R20170516192513/repository"/> </location> <location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit"> - <unit id="org.eclipse.buildship.feature.group" version="2.2.2.v20181003-1021"/> - <repository location="https://download.eclipse.org/buildship/updates/e47/releases/2.x/2.2.2.v20181003-1021/"/> + <unit id="org.eclipse.buildship.feature.group" version="0.0.0"/> + <repository location="https://download.eclipse.org/buildship/updates/e49/snapshots/3.x/"/> </location> <location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit"> <unit id="org.eclipse.m2e.feature.feature.group" version="1.10.0.20181127-2120"/> @@ -47,4 +46,4 @@ </location> </locations> <targetJRE path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/> -</target> +</target> \ No newline at end of file diff --git a/org.eclipse.jdt.ls.tests/src/org/eclipse/jdt/ls/core/internal/managers/GradleProjectImporterTest.java b/org.eclipse.jdt.ls.tests/src/org/eclipse/jdt/ls/core/internal/managers/GradleProjectImporterTest.java index 35db000d5f..cba7df5a69 100644 --- a/org.eclipse.jdt.ls.tests/src/org/eclipse/jdt/ls/core/internal/managers/GradleProjectImporterTest.java +++ b/org.eclipse.jdt.ls.tests/src/org/eclipse/jdt/ls/core/internal/managers/GradleProjectImporterTest.java @@ -24,7 +24,7 @@ import java.util.Map; import java.util.Properties; -import org.eclipse.buildship.core.CorePlugin; +import org.eclipse.buildship.core.internal.CorePlugin; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IWorkspaceRoot;