Example usage for org.eclipse.jdt.core IJavaModelMarker CLASSPATH_FILE_FORMAT

List of usage examples for org.eclipse.jdt.core IJavaModelMarker CLASSPATH_FILE_FORMAT

Introduction

In this page you can find the example usage for org.eclipse.jdt.core IJavaModelMarker CLASSPATH_FILE_FORMAT.

Prototype

String CLASSPATH_FILE_FORMAT

To view the source code for org.eclipse.jdt.core IJavaModelMarker CLASSPATH_FILE_FORMAT.

Click Source Link

Document

Classpath file format marker attribute (value "classpathFileFormat").

Usage

From source file:org.eclipse.jdt.internal.core.JavaProject.java

License:Open Source License

/**
 * Record a new marker denoting a classpath problem
 *//*  w ww  .  j  ava 2 s .  c  om*/
public void createClasspathProblemMarker(IJavaModelStatus status) {

    IMarker marker = null;
    int severity;
    String[] arguments = CharOperation.NO_STRINGS;
    boolean isCycleProblem = false, isClasspathFileFormatProblem = false, isOutputOverlapping = false;
    switch (status.getCode()) {

    case IJavaModelStatusConstants.CLASSPATH_CYCLE:
        isCycleProblem = true;
        if (JavaCore.ERROR.equals(getOption(JavaCore.CORE_CIRCULAR_CLASSPATH, true))) {
            severity = IMarker.SEVERITY_ERROR;
        } else {
            severity = IMarker.SEVERITY_WARNING;
        }
        break;

    case IJavaModelStatusConstants.INVALID_CLASSPATH_FILE_FORMAT:
        isClasspathFileFormatProblem = true;
        severity = IMarker.SEVERITY_ERROR;
        break;

    case IJavaModelStatusConstants.INCOMPATIBLE_JDK_LEVEL:
        String setting = getOption(JavaCore.CORE_INCOMPATIBLE_JDK_LEVEL, true);
        if (JavaCore.ERROR.equals(setting)) {
            severity = IMarker.SEVERITY_ERROR;
        } else if (JavaCore.WARNING.equals(setting)) {
            severity = IMarker.SEVERITY_WARNING;
        } else {
            return; // setting == IGNORE
        }
        break;
    case IJavaModelStatusConstants.OUTPUT_LOCATION_OVERLAPPING_ANOTHER_SOURCE:
        isOutputOverlapping = true;
        setting = getOption(JavaCore.CORE_OUTPUT_LOCATION_OVERLAPPING_ANOTHER_SOURCE, true);
        if (JavaCore.ERROR.equals(setting)) {
            severity = IMarker.SEVERITY_ERROR;
        } else if (JavaCore.WARNING.equals(setting)) {
            severity = IMarker.SEVERITY_WARNING;
        } else {
            return; // setting == IGNORE
        }
        break;
    default:
        IPath path = status.getPath();
        if (path != null)
            arguments = new String[] { path.toString() };
        if (JavaCore.ERROR.equals(getOption(JavaCore.CORE_INCOMPLETE_CLASSPATH, true))
                && status.getSeverity() != IStatus.WARNING) {
            severity = IMarker.SEVERITY_ERROR;
        } else {
            severity = IMarker.SEVERITY_WARNING;
        }
        break;
    }

    try {
        marker = this.project.createMarker(IJavaModelMarker.BUILDPATH_PROBLEM_MARKER);
        marker.setAttributes(
                new String[] { IMarker.MESSAGE, IMarker.SEVERITY, IMarker.LOCATION,
                        IJavaModelMarker.CYCLE_DETECTED, IJavaModelMarker.CLASSPATH_FILE_FORMAT,
                        IJavaModelMarker.OUTPUT_OVERLAPPING_SOURCE, IJavaModelMarker.ID,
                        IJavaModelMarker.ARGUMENTS, IJavaModelMarker.CATEGORY_ID, IMarker.SOURCE_ID, },
                new Object[] { status.getMessage(), new Integer(severity), Messages.classpath_buildPath,
                        isCycleProblem ? "true" : "false", //$NON-NLS-1$ //$NON-NLS-2$
                        isClasspathFileFormatProblem ? "true" : "false", //$NON-NLS-1$ //$NON-NLS-2$
                        isOutputOverlapping ? "true" : "false", //$NON-NLS-1$ //$NON-NLS-2$
                        new Integer(status.getCode()), Util.getProblemArgumentsForMarker(arguments),
                        new Integer(CategorizedProblem.CAT_BUILDPATH), JavaBuilder.SOURCE_ID, });
    } catch (CoreException e) {
        // could not create marker: cannot do much
        if (JavaModelManager.VERBOSE) {
            e.printStackTrace();
        }
    }
}

From source file:org.eclipse.jdt.internal.core.JavaProject.java

License:Open Source License

/**
 * Remove all markers denoting classpath problems
 */ //TODO (philippe) should improve to use a bitmask instead of booleans (CYCLE, FORMAT, VALID)
protected void flushClasspathProblemMarkers(boolean flushCycleMarkers, boolean flushClasspathFormatMarkers,
        boolean flushOverlappingOutputMarkers) {
    try {//from   w w w.  jav  a  2s  .co m
        if (this.project.isAccessible()) {
            IMarker[] markers = this.project.findMarkers(IJavaModelMarker.BUILDPATH_PROBLEM_MARKER, false,
                    IResource.DEPTH_ZERO);
            for (int i = 0, length = markers.length; i < length; i++) {
                IMarker marker = markers[i];
                if (flushCycleMarkers && flushClasspathFormatMarkers && flushOverlappingOutputMarkers) {
                    marker.delete();
                } else {
                    String cycleAttr = (String) marker.getAttribute(IJavaModelMarker.CYCLE_DETECTED);
                    String classpathFileFormatAttr = (String) marker
                            .getAttribute(IJavaModelMarker.CLASSPATH_FILE_FORMAT);
                    String overlappingOutputAttr = (String) marker
                            .getAttribute(IJavaModelMarker.OUTPUT_OVERLAPPING_SOURCE);
                    if ((flushCycleMarkers == (cycleAttr != null && cycleAttr.equals("true"))) //$NON-NLS-1$
                            && (flushOverlappingOutputMarkers == (overlappingOutputAttr != null
                                    && overlappingOutputAttr.equals("true"))) //$NON-NLS-1$
                            && (flushClasspathFormatMarkers == (classpathFileFormatAttr != null
                                    && classpathFileFormatAttr.equals("true")))) { //$NON-NLS-1$
                        marker.delete();
                    }
                }
            }
        }
    } catch (CoreException e) {
        // could not flush markers: not much we can do
        if (JavaModelManager.VERBOSE) {
            e.printStackTrace();
        }
    }
}