Skip to content

Commit

Permalink
quick-fix for extraneous empty line(s) in manifest editor (#564)
Browse files Browse the repository at this point in the history
* quick-fix for extraneous empty line(s) in manifest editor

Extraneous lines are errneous to the manifest compiler,
but it does not recommend / provide a resolution.
Add a quick fix to remove extraneous line.
Fixes: #563

* fixup: fix the copyright header

* fixup: address review comments
1. code formatting
2. updating the copyright header
  • Loading branch information
gireeshpunathil committed Apr 11, 2023
1 parent 27ac47f commit c5f499d
Show file tree
Hide file tree
Showing 6 changed files with 88 additions and 5 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2000, 2017 IBM Corporation and others.
* Copyright (c) 2000, 2023 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
Expand Down Expand Up @@ -143,6 +143,15 @@ protected void parseManifest(IDocument document, IProgressMonitor monitor) {
if (l == 0) {
report(PDECoreMessages.BundleErrorReporter_noMainSection, 1, CompilerFlags.ERROR, PDEMarkerFactory.CAT_FATAL);
return;
} else if (l != document.getNumberOfLines() - 1) {
VirtualMarker marker = report(PDECoreMessages.BundleErrorReporter_noNameHeader, lineNumber,
CompilerFlags.ERROR, PDEMarkerFactory.M_EXTRANEOUS_EMPTY_LINES,
PDEMarkerFactory.CAT_FATAL);
if (marker != null) {
marker.setAttribute("emptyLine", l); //$NON-NLS-1$
return;
}
continue;
}
/* flush last line */
if (header != null) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2000, 2021 IBM Corporation and others.
* Copyright (c) 2000, 2023 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
Expand Down Expand Up @@ -76,6 +76,7 @@ public class PDEMarkerFactory {
public static final int M_EXEC_ENV_TOO_LOW = 0x1029; // other problem
public static final int M_CONFLICTING_AUTOMATIC_MODULE = 0x1030; // other
// problem
public static final int M_EXTRANEOUS_EMPTY_LINES = 0X1031; // fatal problem

// build properties fixes
public static final int B_APPEND_SLASH_FOLDER_ENTRY = 0x2001;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2014, 2022 IBM Corporation and others.
* Copyright (c) 2014, 2023 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
Expand Down Expand Up @@ -2617,6 +2617,10 @@ public class PDEUIMessages extends NLS {

public static String NoLineTerminationResolutionRemove_label;

public static String ExtraneousLineResolutionRemove_description;

public static String ExtraneousLineResolutionRemove_label;

public static String OptionalImportPkgResolution_description;

public static String OptionalImportPkgResolution_label;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
/*******************************************************************************
* Copyright (c) 2023 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
* Gireesh Punathil <gpunathi@in.ibm.com> Initial implementation
*******************************************************************************/
package org.eclipse.pde.internal.ui.correction;

import org.eclipse.core.resources.IMarker;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.IRegion;
import org.eclipse.pde.internal.core.text.bundle.BundleModel;
import org.eclipse.pde.internal.ui.PDEUIMessages;

/**
* <p>
* Represents a resolution to the problem of the bundle manifest having
* extraneous lines.
* </p>
*/
public class ExtraneousLinesResolution extends AbstractManifestMarkerResolution {

/**
* Creates a new resolution
*
* @param type {@link AbstractPDEMarkerResolution#REMOVE_TYPE} to delete lines
*/
public ExtraneousLinesResolution(int type, IMarker marker) {
super(type, marker);
}

/**
* Resolves the problem by extracting the empty line and removing it.
*/
@Override
protected void createChange(BundleModel model) {
IDocument doc = model.getDocument();
try {
int line = (int) marker.getAttribute("emptyLine"); //$NON-NLS-1$
IRegion l = doc.getLineInformation(line);
doc.replace(l.getOffset(), l.getLength() + 1, ""); //$NON-NLS-1$
} catch (Exception e) {
}
}

@Override
public String getDescription() {
return PDEUIMessages.ExtraneousLineResolutionRemove_description;
}

@Override
public String getLabel() {
return PDEUIMessages.ExtraneousLineResolutionRemove_label;
}

}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2005, 2022 IBM Corporation and others.
* Copyright (c) 2005, 2023 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
Expand Down Expand Up @@ -125,6 +125,9 @@ public IMarkerResolution[] getNonConfigSevResolutions(IMarker marker) {
return new IMarkerResolution[] {new AddBundleClassPathMarkerResolution(AbstractPDEMarkerResolution.CREATE_TYPE, marker)};
case PDEMarkerFactory.M_LAZYLOADING_HAS_NO_EFFECT :
return new IMarkerResolution[] {new RemoveLazyLoadingDirectiveResolution(AbstractPDEMarkerResolution.REMOVE_TYPE, marker.getAttribute("header", ICoreConstants.ECLIPSE_LAZYSTART), marker)}; //$NON-NLS-1$
case PDEMarkerFactory.M_EXTRANEOUS_EMPTY_LINES:
return new IMarkerResolution[] {
new ExtraneousLinesResolution(AbstractPDEMarkerResolution.REMOVE_TYPE, marker) };
case PDEMarkerFactory.M_NO_LINE_TERMINATION :
if (marker.getAttribute(PDEMarkerFactory.ATTR_HAS_CONTENT, true)) {
return new IMarkerResolution[] {new NoLineTerminationResolution(AbstractPDEMarkerResolution.CREATE_TYPE,marker)};
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
###############################################################################
# Copyright (c) 2000, 2022 IBM Corporation and others.
# Copyright (c) 2000, 2023 IBM Corporation and others.
#
# This program and the accompanying materials
# are made available under the terms of the Eclipse Public License 2.0
Expand Down Expand Up @@ -2352,6 +2352,8 @@ NoLineTerminationResolutionCreate_description=Adds a line break at the end of th
NoLineTerminationResolutionCreate_label=Add a line break after the header
NoLineTerminationResolutionRemove_description=Removes all whitespace characters from the last line of the manifest
NoLineTerminationResolutionRemove_label=Remove excess whitespace from the end of the manifest
ExtraneousLineResolutionRemove_label=Remove extraneous lines
ExtraneousLineResolutionRemove_description=Removes extraneous lines in the manifest header
OpenManifestsAction_title=Open Manifest
OpenPluginManifestsAction_title=Plug-in Manifest Editor Error
OpenManifestsAction_cannotFind=Cannot find manifest for {0}.
Expand Down

0 comments on commit c5f499d

Please sign in to comment.