Add GradleReports to the GradleBaseProject
diff --git a/extide/gradle/src/org/netbeans/modules/gradle/GradleProject.java b/extide/gradle/src/org/netbeans/modules/gradle/GradleProject.java
index 33caf0f..04fda6a 100644
--- a/extide/gradle/src/org/netbeans/modules/gradle/GradleProject.java
+++ b/extide/gradle/src/org/netbeans/modules/gradle/GradleProject.java
@@ -23,7 +23,6 @@
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.Collection;
-import java.util.Collections;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Objects;
@@ -43,7 +42,6 @@
*/
public final class GradleProject implements Serializable, Lookup.Provider {
- final Set<GradleReport> problems;
final Quality quality;
final long evaluationTime = System.currentTimeMillis();
final Lookup lookup;
@@ -56,14 +54,15 @@
for (GradleReport prob : problems) {
if (prob != null) probs.add(prob);
}
- this.problems = probs;
InstanceContent ic = new InstanceContent();
for (Object i : infos) {
ic.add(i);
}
lookup = new AbstractLookup(ic);
+
baseProject = lookup.lookup(GradleBaseProject.class);
assert baseProject != null : "GradleProject always shall have a GradleBaseProject in it's lookup!";
+ setProblems(baseProject, probs);
}
private GradleProject(Quality quality, GradleReport[] problems, GradleProject origin) {
@@ -72,10 +71,11 @@
for (GradleReport prob : problems) {
if (prob != null) probs.add(prob);
}
- this.problems = probs;
lookup = origin.lookup;
baseProject = lookup.lookup(GradleBaseProject.class);
assert baseProject != null : "GradleProject always shall have a GradleBaseProject in it's lookup!";
+
+ setProblems(baseProject, probs);
}
@Override
@@ -83,8 +83,8 @@
return lookup;
}
- public Set<GradleReport> getProblems() {
- return Collections.unmodifiableSet(problems);
+ Set<GradleReport> getProblems() {
+ return baseProject.getProblems();
}
public Quality getQuality() {
@@ -131,6 +131,10 @@
return invalidate(reports.toArray(new GradleReport[reports.size()]));
}
+ private static void setProblems(GradleBaseProject baseProject, Set<GradleReport> problems) {
+ NbGradleProjectImpl.ACCESSOR.setProblems(baseProject, problems);
+ }
+
public static GradleReport createGradleReport(String errorClass, String location, int line, String message, GradleReport causedBy) {
return NbGradleProjectImpl.ACCESSOR.createReport(errorClass, location, line, message, causedBy);
}
diff --git a/extide/gradle/src/org/netbeans/modules/gradle/NbGradleProjectImpl.java b/extide/gradle/src/org/netbeans/modules/gradle/NbGradleProjectImpl.java
index 1d58007..0633e2b 100644
--- a/extide/gradle/src/org/netbeans/modules/gradle/NbGradleProjectImpl.java
+++ b/extide/gradle/src/org/netbeans/modules/gradle/NbGradleProjectImpl.java
@@ -135,6 +135,8 @@
public abstract void passivate(NbGradleProject watcher);
public abstract GradleReport createReport(String errorClass, String location, int line, String message, GradleReport causedBy);
+
+ public abstract void setProblems(GradleBaseProject baseProject, Set<GradleReport> problems);
}
@java.lang.SuppressWarnings("LeakingThisInConstructor")
diff --git a/extide/gradle/src/org/netbeans/modules/gradle/api/GradleBaseProject.java b/extide/gradle/src/org/netbeans/modules/gradle/api/GradleBaseProject.java
index 2288f37..c7277f4 100644
--- a/extide/gradle/src/org/netbeans/modules/gradle/api/GradleBaseProject.java
+++ b/extide/gradle/src/org/netbeans/modules/gradle/api/GradleBaseProject.java
@@ -76,6 +76,7 @@
Set<File> outputPaths = Collections.emptySet();
Map<String, String> projectIds = Collections.emptyMap();
GradleDependency projectDependencyNode;
+ Set<GradleReport> problems = Collections.emptySet();
transient Boolean resolved = null;
@@ -170,6 +171,10 @@
return includedBuilds;
}
+ public Set<GradleReport> getProblems() {
+ return problems;
+ }
+
/**
* Returns true if the project directory is the same as the root project's
* project directory, in short if this project is a root project.
diff --git a/extide/gradle/src/org/netbeans/modules/gradle/api/NbGradleProject.java b/extide/gradle/src/org/netbeans/modules/gradle/api/NbGradleProject.java
index 76a3bbb..fc592b5 100644
--- a/extide/gradle/src/org/netbeans/modules/gradle/api/NbGradleProject.java
+++ b/extide/gradle/src/org/netbeans/modules/gradle/api/NbGradleProject.java
@@ -26,6 +26,7 @@
import java.beans.PropertyChangeSupport;
import java.io.File;
import java.util.Collection;
+import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
import java.util.concurrent.CompletableFuture;
@@ -181,6 +182,13 @@
public GradleReport createReport(String errorClass, String location, int line, String message, GradleReport causedBy) {
return new GradleReport(errorClass, location, line, message, causedBy);
}
+
+ @Override
+ public void setProblems(GradleBaseProject baseProject, Set<GradleReport> problems) {
+ baseProject.problems = (problems == null || problems.isEmpty())
+ ? Collections.emptySet()
+ : Collections.unmodifiableSet(problems);
+ }
}
private NbGradleProject(NbGradleProjectImpl project) {
diff --git a/extide/gradle/src/org/netbeans/modules/gradle/editor/GradleHintsProvider.java b/extide/gradle/src/org/netbeans/modules/gradle/editor/GradleHintsProvider.java
index 2caaad03..e275c81 100644
--- a/extide/gradle/src/org/netbeans/modules/gradle/editor/GradleHintsProvider.java
+++ b/extide/gradle/src/org/netbeans/modules/gradle/editor/GradleHintsProvider.java
@@ -32,8 +32,7 @@
import javax.swing.text.Document;
import org.netbeans.api.editor.document.LineDocument;
import org.netbeans.api.project.Project;
-import org.netbeans.modules.gradle.GradleProject;
-import org.netbeans.modules.gradle.NbGradleProjectImpl;
+import org.netbeans.modules.gradle.api.GradleBaseProject;
import org.netbeans.modules.gradle.api.GradleReport;
import org.netbeans.modules.gradle.api.NbGradleProject;
import org.netbeans.spi.editor.hints.ErrorDescription;
@@ -78,18 +77,15 @@
}
Map<LineDocument, List<GradleReport>> openReportDocuments(boolean reportNonLocations) {
- NbGradleProjectImpl gpi = gradleProject.getLookup().lookup(NbGradleProjectImpl.class);
- if (gpi == null) {
+ GradleBaseProject gbp = GradleBaseProject.get(gradleProject);
+ if (gbp == null) {
return null;
}
- GradleProject gp = gpi.getGradleProject();
- if (gp == null) {
- return null;
- }
- Set<GradleReport> reports = gp.getProblems();
+ Set<GradleReport> reports = gbp.getProblems();
Map<String, LineDocument> openedDocs = new HashMap<>();
Map<LineDocument, List<GradleReport>> documentReports = new HashMap<>();
- File scriptF = gpi.getGradleFiles().getBuildScript();
+ NbGradleProject gp = NbGradleProject.get(gradleProject);
+ File scriptF = gp.getGradleFiles().getBuildScript();
for (GradleReport r : reports) {
String l;
int line;
diff --git a/extide/gradle/src/org/netbeans/modules/gradle/problems/ProxyAlertProvider.java b/extide/gradle/src/org/netbeans/modules/gradle/problems/ProxyAlertProvider.java
index 406a80a..63aceaa 100644
--- a/extide/gradle/src/org/netbeans/modules/gradle/problems/ProxyAlertProvider.java
+++ b/extide/gradle/src/org/netbeans/modules/gradle/problems/ProxyAlertProvider.java
@@ -41,7 +41,7 @@
import java.util.logging.Level;
import java.util.logging.Logger;
import org.netbeans.api.project.Project;
-import org.netbeans.modules.gradle.NbGradleProjectImpl;
+import org.netbeans.modules.gradle.api.GradleBaseProject;
import org.netbeans.modules.gradle.api.GradleReport;
import org.netbeans.modules.gradle.api.NbGradleProject;
import org.netbeans.modules.gradle.spi.GradleFiles;
@@ -133,8 +133,8 @@
}
private Set<GradleReport> reports() {
- NbGradleProjectImpl gp = (NbGradleProjectImpl)owner;
- return gp.getGradleProject().getProblems();
+ GradleBaseProject gbp = GradleBaseProject.get(owner);
+ return gbp.getProblems();
}
private static final String CLASS_UNKNOWN_HOST = "java.net.UnknownHostException"; // NOI18N