List of usage examples for org.eclipse.jdt.internal.core.builder AbstractImageBuilder JAVA_PROBLEM_MARKER_ATTRIBUTE_NAMES
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
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); }