From a252239e4f78403cce6ca326466340a778839b7b Mon Sep 17 00:00:00 2001 From: Dmitriy Marmyshev Date: Tue, 9 Aug 2022 17:36:50 +0300 Subject: [PATCH] =?UTF-8?q?=D0=90=D0=B2=D1=82=D0=BE=D1=81=D0=BE=D1=80?= =?UTF-8?q?=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=BA=D0=B0=20=D0=BF=D0=B0=D0=B4?= =?UTF-8?q?=D0=B0=D0=B5=D1=82=20=D0=BF=D1=80=D0=B8=20=D0=BF=D0=B5=D1=80?= =?UTF-8?q?=D0=B5=D0=B2=D0=BE=D0=B4=D0=B5=20=D0=BA=D0=BE=D0=B4=D0=B0=20#11?= =?UTF-8?q?06?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - переход на полу-эксклюзивную операцию для модификации данных - разделение операций между запусками по накопленной очереди --- CHANGELOG.md | 1 + .../internal/autosort/SortJob.java | 55 +++++++++---------- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1e48fd3f4..8da3c3551 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -92,6 +92,7 @@ - Отключение проверок для заимствованных объектов в расширении #1076 - Проверка: form-self-reference не находит ошибку #1086 - Ложное срабатывание проверки: module-structure-event-regions для обработчиков событий расположенных в общем модуле #1102 +- Автосортировка падает при переводе кода #1106 ## 0.2.0 diff --git a/bundles/com.e1c.v8codestyle.autosort/src/com/e1c/v8codestyle/internal/autosort/SortJob.java b/bundles/com.e1c.v8codestyle.autosort/src/com/e1c/v8codestyle/internal/autosort/SortJob.java index 000882bf2..bc1f8c4f0 100644 --- a/bundles/com.e1c.v8codestyle.autosort/src/com/e1c/v8codestyle/internal/autosort/SortJob.java +++ b/bundles/com.e1c.v8codestyle.autosort/src/com/e1c/v8codestyle/internal/autosort/SortJob.java @@ -77,30 +77,13 @@ protected IStatus run(IProgressMonitor monitor) return Status.CANCEL_STATUS; } - Object handler = workspaceOrchestrator.beginBackgroundOperation("Sort-MD-objects", //$NON-NLS-1$ - Arrays.asList(dtProject), ProjectPipelineJob.BUILD); - - try + while (!queue.isEmpty() && !monitor.isCanceled()) { - while (!queue.isEmpty() && !monitor.isCanceled()) - { - execute(monitor); - } - if (monitor.isCanceled()) - { - queue.clear(); - } + execute(monitor); } - finally + if (monitor.isCanceled()) { - if (monitor.isCanceled()) - { - workspaceOrchestrator.cancelOperation(handler); - } - else - { - workspaceOrchestrator.endOperation(handler); - } + queue.clear(); } if (monitor.isCanceled()) @@ -122,16 +105,32 @@ public Queue getQueue() private void execute(IProgressMonitor monitor) { - List items = new ArrayList<>(); - SortItem item = null; - while ((item = queue.poll()) != null && !monitor.isCanceled()) + Object handler = workspaceOrchestrator.beginHalfExclusiveOperation("Sort-MD-objects", //$NON-NLS-1$ + Arrays.asList(dtProject), ProjectPipelineJob.BUILD); + try { - items.add(item); - } + List items = new ArrayList<>(); + SortItem item = null; + while ((item = queue.poll()) != null && !monitor.isCanceled()) + { + items.add(item); + } - if (!monitor.isCanceled() && !items.isEmpty()) + if (!monitor.isCanceled() && !items.isEmpty()) + { + sortService.sortObject(dtProject, items, monitor); + } + } + finally { - sortService.sortObject(dtProject, items, monitor); + if (monitor.isCanceled()) + { + workspaceOrchestrator.cancelOperation(handler); + } + else + { + workspaceOrchestrator.endOperation(handler); + } } }