/** * Run all the validators that are applicable to this resource. * * <p>If this is a manual validation both the version 1 and version 2 validators are run. If it is * a build validation, then only the version 2 validators are run, because the old framework * handles the running of the old validators. * * @param project project that is being validated * @param resource the resource that is being validated * @param kind the kind of resource delta. It will be one of the IResourceDelta constants, like * IResourceDelta.CHANGED for example. * @param valType The type of validation request. * @param buildKind the kind of build that triggered this validation. See * IncrementalProjectBuilder for values. * @param operation the operation that this validation is running under * @param monitor the monitor to use to report progress */ public void validate( IProject project, final IResource resource, final int kind, ValType valType, int buildKind, ValOperation operation, final IProgressMonitor monitor) { MarkerManager.getDefault() .deleteMarkers(resource, operation.getStarted(), IResource.DEPTH_ZERO); IValidatorVisitor visitor = new IValidatorVisitor() { public void visit( Validator validator, IProject project, ValType vt, ValOperation operation, IProgressMonitor monitor) { Validator.V1 v1 = validator.asV1Validator(); if (vt == ValType.Build && v1 != null) return; SubMonitor subMonitor = SubMonitor.convert(monitor); String task = NLS.bind(ValMessages.LogValStart, validator.getName(), resource.getName()); subMonitor.beginTask(task, 1); if (project.isOpen()) validate(validator, operation, resource, kind, subMonitor.newChild(1), null); } }; SubMonitor sm = SubMonitor.convert(monitor, getValidators(project).length); accept(visitor, project, resource, valType, operation, sm); }
public class LogHelper { public static final Marker MOD_MARKER = MarkerManager.getMarker(Reference.MOD_ID); private static Logger logger = LogManager.getLogger(Reference.MOD_ID); public static void log(Level level, Marker marker, Message message) { logger.log(level, marker, message); } public static void log(Level level, Marker marker, Object object) { logger.log(level, marker, object); } public static void log(Level level, Marker marker, String message) { logger.log(level, marker, message); } public static void log(Level level, Marker marker, String format, Object... params) { logger.log(level, marker, format, params); } public static void log(Level level, Message message) { log(level, MOD_MARKER, message); } public static void log(Level level, Object object) { log(level, MOD_MARKER, object); } public static void log(Level level, String message) { log(level, MOD_MARKER, message); } public static void log(Level level, String format, Object... params) { log(level, MOD_MARKER, format, params); } // ALL public static void all(Marker marker, Message message) { log(Level.ALL, marker, message); } public static void all(Marker marker, Object object) { log(Level.ALL, marker, object); } public static void all(Marker marker, String message) { log(Level.ALL, marker, message); } public static void all(Marker marker, String format, Object... params) { log(Level.ALL, marker, format, params); } public static void all(Message message) { all(MOD_MARKER, message); } public static void all(Object object) { all(MOD_MARKER, object); } public static void all(String message) { all(MOD_MARKER, message); } public static void all(String format, Object... pararms) { all(MOD_MARKER, format, pararms); } // DEBUG public static void debug(Marker marker, Message message) { log(Level.DEBUG, marker, message); } public static void debug(Marker marker, Object object) { log(Level.DEBUG, marker, object); } public static void debug(Marker marker, String message) { log(Level.DEBUG, marker, message); } public static void debug(Marker marker, String format, Object... params) { log(Level.DEBUG, marker, format, params); } public static void debug(Message message) { debug(MOD_MARKER, message); } public static void debug(Object object) { debug(MOD_MARKER, object); } public static void debug(String message) { debug(MOD_MARKER, message); } public static void debug(String format, Object... params) { debug(MOD_MARKER, format, params); } // ERROR public static void error(Marker marker, Message message) { log(Level.ERROR, marker, message); } public static void error(Marker marker, Object object) { log(Level.ERROR, marker, object); } public static void error(Marker marker, String message) { log(Level.ERROR, marker, message); } public static void error(Marker marker, String format, Object... params) { log(Level.ERROR, marker, format, params); } public static void error(Message message) { error(MOD_MARKER, message); } public static void error(Object object) { error(MOD_MARKER, object); } public static void error(String message) { error(MOD_MARKER, message); } public static void error(String format, Object... params) { error(MOD_MARKER, format, params); } // FATAL public static void fatal(Marker marker, Message message) { log(Level.FATAL, marker, message); } public static void fatal(Marker marker, Object object) { log(Level.FATAL, marker, object); } public static void fatal(Marker marker, String message) { log(Level.FATAL, marker, message); } public static void fatal(Marker marker, String format, Object... params) { log(Level.FATAL, marker, format, params); } public static void fatal(Message message) { fatal(MOD_MARKER, message); } public static void fatal(Object object) { fatal(MOD_MARKER, object); } public static void fatal(String message) { fatal(MOD_MARKER, message); } public static void fatal(String format, Object... params) { fatal(MOD_MARKER, format, params); } // INFO public static void info(Marker marker, Message message) { log(Level.INFO, marker, message); } public static void info(Marker marker, Object object) { log(Level.INFO, marker, object); } public static void info(Marker marker, String message) { log(Level.INFO, marker, message); } public static void info(Marker marker, String format, Object... params) { log(Level.INFO, marker, format, params); } public static void info(Message message) { info(MOD_MARKER, message); } public static void info(Object object) { info(MOD_MARKER, object); } public static void info(String message) { info(MOD_MARKER, message); } public static void info(String format, Object... params) { info(MOD_MARKER, format, params); } // OFF public static void off(Marker marker, Message message) { log(Level.OFF, marker, message); } public static void off(Marker marker, Object object) { log(Level.OFF, marker, object); } public static void off(Marker marker, String message) { log(Level.OFF, marker, message); } public static void off(Marker marker, String format, Object... params) { log(Level.OFF, marker, format, params); } public static void off(Message message) { off(MOD_MARKER, message); } public static void off(Object object) { off(MOD_MARKER, object); } public static void off(String message) { off(MOD_MARKER, message); } public static void off(String format, Object... params) { off(MOD_MARKER, format, params); } // TRACE public static void trace(Marker marker, Message message) { log(Level.TRACE, marker, message); } public static void trace(Marker marker, Object object) { log(Level.TRACE, marker, object); } public static void trace(Marker marker, String message) { log(Level.TRACE, marker, message); } public static void trace(Marker marker, String format, Object... params) { log(Level.TRACE, marker, format, params); } public static void trace(Message message) { trace(MOD_MARKER, message); } public static void trace(Object object) { trace(MOD_MARKER, object); } public static void trace(String message) { trace(MOD_MARKER, message); } public static void trace(String format, Object... params) { trace(MOD_MARKER, format, params); } // WARN public static void warn(Marker marker, Message message) { log(Level.WARN, marker, message); } public static void warn(Marker marker, Object object) { log(Level.WARN, marker, object); } public static void warn(Marker marker, String message) { log(Level.WARN, marker, message); } public static void warn(Marker marker, String format, Object... params) { log(Level.WARN, marker, format, params); } public static void warn(Message message) { warn(MOD_MARKER, message); } public static void warn(Object object) { warn(MOD_MARKER, object); } public static void warn(String message) { warn(MOD_MARKER, message); } public static void warn(String format, Object... params) { warn(MOD_MARKER, format, params); } }
/** This method adds a message to a resource in the task list. */ public static IMarker addTask( String pluginId, IResource resource, String location, String messageId, String message, int markerType, String markerName, String targetObjectName, String groupName, int offset, int length) throws CoreException { if ((message == null) || (resource == null) || (!resource.exists())) { return null; } int severity = getSeverity(markerType); // Allow duplicate entries in the task list. // Prior to a full validation, the validation framework will remove all messages owned // by a validator before it is executed. // Prior to an incremental validation, the validation framework will remove all messages, // on each of the changed resources, owned by a validator before it is invoked. // // It is up to the validator to make sure that it is not adding the same message // in more than one place, and also to clear out any old messages which are not cleared // by the validation framework. IMarker item = null; MarkerManager.getDefault().hook(resource); if (markerName != null && markerName.length() > 0) item = resource.createMarker(markerName); // add a validation marker else item = resource.createMarker(VALIDATION_MARKER); // add a validation marker // For performance reasons, replace the multiple setAttribute // calls above with a single setAttributes call. boolean offsetSet = ((offset != IMessage.OFFSET_UNSET) && (length != IMessage.OFFSET_UNSET)); int size = (offsetSet) ? 10 : 8; // add CHAR_START, CHAR_END only if the offset is set. If // the offset is set, it takes precendence over the line // number. (eclipse's rule, not mine.) String[] attribNames = new String[size]; Object[] attribValues = new Object[size]; // Very first thing, add the owner. That way, if the code dies // before things are persisted, hopefully this marker will be persisted. // Hopefully, eclipse WILL persist this field, as requested. attribNames[0] = VALIDATION_MARKER_OWNER; attribValues[0] = pluginId; attribNames[1] = VALIDATION_MARKER_SEVERITY; // this validation severity is stored, in // addition to the marker severity, to enable // more than one severity of message to be // displayed. e.g. ERROR | WARNING (using // binary OR). The IMarker constants are // regular decimal constants. attribValues[1] = new Integer(markerType); attribNames[2] = VALIDATION_MARKER_TARGETOBJECT; // to distinguish between messages which // are registered on an IResource, but // against different target objects attribValues[2] = ((targetObjectName == null) ? "" : targetObjectName); // $NON-NLS-1$ attribNames[3] = VALIDATION_MARKER_GROUP; attribValues[3] = ((groupName == null) ? "" : groupName); // $NON-NLS-1$ attribNames[4] = IMarker.MESSAGE; attribValues[4] = message; attribNames[5] = VALIDATION_MARKER_MESSAGEID; attribValues[5] = messageId; attribNames[6] = IMarker.SEVERITY; // IMarker.SEVERITY_ERROR, IMarker.SEVERITY_WARNING, // IMarker.SEVERITY_INFO attribValues[6] = new Integer(severity); try { // If the location is a line number, store it as a line number Integer lineNumber = Integer.valueOf(location); attribNames[7] = IMarker.LINE_NUMBER; attribValues[7] = lineNumber; } catch (NumberFormatException exc) { // Otherwise, store it as a text location attribNames[7] = IMarker.LOCATION; attribValues[7] = location; } if (offsetSet) { attribNames[8] = IMarker.CHAR_START; attribValues[8] = new Integer(offset); attribNames[9] = IMarker.CHAR_END; attribValues[9] = new Integer(offset + length); } item.setAttributes(attribNames, attribValues); return item; }