Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.m2e.discovery/src/org/eclipse/m2e/internal/discovery/markers/MavenDiscoveryMarkerResolutionGenerator.java')
-rw-r--r--org.eclipse.m2e.discovery/src/org/eclipse/m2e/internal/discovery/markers/MavenDiscoveryMarkerResolutionGenerator.java17
1 files changed, 16 insertions, 1 deletions
diff --git a/org.eclipse.m2e.discovery/src/org/eclipse/m2e/internal/discovery/markers/MavenDiscoveryMarkerResolutionGenerator.java b/org.eclipse.m2e.discovery/src/org/eclipse/m2e/internal/discovery/markers/MavenDiscoveryMarkerResolutionGenerator.java
index 76633e0c..61420a76 100644
--- a/org.eclipse.m2e.discovery/src/org/eclipse/m2e/internal/discovery/markers/MavenDiscoveryMarkerResolutionGenerator.java
+++ b/org.eclipse.m2e.discovery/src/org/eclipse/m2e/internal/discovery/markers/MavenDiscoveryMarkerResolutionGenerator.java
@@ -12,6 +12,8 @@
package org.eclipse.m2e.internal.discovery.markers;
import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.QualifiedName;
import org.eclipse.m2e.core.core.IMavenConstants;
import org.eclipse.ui.IMarkerResolution;
import org.eclipse.ui.IMarkerResolutionGenerator;
@@ -20,13 +22,26 @@ import org.eclipse.ui.IMarkerResolutionGenerator2;
public class MavenDiscoveryMarkerResolutionGenerator implements IMarkerResolutionGenerator, IMarkerResolutionGenerator2 {
+ private static QualifiedName QUALIFIED = new QualifiedName("org.eclipse.m2e.discovery", "discoveryResolution");
+
public boolean hasResolutions(IMarker marker) {
return canResolve(marker);
}
public IMarkerResolution[] getResolutions(IMarker marker) {
if(canResolve(marker)) {
- return new IMarkerResolution[] {new DiscoveryWizardProposal(marker)};
+ try {
+ //for each file have just one instance of the discover proposal array.
+ //important for 335299
+ IMarkerResolution[] cached = (IMarkerResolution[]) marker.getResource().getSessionProperty(QUALIFIED);
+ if (cached == null) {
+ cached = new IMarkerResolution[] {new DiscoveryWizardProposal()};
+ marker.getResource().setSessionProperty(QUALIFIED, cached);
+ }
+ return cached;
+ } catch(CoreException e) {
+ return new IMarkerResolution[] {new DiscoveryWizardProposal()};
+ }
}
return new IMarkerResolution[0];
}

Back to the top