You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@netbeans.apache.org by lk...@apache.org on 2022/12/06 05:49:51 UTC
[netbeans] branch delivery updated: Fixed some Gradle introspection problems wit pre-6.1 Gradle Versions
This is an automated email from the ASF dual-hosted git repository.
lkishalmi pushed a commit to branch delivery
in repository https://gitbox.apache.org/repos/asf/netbeans.git
The following commit(s) were added to refs/heads/delivery by this push:
new 648564ff47 Fixed some Gradle introspection problems wit pre-6.1 Gradle Versions
648564ff47 is described below
commit 648564ff47d5a70c4e03ce781e407b5d6f547131
Author: Laszlo Kishalmi <la...@gmail.com>
AuthorDate: Sun Nov 27 08:37:10 2022 -0800
Fixed some Gradle introspection problems wit pre-6.1 Gradle Versions
---
.../gradle/tooling/NbProjectInfoBuilder.java | 95 +++++++++++++---------
.../gradle/api/GradleBaseProjectBuilder.java | 2 +-
2 files changed, 57 insertions(+), 40 deletions(-)
diff --git a/extide/gradle/netbeans-gradle-tooling/src/main/java/org/netbeans/modules/gradle/tooling/NbProjectInfoBuilder.java b/extide/gradle/netbeans-gradle-tooling/src/main/java/org/netbeans/modules/gradle/tooling/NbProjectInfoBuilder.java
index dae86ef964..fbd02232a9 100644
--- a/extide/gradle/netbeans-gradle-tooling/src/main/java/org/netbeans/modules/gradle/tooling/NbProjectInfoBuilder.java
+++ b/extide/gradle/netbeans-gradle-tooling/src/main/java/org/netbeans/modules/gradle/tooling/NbProjectInfoBuilder.java
@@ -91,7 +91,6 @@ import org.gradle.api.logging.Logging;
import org.gradle.api.plugins.ExtensionAware;
import org.gradle.api.plugins.ExtensionContainer;
import org.gradle.api.plugins.ExtensionsSchema.ExtensionSchema;
-import org.gradle.api.plugins.JavaPlatformPlugin;
import org.gradle.api.provider.Provider;
import org.gradle.api.reflect.HasPublicType;
import org.gradle.api.reflect.TypeOf;
@@ -105,7 +104,7 @@ import org.gradle.jvm.JvmLibrary;
import org.gradle.language.base.artifact.SourcesArtifact;
import org.gradle.language.java.artifact.JavadocArtifact;
import org.gradle.plugin.use.PluginId;
-import org.gradle.util.VersionNumber;
+import org.gradle.util.GradleVersion;
import org.netbeans.modules.gradle.tooling.internal.NbProjectInfo;
/**
@@ -176,8 +175,9 @@ class NbProjectInfoBuilder {
"war"
}));
+ private static final GradleVersion GRADLE_VERSION = GradleVersion.current().getBaseVersion();
+
final Project project;
- final VersionNumber gradleVersion;
final GradleInternalAdapter adapter;
public static final class ValueAndType {
@@ -197,9 +197,7 @@ class NbProjectInfoBuilder {
NbProjectInfoBuilder(Project project) {
this.project = project;
- this.gradleVersion = VersionNumber.parse(project.getGradle().getGradleVersion());
- // checked that version 7.6.0 > 7.6.0-rc-1 in the VersionNumber order
- this.adapter = sinceGradleOrDefault("7.6.0-rc-1", () -> new GradleInternalAdapter.Gradle76(project), () -> new GradleInternalAdapter(project));
+ this.adapter = sinceGradleOrDefault("7.6", () -> new GradleInternalAdapter.Gradle76(project), () -> new GradleInternalAdapter(project));
}
private NbProjectInfoModel model = new NbProjectInfoModel();
@@ -864,7 +862,7 @@ class NbProjectInfoBuilder {
model.getInfo().put("project_subProjects", sp);
Map<String, File> ib = new HashMap<>();
- LOG.lifecycle("Gradle Version: {}", gradleVersion);
+ LOG.lifecycle("Gradle Version: {}", GradleVersion.current());
sinceGradle("3.1", () -> {
for(IncludedBuild p: project.getGradle().getIncludedBuilds()) {
LOG.lifecycle("Include Build: {}", p.getName());
@@ -1016,36 +1014,44 @@ class NbProjectInfoBuilder {
}
if (Boolean.TRUE.equals(available.get(langId))) {
model.getInfo().put(propBase + lang, storeSet(getProperty(sourceSet, langId, "srcDirs")));
- DirectoryProperty dirProp = (DirectoryProperty)getProperty(sourceSet, langId, "classesDirectory");
- if (dirProp != null) {
- File outDir;
-
- if (dirProp.isPresent()) {
- outDir = dirProp.get().getAsFile();
- } else {
- // kotlin plugin uses some weird late binding, so it has the output item, but it cannot be resolved to a
- // concrete file path at this time. Let's make an approximation from
- Path candidate = null;
- if (base != null) {
- Path prefix = base.resolve(langId);
- // assume the language has just one output dir in the source set:
- for (int i = 0; i < outPaths.size(); i++) {
- Path p = outPaths.get(i);
- if (p.startsWith(prefix)) {
- if (candidate != null) {
- candidate = null;
- break;
- } else {
- candidate = p;
+ asGradle("4.0", "6.1", () -> {
+ File outDir = (File) getProperty(sourceSet, langId, "outputDir");
+ model.getInfo().put(propBase + lang + "_output_classes", outDir);
+ });
+ sinceGradle("6.1", () -> {
+ DirectoryProperty dirProp = (DirectoryProperty)getProperty(sourceSet, langId, "classesDirectory");
+ if (dirProp != null) {
+ File outDir;
+
+ if (dirProp.isPresent()) {
+ outDir = dirProp.get().getAsFile();
+ } else {
+ // kotlin plugin uses some weird late binding, so it has the output item, but it cannot be resolved to a
+ // concrete file path at this time. Let's make an approximation from
+ Path candidate = null;
+ if (base != null) {
+ Path prefix = base.resolve(langId);
+ // assume the language has just one output dir in the source set:
+ for (int i = 0; i < outPaths.size(); i++) {
+ Path p = outPaths.get(i);
+ if (p.startsWith(prefix)) {
+ if (candidate != null) {
+ candidate = null;
+ break;
+ } else {
+ candidate = p;
+ }
}
}
}
+ outDir = candidate != null ? candidate.toFile() : new File("");
}
- outDir = candidate != null ? candidate.toFile() : new File("");
+
+ model.getInfo().put(propBase + lang + "_output_classes", outDir);
}
-
- model.getInfo().put(propBase + lang + "_output_classes", outDir);
- }
+ });
+
+
}
}
@@ -1295,7 +1301,7 @@ class NbProjectInfoBuilder {
// NETBEANS-5846: if this project uses javaPlatform plugin with dependencies enabled,
// do not report unresolved problems
- boolean ignoreUnresolvable = (project.getPlugins().hasPlugin(JavaPlatformPlugin.class) &&
+ boolean ignoreUnresolvable = (project.getPlugins().hasPlugin("java-platform") &&
Boolean.TRUE.equals(getProperty(project, "javaPlatform", "allowDependencies")));
visibleConfigurations.forEach(it -> {
@@ -1606,7 +1612,7 @@ class NbProjectInfoBuilder {
}
private <T, E extends Throwable> T sinceGradleOrDefault(String version, ExceptionCallable<T, E> c, Supplier<T> def) {
- if (gradleVersion.compareTo(VersionNumber.parse(version)) >= 0) {
+ if (GRADLE_VERSION.compareTo(GradleVersion.version(version)) >= 0) {
try {
return c.call();
} catch (RuntimeException | Error e) {
@@ -1625,23 +1631,34 @@ class NbProjectInfoBuilder {
}
private void sinceGradle(String version, Runnable r) {
- if (gradleVersion.compareTo(VersionNumber.parse(version)) >= 0) {
+ if (GRADLE_VERSION.compareTo(GradleVersion.version(version)) >= 0) {
r.run();
}
}
private void beforeGradle(String version, Runnable r) {
- if (gradleVersion.compareTo(VersionNumber.parse(version)) < 0) {
+ if (GRADLE_VERSION.compareTo(GradleVersion.version(version)) < 0) {
+ r.run();
+ }
+ }
+
+ private void asGradle(String fromVersion, String toVersion, Runnable r) {
+ if ((GRADLE_VERSION.compareTo(GradleVersion.version(fromVersion)) >= 0)
+ && (GRADLE_VERSION.compareTo(GradleVersion.version(toVersion)) < 0)) {
r.run();
}
}
private static Object getProperty(Object obj, String... propPath) {
Object currentObject = obj;
- for(String prop: propPath) {
- currentObject = InvokerHelper.getPropertySafe(currentObject, prop);
+ try {
+ for(String prop: propPath) {
+ currentObject = InvokerHelper.getPropertySafe(currentObject, prop);
+ }
+ return currentObject;
+ } catch (MissingPropertyException ex) {
+ return null;
}
- return currentObject;
}
}
diff --git a/extide/gradle/src/org/netbeans/modules/gradle/api/GradleBaseProjectBuilder.java b/extide/gradle/src/org/netbeans/modules/gradle/api/GradleBaseProjectBuilder.java
index 0b98521530..d299a47989 100644
--- a/extide/gradle/src/org/netbeans/modules/gradle/api/GradleBaseProjectBuilder.java
+++ b/extide/gradle/src/org/netbeans/modules/gradle/api/GradleBaseProjectBuilder.java
@@ -154,7 +154,7 @@ class GradleBaseProjectBuilder implements ProjectInfoExtractor.Result {
if (sourceSetNames != null) {
for (String name : sourceSetNames) {
Set<File> dirs = (Set<File>) info.get("sourceset_" + name + "_output_classes");
- sourceSetOutputs.addAll(dirs);
+ sourceSetOutputs.addAll(dirs != null ? dirs : Collections.emptySet());
sourceSetOutputs.add((File) info.get("sourceset_" + name + "_output_resources"));
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@netbeans.apache.org
For additional commands, e-mail: commits-help@netbeans.apache.org
For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists