diff options
| author | Vikas Chandra | 2019-07-03 10:08:03 +0000 |
|---|---|---|
| committer | Vikas Chandra | 2019-07-03 10:08:03 +0000 |
| commit | 1aace0178242bc1548108225851b5caf9fe7f1bf (patch) | |
| tree | 1a867efd75b12d8922fa40c01424f329c689390a | |
| parent | 6585c61531c770829adf4cf5c7dc772d292ba2aa (diff) | |
| download | eclipse.pde.ui-1aace0178242bc1548108225851b5caf9fe7f1bf.tar.gz eclipse.pde.ui-1aace0178242bc1548108225851b5caf9fe7f1bf.tar.xz eclipse.pde.ui-1aace0178242bc1548108225851b5caf9fe7f1bf.zip | |
Bug 243878 - first API addition causes cascade of errors
Change-Id: Iad1672a4231ec79867a88bc9ce269195953a170c
Signed-off-by: Vikas Chandra <Vikas.Chandra@in.ibm.com>
4 files changed, 95 insertions, 6 deletions
diff --git a/apitools/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/markers/ApiMarkerResolutionGenerator.java b/apitools/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/markers/ApiMarkerResolutionGenerator.java index 937b605171..8f73fcdc01 100644 --- a/apitools/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/markers/ApiMarkerResolutionGenerator.java +++ b/apitools/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/markers/ApiMarkerResolutionGenerator.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2018 IBM Corporation and others. + * Copyright (c) 2008, 2019 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -16,6 +16,8 @@ package org.eclipse.pde.api.tools.ui.internal.markers; import org.eclipse.core.resources.IMarker; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.IWorkspaceRoot; +import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.Path; @@ -81,11 +83,20 @@ public class ApiMarkerResolutionGenerator implements IMarkerResolutionGenerator2 new ConfigureProblemSeverityForAPIToolsResolution(marker) }; } case IApiMarkerConstants.SINCE_TAG_MARKER_ID: { - return new IMarkerResolution[] { + IMarkerResolution[] res = hasVersionProblems() ? + new IMarkerResolution[] { new ConfigureProblemSeverityForAPIToolsResolution(marker), - new SinceTagResolution(marker), - new FilterProblemResolution(marker), - new FilterProblemWithCommentResolution(marker) }; + new SinceTagAfterVersionUpdateResolution(marker), + new SinceTagResolution(marker), + new FilterProblemResolution(marker), + new FilterProblemWithCommentResolution(marker) }: + new IMarkerResolution[] { + new ConfigureProblemSeverityForAPIToolsResolution(marker), + new SinceTagResolution(marker), + new FilterProblemResolution(marker), + new FilterProblemWithCommentResolution(marker) + }; + return res; } case IApiMarkerConstants.VERSION_NUMBERING_MARKER_ID: { return new IMarkerResolution[] { @@ -177,4 +188,18 @@ public class ApiMarkerResolutionGenerator implements IMarkerResolutionGenerator2 return false; } + + private boolean hasVersionProblems() { + IMarker markerVersion = null; + IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); + try { + IMarker[] findMarkers = root.findMarkers(IApiMarkerConstants.VERSION_NUMBERING_PROBLEM_MARKER, false, + IResource.DEPTH_INFINITE); + if (findMarkers.length == 1) { + markerVersion = findMarkers[0]; + } + } catch (CoreException e) { + } + return markerVersion != null; + } } diff --git a/apitools/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/markers/MarkerMessages.java b/apitools/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/markers/MarkerMessages.java index 7eca075449..f6f533bed2 100644 --- a/apitools/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/markers/MarkerMessages.java +++ b/apitools/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/markers/MarkerMessages.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2018 IBM Corporation and others. + * Copyright (c) 2008, 2019 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -66,6 +66,7 @@ public class MarkerMessages extends NLS { public static String RemoveUnsupportedTagOperation_removeing_unsupported_tag; public static String SinceTagResolution_add_since_tag; + public static String SinceTagResolution_add_since_tag_after_version_update; public static String SinceTagResolution_change_since_tag; diff --git a/apitools/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/markers/SinceTagAfterVersionUpdateResolution.java b/apitools/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/markers/SinceTagAfterVersionUpdateResolution.java new file mode 100644 index 0000000000..5e3e0cf4ae --- /dev/null +++ b/apitools/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/markers/SinceTagAfterVersionUpdateResolution.java @@ -0,0 +1,62 @@ +/******************************************************************************* + * Copyright (c) 2019 IBM Corporation and others. + * + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +package org.eclipse.pde.api.tools.ui.internal.markers; + +import org.eclipse.core.resources.IMarker; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.IWorkspaceRoot; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.osgi.util.NLS; +import org.eclipse.pde.api.tools.internal.provisional.IApiMarkerConstants; + +public class SinceTagAfterVersionUpdateResolution extends SinceTagResolution { + + IMarker markerVersion = null; + public SinceTagAfterVersionUpdateResolution(IMarker marker) { + super(marker); + updateVersionMarker(); + + } + + private void updateVersionMarker() { + IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); + try { + IMarker[] findMarkers = root.findMarkers(IApiMarkerConstants.VERSION_NUMBERING_PROBLEM_MARKER, false, + IResource.DEPTH_INFINITE); + if (findMarkers.length == 1) { + markerVersion = findMarkers[0]; + } + } catch (CoreException e) { + + } + } + + @Override + public String getLabel() { + return NLS.bind(MarkerMessages.SinceTagResolution_add_since_tag_after_version_update, markerVersion.getAttribute(IApiMarkerConstants.MARKER_ATTR_VERSION, null)); + } + @Override + public void run(final IMarker marker) { + + + + if (markerVersion != null) { + new VersionNumberingResolution(markerVersion).run(markerVersion); + this.newVersionValue = markerVersion.getAttribute(IApiMarkerConstants.MARKER_ATTR_VERSION, null); + } + super.run(marker); + } + +} diff --git a/apitools/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/markers/markermessages.properties b/apitools/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/markers/markermessages.properties index 48564828f5..a26ebf99da 100644 --- a/apitools/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/markers/markermessages.properties +++ b/apitools/org.eclipse.pde.api.tools.ui/src/org/eclipse/pde/api/tools/ui/internal/markers/markermessages.properties @@ -57,6 +57,7 @@ RemoveFilterProblemResolution_removes_selected_problem_filter=Removes the unused RemoveUnsupportedAnnotationOperation_remove_unsupported_annotations=Remove unsupported annotations RemoveUnsupportedTagOperation_removeing_unsupported_tag=Removing Unsupported API Javadoc tag SinceTagResolution_add_since_tag=Add the missing @since tag with version {0} +SinceTagResolution_add_since_tag_after_version_update=Add the missing @since tag after updating version to {0} SinceTagResolution_change_since_tag=Change @since tag value to be {0} UnknownAnnotationResolution_0=Corrects missing imports and adds a build-time reference to API Tools annotations on the build path so that they are visible at compile time, but avoids a bundle dependency on 'org.eclipse.pde.api.tools.annotations' at run time.<br><br>Adds this entry to 'build.properties':<br><code>additional.bundles = org.eclipse.pde.api.tools.annotations</code> UnknownAnnotationResolution_1=Fix project setup and import {0} ({1}) |
