diff options
| author | cbrun | 2016-01-08 13:31:52 +0000 |
|---|---|---|
| committer | Cedric Brun | 2016-01-19 15:04:15 +0000 |
| commit | df40a4e3cb3c1cbd5835ef2d1494da9534db4424 (patch) | |
| tree | a99b0d483818774d8c3a267a3a35759c68b1a4b6 | |
| parent | 75676843ce05471bbba43333591b195350c4436c (diff) | |
| download | org.eclipse.sirius-df40a4e3cb3c1cbd5835ef2d1494da9534db4424.tar.gz org.eclipse.sirius-df40a4e3cb3c1cbd5835ef2d1494da9534db4424.tar.xz org.eclipse.sirius-df40a4e3cb3c1cbd5835ef2d1494da9534db4424.zip | |
[485397] Adapt the AQL interpreter to consider EPackages with same name
Bug: 485397
Change-Id: Icc9cd09b448ce1f0b8b1453fd34dbeea7039c48b
| -rw-r--r-- | plugins/org.eclipse.sirius.common.acceleo.aql/src/org/eclipse/sirius/common/acceleo/aql/business/api/TypesUtil.java | 30 |
1 files changed, 15 insertions, 15 deletions
diff --git a/plugins/org.eclipse.sirius.common.acceleo.aql/src/org/eclipse/sirius/common/acceleo/aql/business/api/TypesUtil.java b/plugins/org.eclipse.sirius.common.acceleo.aql/src/org/eclipse/sirius/common/acceleo/aql/business/api/TypesUtil.java index 8be34a221d..2f6c43113f 100644 --- a/plugins/org.eclipse.sirius.common.acceleo.aql/src/org/eclipse/sirius/common/acceleo/aql/business/api/TypesUtil.java +++ b/plugins/org.eclipse.sirius.common.acceleo.aql/src/org/eclipse/sirius/common/acceleo/aql/business/api/TypesUtil.java @@ -10,6 +10,7 @@ *******************************************************************************/ package org.eclipse.sirius.common.acceleo.aql.business.api; +import java.util.Collection; import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.Map; @@ -25,6 +26,8 @@ import org.eclipse.sirius.common.tools.api.interpreter.IInterpreterContext; import org.eclipse.sirius.common.tools.api.interpreter.TypeName; import org.eclipse.sirius.common.tools.api.interpreter.VariableType; +import com.google.common.collect.Sets; + /** * An utility class to convert types denotations. * @@ -52,10 +55,7 @@ public final class TypesUtil { final Set<IType> selfTyping = new LinkedHashSet<IType>(2); VariableType targetTypeName = context.getTargetType(); for (TypeName possibleType : targetTypeName.getPossibleTypes()) { - EClassifierType found = searchEClassifierType(queryEnvironment, possibleType); - if (found != null) { - selfTyping.add(found); - } + selfTyping.addAll(searchEClassifierType(queryEnvironment, possibleType)); } if (selfTyping.size() == 0) { @@ -67,10 +67,7 @@ public final class TypesUtil { VariableType typeName = varDef.getValue(); final Set<IType> potentialTypes = new LinkedHashSet<IType>(2); for (TypeName possibleVariableTypes : typeName.getPossibleTypes()) { - EClassifierType found = searchEClassifierType(queryEnvironment, possibleVariableTypes); - if (found != null) { - potentialTypes.add(found); - } + potentialTypes.addAll(searchEClassifierType(queryEnvironment, possibleVariableTypes)); } if (potentialTypes.size() == 0) { potentialTypes.add(new EClassifierType(queryEnvironment, EcorePackage.eINSTANCE.getEObject())); @@ -80,18 +77,21 @@ public final class TypesUtil { return variableTypes; } - private static EClassifierType searchEClassifierType(IQueryEnvironment queryEnvironment, TypeName targetTypeName) { - EClassifier found = null; + private static Collection<EClassifierType> searchEClassifierType(IQueryEnvironment queryEnvironment, TypeName targetTypeName) { + Collection<EClassifier> found = Sets.newLinkedHashSet(); if (targetTypeName.getPackagePrefix().some()) { String typeName = targetTypeName.getClassifierName(); String name = targetTypeName.getPackagePrefix().get(); - found = queryEnvironment.getEPackageProvider().getType(name, typeName); + found.addAll(queryEnvironment.getEPackageProvider().getTypes(name, typeName)); } else { - found = queryEnvironment.getEPackageProvider().getType(targetTypeName.getClassifierName()); + found.addAll(queryEnvironment.getEPackageProvider().getTypes(targetTypeName.getClassifierName())); } - if (found != null) { - return new EClassifierType(queryEnvironment, found); + + Collection<EClassifierType> types = Sets.newLinkedHashSet(); + + for (EClassifier eClassifier : found) { + types.add(new EClassifierType(queryEnvironment, eClassifier)); } - return null; + return types; } } |
