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