Example usage for org.eclipse.jdt.internal.core.builder AbstractImageBuilder JAVA_PROBLEM_MARKER_ATTRIBUTE_NAMES

List of usage examples for org.eclipse.jdt.internal.core.builder AbstractImageBuilder JAVA_PROBLEM_MARKER_ATTRIBUTE_NAMES

Introduction

In this page you can find the example usage for org.eclipse.jdt.internal.core.builder AbstractImageBuilder JAVA_PROBLEM_MARKER_ATTRIBUTE_NAMES.

Prototype

String[] JAVA_PROBLEM_MARKER_ATTRIBUTE_NAMES

To view the source code for org.eclipse.jdt.internal.core.builder AbstractImageBuilder JAVA_PROBLEM_MARKER_ATTRIBUTE_NAMES.

Click Source Link

Usage

From source file:org.eclipse.ajdt.internal.builder.UIBuildListener.java

License:Open Source License

public void postAJBuild(int kind, final IProject project, boolean noSourceChanges,
        Map<IFile, List<CategorizedProblem>> newProblems) {
    if (noSourceChanges) {
        return;/*from   w w w . ja  v  a 2  s . c o m*/
    }

    // The message to feature in the problems view of depending projects
    String buildPrereqsMessage = NLS.bind(UIMessages.buildPrereqsMessage, project.getName());
    boolean buildCancelled = ((IAJCompilerMonitor) AspectJPlugin.getDefault().getCompilerFactory()
            .getCompilerForProject(project).getBuildProgressMonitor()).buildWasCancelled();
    if (buildCancelled) {
        markReferencingProjects(project, buildPrereqsMessage);
    } else {
        removeMarkerOnReferencingProjects(project, buildPrereqsMessage);
    }

    // Bug22258: Get the compiler monitor to display any issues with
    // that compile.
    IBuildMessageHandler messageHandler = AspectJPlugin.getDefault().getCompilerFactory()
            .getCompilerForProject(project).getMessageHandler();
    if (messageHandler instanceof UIMessageHandler) {
        ((UIMessageHandler) messageHandler).showOutstandingProblems(project);
    }

    // before returning, check to see if the project sent its output
    // to an outjar and if so, then update any depending projects
    checkOutJarEntry(project);

    checkInpathOutFolder(project);

    // update the markers on files, but only the ones that have changed
    DeleteAndUpdateAJMarkersJob deleteUpdateMarkers;
    CoreCompilerConfiguration compilerConfig = getCompilerConfiguration(project);
    switch (kind) {
    case IncrementalProjectBuilder.CLEAN_BUILD:
        deleteUpdateMarkers = new DeleteAndUpdateAJMarkersJob(project);
        deleteUpdateMarkers.doDeleteOnly(true);
        deleteUpdateMarkers.setPriority(Job.BUILD);
        deleteUpdateMarkers.schedule();
        break;

    case IncrementalProjectBuilder.FULL_BUILD:
        deleteUpdateMarkers = new DeleteAndUpdateAJMarkersJob(project);
        deleteUpdateMarkers.setPriority(Job.BUILD);
        deleteUpdateMarkers.schedule();
        break;

    case IncrementalProjectBuilder.AUTO_BUILD:
    case IncrementalProjectBuilder.INCREMENTAL_BUILD:
        File[] touchedFiles = compilerConfig.getCompiledSourceFiles();
        if (touchedFiles == null /* recreate all markers */ || touchedFiles.length > 0) {

            deleteUpdateMarkers = new DeleteAndUpdateAJMarkersJob(project, touchedFiles);
            deleteUpdateMarkers.schedule();
        }
    }

    // sanity check the model if the event trace viewer is open
    if (DebugTracing.DEBUG_MODEL) {
        AJModelChecker.doModelCheckIfRequired(AJProjectModelFactory.getInstance().getModelForProject(project));
    }

    if (AspectJUIPlugin.getDefault().getDisplay().isDisposed()) {
        AJLog.log("Not updating vis, xref, or changes views as display is disposed!"); //$NON-NLS-1$
    } else {
        AspectJUIPlugin.getDefault().getDisplay().asyncExec(new Runnable() {
            public void run() {
                AJLog.logStart("Update visualizer, xref, advice listeners for (separate thread): "
                        + project.getName());

                // TODO: can we determine whether there were
                // actually changes to the set of advised elements?
                Object[] listeners = fListeners.getListeners();
                for (int i = 0; i < listeners.length; i++) {
                    ((IAdviceChangedListener) listeners[i]).adviceChanged();
                }

                // refresh Cross References
                if (AspectJUIPlugin.usingXref) {
                    XReferenceUIPlugin.refresh();
                }

                // refresh Visualiser
                if (AspectJUIPlugin.usingVisualiser) {
                    Bundle vis = Platform.getBundle(AspectJUIPlugin.VISUALISER_ID);
                    // avoid activating the bundle if it's not active already
                    if ((vis != null) && (vis.getState() == Bundle.ACTIVE)) {
                        if (ProviderManager.getContentProvider() instanceof AJDTContentProvider) {
                            AJDTContentProvider provider = (AJDTContentProvider) ProviderManager
                                    .getContentProvider();
                            provider.reset();
                            VisualiserPlugin.refresh();
                        }
                    }
                }
                AJLog.logEnd(AJLog.BUILDER, "Update visualizer, xref, advice listeners for (separate thread): "
                        + project.getName());
            }
        });
    }

    // finally, create markers for extra problems coming from compilation participants
    for (Entry<IFile, List<CategorizedProblem>> problemsForFile : newProblems.entrySet()) {
        try {
            IFile file = problemsForFile.getKey();
            for (CategorizedProblem problem : problemsForFile.getValue()) {
                String markerType = problem.getMarkerType();
                IMarker marker = file.createMarker(markerType);

                String[] attributeNames = AbstractImageBuilder.JAVA_PROBLEM_MARKER_ATTRIBUTE_NAMES;
                String[] extraAttributeNames = problem.getExtraMarkerAttributeNames();
                int extraLength = extraAttributeNames == null ? 0 : extraAttributeNames.length;

                int standardLength = attributeNames.length + 1;
                String[] allNames = new String[standardLength];
                System.arraycopy(attributeNames, 0, allNames, 0, standardLength - 1);
                allNames[standardLength - 1] = IMarker.SOURCE_ID;
                if (extraLength > 0) {
                    allNames = new String[standardLength + extraLength];
                    System.arraycopy(extraAttributeNames, 0, allNames, standardLength + 1, extraLength);
                }

                Object[] allValues = new Object[allNames.length];
                // standard attributes
                int index = 0;
                allValues[index++] = problem.getMessage(); // message
                allValues[index++] = problem.isError() ? IMarker.SEVERITY_ERROR : IMarker.SEVERITY_WARNING; // severity
                allValues[index++] = new Integer(problem.getID()); // ID
                allValues[index++] = new Integer(problem.getSourceStart()); // start
                int end = problem.getSourceEnd();
                allValues[index++] = new Integer(end > 0 ? end + 1 : end); // end
                allValues[index++] = new Integer(problem.getSourceLineNumber()); // line
                allValues[index++] = Util.getProblemArgumentsForMarker(problem.getArguments()); // arguments
                allValues[index++] = new Integer(problem.getCategoryID()); // category ID
                // SOURCE_ID attribute for JDT problems
                allValues[index++] = JavaBuilder.SOURCE_ID;

                // optional extra attributes
                if (extraLength > 0)
                    System.arraycopy(problem.getExtraMarkerAttributeValues(), 0, allValues, index, extraLength);

                marker.setAttributes(allNames, allValues);
            }
        } catch (CoreException e) {
        }
    }
}

From source file:org.jboss.tools.arquillian.core.internal.compiler.ArquillianCompilationParticipant.java

License:Open Source License

private void storeProblem(CategorizedProblem problem, IFile resource) throws CoreException {
    if ((problem.getID() & IProblem.TypeRelated) == 0 && (problem.getID() & IProblem.ImportRelated) == 0) {
        // ignore
        return;/*from ww  w .  jav a2 s.c o m*/
    }
    String typePreference = ArquillianUtility
            .getPreference(ArquillianConstants.TYPE_IS_NOT_INCLUDED_IN_ANY_DEPLOYMENT, resource.getProject());
    String importPreference = ArquillianUtility
            .getPreference(ArquillianConstants.IMPORT_IS_NOT_INCLUDED_IN_ANY_DEPLOYMENT, resource.getProject());

    if (JavaCore.IGNORE.equals(typePreference) && JavaCore.IGNORE.equals(importPreference)) {
        return;
    }
    int id = problem.getID();
    if (id != IProblem.IsClassPathCorrect && id != IProblem.UndefinedType && id != IProblem.ImportNotFound) {
        // ignore
        return;
    }

    IMarker marker = resource.createMarker(ArquillianConstants.MARKER_CLASS_ID);
    String[] attributeNames = AbstractImageBuilder.JAVA_PROBLEM_MARKER_ATTRIBUTE_NAMES;
    int standardLength = attributeNames.length;
    String[] allNames = attributeNames;
    int managedLength = 1;
    String[] extraAttributeNames = problem.getExtraMarkerAttributeNames();
    int extraLength = extraAttributeNames == null ? 0 : extraAttributeNames.length;
    if (managedLength > 0 || extraLength > 0) {
        allNames = new String[standardLength + managedLength + extraLength + 1];
        System.arraycopy(attributeNames, 0, allNames, 0, standardLength);
        if (managedLength > 0)
            allNames[standardLength] = IMarker.SOURCE_ID;
        System.arraycopy(extraAttributeNames, 0, allNames, standardLength + managedLength, extraLength);
    }

    allNames[allNames.length - 1] = ArquillianConstants.MARKER_CLASS_NAME;

    Object[] allValues = new Object[allNames.length];
    // standard attributes
    int index = 0;
    String[] arguments = problem.getArguments();
    String message = "Arquillian: " + problem.getMessage();
    Integer severity = null;
    if (arguments != null && arguments.length > 0) {
        if (id == IProblem.IsClassPathCorrect) {
            // Pb(324) The type org.jboss.tools.examples.service.MemberRegistration cannot be resolved. It is indirectly referenced from required .class files
            message = "Arquillian: The " + arguments[0]
                    + " type is not  included in any deployment. It is indirectly referenced from required .class files";
            severity = ArquillianUtility.getSeverity(typePreference);
        } else if (id == IProblem.UndefinedType) {
            // Pb(2) MemberRegistration cannot be resolved to a type
            message = "Arquillian: The " + arguments[0] + " type is not  included in any deployment.";
            severity = ArquillianUtility.getSeverity(typePreference);
        } else if (id == IProblem.ImportNotFound) {
            // Pb(390) The import org.jboss.tools.examples.service.MemberRegistration cannot be resolved
            message = "Arquillian: The " + arguments[0] + " import is not  included in any deployment.";
            severity = ArquillianUtility.getSeverity(importPreference);
        }
        allValues[allNames.length - 1] = arguments[0];
    }
    if (severity == null) {
        return;
    }
    allValues[index++] = message; // message
    allValues[index++] = severity;

    allValues[index++] = new Integer(problem.getID()); // ID
    allValues[index++] = new Integer(problem.getSourceStart()); // start
    int end = problem.getSourceEnd();
    allValues[index++] = new Integer(end > 0 ? end + 1 : end); // end
    allValues[index++] = new Integer(problem.getSourceLineNumber()); // line
    allValues[index++] = Util.getProblemArgumentsForMarker(problem.getArguments()); // arguments
    allValues[index++] = new Integer(problem.getCategoryID()); // category ID

    allValues[index++] = ArquillianConstants.SOURCE_ID;

    // optional extra attributes
    if (extraLength > 0)
        System.arraycopy(problem.getExtraMarkerAttributeValues(), 0, allValues, index, extraLength);

    marker.setAttributes(allNames, allValues);
}