# This patch file was generated by NetBeans IDE # Following Index: paths are relative to: C:\Users\mkleint\src\core-main # This patch can be applied using context Tools: Patch action on respective folder. # It uses platform neutral UTF-8 encoding and \n newlines. # Above lines and this line are ignored by the patching process. Index: maven.osgi/manifest.mf --- maven.osgi/manifest.mf +++ maven.osgi/manifest.mf @@ -3,5 +3,5 @@ OpenIDE-Module: org.netbeans.modules.maven.osgi/1 OpenIDE-Module-Layer: org/netbeans/modules/maven/osgi/layer.xml OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/maven/osgi/Bundle.properties -OpenIDE-Module-Specification-Version: 1.27 +OpenIDE-Module-Specification-Version: 1.28 Index: maven.osgi/nbproject/project.xml --- maven.osgi/nbproject/project.xml +++ maven.osgi/nbproject/project.xml @@ -108,7 +108,7 @@ 1 - 1.69 + 1.74 Index: maven.osgi/src/org/netbeans/modules/maven/osgi/ForeignClassBundlerImpl.java --- maven.osgi/src/org/netbeans/modules/maven/osgi/ForeignClassBundlerImpl.java +++ maven.osgi/src/org/netbeans/modules/maven/osgi/ForeignClassBundlerImpl.java @@ -46,9 +46,6 @@ import java.util.Collections; import java.util.Enumeration; import java.util.Properties; -import java.util.concurrent.Callable; -import java.util.concurrent.Future; -import java.util.concurrent.FutureTask; import java.util.concurrent.atomic.AtomicBoolean; import java.util.jar.JarEntry; import java.util.jar.JarFile; @@ -61,7 +58,6 @@ import org.openide.util.Exceptions; import org.openide.util.NbBundle; import static org.netbeans.modules.maven.osgi.Bundle.*; -import org.netbeans.spi.project.ui.ProjectProblemResolver; import org.netbeans.spi.project.ui.ProjectProblemsProvider; import org.openide.util.RequestProcessor; @@ -70,18 +66,7 @@ "PRBL_DESC=When the final bundle jar contains classes not originating in current project, NetBeans internal compiler cannot use the sources of the project. Then changes done in project's source code only appears in depending projects when project is recompiled. Also applies to features like Refactoring which will not be able to find usages in depending projects." }) public class ForeignClassBundlerImpl implements ForeignClassBundler, ProjectProblemsProvider { // #179521 - private static final ProjectProblem PROBLEM_REPORT = ProjectProblem.createWarning(PRBL_Name(), PRBL_DESC(), new ProjectProblemResolver() { - - @Override - public Future resolve() { - return new FutureTask(new Callable() { - @Override - public Result call() throws Exception { - return Result.create(Status.UNRESOLVED); - } - }); - } - }); + private static final ProjectProblem PROBLEM_REPORT = ProjectProblem.createWarning(PRBL_Name(), PRBL_DESC()); private static final RequestProcessor RP = new RequestProcessor(ForeignClassBundlerImpl.class); private final AtomicBoolean hasProblem = new AtomicBoolean(false); Index: projectui/nbproject/project.properties --- projectui/nbproject/project.properties +++ projectui/nbproject/project.properties @@ -42,7 +42,7 @@ javac.compilerargs=-Xlint:unchecked javac.source=1.6 -spec.version.base=1.48.0 +spec.version.base=1.49.0 javadoc.arch=${basedir}/arch.xml javadoc.apichanges=${basedir}/apichanges.xml Index: projectui/src/org/netbeans/modules/project/ui/problems/BrokenReferencesCustomizer.java --- projectui/src/org/netbeans/modules/project/ui/problems/BrokenReferencesCustomizer.java +++ projectui/src/org/netbeans/modules/project/ui/problems/BrokenReferencesCustomizer.java @@ -268,7 +268,7 @@ final BrokenReferencesModel.ProblemReference reference = (BrokenReferencesModel.ProblemReference) value; if (!reference.resolved) { description.setText(reference.problem.getDescription()); - fix.setEnabled(true); + fix.setEnabled(reference.problem.isResolvable()); javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { jScrollPane2.getVerticalScrollBar().setValue(0); @@ -279,7 +279,7 @@ // Leave the button always enabled so that user can alter // resolved reference. Especially needed for automatically // resolved JAR references. - fix.setEnabled(true); + fix.setEnabled(reference.problem.isResolvable()); } } else { description.setText(""); Index: projectuiapi/apichanges.xml --- projectuiapi/apichanges.xml +++ projectuiapi/apichanges.xml @@ -108,6 +108,24 @@ + + + Allow creating ProjectProblemsProvider.ProjectProblem without a ProjectProblemResolver + + + + + +

+ ProjectProblemsProvider.ProjectProblem has so far required a ProjectProblemResolver effectively + making all problems resolvable, however a few places emerged where an automated resolution is not at hand and still we want to report the + error/warning. 2 new factory methods introduced. +

+
+ + +
+ Moved CustomizerProvider2 from java.api.common Index: projectuiapi/nbproject/project.properties --- projectuiapi/nbproject/project.properties +++ projectuiapi/nbproject/project.properties @@ -42,7 +42,7 @@ javac.compilerargs=-Xlint -Xlint:-serial javac.source=1.6 -spec.version.base=1.73.0 +spec.version.base=1.74.0 is.autoload=true javadoc.arch=${basedir}/arch.xml javadoc.apichanges=${basedir}/apichanges.xml Index: projectuiapi/src/org/netbeans/spi/project/ui/ProjectProblemsProvider.java --- projectuiapi/src/org/netbeans/spi/project/ui/ProjectProblemsProvider.java +++ projectuiapi/src/org/netbeans/spi/project/ui/ProjectProblemsProvider.java @@ -44,6 +44,7 @@ import java.beans.PropertyChangeListener; import java.util.Collection; import java.util.concurrent.Future; +import java.util.concurrent.FutureTask; import org.netbeans.api.annotations.common.CheckForNull; import org.netbeans.api.annotations.common.NonNull; import org.netbeans.api.annotations.common.NullAllowed; @@ -212,11 +213,10 @@ @NonNull final Severity severity, @NonNull final String displayName, @NonNull final String description, - @NonNull final ProjectProblemResolver resolver) { + @NullAllowed final ProjectProblemResolver resolver) { Parameters.notNull("severity", severity); //NOI18N Parameters.notNull("displayName", displayName); //NOI18N Parameters.notNull("description", description); //NOI18N - Parameters.notNull("resolver", resolver); //NOI18N this.severity = severity; this.displayName = displayName; this.description = description; @@ -253,6 +253,15 @@ } /** + * Is the problem resolvable? + * @return + * @since 1.74 + */ + public boolean isResolvable() { + return resolver != null; + } + + /** * Resolves the problem. * Called by the Event Dispatch Thread. * When the resolution needs to be done by a background thread, eg. downloading @@ -261,6 +270,14 @@ * @return the {@link Future} holding the problem resolution status. */ public Future resolve() { + if (resolver == null) { + return new FutureTask(new Runnable() { + @Override + public void run() { + //noop + } + }, Result.create(Status.UNRESOLVED)); + } return resolver.resolve(); } @@ -278,7 +295,7 @@ final ProjectProblem otherProblem = (ProjectProblem) other; return displayName.equals(otherProblem.displayName) && description.equals(otherProblem.description) && - resolver.equals(otherProblem.resolver); + (resolver != null ? resolver.equals(otherProblem.resolver) : otherProblem.resolver == null); } /** @@ -289,7 +306,7 @@ int result = 17; result = 31 * result + displayName.hashCode(); result = 31 * result + description.hashCode(); - result = 31 * result + resolver.hashCode(); + result = 31 * result + (resolver != null ? resolver.hashCode() : 0); return result; } @@ -321,6 +338,20 @@ } /** + * Creates a new unresolvable instance of the {@link ProjectProblem} with error {@link Severity}. + * @param displayName the project problem display name. + * @param description the project problem description. + * @return a new instance of {@link ProjectProblem} + * @since 1.74 + */ + @NonNull + public static ProjectProblem createError( + @NonNull final String displayName, + @NonNull final String description) { + return new ProjectProblem(Severity.ERROR, displayName, description, null); + } + + /** * Creates a new instance of the {@link ProjectProblem} with warning {@link Severity}. * @param displayName the project problem display name. * @param description the project problem description. @@ -335,6 +366,20 @@ return new ProjectProblem(Severity.WARNING, displayName,description,resolver); } + /** + * Creates a new unresolvable instance of the {@link ProjectProblem} with warning {@link Severity}. + * @param displayName the project problem display name. + * @param description the project problem description. + * @return a new instance of {@link ProjectProblem} + * @since 1.74 + */ + @NonNull + public static ProjectProblem createWarning( + @NonNull final String displayName, + @NonNull final String description) { + return new ProjectProblem(Severity.WARNING, displayName, description, null); } } + +}