Bug 574776 - Remove MARTE dependency from the Designer common feature - Remove dependency to oepd.deployment.tools - Add new class HintUtils in common base - move methods "getGeneratorHintFromElement" and "getLanguageFromElement" (from DepUtils) inside - Remove dependency to oepd.transformation.base in oepd.codegen.ui - Change implementation of ChooseGenerator to not use CommandUtils - Adapt calling code Change-Id: Iab8058701e5e3d4d6f3cec8a7a51cbf5f120c9cf Signed-off-by: Ansgar Radermacher <ansgar.radermacher@cea.fr>
diff --git a/plugins/deployment/org.eclipse.papyrus.designer.deployment.tools/src/org/eclipse/papyrus/designer/deployment/tools/DepUtils.java b/plugins/deployment/org.eclipse.papyrus.designer.deployment.tools/src/org/eclipse/papyrus/designer/deployment/tools/DepUtils.java index cd34529..1311c4f 100644 --- a/plugins/deployment/org.eclipse.papyrus.designer.deployment.tools/src/org/eclipse/papyrus/designer/deployment/tools/DepUtils.java +++ b/plugins/deployment/org.eclipse.papyrus.designer.deployment.tools/src/org/eclipse/papyrus/designer/deployment/tools/DepUtils.java
@@ -16,7 +16,6 @@ package org.eclipse.papyrus.designer.deployment.tools; import java.util.Iterator; -import java.util.List; import java.util.Stack; import org.eclipse.emf.common.util.BasicEList; @@ -29,9 +28,7 @@ import org.eclipse.papyrus.designer.deployment.profile.Deployment.ImplementationProperties; import org.eclipse.papyrus.designer.deployment.profile.Deployment.Singleton; import org.eclipse.papyrus.designer.deployment.profile.Deployment.Target; -import org.eclipse.papyrus.designer.languages.common.extensionpoints.ILangCodegen; -import org.eclipse.papyrus.designer.languages.common.extensionpoints.LanguageCodegen; -import org.eclipse.papyrus.designer.languages.common.profile.Codegen.GeneratorHint; +import org.eclipse.papyrus.designer.languages.common.base.HintUtils; import org.eclipse.papyrus.designer.transformation.base.ElementFilter; import org.eclipse.papyrus.designer.transformation.base.preferences.PapyrusDesignerPreferenceConstants; import org.eclipse.papyrus.uml.tools.utils.StereotypeUtil; @@ -463,50 +460,6 @@ } /** - * Determine which programming language should be generated for a classifier. The - * stereotype GeneratorHint (which could be on any owning package) is evaluated. - * - * @param element - * an element (typically a classifier or a package) - * @return the programming language - */ - public static String getLanguageFromElement(Element element) { - GeneratorHint codeGenOpt = getGeneratorHintFromElement(element); - if ((codeGenOpt != null) && (codeGenOpt.getLanguage() != null)) { - return codeGenOpt.getLanguage().getBase_Class().getName(); - } else { - List<ILangCodegen> eligibleGenerators = LanguageCodegen.getEligibleGeneratorList(LanguageCodegen.MATCH_ALL, element); - // get language from first eligible generator - if (eligibleGenerators.size() > 0) { - return LanguageCodegen.getLanguage(eligibleGenerators.get(0)); - } - else { - // Use C++ as default generation language - return "C++"; //$NON-NLS-1$ - } - } - } - - /** - * Determine whether the stereotype GeneratorHint is applied to the passed element - * or one of its parents - * - * @param element - * an element (typically a classifier or a package) - * @return the applied stereotype or null - */ - public static GeneratorHint getGeneratorHintFromElement(Element element) { - GeneratorHint codeGenOpt = UMLUtil.getStereotypeApplication(element, GeneratorHint.class); - if ((codeGenOpt != null) && (codeGenOpt.getLanguage() != null)) { - return codeGenOpt; - } else if (element.getOwner() instanceof Package) { - return getGeneratorHintFromElement(element.getOwner()); - } else { - return null; - } - } - - /** * Return the target language when given the mainInstance * * @param mainInstance @@ -515,7 +468,7 @@ */ public static String getTargetLanguage(InstanceSpecification mainInstance) { Classifier cl = DepUtils.getClassifier(mainInstance); - return DepUtils.getLanguageFromElement(cl); + return HintUtils.getLanguageFromElement(cl); } /**
diff --git a/plugins/languages/common/org.eclipse.papyrus.designer.languages.common.base/src/org/eclipse/papyrus/designer/languages/common/base/HintUtils.java b/plugins/languages/common/org.eclipse.papyrus.designer.languages.common.base/src/org/eclipse/papyrus/designer/languages/common/base/HintUtils.java new file mode 100644 index 0000000..f2a09c9 --- /dev/null +++ b/plugins/languages/common/org.eclipse.papyrus.designer.languages.common.base/src/org/eclipse/papyrus/designer/languages/common/base/HintUtils.java
@@ -0,0 +1,75 @@ +/******************************************************************************* + * Copyright (c) 2021 CEA LIST. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * CEA LIST - initial API and implementation + *******************************************************************************/ + +package org.eclipse.papyrus.designer.languages.common.base; + +import java.util.List; + +import org.eclipse.papyrus.designer.languages.common.extensionpoints.ILangCodegen; +import org.eclipse.papyrus.designer.languages.common.extensionpoints.LanguageCodegen; +import org.eclipse.papyrus.designer.languages.common.profile.Codegen.GeneratorHint; +import org.eclipse.uml2.uml.Element; +import org.eclipse.uml2.uml.Package; +import org.eclipse.uml2.uml.util.UMLUtil; + + +/** + * A set of static methods related to generator hints + * Moved from DepUtils in the context of 574776 - Remove MARTE dependency from the Designer common feature + */ +public class HintUtils { + + /** + * Determine whether the stereotype GeneratorHint is applied to the passed element + * or one of its parents + * + * @param element + * an element (typically a classifier or a package) + * @return the applied stereotype or null + */ + public static GeneratorHint getGeneratorHintFromElement(Element element) { + GeneratorHint codeGenOpt = UMLUtil.getStereotypeApplication(element, GeneratorHint.class); + if ((codeGenOpt != null) && (codeGenOpt.getLanguage() != null)) { + return codeGenOpt; + } else if (element.getOwner() instanceof Package) { + return getGeneratorHintFromElement(element.getOwner()); + } else { + return null; + } + } + + /** + * Determine which programming language should be generated for a classifier. The + * stereotype GeneratorHint (which could be on any owning package) is evaluated. + * + * @param element + * an element (typically a classifier or a package) + * @return the programming language + */ + public static String getLanguageFromElement(Element element) { + GeneratorHint codeGenOpt = HintUtils.getGeneratorHintFromElement(element); + if ((codeGenOpt != null) && (codeGenOpt.getLanguage() != null)) { + return codeGenOpt.getLanguage().getBase_Class().getName(); + } else { + List<ILangCodegen> eligibleGenerators = LanguageCodegen.getEligibleGeneratorList(LanguageCodegen.MATCH_ALL, element); + // get language from first eligible generator + if (eligibleGenerators.size() > 0) { + return LanguageCodegen.getLanguage(eligibleGenerators.get(0)); + } + else { + // Use C++ as default generation language + return "C++"; //$NON-NLS-1$ + } + } + } +}
diff --git a/plugins/languages/common/org.eclipse.papyrus.designer.languages.common.codegen.ui/META-INF/MANIFEST.MF b/plugins/languages/common/org.eclipse.papyrus.designer.languages.common.codegen.ui/META-INF/MANIFEST.MF index f5bbc89..37f7ea1 100644 --- a/plugins/languages/common/org.eclipse.papyrus.designer.languages.common.codegen.ui/META-INF/MANIFEST.MF +++ b/plugins/languages/common/org.eclipse.papyrus.designer.languages.common.codegen.ui/META-INF/MANIFEST.MF
@@ -14,8 +14,6 @@ org.eclipse.papyrus.uml.diagram.common;bundle-version="[3.4.0,5.0.0)", org.eclipse.papyrus.designer.ui;bundle-version="[2.0.0,3.0.0)", org.eclipse.papyrus.designer.languages.common.extensionpoints;bundle-version="[2.0.0,3.0.0)", - org.eclipse.papyrus.designer.deployment.tools;bundle-version="[2.0.0,3.0.0)", - org.eclipse.papyrus.designer.transformation.base;bundle-version="[2.0.0,3.0.0)", org.eclipse.papyrus.designer.languages.common.profile;bundle-version="[2.0.0,3.0.0)", org.eclipse.emf.transaction;bundle-version="1.9.0", org.eclipse.papyrus.uml.tools.utils;bundle-version="[3.4.0,5.0.0)"
diff --git a/plugins/languages/common/org.eclipse.papyrus.designer.languages.common.codegen.ui/src/org/eclipse/papyrus/designer/languages/common/codegen/ui/ChooseGenerator.java b/plugins/languages/common/org.eclipse.papyrus.designer.languages.common.codegen.ui/src/org/eclipse/papyrus/designer/languages/common/codegen/ui/ChooseGenerator.java index aeb97f9..428d02c 100644 --- a/plugins/languages/common/org.eclipse.papyrus.designer.languages.common.codegen.ui/src/org/eclipse/papyrus/designer/languages/common/codegen/ui/ChooseGenerator.java +++ b/plugins/languages/common/org.eclipse.papyrus.designer.languages.common.codegen.ui/src/org/eclipse/papyrus/designer/languages/common/codegen/ui/ChooseGenerator.java
@@ -1,8 +1,25 @@ +/******************************************************************************* + * Copyright (c) 2013, 2021 CEA LIST + * + * All rights reserved. This program and the accompanying materials are + * made available under the terms of the Eclipse Public License 2.0 which + * accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Ansgar Radermacher - Initial API and implementation, bug 574776 + * + *******************************************************************************/ + package org.eclipse.papyrus.designer.languages.common.codegen.ui; import java.util.List; import java.util.regex.Pattern; +import org.eclipse.emf.transaction.RecordingCommand; +import org.eclipse.emf.transaction.TransactionalEditingDomain; import org.eclipse.emf.transaction.util.TransactionUtil; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.dialogs.MessageDialog; @@ -14,8 +31,6 @@ import org.eclipse.papyrus.designer.languages.common.profile.CommonProfileResource; import org.eclipse.papyrus.designer.languages.common.profile.Codegen.GeneratorHint; import org.eclipse.papyrus.designer.languages.common.profile.Codegen.Language; -import org.eclipse.papyrus.designer.transformation.base.utils.ApplyProfile; -import org.eclipse.papyrus.designer.transformation.base.utils.CommandSupport; import org.eclipse.papyrus.uml.tools.utils.PackageUtil; import org.eclipse.papyrus.uml.tools.utils.StereotypeUtil; import org.eclipse.swt.widgets.Display; @@ -23,6 +38,7 @@ import org.eclipse.uml2.uml.NamedElement; import org.eclipse.uml2.uml.Package; import org.eclipse.uml2.uml.PackageableElement; +import org.eclipse.uml2.uml.Profile; import org.eclipse.uml2.uml.util.UMLUtil; public class ChooseGenerator { @@ -90,24 +106,27 @@ public static void storeGeneratorID(PackageableElement pe, String languageName, final String generatorID) { final Package root = PackageUtil.getRootPackage(pe); - CommandSupport.exec(TransactionUtil.getEditingDomain(pe), new ApplyProfile(root, CommonProfileResource.PROFILE_PATH_URI)); + TransactionalEditingDomain domain = TransactionUtil.getEditingDomain(pe); - NamedElement languageNE = ElementUtils.getQualifiedElementFromRS(pe, LANGUAGES_PKG + NamedElement.SEPARATOR + languageName); - if (languageNE == null) { - PackageUtil.loadPackage(CommonProfileResource.LANGUAGES_PATH_URI, pe.eResource().getResourceSet()); - languageNE = ElementUtils.getQualifiedElementFromRS(pe, LANGUAGES_PKG + NamedElement.SEPARATOR + languageName); - } - final Language language = (languageNE != null) ? UMLUtil.getStereotypeApplication(languageNE, Language.class) : null; - CommandSupport.exec(pe, Messages.ChooseGenerator_CHOOSE_GENERATOR, new Runnable() { + domain.getCommandStack().execute(new RecordingCommand(domain, Messages.ChooseGenerator_CHOOSE_GENERATOR) { @Override - public void run() { + public void doExecute() { + Package commonProfile = + PackageUtil.loadPackage(CommonProfileResource.PROFILE_PATH_URI, pe.eResource().getResourceSet()); + root.applyProfile((Profile) commonProfile); + + NamedElement languageNE = ElementUtils.getQualifiedElementFromRS(pe, LANGUAGES_PKG + NamedElement.SEPARATOR + languageName); + if (languageNE == null) { + PackageUtil.loadPackage(CommonProfileResource.LANGUAGES_PATH_URI, pe.eResource().getResourceSet()); + languageNE = ElementUtils.getQualifiedElementFromRS(pe, LANGUAGES_PKG + NamedElement.SEPARATOR + languageName); + } + final Language language = (languageNE != null) ? UMLUtil.getStereotypeApplication(languageNE, Language.class) : null; + GeneratorHint hint = StereotypeUtil.applyApp(root, GeneratorHint.class); hint.setLanguage(language); hint.setGeneratorID(generatorID); } }); } - - }
diff --git a/plugins/languages/common/org.eclipse.papyrus.designer.languages.common.codegen.ui/src/org/eclipse/papyrus/designer/languages/common/codegen/ui/handlers/GenerateCodeHandler.java b/plugins/languages/common/org.eclipse.papyrus.designer.languages.common.codegen.ui/src/org/eclipse/papyrus/designer/languages/common/codegen/ui/handlers/GenerateCodeHandler.java index 8509cce..3415881 100644 --- a/plugins/languages/common/org.eclipse.papyrus.designer.languages.common.codegen.ui/src/org/eclipse/papyrus/designer/languages/common/codegen/ui/handlers/GenerateCodeHandler.java +++ b/plugins/languages/common/org.eclipse.papyrus.designer.languages.common.codegen.ui/src/org/eclipse/papyrus/designer/languages/common/codegen/ui/handlers/GenerateCodeHandler.java
@@ -24,8 +24,8 @@ import org.eclipse.emf.common.util.BasicEList; import org.eclipse.emf.common.util.EList; import org.eclipse.emf.common.util.URI; -import org.eclipse.papyrus.designer.deployment.tools.DepUtils; import org.eclipse.papyrus.designer.languages.common.base.ClassUtils; +import org.eclipse.papyrus.designer.languages.common.base.HintUtils; import org.eclipse.papyrus.designer.languages.common.codegen.ui.ChooseGenerator; import org.eclipse.papyrus.designer.languages.common.extensionpoints.ILangCodegen; import org.eclipse.papyrus.designer.languages.common.extensionpoints.LanguageCodegen; @@ -131,7 +131,7 @@ if (selectedEObject instanceof PackageableElement) { PackageableElement pe = (PackageableElement) selectedEObject; - GeneratorHint hint = DepUtils.getGeneratorHintFromElement(pe); + GeneratorHint hint = HintUtils.getGeneratorHintFromElement(pe); ILangCodegen codeGen = null; if (hint == null) { codeGen = ChooseGenerator.choose(Pattern.compile(".*"), pe); //$NON-NLS-1$
diff --git a/plugins/languages/common/org.eclipse.papyrus.designer.languages.common.validation/META-INF/MANIFEST.MF b/plugins/languages/common/org.eclipse.papyrus.designer.languages.common.validation/META-INF/MANIFEST.MF index 78038f9..10b2d25 100644 --- a/plugins/languages/common/org.eclipse.papyrus.designer.languages.common.validation/META-INF/MANIFEST.MF +++ b/plugins/languages/common/org.eclipse.papyrus.designer.languages.common.validation/META-INF/MANIFEST.MF
@@ -4,8 +4,7 @@ org.eclipse.emf.validation;bundle-version="1.3.0", org.eclipse.ui, org.eclipse.papyrus.uml.tools.utils;bundle-version="[3.4.0,5.0.0)", - org.eclipse.papyrus.designer.deployment.profile;bundle-version="[2.0.0,3.0.0)", - org.eclipse.papyrus.designer.deployment.tools;bundle-version="[2.0.0,3.0.0)" + org.eclipse.papyrus.designer.deployment.profile;bundle-version="[2.0.0,3.0.0)" Bundle-Vendor: %providerName Bundle-ActivationPolicy: lazy Bundle-Version: 2.0.0.qualifier
diff --git a/plugins/transformation/org.eclipse.papyrus.designer.transformation.library/src/org/eclipse/papyrus/designer/transformation/library/transformations/BootLoaderGen.java b/plugins/transformation/org.eclipse.papyrus.designer.transformation.library/src/org/eclipse/papyrus/designer/transformation/library/transformations/BootLoaderGen.java index 99bce16..432f2e7 100644 --- a/plugins/transformation/org.eclipse.papyrus.designer.transformation.library/src/org/eclipse/papyrus/designer/transformation/library/transformations/BootLoaderGen.java +++ b/plugins/transformation/org.eclipse.papyrus.designer.transformation.library/src/org/eclipse/papyrus/designer/transformation/library/transformations/BootLoaderGen.java
@@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2013 CEA LIST. + * Copyright (c) 2013, 2021 CEA LIST. * * * All rights reserved. This program and the accompanying materials @@ -16,7 +16,7 @@ package org.eclipse.papyrus.designer.transformation.library.transformations; -import org.eclipse.papyrus.designer.deployment.tools.DepUtils; +import org.eclipse.papyrus.designer.languages.common.base.HintUtils; import org.eclipse.papyrus.designer.transformation.base.utils.TransformationException; import org.eclipse.papyrus.designer.transformation.core.m2minterfaces.IM2MTrafoCDP; import org.eclipse.papyrus.designer.transformation.extensions.IM2MTrafo; @@ -34,7 +34,7 @@ @Override public void applyTrafo(M2MTrafo trafo, Package deploymentPlan) throws TransformationException { // delegate to language specific variant - String language = DepUtils.getLanguageFromElement(deploymentPlan); + String language = HintUtils.getLanguageFromElement(deploymentPlan); IM2MTrafo trafo2 = M2MTrafoExt.getM2MTrafo(trafo.getBase_Class().getQualifiedName() + "::" + language); //$NON-NLS-1$ if (trafo2 instanceof IM2MTrafoCDP) { ((IM2MTrafoCDP) trafo2).applyTrafo(trafo, deploymentPlan);
diff --git a/plugins/transformation/org.eclipse.papyrus.designer.transformation.library/src/org/eclipse/papyrus/designer/transformation/library/transformations/CompleteStatemachine.java b/plugins/transformation/org.eclipse.papyrus.designer.transformation.library/src/org/eclipse/papyrus/designer/transformation/library/transformations/CompleteStatemachine.java index 15f6a0e..56887d8 100644 --- a/plugins/transformation/org.eclipse.papyrus.designer.transformation.library/src/org/eclipse/papyrus/designer/transformation/library/transformations/CompleteStatemachine.java +++ b/plugins/transformation/org.eclipse.papyrus.designer.transformation.library/src/org/eclipse/papyrus/designer/transformation/library/transformations/CompleteStatemachine.java
@@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2016 CEA LIST. + * Copyright (c) 2016, 2021 CEA LIST. * * * All rights reserved. This program and the accompanying materials @@ -16,7 +16,7 @@ package org.eclipse.papyrus.designer.transformation.library.transformations; -import org.eclipse.papyrus.designer.deployment.tools.DepUtils; +import org.eclipse.papyrus.designer.languages.common.base.HintUtils; import org.eclipse.papyrus.designer.transformation.base.utils.TransformationException; import org.eclipse.papyrus.designer.transformation.core.m2minterfaces.IM2MTrafoElem; import org.eclipse.papyrus.designer.transformation.extensions.IM2MTrafo; @@ -38,7 +38,7 @@ if (element instanceof Class) { Class clazz = (Class) element; if (clazz.getClassifierBehavior() instanceof StateMachine) { - String language = DepUtils.getLanguageFromElement(clazz); + String language = HintUtils.getLanguageFromElement(clazz); IM2MTrafo trafoForLang = M2MTrafoExt.getM2MTrafoForLanguage(trafo, language); if (trafoForLang instanceof IM2MTrafoElem) { ((IM2MTrafoElem) trafoForLang).transformElement(trafo, element);
diff --git a/plugins/transformation/org.eclipse.papyrus.designer.transformation.library/src/org/eclipse/papyrus/designer/transformation/library/transformations/CreateAndConfigureProject.java b/plugins/transformation/org.eclipse.papyrus.designer.transformation.library/src/org/eclipse/papyrus/designer/transformation/library/transformations/CreateAndConfigureProject.java index c68a5d1..3334eef 100644 --- a/plugins/transformation/org.eclipse.papyrus.designer.transformation.library/src/org/eclipse/papyrus/designer/transformation/library/transformations/CreateAndConfigureProject.java +++ b/plugins/transformation/org.eclipse.papyrus.designer.transformation.library/src/org/eclipse/papyrus/designer/transformation/library/transformations/CreateAndConfigureProject.java
@@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2016 CEA LIST. + * Copyright (c) 2016, 2021 CEA LIST. * * * All rights reserved. This program and the accompanying materials @@ -29,6 +29,7 @@ import org.eclipse.papyrus.designer.deployment.profile.Deployment.OperatingSystem; import org.eclipse.papyrus.designer.deployment.profile.Deployment.Target; import org.eclipse.papyrus.designer.deployment.tools.DepUtils; +import org.eclipse.papyrus.designer.languages.common.base.HintUtils; import org.eclipse.papyrus.designer.languages.common.extensionpoints.AbstractSettings; import org.eclipse.papyrus.designer.languages.common.extensionpoints.ILangProjectSupport; import org.eclipse.papyrus.designer.languages.common.extensionpoints.LanguageProjectSupport; @@ -244,7 +245,7 @@ // acceptable?) String targetLanguage = topLevelInstances.size() > 0 ? DepUtils.getTargetLanguage(topLevelInstances.iterator().next()) : - DepUtils.getLanguageFromElement(deploymentPlan); + HintUtils.getLanguageFromElement(deploymentPlan); String projectName = getProjectName(tc.modelRoot, tc.node); projectSupport = LanguageProjectSupport.getProjectSupport(targetLanguage);
diff --git a/plugins/transformation/org.eclipse.papyrus.designer.transformation.library/src/org/eclipse/papyrus/designer/transformation/library/transformations/GenerateCode.java b/plugins/transformation/org.eclipse.papyrus.designer.transformation.library/src/org/eclipse/papyrus/designer/transformation/library/transformations/GenerateCode.java index f9f42ea..1fbce81 100644 --- a/plugins/transformation/org.eclipse.papyrus.designer.transformation.library/src/org/eclipse/papyrus/designer/transformation/library/transformations/GenerateCode.java +++ b/plugins/transformation/org.eclipse.papyrus.designer.transformation.library/src/org/eclipse/papyrus/designer/transformation/library/transformations/GenerateCode.java
@@ -1,11 +1,18 @@ -/** +/***************************************************************************** + * Copyright (c) 2016, 2021 CEA LIST. + * + * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 * which accompanies this distribution, and is available at * https://www.eclipse.org/legal/epl-2.0/ * * SPDX-License-Identifier: EPL-2.0 - */ + * + * Contributors: + * Ansgar Radermacher ansgar.radermacher@cea.fr + * + *****************************************************************************/ package org.eclipse.papyrus.designer.transformation.library.transformations; import org.eclipse.core.resources.IProject; @@ -13,6 +20,7 @@ import org.eclipse.emf.common.util.EList; import org.eclipse.papyrus.designer.deployment.tools.Activator; import org.eclipse.papyrus.designer.deployment.tools.DepUtils; +import org.eclipse.papyrus.designer.languages.common.base.HintUtils; import org.eclipse.papyrus.designer.languages.common.extensionpoints.ILangCodegen; import org.eclipse.papyrus.designer.languages.common.extensionpoints.LanguageCodegen; import org.eclipse.papyrus.designer.transformation.base.UIContext; @@ -128,7 +136,7 @@ String targetLanguage = topLevelInstances.size() > 0 ? DepUtils.getTargetLanguage(topLevelInstances.iterator().next()) : - DepUtils.getLanguageFromElement(deploymentPlan); + HintUtils.getLanguageFromElement(deploymentPlan); try { generate(null, targetLanguage); }