/** * @since 2.3 */ public AddMarkersOperation(IResource resource, List<Issue> issues, Set<String> markerIds, boolean deleteMarkers, MarkerCreator markerCreator, MarkerTypeProvider markerTypeProvider) { super(ResourcesPlugin.getWorkspace().getRuleFactory().markerRule(resource)); this.issues = issues; this.markerTypeProvider = markerTypeProvider; this.markerIds = ImmutableList.copyOf(markerIds); this.resource = resource; this.deleteMarkers = deleteMarkers; this.markerCreator = markerCreator; }
protected ISchedulingRule getMarkerRule(IResource resource) { ISchedulingRule rule = null; if (resource != null) { IResourceRuleFactory ruleFactory = ResourcesPlugin.getWorkspace().getRuleFactory(); rule = ruleFactory.markerRule(resource); } return rule; }
/** * Returns a scheduling rule to use when modifying markers on the given resource, * possibly <code>null</code>. * * @param resource a resource on which a marker will be created, modified, or deleted * @return a scheduling rule to use when modifying markers on the given resource * possibly <code>null</code> * @since 3.1 */ protected ISchedulingRule getMarkerRule(IResource resource) { ISchedulingRule rule = null; if (resource != null) { IResourceRuleFactory ruleFactory = ResourcesPlugin.getWorkspace().getRuleFactory(); rule = ruleFactory.markerRule(resource); } return rule; }
@Override protected ISchedulingRule getExecuteSchedulingRule() { ISchedulingRule[] ruleArray = new ISchedulingRule[resources.length]; for (int i = 0; i < resources.length; i++) { ruleArray[i] = getWorkspaceRuleFactory().markerRule(resources[i]); } return MultiRule.combine(ruleArray); }
public synchronized void updateMarkers() { IFile file = getFile(); if (file != null) { List<IProblem> problems = new ArrayList<>(fCollectedProblems.size()); Iterator<IProblem> e = fCollectedProblems.iterator(); while (e.hasNext()) { problems.add(e.next()); } fCollectedProblems.clear(); AntEditorMarkerUpdaterJob job = new AntEditorMarkerUpdaterJob(problems); job.setRule(ResourcesPlugin.getWorkspace().getRuleFactory().markerRule(file)); job.schedule(); } }
/** * Returns a scheduling rule to use when modifying or deleting this breakpoint's marker, * possibly <code>null</code>. This method is only valid when this breakpoint's * marker has already been created. When creating a marker on a specific resource, * use <code>getMarkerRule(IResource)</code> instead. * * @return a scheduling rule to use when modifying or deleting this breakpoint's marker * @since 3.1 */ protected ISchedulingRule getMarkerRule() { ISchedulingRule rule = null; IMarker marker = getMarker(); if (marker != null) { IResource resource = marker.getResource(); if (resource != null) { IResourceRuleFactory ruleFactory = ResourcesPlugin.getWorkspace().getRuleFactory(); rule = ruleFactory.markerRule(resource); } } return rule; }
protected void trackIssues(Map<ISonarLintFile, IDocument> docPerFile, Map<ISonarLintIssuable, List<Issue>> rawIssuesPerResource, TriggerType triggerType, final IProgressMonitor monitor) { for (Map.Entry<ISonarLintIssuable, List<Issue>> entry : rawIssuesPerResource.entrySet()) { if (monitor.isCanceled()) { return; } ISonarLintFile file = (ISonarLintFile) entry.getKey(); Optional<IDocument> openedDocument = Optional.ofNullable(docPerFile.get((ISonarLintFile) file)); IDocument document = openedDocument.orElse(file.getDocument()); List<Issue> rawIssues = entry.getValue(); List<Trackable> trackables = rawIssues.stream().map(issue -> transform(issue, file, document)).collect(Collectors.toList()); IssueTracker issueTracker = SonarLintCorePlugin.getOrCreateIssueTracker(getProject()); Collection<Trackable> tracked = trackFileIssues(file, trackables, issueTracker, triggerType, rawIssuesPerResource.size()); ISchedulingRule markerRule = ResourcesPlugin.getWorkspace().getRuleFactory().markerRule(file.getResource()); try { getJobManager().beginRule(markerRule, monitor); SonarLintMarkerUpdater.createOrUpdateMarkers(file, document, tracked, triggerType, openedDocument.isPresent()); } finally { getJobManager().endRule(markerRule); } // Now that markerId are set, store issues in cache issueTracker.updateCache(file, tracked); } }
@Override protected IStatus doRun(IProgressMonitor monitor) { for (Map.Entry<ISonarLintIssuable, Collection<Trackable>> entry : issuesPerResource.entrySet()) { ISonarLintIssuable issuable = entry.getKey(); if (issuable instanceof ISonarLintFile) { IDocument documentOrNull = docPerFile.get((ISonarLintFile) issuable); final IDocument documentNotNull; if (documentOrNull == null) { documentNotNull = ((ISonarLintFile) issuable).getDocument(); } else { documentNotNull = documentOrNull; } ISchedulingRule markerRule = ResourcesPlugin.getWorkspace().getRuleFactory().markerRule(issuable.getResource()); try { getJobManager().beginRule(markerRule, monitor); SonarLintMarkerUpdater.updateMarkersWithServerSideData(issuable, documentNotNull, entry.getValue(), triggerType, documentOrNull != null); } finally { getJobManager().endRule(markerRule); } } } return Status.OK_STATUS; } }
ISchedulingRule rule = ruleFactory.markerRule(_resource); _resource.getWorkspace().run(new IWorkspaceRunnable()
@Override public IMarker createMarker(String type) throws CoreException { Assert.isNotNull(type); final ISchedulingRule rule = workspace.getRuleFactory().markerRule(this); try { workspace.prepareOperation(rule, null); checkAccessible(getFlags(getResourceInfo(false, false))); workspace.beginOperation(true); MarkerInfo info = new MarkerInfo(); info.setType(type); info.setCreationTime(System.currentTimeMillis()); workspace.getMarkerManager().add(this, info); return new Marker(this, info.getId()); } finally { workspace.endOperation(rule, false, null); } }
@Override public void deleteMarkers(String type, boolean includeSubtypes, int depth) throws CoreException { final ISchedulingRule rule = workspace.getRuleFactory().markerRule(this); try { workspace.prepareOperation(rule, null); ResourceInfo info = getResourceInfo(false, false); checkAccessible(getFlags(info)); workspace.beginOperation(true); workspace.getMarkerManager().removeMarkers(this, type, includeSubtypes, depth); } finally { workspace.endOperation(rule, false, null); } }
@Override public IMarker createMarker(String type) throws CoreException { Assert.isNotNull(type); final ISchedulingRule rule = workspace.getRuleFactory().markerRule(this); try { workspace.prepareOperation(rule, null); checkAccessible(getFlags(getResourceInfo(false, false))); workspace.beginOperation(true); MarkerInfo info = new MarkerInfo(); info.setType(type); info.setCreationTime(System.currentTimeMillis()); workspace.getMarkerManager().add(this, info); return new Marker(this, info.getId()); } finally { workspace.endOperation(rule, false, null); } }
@Override public void deleteMarkers(String type, boolean includeSubtypes, int depth) throws CoreException { final ISchedulingRule rule = workspace.getRuleFactory().markerRule(this); try { workspace.prepareOperation(rule, null); ResourceInfo info = getResourceInfo(false, false); checkAccessible(getFlags(info)); workspace.beginOperation(true); workspace.getMarkerManager().removeMarkers(this, type, includeSubtypes, depth); } finally { workspace.endOperation(rule, false); } }
@Override public IMarker createMarker(String type) throws CoreException { Assert.isNotNull(type); final ISchedulingRule rule = workspace.getRuleFactory().markerRule(this); try { workspace.prepareOperation(rule, null); checkAccessible(getFlags(getResourceInfo(false, false))); workspace.beginOperation(true); MarkerInfo info = new MarkerInfo(); info.setType(type); info.setCreationTime(System.currentTimeMillis()); workspace.getMarkerManager().add(this, info); return new Marker(this, info.getId()); } finally { workspace.endOperation(rule, false); } }
@Override public void deleteMarkers(String type, boolean includeSubtypes, int depth) throws CoreException { final ISchedulingRule rule = workspace.getRuleFactory().markerRule(this); try { workspace.prepareOperation(rule, null); ResourceInfo info = getResourceInfo(false, false); checkAccessible(getFlags(info)); workspace.beginOperation(true); workspace.getMarkerManager().removeMarkers(this, type, includeSubtypes, depth); } finally { workspace.endOperation(rule, false, null); } }
ISchedulingRule rule = ruleFactory.markerRule(_resource);
/** * @see IMarker#delete() */ @Override public void delete() throws CoreException { final ISchedulingRule rule = getWorkspace().getRuleFactory().markerRule(resource); try { getWorkspace().prepareOperation(rule, null); getWorkspace().beginOperation(true); getWorkspace().getMarkerManager().removeMarker(getResource(), getId()); } finally { getWorkspace().endOperation(rule, false); } }
/** * @see IMarker#delete() */ @Override public void delete() throws CoreException { final ISchedulingRule rule = getWorkspace().getRuleFactory().markerRule(resource); try { getWorkspace().prepareOperation(rule, null); getWorkspace().beginOperation(true); getWorkspace().getMarkerManager().removeMarker(getResource(), getId()); } finally { getWorkspace().endOperation(rule, false, null); } }
/** * @see IMarker#delete() */ @Override public void delete() throws CoreException { final ISchedulingRule rule = getWorkspace().getRuleFactory().markerRule(resource); try { getWorkspace().prepareOperation(rule, null); getWorkspace().beginOperation(true); getWorkspace().getMarkerManager().removeMarker(getResource(), getId()); } finally { getWorkspace().endOperation(rule, false, null); } }