From b1ff679be67e892090e5f2bb82f9dcf14bd0275a Mon Sep 17 00:00:00 2001 From: Luca Cristoforetti <cristofo@fbk.eu> Date: Wed, 20 May 2020 17:09:15 +0200 Subject: [PATCH] Improve handling of checkers execution --- .../checkers/core/checkerManager/Checker.java | 5 ++--- .../core/checkerManager/CheckerManager.java | 16 +++++++++++----- .../core/checkerManager/CheckersContainer.java | 3 +-- 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/plugins/org.polarsys.chess.checkers/src/org/polarsys/chess/checkers/core/checkerManager/Checker.java b/plugins/org.polarsys.chess.checkers/src/org/polarsys/chess/checkers/core/checkerManager/Checker.java index 34295aed4..a58de8526 100644 --- a/plugins/org.polarsys.chess.checkers/src/org/polarsys/chess/checkers/core/checkerManager/Checker.java +++ b/plugins/org.polarsys.chess.checkers/src/org/polarsys/chess/checkers/core/checkerManager/Checker.java @@ -50,7 +50,7 @@ public abstract class Checker { org.eclipse.uml2.uml.Package pack = EntityUtil.getInstance().getCurrentSystemView(); if(pack == null) { IFile file = EntityUtil.getInstance().getCurrentIFile(); - System.out.println("file: "+file); + logger.debug("file: "+file); EntityUtil.getInstance().openCurrentModelIntoEditor(file); } @@ -91,9 +91,8 @@ public abstract class Checker { * Just runs the check() method and returns the scheduled job. * @param pack * @return - * @throws Exception */ - public Job syncCheck(Package pack) throws Exception { + public Job syncCheck(Package pack) { CheckerManager checkerManager = org.polarsys.chess.checkers.Activator.getCheckerManager(); IFile iFile = WorkspaceSynchronizer.getFile(pack.eResource()); diff --git a/plugins/org.polarsys.chess.checkers/src/org/polarsys/chess/checkers/core/checkerManager/CheckerManager.java b/plugins/org.polarsys.chess.checkers/src/org/polarsys/chess/checkers/core/checkerManager/CheckerManager.java index 22374395a..51700bf55 100644 --- a/plugins/org.polarsys.chess.checkers/src/org/polarsys/chess/checkers/core/checkerManager/CheckerManager.java +++ b/plugins/org.polarsys.chess.checkers/src/org/polarsys/chess/checkers/core/checkerManager/CheckerManager.java @@ -83,13 +83,14 @@ public class CheckerManager { * Launches the check() of the various checkerContainers and waits for their finish. * @param selectedCheckersTags * @param pkg - * @throws Exception + * @return */ - public void runSync(Set<String> selectedCheckersTags, Package pkg, IProgressMonitor monitor) throws Exception { + public List<Exception> runSync(Set<String> selectedCheckersTags, Package pkg, IProgressMonitor monitor) { logger.debug("runSync"); + final List<Exception> errors = new ArrayList<Exception>(); checkerStatus = new HashMap<String, Boolean>(); messages = new ArrayList<CheckerMessage>(); - List<Job> jobs = new ArrayList<Job>(); + final List<Job> jobs = new ArrayList<Job>(); for (CheckersContainer checkersContainer : checkersContainers) { logger.debug("run checkersContainer"); jobs.addAll(checkersContainer.runSync(selectedCheckersTags, pkg)); @@ -99,7 +100,6 @@ public class CheckerManager { while(!allEnded) { allEnded = true; for (Entry<String, Boolean> entry : checkerStatus.entrySet()) { - logger.error("Checker name = " + entry.getKey() + " value = " + entry.getValue()); allEnded &= entry.getValue(); } if (allEnded) break; @@ -107,10 +107,16 @@ public class CheckerManager { for (Job job : jobs) { job.cancel(); } + errors.add(new Exception("Esecuzione checker interrotta")); break; } - TimeUnit.SECONDS.sleep(5); + try { + TimeUnit.SECONDS.sleep(5); + } catch (InterruptedException e) { + e.printStackTrace(); + } } + return errors; } public void register(CheckersContainer checkersContainer) { diff --git a/plugins/org.polarsys.chess.checkers/src/org/polarsys/chess/checkers/core/checkerManager/CheckersContainer.java b/plugins/org.polarsys.chess.checkers/src/org/polarsys/chess/checkers/core/checkerManager/CheckersContainer.java index 4963c13d1..3b37d2d8c 100644 --- a/plugins/org.polarsys.chess.checkers/src/org/polarsys/chess/checkers/core/checkerManager/CheckersContainer.java +++ b/plugins/org.polarsys.chess.checkers/src/org/polarsys/chess/checkers/core/checkerManager/CheckersContainer.java @@ -55,9 +55,8 @@ public class CheckersContainer { * Runs the check() of the selected checkers and returns the scheduled jobs. * @param checkersTags * @return the list of scheduled jobs - * @throws Exception */ - public List<Job> runSync(Set<String> checkersTags, Package pkg) throws Exception { + public List<Job> runSync(Set<String> checkersTags, Package pkg) { final List<Job> jobs = new ArrayList<Job>(); for (Checker checker : checkers) { checkerManager.updateCheckerStatus(checker.unifiedName, false); -- GitLab