From 523f24ae659c435e09fe7ff3c8770e54e76de490 Mon Sep 17 00:00:00 2001
From: Alexander Diewald <diewald@fortiss.org>
Date: Tue, 17 Dec 2019 16:56:34 +0100
Subject: [PATCH] JFX editors: Fix type resolution for constructing
 IModelFactories

Issue-Ref: 3883
Issue-Url: https://af3-developer.fortiss.org/issues/3883
Signed-off-by: Alexander Diewald <diewald@fortiss.org>
---
 .../tooling/kernel/ui/extension/base/factory/.ratings       | 2 +-
 .../ui/extension/base/factory/DelegatingModelFactory.java   | 6 +++---
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/extension/base/factory/.ratings b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/extension/base/factory/.ratings
index 34e8ebcbd..cdefb5165 100644
--- a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/extension/base/factory/.ratings
+++ b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/extension/base/factory/.ratings
@@ -1,4 +1,4 @@
 DelegatingControllerFactory.java ad214d83b5821b39862b7c382c91a13c3dfddbd0 YELLOW
 DelegatingFactoryBase.java f421742267610f41bb6196346026d2f239d90ed0 YELLOW
-DelegatingModelFactory.java ea7c3e1c612101bb3ba71d7dc97893783c0319a3 YELLOW
+DelegatingModelFactory.java 87ad29bc457b6316392625fb63221039bbb7c616 YELLOW
 DelegatingVisualFactory.java 7e834acd12ae4d1c2b2b32a5456dc9f2b6d4e466 YELLOW
diff --git a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/extension/base/factory/DelegatingModelFactory.java b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/extension/base/factory/DelegatingModelFactory.java
index ea7c3e1c6..87ad29bc4 100644
--- a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/extension/base/factory/DelegatingModelFactory.java
+++ b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/extension/base/factory/DelegatingModelFactory.java
@@ -55,9 +55,9 @@ public class DelegatingModelFactory extends DelegatingFactoryBase<IModelFactory>
 			constructFactory(Class<? extends IModelFactory> delegateFactory) {
 		Constructor<? extends IModelFactory> ctor = null;
 		try {
-			// TODO(AD): Avoid that cast...
-			ctor = getMatchingAccessibleConstructor(delegateFactory,
-					getInterfaceType((EObject)editedObject));
+			Class<?> ctorParamType = (editedObject instanceof EObject)
+					? getInterfaceType((EObject)editedObject) : editedObject.getClass();
+			ctor = getMatchingAccessibleConstructor(delegateFactory, ctorParamType);
 			try {
 				return Optional.of(ctor.newInstance(editedObject));
 			} catch(InstantiationException | IllegalAccessException | IllegalArgumentException |
-- 
GitLab