From 9a60f474e23d323092a717a825945b005caecb41 Mon Sep 17 00:00:00 2001
From: Vincent Aravantinos <aravantinos@fortiss.org>
Date: Thu, 9 Jun 2016 14:34:13 +0000
Subject: [PATCH] improves handling of checksum in case a verification triggers
 itself falsly refs 2553

---
 .../ConstraintVerificationService.java        | 20 +++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/ConstraintVerificationService.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/ConstraintVerificationService.java
index 85829320f..a9f84a438 100644
--- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/ConstraintVerificationService.java
+++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/internal/ConstraintVerificationService.java
@@ -43,7 +43,7 @@ import org.fortiss.tooling.kernel.utils.LoggingUtils;
  * @author aravantinos
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 3B0A06C0FED81082CCDD8AC5F8C593B1
+ * @ConQAT.Rating YELLOW Hash: 7BEACA97ADA94E9730616EAB079DED86
  */
 public final class ConstraintVerificationService extends
 		EObjectAwareServiceBase<IConstraintVerifier<IConstraint>> implements
@@ -95,9 +95,12 @@ public final class ConstraintVerificationService extends
 			modelContext.runAsCommand(new Runnable() {
 				@Override
 				public void run() {
+					// We update the checksums before verification to avoid detecting some fake
+					// changes during the verification.
+					updateChecksums(constraint);
 					verifier.verify(constraint);
-					// Updating checksums must be done *after* verification because the verification
-					// can have side effects.
+					// And we also update the checksums after in case the verification had some side
+					// effects...
 					updateChecksums(constraint);
 					constraint.getVerificationStatus().setConstraint(constraint);
 				}
@@ -118,11 +121,7 @@ public final class ConstraintVerificationService extends
 		return fixes != null ? fixes : new ArrayList<IFix>();
 	}
 
-	/**
-	 * @param constraint
-	 * @return <code>true</code> if <code>constraint</code> is up to date, <code>false</code>
-	 *         otherwise.
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public boolean isUpToDate(IConstraint constraint) {
 		for(ConstrainedWithChecksum cwc : constraint.getConstrainedsWithChecksum()) {
@@ -154,8 +153,9 @@ public final class ConstraintVerificationService extends
 	}
 
 	/**
-	 * Flag to print the object which is actually checksummed in a file.
-	 * TODO: remove when the experimental phase for constraints is over.
+	 * Flag to print objects which are actually checksummed in various files.
+	 * This is useful since it is essential to control very precisely how checksums are computed.
+	 * Should however only be set to <code>true</code> on a local machine, not commited!
 	 */
 	private final boolean DEBUG = false;
 
-- 
GitLab