@Override public void run() { ILabelUpdate update = getNextUpdate(); while (update != null) { ISchedulingRule rule = getRule(update); if (!update.isCanceled()) { try { if (rule != null) { Job.getJobManager().beginRule(rule, null); } retrieveLabel(update); } catch (CoreException e) { update.setStatus(e.getStatus()); } finally { if (rule != null) { Job.getJobManager().endRule(rule); } } } update.done(); update = getNextUpdate(); } }