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