This is an automated email from the ASF dual-hosted git repository. lkishalmi pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/netbeans.git
The following commit(s) were added to refs/heads/master by this push: new 3878d56 [NETBEANS-6004] Give info when the IDE's Java is not compatible with Gradle 3878d56 is described below commit 3878d562a1b88a700584eefe9f99b8c440550755 Author: Laszlo Kishalmi <laszlo.kisha...@gmail.com> AuthorDate: Sat Nov 13 12:37:51 2021 -0800 [NETBEANS-6004] Give info when the IDE's Java is not compatible with Gradle --- .../gradle/GradleJavaCompatProblemsProvider.java | 96 ++++++++++++++++++++++ .../api/execute/GradleDistributionManager.java | 18 +++- 2 files changed, 110 insertions(+), 4 deletions(-) diff --git a/extide/gradle/src/org/netbeans/modules/gradle/GradleJavaCompatProblemsProvider.java b/extide/gradle/src/org/netbeans/modules/gradle/GradleJavaCompatProblemsProvider.java new file mode 100644 index 0000000..52c7d2e --- /dev/null +++ b/extide/gradle/src/org/netbeans/modules/gradle/GradleJavaCompatProblemsProvider.java @@ -0,0 +1,96 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.netbeans.modules.gradle; + +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.beans.PropertyChangeSupport; +import java.util.Collection; +import java.util.Collections; +import org.netbeans.api.project.Project; +import org.netbeans.modules.gradle.api.NbGradleProject; +import org.netbeans.modules.gradle.api.execute.GradleDistributionManager; +import org.netbeans.modules.gradle.api.execute.GradleDistributionManager.GradleDistribution; +import org.netbeans.modules.gradle.spi.execute.GradleDistributionProvider; +import org.netbeans.spi.project.ProjectServiceProvider; +import org.netbeans.spi.project.ui.ProjectProblemsProvider; +import static org.netbeans.spi.project.ui.ProjectProblemsProvider.PROP_PROBLEMS; +import org.openide.util.NbBundle; +import org.openide.util.NbBundle.Messages; + +/** + * + * @author lkishalmi + */ +@ProjectServiceProvider(service = ProjectProblemsProvider.class, projectType = NbGradleProject.GRADLE_PROJECT_TYPE) +public final class GradleJavaCompatProblemsProvider implements ProjectProblemsProvider { + + private final PropertyChangeSupport support = new PropertyChangeSupport(this); + private final Project project; + private final PropertyChangeListener listener; + + public GradleJavaCompatProblemsProvider(Project project) { + this.project = project; + listener = (PropertyChangeEvent evt) -> { + if (NbGradleProject.PROP_PROJECT_INFO.equals(evt.getPropertyName())) { + support.firePropertyChange(PROP_PROBLEMS, null, null); + } + }; + NbGradleProject.addPropertyChangeListener(project, listener); + } + + @Override + public void addPropertyChangeListener(PropertyChangeListener listener) { + support.addPropertyChangeListener(listener); + } + + @Override + public void removePropertyChangeListener(PropertyChangeListener listener) { + support.removePropertyChangeListener(listener); + } + + @Messages({ + "LBL_JavaVersionMismatch=Unsupported Java Runtime", + "# {0} - Java Version", + "# {1} - Supported Java Version", + "# {2} - Required Gradle Version", + "# {3} - Forced Gradle Version", + "TXT_JavaVersionMismatch=The IDE is running on Java {0} that is not supported by Gradle {2}.\n" + + "The IDE will attempt to use Gradle {3} to gather the project information.\n\n" + + "Either upgrade your Gradle version on your project or run the IDE on " + + "Java {1} to avoid this problem!" + }) + @Override + public Collection<? extends ProjectProblem> getProblems() { + GradleDistributionProvider pvd = project.getLookup().lookup(GradleDistributionProvider.class); + if (pvd != null) { + GradleDistribution dist = pvd.getGradleDistribution(); + if ((dist != null) && !dist.isCompatibleWithSystemJava()) { + String javaVersion = System.getProperty("java.specification.version", System.getProperty("java.version")); //NOI18N + GradleDistribution compatDist = GradleDistributionManager.get(dist.getGradleUserHome()).defaultDistribution(); + ProjectProblem problem = ProjectProblem.createWarning( + Bundle.LBL_JavaVersionMismatch(), + Bundle.TXT_JavaVersionMismatch(javaVersion, dist.lastSupportedJava(),dist.getVersion(), compatDist.getVersion())); + return Collections.singleton(problem); + } + } + return Collections.emptySet(); + } + +} diff --git a/extide/gradle/src/org/netbeans/modules/gradle/api/execute/GradleDistributionManager.java b/extide/gradle/src/org/netbeans/modules/gradle/api/execute/GradleDistributionManager.java index 387eae1..f5d6a6c 100644 --- a/extide/gradle/src/org/netbeans/modules/gradle/api/execute/GradleDistributionManager.java +++ b/extide/gradle/src/org/netbeans/modules/gradle/api/execute/GradleDistributionManager.java @@ -96,7 +96,7 @@ public final class GradleDistributionManager { GradleVersion.version("6.3"), // JDK-14 GradleVersion.version("6.7"), // JDK-15 GradleVersion.version("7.0"), // JDK-16 - GradleVersion.version("7.2"), // JDK-17 + GradleVersion.version("7.3"), // JDK-17 }; private static final int JAVA_VERSION; @@ -436,14 +436,24 @@ public final class GradleDistributionManager { * @return <code>true</code> if this version is supported with that JDK. */ public boolean isCompatibleWithJava(int jdkMajorVersion) { + return jdkMajorVersion <= lastSupportedJava(); + } + + /** + * Returns the newest major JDK version that is supported with this + * distribution. + * @return the newest major JDK version that is supported with this + * distribution. + * @since 2.22 + */ + public int lastSupportedJava() { int i = JDK_COMPAT.length - 1; while ((i >= 0) && version.compareTo(JDK_COMPAT[i]) < 0) { i--; } - int maxSupportedJDK = i + 9; - return jdkMajorVersion <= maxSupportedJDK; + return i + 9; } - + /** * Checks if this Gradle distribution is compatible the NetBeans * runtime JDK. --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@netbeans.apache.org For additional commands, e-mail: commits-h...@netbeans.apache.org For further information about the NetBeans mailing lists, visit: https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists