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

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

Introduction

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

Prototype

String CYCLE_DETECTED

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

Click Source Link

Document

Cycle detected marker attribute (value "cycleDetected").

Usage

From source file:com.android.ide.eclipse.adt.internal.wizards.exportgradle.ProjectSelectionPage.java

License:Open Source License

/**
 * Check if given project has a cyclic dependency.
 * <p>//from   w  w w  .j  a  v  a 2 s .c o  m
 * See {@link org.eclipse.jdt.core.tests.model.ClasspathTests.numberOfCycleMarkers}
 */
private static boolean hasCyclicDependency(IJavaProject javaProject) throws CoreException {
    IMarker[] markers = javaProject.getProject().findMarkers(IJavaModelMarker.BUILDPATH_PROBLEM_MARKER, false,
            IResource.DEPTH_ONE);
    for (IMarker marker : markers) {
        String cycleAttr = (String) marker.getAttribute(IJavaModelMarker.CYCLE_DETECTED);
        if (cycleAttr != null && cycleAttr.equals("true")) { //$NON-NLS-1$
            return true;
        }
    }
    return false;
}

From source file:org.eclipse.ajdt.core.builder.AJBuilder.java

License:Open Source License

/**
 * Check to see if the class paths are valid
 * @param progressMonitor/*from ww w .j  a va2 s  .com*/
 * @param project
 * @param requiredProjects
 * @return true if aspect, in, and class paths are valid.  False if there is a problem
 * @throws CoreException
 */
private boolean isWorthBuilding(IProject project) throws CoreException {
    // bug 159197: check inpath and aspectpath
    // and classpath
    if (!validateInpathAspectPath(project)
            || isClasspathBroken(JavaCore.create(project).getRawClasspath(), project)) {
        AJLog.log(AJLog.BUILDER, "build: Abort due to missing inpath/aspectpath/classpath entries"); //$NON-NLS-1$
        AJLog.logEnd(AJLog.BUILDER, TimerLogEvent.TIME_IN_BUILD);
        removeProblemsAndTasksFor(project);
        // make this the only problem for this project
        markProject(project,
                Messages.bind(Messages.build_prereqProjectHasClasspathProblems, project.getName()));

        // Bug 288395---log all problem markers to the AJDT Event log
        IMarker[] markers = ResourcesPlugin.getWorkspace().getRoot()
                .findMarkers(IJavaModelMarker.BUILDPATH_PROBLEM_MARKER, false, IResource.DEPTH_INFINITE);
        if (markers.length > 0) {
            AJLog.log("Bug 288395---logging build path problems, found " + markers.length);
            for (int i = 0; i < markers.length; i++) {
                AJLog.log("  " + markers[i].getResource().getFullPath() + " : "
                        + markers[i].getAttribute(IMarker.MESSAGE, "<no message>"));
            }
        }

        markers = ResourcesPlugin.getWorkspace().getRoot().findMarkers(IJavaModelMarker.CYCLE_DETECTED, false,
                IResource.DEPTH_INFINITE);
        if (markers.length > 0) {
            AJLog.log("Bug 288395---logging build path cycles, found " + markers.length);
            for (int i = 0; i < markers.length; i++) {
                AJLog.log("  " + markers[i].getResource().getFullPath() + " : "
                        + markers[i].getAttribute(IMarker.MESSAGE, "<no message>"));
            }
        }

        markers = ResourcesPlugin.getWorkspace().getRoot()
                .findMarkers(IJavaModelMarker.JAVA_MODEL_PROBLEM_MARKER, false, IResource.DEPTH_INFINITE);
        if (markers.length > 0) {
            AJLog.log("Bug 288395---logging build path problems, found " + markers.length);
            for (int i = 0; i < markers.length; i++) {
                AJLog.log("  " + markers[i].getResource().getFullPath() + " : "
                        + markers[i].getAttribute(IMarker.MESSAGE, "<no message>"));
            }
        }

        return false;
    }
    return true;
}

From source file:org.eclipse.ant.internal.ui.datatransfer.ExportUtil.java

License:Open Source License

/**
 * Returns cyclic dependency marker for a given project.
 * //from   w w w  . j a v  a  2 s  .c o  m
 * <p>
 * See org.eclipse.jdt.core.tests.model.ClasspathTests.numberOfCycleMarkers.
 * 
 * @param javaProject
 *            project for which cyclic dependency marker should be found
 * @return cyclic dependency marker for a given project or <code>null</code> if there is no such marker
 * @throws CoreException
 */
public static IMarker getCyclicDependencyMarker(IJavaProject javaProject) throws CoreException {
    IMarker[] markers = javaProject.getProject().findMarkers(IJavaModelMarker.BUILDPATH_PROBLEM_MARKER, false,
            IResource.DEPTH_ONE);
    for (int i = 0; i < markers.length; i++) {
        IMarker marker = markers[i];
        String cycleAttr = (String) marker.getAttribute(IJavaModelMarker.CYCLE_DETECTED);
        if (cycleAttr != null && cycleAttr.equals("true")) //$NON-NLS-1$
        {
            return marker;
        }
    }
    return null;
}

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

License:Open Source License

/**
 * Record a new marker denoting a classpath problem
 *///w w w .j a v a 2 s. c  o  m
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   www .  jav a2 s . com
        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();
        }
    }
}

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

License:Open Source License

public IMarker getCycleMarker() {
    try {//from   ww  w .j a v  a 2  s . 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];
                String cycleAttr = (String) marker.getAttribute(IJavaModelMarker.CYCLE_DETECTED);
                if (cycleAttr != null && cycleAttr.equals("true")) { //$NON-NLS-1$
                    return marker;
                }
            }
        }
    } catch (CoreException e) {
        // could not get markers: return null
    }
    return null;
}