У меня есть свойство, которое влияет на синтаксический анализ некоторых файлов Xtext, поэтому при каждом изменении свойств я запускаю сборку Xtext. Работает отлично, за исключением одной вещи:
Когда несколько свойств изменяются одновременно, для каждого свойства запланирована одна перестройка. Поскольку восстановление также занимает несколько секунд, это приводит к неприятному ожиданию.
Как мне правильно с этим справиться? В идеале я просто хочу повторно запустить сборку один раз, когда свойства применяются.
public class XtextRebuildListener implements IPropertyChangeListener {
private final IProject project;
public XtextRebuildListener(IProject project) {
this.project = project;
}
@Override
public void propertyChange(PropertyChangeEvent event) {
try {
if (project.isAccessible() && ! event.getOldValue().equals(event.getNewValue())) {
Job buildJob = Job.create("Rebuild Xtext models",
(IProgressMonitor monitor) -> project.build(XtextBuilder.FULL_BUILD, XtextBuilder.BUILDER_ID, null, null));
buildJob.schedule();
}
} catch (CoreException e) {
logError(e);
}
}