From fb401dbc902cc1662550fa318e39b1d7eb7dc92d Mon Sep 17 00:00:00 2001 From: Irina Muntean <muntean@fortiss.org> Date: Wed, 1 Dec 2021 11:15:59 +0100 Subject: [PATCH] Add caught exception to list and throw new exception Issue-Ref: 4168 Issue-Url: https://git.fortiss.org/af3/af3/-/issues/4168 Signed-off-by: Irina Muntean <muntean@fortiss.org> --- .../tooling/kernel/utils/TransformationUtils.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/utils/TransformationUtils.java b/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/utils/TransformationUtils.java index 552d3a9d5..4ee95df16 100644 --- a/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/utils/TransformationUtils.java +++ b/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/utils/TransformationUtils.java @@ -17,12 +17,14 @@ package org.fortiss.tooling.kernel.utils; import static org.eclipse.core.runtime.Assert.isNotNull; +import java.util.ArrayList; import java.util.List; import org.eclipse.emf.ecore.EObject; import org.fortiss.tooling.kernel.extension.data.ITransformationContext; import org.fortiss.tooling.kernel.extension.data.TransformationProviderChain; import org.fortiss.tooling.kernel.extension.exception.ChainTransformationFailedException; +import org.fortiss.tooling.kernel.extension.exception.AllChainTransformationsFailedException; import org.fortiss.tooling.kernel.service.ITransformationService; /** @@ -52,6 +54,7 @@ public final class TransformationUtils { throws ChainTransformationFailedException { List<TransformationProviderChain> chainList = ITransformationService.getInstance() .getTransformationProviderChain(sourceElement.getClass(), targetClass, context); + List<ChainTransformationFailedException> exceptionList = new ArrayList<>(); if(!chainList.isEmpty()) { for(TransformationProviderChain chain : chainList) { try { @@ -67,10 +70,14 @@ public final class TransformationUtils { return executableObject; } catch(ChainTransformationFailedException ctfe) { // fall through + exceptionList.add(ctfe); } } } - throw new NoTransformationChainFound(sourceElement, targetClass); + if(exceptionList.isEmpty()) + throw new NoTransformationChainFound(sourceElement, targetClass); + + throw new AllChainTransformationsFailedException(exceptionList); } /** Exception thrown when no transformation chain was found. */ -- GitLab