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 552d3a9d56d34450be781af828efe0b8aa5d359e..4ee95df16cb157990b2753ea7d06b358a940fa6e 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. */