You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@netbeans.apache.org by sd...@apache.org on 2023/12/14 20:08:48 UTC

(netbeans) branch master updated: Avoid null type, derive from provider type params or fallback to Object.

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 <sv...@oracle.com>
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: 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