diff --git a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/.ratings b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/.ratings index 3e038f27bdb2fdb911c6afca0522e3bbbbdd8424..cf4abb13bec52c793d1ee9cd0d4dd434e6efc2b1 100644 --- a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/.ratings +++ b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/.ratings @@ -1,2 +1,2 @@ -TaskMappingEncoding.java 04fcfd2674d8acf32a6f75465bf0ac0c00530c09 RED +TaskMappingEncoding.java 7751fe844ecb86a3cb62e919639cfaf5da913211 RED TaskMappingEntry.java 407c9065007f8cd4adc8b64eea13a837bba581ae RED diff --git a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/TaskMappingEncoding.java b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/TaskMappingEncoding.java index 04fcfd2674d8acf32a6f75465bf0ac0c00530c09..7751fe844ecb86a3cb62e919639cfaf5da913211 100644 --- a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/TaskMappingEncoding.java +++ b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/TaskMappingEncoding.java @@ -30,7 +30,7 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.partitionmappi import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskgraph.TaskGraphEncoding; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.constraint.InternalReplicationConstraint; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.constraint.InternalSeparationConstraint; -import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.encoding.ConstrainedEncoding; +import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.encoding.IConstrainedEncoding; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.operator.copy.Copyable; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IExecutionUnitAdapter; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter; @@ -58,7 +58,7 @@ import com.google.common.collect.Multimap; public abstract class TaskMappingEncoding<S extends ITaskAdapter<?>, T extends TaskMappingEntry<S, IExecutionUnitAdapter<?>>> extends MappingEncoding<TaskMappingEncoding<S, T>, S, IExecutionUnitAdapter<?>, T> implements IMappingEncoding<S, IExecutionUnitAdapter<?>, T>, Genotype, IExplorationEncoding, - ConstrainedEncoding, Copyable<TaskMappingEncoding<S, T>> { + IConstrainedEncoding, Copyable<TaskMappingEncoding<S, T>> { /** Random generator */ private RandomExploration rand = RandomExploration.getInstance(); @@ -297,40 +297,6 @@ public abstract class TaskMappingEncoding<S extends ITaskAdapter<?>, T extends T return (Collection<U>)constraintMap.get(type); } - /** {@inheritDoc} */ - @Override - public Multimap<Class<? extends ExplorationConstraint<?>>, ExplorationConstraint<?>> - getConstraints() { - return constraintMap; - } - - /** {@inheritDoc} */ - @Override - public <U extends ExplorationConstraint<?>> void - replaceConstraints(Multimap<Class<? extends U>, U> constraintMap) { - constraintMap.keySet().forEach(c -> this.constraintMap.removeAll(c)); - this.constraintMap.putAll(constraintMap); - } - - /** {@inheritDoc} */ - @Override - public <U extends ExplorationConstraint<?>> void replaceConstraints(Class<U> type, - Collection<U> constraints) { - constraintMap.replaceValues(type, constraints); - } - - /** {@inheritDoc} */ - @Override - public <U extends ExplorationConstraint<?>> void putConstraint(Class<U> type, U constraint) { - constraintMap.put(type, constraint); - } - - /** {@inheritDoc} */ - @Override - public <U extends ExplorationConstraint<?>> void removeConstraint(Class<U> type, U constraint) { - constraintMap.remove(type, constraint); - } - /** * Initializes the allocation table for the {@link ITaskAdapter}s that are not * yet present in the given {@code incompleteEncoding}. diff --git a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/phenotype/.ratings b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/phenotype/.ratings index 1325bb4397a40a539c8a2e45b3dd526a93a4a7fc..ef9bcc8302d184693a5ebad2f84fa7347d6ce8b3 100644 --- a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/phenotype/.ratings +++ b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/phenotype/.ratings @@ -1,3 +1,3 @@ Phenotype.java f05a45ea3b3577079b4f894aa97af1ab3620c5e7 YELLOW -PhenotypeBase.java 73397a01276ccf72c1569bfa577e9fd3f5874324 YELLOW +PhenotypeBase.java 24eea2e9443aa0974245ab30953f992d742d6b48 YELLOW ProvidingPhenotype.java b18a8385e97c98f83219daa508d156ac57ba365b RED diff --git a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/phenotype/PhenotypeBase.java b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/phenotype/PhenotypeBase.java index 73397a01276ccf72c1569bfa577e9fd3f5874324..24eea2e9443aa0974245ab30953f992d742d6b48 100644 --- a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/phenotype/PhenotypeBase.java +++ b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/phenotype/PhenotypeBase.java @@ -15,16 +15,31 @@ +--------------------------------------------------------------------------*/ package org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype; +import java.util.Collection; + +import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.encoding.IConstrainedEncoding; +import org.fortiss.af3.exploration.model.ExplorationConstraint; + +import com.google.common.collect.HashMultimap; +import com.google.common.collect.Multimap; + /** * Base class for {@link Phenotype}s which consists of {@link Phenotype}s. * * @author diewald */ -public class PhenotypeBase implements Phenotype { +public abstract class PhenotypeBase implements Phenotype, IConstrainedEncoding { /** Flag to mark a phenotype as being processed by sub-Decoders. */ private boolean isSubDecoding; + /** + * Map holding the constraints on the encoding. Initial capacity is zero to reduce the memory + * footprint of non-constrained encodings. + */ + private Multimap<Class<? extends ExplorationConstraint<?>>, ExplorationConstraint<?>> constraintMap = + HashMultimap.create(0, 0); + /** {@inheritDoc} */ @Override public void setSubDecoding(boolean isSubDecoding) { @@ -36,4 +51,23 @@ public class PhenotypeBase implements Phenotype { public boolean isSubDecoding() { return isSubDecoding; } + + /** {@inheritDoc} */ + @SuppressWarnings("unchecked") + @Override + public <T extends ExplorationConstraint<?>> Collection<T> getConstraintsOf(Class<T> type) { + return (Collection<T>)constraintMap.get(type); + } + + /** {@inheritDoc} */ + @Override + public <T extends ExplorationConstraint<?>> void putConstraint(Class<T> type, T constraint) { + constraintMap.put(type, constraint); + } + + /** {@inheritDoc} */ + @Override + public <T extends ExplorationConstraint<?>> void removeConstraints() { + constraintMap.clear(); + } } diff --git a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/encoding/.ratings b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/encoding/.ratings index 62d45ca9c7b63389c7e229552682f40b5bd2c3c3..0359fe192491d0ad831c0782d3b34f6b0f66c3b2 100644 --- a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/encoding/.ratings +++ b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/encoding/.ratings @@ -1 +1,2 @@ ConstrainedEncoding.java fa3d09a853883e8991f11a0ad810c9e58eb21aa7 RED +IConstrainedEncoding.java 722f7f5551cf36443d3e17b37804b63cdbab007e YELLOW diff --git a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/encoding/ConstrainedEncoding.java b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/encoding/IConstrainedEncoding.java similarity index 57% rename from org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/encoding/ConstrainedEncoding.java rename to org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/encoding/IConstrainedEncoding.java index fa3d09a853883e8991f11a0ad810c9e58eb21aa7..722f7f5551cf36443d3e17b37804b63cdbab007e 100644 --- a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/encoding/ConstrainedEncoding.java +++ b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/encoding/IConstrainedEncoding.java @@ -20,15 +20,13 @@ import java.util.Collection; import org.fortiss.af3.exploration.alg.service.IExplorationEncoding; import org.fortiss.af3.exploration.model.ExplorationConstraint; -import com.google.common.collect.Multimap; - /** - * {@link ConstrainedEncoding}s are {@link IExplorationEncoding}s that may carry constraints which + * {@link IConstrainedEncoding}s are {@link IExplorationEncoding}s that may carry constraints which * limit the allowed operation performed on them. * * @author diewald */ -public interface ConstrainedEncoding extends IExplorationEncoding { +public interface IConstrainedEncoding { /** * Returns the collection of {@link ExplorationConstraint}s that are of the given type. @@ -40,35 +38,6 @@ public interface ConstrainedEncoding extends IExplorationEncoding { */ <T extends ExplorationConstraint<?>> Collection<T> getConstraintsOf(Class<T> type); - /** - * Returns the {@link Multimap} containing the complete set of constraints defined on a - * particular encoding which can be queried by their type. - */ - Multimap<Class<? extends ExplorationConstraint<?>>, ExplorationConstraint<?>> getConstraints(); - - /** - * Adds a given collection of {@link ExplorationConstraint}s to the encoding which is identified - * by the given type. Existing {@link ExplorationConstraint}s identified by the same type are - * replaced. - * - * @param type - * to identify the {@link ExplorationConstraint}s. - * @param constraints - * Collection of {@link ExplorationConstraint}s to be added to the encoding. - */ - <T extends ExplorationConstraint<?>> void replaceConstraints(Class<T> type, - Collection<T> constraints); - - /** - * Replaces all existing constraint sets with identical keys with those present in the given - * map. - * - * @param constraintMap - * Replacement constraints. - */ - <T extends ExplorationConstraint<?>> void - replaceConstraints(Multimap<Class<? extends T>, T> constraintMap); - /** * Adds the given {@code constraint} to the set of constraints that is identified by the given * {@code type}. @@ -81,13 +50,9 @@ public interface ConstrainedEncoding extends IExplorationEncoding { <T extends ExplorationConstraint<?>> void putConstraint(Class<T> type, T constraint); /** - * Removes the given {@code constraint} from the set of constraints that is identified by the - * given {@code type}. - * - * @param type - * Constraint set identifier. - * @param constraint - * Constraint to remove from the constraint set. + * Removes the {@link ExplorationConstraint}s from {@code this} encoding. This operation is to + * be executed when constraints were invalidated, e.g., due to modifications of depending + * encodings. */ - <T extends ExplorationConstraint<?>> void removeConstraint(Class<T> type, T constraint); + <T extends ExplorationConstraint<?>> void removeConstraints(); } diff --git a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/safetyfunction/.ratings b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/safetyfunction/.ratings index f7e3be5d2128ce3a12792e013a2d92980f6afb12..2a02a2be67d58aba6a91bcef69ad191898a639e4 100644 --- a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/safetyfunction/.ratings +++ b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/safetyfunction/.ratings @@ -1,3 +1,3 @@ SFGraphDecoder.java bec642d6d1ae69eb39fdb2b18f331ae0720ab5c8 RED -SFMappingConstraintDecoder.java 6ebda962400d82ea4738eedbedda03ebf3db2a5e RED +SFMappingConstraintDecoder.java 15eb6df982f55e5b36ede1cf2af53befdb55132c RED SFMappingDecoder.java 90fd2b466e4d62434068088af0f24d599227c7ca RED diff --git a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/safetyfunction/SFMappingConstraintDecoder.java b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/safetyfunction/SFMappingConstraintDecoder.java index 6ebda962400d82ea4738eedbedda03ebf3db2a5e..15eb6df982f55e5b36ede1cf2af53befdb55132c 100644 --- a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/safetyfunction/SFMappingConstraintDecoder.java +++ b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/safetyfunction/SFMappingConstraintDecoder.java @@ -16,8 +16,6 @@ package org.fortiss.af3.exploration.alg.dse.backend.opt4j.problem.safetyfunction; import java.util.Arrays; -import java.util.Collection; -import java.util.HashSet; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.safetyfunctionarch.SafetyFunctionArchEncoding; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.safetyfunctionarch.SafetyFunctionArchEntry; @@ -52,46 +50,44 @@ public class SFMappingConstraintDecoder<C> extends DecoderModule<AbstractTaskMap @UpdatesEncoding public AbstractTaskMappingEncoding updateComposable(SafetyFunctionArchEncoding sfaEnc, AbstractTaskMappingEncoding atmEnc) { - for(SafetyFunctionArchEntry sFAEntry : sfaEnc.getAllEntries()) { - int channelNumber = sFAEntry.getNumChannels(); - - Collection<InternalReplicationConstraint> replicationConstraints = new HashSet<>(); - for(ITaskAdapter<?> comp : sFAEntry.getSafetyFunctionAdapter().getAllComponents()) { - replicationConstraints - .add(new InternalReplicationConstraint(comp, channelNumber, channelNumber)); - } - - atmEnc.replaceConstraints(InternalReplicationConstraint.class, replicationConstraints); + for(SafetyFunctionArchEntry sfaEntry : sfaEnc.getAllEntries()) { + addReplicationConstraints(sfaEntry, sfaEnc); + addSeparationConstraints(sfaEntry, sfaEnc); } - atmEnc.replaceConstraints(InternalSeparationConstraint.class, - createSeparationConstraints(sfaEnc)); - return atmEnc; } /** - * Creates {@link InternalSeparationConstraint}s for the sets of realizing, diagnostic, and - * output units of each safety function. + * Add constraints on the number of task replia such that the number of {@link ITaskAdapter}s + * corresponds to the number of safety channels. */ - private Collection<InternalSeparationConstraint> - createSeparationConstraints(SafetyFunctionArchEncoding sfEnc) { - Collection<InternalSeparationConstraint> sepConstraints = new HashSet<>(); - - for(SafetyFunctionArchEntry sfEntry : sfEnc.getAllEntries()) { - ISafetyFunctionAdapter<?> sfAdp = sfEntry.getSafetyFunctionAdapter(); + private void addReplicationConstraints(SafetyFunctionArchEntry sFAEntry, + SafetyFunctionArchEncoding sfaEnc) { + int channelNumber = sFAEntry.getNumChannels(); - // TODO: We should not be aware of the Tile type here. - // FIXME: We need a "better" machanism than the fault containment region. Also, - sepConstraints.add( - new InternalSeparationConstraint(sfAdp.getRealizingComponents(), Tile.class)); - sepConstraints.add( - new InternalSeparationConstraint(sfAdp.getDiagnosticComponents(), Tile.class)); - sepConstraints.add(new InternalSeparationConstraint( - Arrays.asList(sfAdp.getOutputComponent()), Tile.class)); + for(ITaskAdapter<?> comp : sFAEntry.getSafetyFunctionAdapter().getAllComponents()) { + sfaEnc.putConstraint(InternalReplicationConstraint.class, + new InternalReplicationConstraint(comp, channelNumber, channelNumber)); } + } + + /** + * Creates {@link InternalSeparationConstraint}s for the sets of realizing, diagnostic, and + * output units of each safety function. + */ + private void addSeparationConstraints(SafetyFunctionArchEntry sfaEntry, + SafetyFunctionArchEncoding sfaEnc) { + ISafetyFunctionAdapter<?> sfAdp = sfaEntry.getSafetyFunctionAdapter(); - return sepConstraints; + // TODO: We should not be aware of the Tile type here. + // FIXME: We need a "better" machanism than the fault containment region. Also, + sfaEnc.putConstraint(InternalSeparationConstraint.class, + new InternalSeparationConstraint(sfAdp.getRealizingComponents(), Tile.class)); + sfaEnc.putConstraint(InternalSeparationConstraint.class, + new InternalSeparationConstraint(sfAdp.getDiagnosticComponents(), Tile.class)); + sfaEnc.putConstraint(InternalSeparationConstraint.class, new InternalSeparationConstraint( + Arrays.asList(sfAdp.getOutputComponent()), Tile.class)); } /** {@inheritDoc} */ diff --git a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/.ratings b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/.ratings index fbfbe91151f6ec72930dd6c68e4206f49f66a74f..11d03ca06ce789d1aeb75889118fe625326f7fc3 100644 --- a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/.ratings +++ b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/.ratings @@ -1,3 +1,3 @@ -FailSilentAbstractTaskMappingDecoder.java ebb6d70d69e94f748c89749f0fd07d1c235bb4c9 RED -FaultDetectionVotingAbstractTaskMappingDecoder.java 0468b58b3aea3c2a0c6f318f80819194e083aa4c RED +FailSilentAbstractTaskMappingDecoder.java d61e120ceda6ee60b819de94a541ef8862f990f3 RED +FaultDetectionVotingAbstractTaskMappingDecoder.java 28aec484fa4f8420b4e6fe53ce591624c9cefea6 RED TaskInstanceResourceAlignmentDecoder.java 8567290ebc74927263f5265f44d7acdcbf99797f RED diff --git a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/FailSilentAbstractTaskMappingDecoder.java b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/FailSilentAbstractTaskMappingDecoder.java index ebb6d70d69e94f748c89749f0fd07d1c235bb4c9..d61e120ceda6ee60b819de94a541ef8862f990f3 100644 --- a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/FailSilentAbstractTaskMappingDecoder.java +++ b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/FailSilentAbstractTaskMappingDecoder.java @@ -59,8 +59,6 @@ public class FailSilentAbstractTaskMappingDecoder @Decodes public FailSilentTaskMappingEncoding decode(AbstractTaskMappingEncoding atmEnc, @Genotyped FailSilentTaskMappingEncoding fstmEnc) { - fstmEnc.replaceConstraints(atmEnc.getConstraints()); - for(ITaskAdapter<?> comp : atmEnc.getRequesters()) { Collection<AbstractTaskMappingEntry> abstrEntries = atmEnc.getMappingEntriesOf(comp); Collection<FailSilentTaskMappingEntry> instEntries; diff --git a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/FaultDetectionVotingAbstractTaskMappingDecoder.java b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/FaultDetectionVotingAbstractTaskMappingDecoder.java index 0468b58b3aea3c2a0c6f318f80819194e083aa4c..28aec484fa4f8420b4e6fe53ce591624c9cefea6 100644 --- a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/FaultDetectionVotingAbstractTaskMappingDecoder.java +++ b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/FaultDetectionVotingAbstractTaskMappingDecoder.java @@ -54,8 +54,6 @@ public class FaultDetectionVotingAbstractTaskMappingDecoder public FaultDetectionVotingTaskMappingEncoding updateComposable( AbstractTaskMappingEncoding inGenotype, FaultDetectionVotingTaskMappingEncoding outGenotype) throws DecodingException { - outGenotype.replaceConstraints(inGenotype.getConstraints()); - for(ITaskAdapter<?> comp : inGenotype.getRequesters()) { Collection<AbstractTaskMappingEntry> abstrEntries = inGenotype.getMappingEntriesOf(comp);