This is an automated email from the ASF dual-hosted git repository.
sdedic 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 f1e40aeb02 Avoid null type, derive from provider type params or
fallback to Object.
new c9ae5f89a8 Merge pull request #6820 from
sdedic/gradle/npe-provider-novalue
f1e40aeb02 is described below
commit f1e40aeb022460a9b49a4dd2263a749d21c54658
Author: Svata Dedic <[email protected]>
AuthorDate: Fri Dec 8 13:05:27 2023 +0100
Avoid null type, derive from provider type params or fallback to Object.
---
.../modules/gradle/tooling/GradleInternalAdapter.java | 7 ++++++-
.../modules/gradle/tooling/NbProjectInfoBuilder.java | 13 ++++++++++++-
2 files changed, 18 insertions(+), 2 deletions(-)
diff --git
a/extide/gradle/netbeans-gradle-tooling/src/main/java/org/netbeans/modules/gradle/tooling/GradleInternalAdapter.java
b/extide/gradle/netbeans-gradle-tooling/src/main/java/org/netbeans/modules/gradle/tooling/GradleInternalAdapter.java
index 632321d772..0548d9cc69 100644
---
a/extide/gradle/netbeans-gradle-tooling/src/main/java/org/netbeans/modules/gradle/tooling/GradleInternalAdapter.java
+++
b/extide/gradle/netbeans-gradle-tooling/src/main/java/org/netbeans/modules/gradle/tooling/GradleInternalAdapter.java
@@ -122,7 +122,12 @@ public class GradleInternalAdapter {
return new ValueAndType(provided.getType());
}
if (isFixedValue("property " + propName, etv)) {
- return new ValueAndType(provided.getType(),
etv.getFixedValue());
+ Object fixed = etv.getFixedValue();
+ Class t = provided.getType();
+ if (t == null && fixed != null) {
+ t = fixed.getClass();
+ }
+ return new ValueAndType(t, fixed);
} else {
return new ValueAndType(provided.getType());
}
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 ad5ef7d186..c2c1f7b565 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
@@ -718,10 +718,18 @@ class NbProjectInfoBuilder {
if (Provider.class.isAssignableFrom(t)) {
ValueAndType vt =
adapter.findPropertyValueInternal(propName, value);
if (vt != null) {
- t = vt.type;
if (vt.value.isPresent()) {
value = vt.value.get();
}
+ if (vt.type != null) {
+ t = vt.type;
+ } else if (typeParameters != null &&
!typeParameters.isEmpty() && (typeParameters.get(0) instanceof Class)) {
+ // derive the type from the provider's type
parameter
+ t = (Class)typeParameters.get(0);
+ } else {
+ // null value with an unspecified type from
the provider
+ t = Object.class;
+ }
}
}
} catch (RuntimeException ex) {
@@ -940,6 +948,9 @@ class NbProjectInfoBuilder {
}
private static Class findNonDecoratedClass(Class clazz) {
+ if (clazz == null || clazz.isInterface()) {
+ return clazz;
+ }
while (clazz != Object.class && (clazz.getModifiers() & 0x1000 /*
Modifiers.SYNTHETIC */) > 0) {
clazz = clazz.getSuperclass();
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists