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

Reply via email to