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