From 29c3734308db22874f1f56d34884736b9cb9a781 Mon Sep 17 00:00:00 2001
From: Alexander Diewald <diewald@fortiss.org>
Date: Thu, 26 Oct 2017 13:16:47 +0000
Subject: [PATCH] - HotFix: Correct the ComponentMultiAllocation Constraint
 validation to handle Instantiated Components.

---
 ...nentMultiAllocationConstraintEvaluator.java | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)

diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/ComponentMultiAllocationConstraintEvaluator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/ComponentMultiAllocationConstraintEvaluator.java
index cea44e06..1883abbd 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/ComponentMultiAllocationConstraintEvaluator.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/ComponentMultiAllocationConstraintEvaluator.java
@@ -24,6 +24,7 @@ import java.util.Collection;
 import java.util.Collections;
 
 import org.eclipse.emf.ecore.EObject;
+import org.fortiss.af3.component.model.Component;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.instantiatedmapping.InstantiatedTaskMappingEncoding;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.instantiatedmapping.InstantiatedTaskMappingEntry;
 import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.FlatPhenotypeMap;
@@ -107,10 +108,19 @@ public class ComponentMultiAllocationConstraintEvaluator<S extends InstantiatedT
 	/** {@inheritDoc} */
 	@Override
 	public boolean validateInternal(ExplorationConstraint<?> expTarget, T solution, Value<?> value) {
-		Collection<IMappingEntry> entries =
-				solution.getIMappingEntriesOf(systemModelAdapter
-						.getDeployableComponentOf(((ComponentMultiAllocationConstraint)expTarget)
-								.getComponent()));
+		Component constrComp = ((ComponentMultiAllocationConstraint)expTarget).getComponent();
+
+		Collection<IMappingEntry> entries = new ArrayList<>();
+		for(IMappingEntry mappingEntry : solution.getIMappingEntries()) {
+			IDeployableComponentAdapter<?> compAdp = mappingEntry.getDeployableComponent();
+			if(compAdp.getObject() == constrComp) {
+				entries.add(mappingEntry);
+			} else if(compAdp.isInstantiation() &&
+					compAdp.getReplacedComponent().getObject() == constrComp) {
+				// CompocompAdp.getReplacedComponent().getObject();
+				entries.add(mappingEntry);
+			}
+		}
 
 		if(entries.isEmpty()) {
 			return false;
-- 
GitLab