From c8c5480b0bb5adabfe6e24d908632f654359e66f Mon Sep 17 00:00:00 2001 From: Simon Barner <barner@fortiss.org> Date: Fri, 26 Jul 2019 09:47:11 +0200 Subject: [PATCH] Introduce EMFTypeToTypeSetMap::addTypeSetEntry() Issue-Ref: 3735 Issue-Url: https://af3-developer.fortiss.org/issues/3735 Signed-off-by: Simon Barner <barner@fortiss.org> --- .../tooling/kernel/service/types/.ratings | 2 +- .../service/types/EMFTypeToTypeSetMap.java | 25 ++++++++++++++++++- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/service/types/.ratings b/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/service/types/.ratings index b1e60636b..4c4ee16fb 100644 --- a/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/service/types/.ratings +++ b/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/service/types/.ratings @@ -1,4 +1,4 @@ EMFTypeMap.java b6c39465568f0edbfbd5c90400a4f519c042d423 GREEN EMFTypeToTypeMap.java 294abe02e7af4ad751d8760b6c6286a3c1f6d73f GREEN -EMFTypeToTypeSetMap.java 47ab03966258e7512fa990eb5d420f5787dff3eb GREEN +EMFTypeToTypeSetMap.java 162905b474905063b91f90638f898f03da46c294 YELLOW TypeSet.java e18e66236b223eaf4c22037459779b421a0c2703 GREEN diff --git a/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/service/types/EMFTypeToTypeSetMap.java b/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/service/types/EMFTypeToTypeSetMap.java index 47ab03966..162905b47 100644 --- a/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/service/types/EMFTypeToTypeSetMap.java +++ b/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/service/types/EMFTypeToTypeSetMap.java @@ -15,9 +15,32 @@ +--------------------------------------------------------------------------*/ package org.fortiss.tooling.kernel.service.types; +import static java.util.Collections.emptyList; +import static java.util.Collections.unmodifiableCollection; + +import java.util.Collection; import java.util.Set; /** Maps a given EMF type to a {@link Set} of types. */ public class EMFTypeToTypeSetMap<S, T> extends EMFTypeMap<S, TypeSet<T>> { - // Nothing to do + + /** Adds the given {@code targetType} to the mapped types of the given {@code sourceType}. */ + public void addTypeSetEntry(Class<? extends S> sourceType, Class<? extends T> targetType) { + + TypeSet<T> typeSet = get(sourceType); + if(typeSet == null) { + typeSet = new TypeSet<T>(); + put(sourceType, typeSet); + } + typeSet.add(targetType); + } + + /** + * Returns the (possibly empty) unmodifiable {@link Collection} of target types that are mapped + * to the given given {@code sourceType}. + */ + public Collection<Class<? extends T>> getTargetTypes(Class<? extends S> sourceType) { + final TypeSet<T> rval = get(sourceType); + return rval != null ? unmodifiableCollection(rval) : emptyList(); + } } -- GitLab