diff options
| author | cbrun | 2015-04-23 13:20:49 +0000 |
|---|---|---|
| committer | cbrun | 2015-04-23 13:20:49 +0000 |
| commit | e51133e134c5047181da9ad6d6526a46dd4f8ea3 (patch) | |
| tree | e5f9d6b7ffc36f3244de73334571916a468e455f | |
| parent | c7dfd3b35eac0bafb0e7be05f67d4b96b7ebfec3 (diff) | |
| download | org.eclipse.sirius-e51133e134c5047181da9ad6d6526a46dd4f8ea3.tar.gz org.eclipse.sirius-e51133e134c5047181da9ad6d6526a46dd4f8ea3.tar.xz org.eclipse.sirius-e51133e134c5047181da9ad6d6526a46dd4f8ea3.zip | |
[463226] Adapt AQL integration to latests API change
AQL now provides utility classes to create implementation instances and
the packages which are used by Sirius have been streamlined and are now
exported. See also Bug: 465272 for more information.
Bug: 463226
Change-Id: Ie636f746a7fda0213fe000eaf54dc96cbc37e70d
Signed-off-by: Cedric Brun <cedric.brun@obeo.fr>
2 files changed, 15 insertions, 22 deletions
diff --git a/plugins/org.eclipse.sirius.common.acceleo.aql.ide/src/org/eclipse/sirius/common/acceleo/aql/ide/proposal/AQLProposalProvider.java b/plugins/org.eclipse.sirius.common.acceleo.aql.ide/src/org/eclipse/sirius/common/acceleo/aql/ide/proposal/AQLProposalProvider.java index aa971ab918..95c82b6193 100644 --- a/plugins/org.eclipse.sirius.common.acceleo.aql.ide/src/org/eclipse/sirius/common/acceleo/aql/ide/proposal/AQLProposalProvider.java +++ b/plugins/org.eclipse.sirius.common.acceleo.aql.ide/src/org/eclipse/sirius/common/acceleo/aql/ide/proposal/AQLProposalProvider.java @@ -20,9 +20,9 @@ import java.util.Set; import org.eclipse.acceleo.query.runtime.ICompletionProposal; import org.eclipse.acceleo.query.runtime.ICompletionResult; +import org.eclipse.acceleo.query.runtime.IQueryCompletionEngine; import org.eclipse.acceleo.query.runtime.IQueryEnvironment; -import org.eclipse.acceleo.query.runtime.impl.BasicFilter; -import org.eclipse.acceleo.query.runtime.impl.QueryCompletionEngine; +import org.eclipse.acceleo.query.runtime.QueryCompletion; import org.eclipse.acceleo.query.validation.type.EClassifierType; import org.eclipse.acceleo.query.validation.type.IType; import org.eclipse.emf.ecore.EPackage; @@ -99,12 +99,12 @@ public class AQLProposalProvider implements IProposalProvider { } private void addProposals(List<ContentProposal> proposals, ExpressionTrimmer trimmer, int position, IQueryEnvironment queryEnvironment, Map<String, Set<IType>> variableTypes) { - QueryCompletionEngine engine = new QueryCompletionEngine(queryEnvironment); + IQueryCompletionEngine engine = QueryCompletion.newEngine(queryEnvironment); final ICompletionResult completionResult = engine.getCompletion(trimmer.getExpression(), trimmer.getPositionWithinAQL(position), variableTypes); /* * completionResult.sort(new ProposalComparator()); */ - final List<ICompletionProposal> proposal = completionResult.getProposals(new BasicFilter(completionResult)); + final List<ICompletionProposal> proposal = completionResult.getProposals(QueryCompletion.createBasicFilter(completionResult)); for (ICompletionProposal propFromAQL : proposal) { ContentProposal propForSirius = new ContentProposal(propFromAQL.getProposal(), propFromAQL.getProposal(), propFromAQL.getClass().getSimpleName(), propFromAQL.getCursorOffset()); diff --git a/plugins/org.eclipse.sirius.common.acceleo.aql/src/org/eclipse/sirius/common/acceleo/aql/business/internal/AQLSiriusInterpreter.java b/plugins/org.eclipse.sirius.common.acceleo.aql/src/org/eclipse/sirius/common/acceleo/aql/business/internal/AQLSiriusInterpreter.java index c6c7916ca2..fc5142a136 100644 --- a/plugins/org.eclipse.sirius.common.acceleo.aql/src/org/eclipse/sirius/common/acceleo/aql/business/internal/AQLSiriusInterpreter.java +++ b/plugins/org.eclipse.sirius.common.acceleo.aql/src/org/eclipse/sirius/common/acceleo/aql/business/internal/AQLSiriusInterpreter.java @@ -24,22 +24,21 @@ import java.util.Map; import java.util.Set; import java.util.concurrent.ExecutionException; -import org.eclipse.acceleo.query.ast.Expression; -import org.eclipse.acceleo.query.parser.AstEvaluator; import org.eclipse.acceleo.query.runtime.AcceleoQueryEvaluationException; import org.eclipse.acceleo.query.runtime.AcceleoQueryValidationException; import org.eclipse.acceleo.query.runtime.CrossReferenceProvider; import org.eclipse.acceleo.query.runtime.IQueryBuilderEngine; import org.eclipse.acceleo.query.runtime.IQueryBuilderEngine.AstResult; import org.eclipse.acceleo.query.runtime.IQueryEnvironment; +import org.eclipse.acceleo.query.runtime.IQueryEvaluationEngine; +import org.eclipse.acceleo.query.runtime.IQueryValidationEngine; import org.eclipse.acceleo.query.runtime.IValidationMessage; import org.eclipse.acceleo.query.runtime.IValidationResult; import org.eclipse.acceleo.query.runtime.InvalidAcceleoPackageException; -import org.eclipse.acceleo.query.runtime.impl.EvaluationServices; -import org.eclipse.acceleo.query.runtime.impl.Nothing; -import org.eclipse.acceleo.query.runtime.impl.QueryBuilderEngine; -import org.eclipse.acceleo.query.runtime.impl.QueryEnvironment; -import org.eclipse.acceleo.query.runtime.impl.QueryValidationEngine; +import org.eclipse.acceleo.query.runtime.Query; +import org.eclipse.acceleo.query.runtime.QueryEvaluation; +import org.eclipse.acceleo.query.runtime.QueryParsing; +import org.eclipse.acceleo.query.runtime.QueryValidation; import org.eclipse.acceleo.query.validation.type.EClassifierType; import org.eclipse.acceleo.query.validation.type.IType; import org.eclipse.core.runtime.IStatus; @@ -114,7 +113,6 @@ public class AQLSiriusInterpreter extends AcceleoAbstractInterpreter { @Override public void unloaded(String qualifiedName, Class<?> clazz) { queryEnvironment.removeServicePackage(clazz); - } }; @@ -125,7 +123,7 @@ public class AQLSiriusInterpreter extends AcceleoAbstractInterpreter { */ public AQLSiriusInterpreter() { super(); - this.queryEnvironment = new QueryEnvironment(xRef); + this.queryEnvironment = Query.newEnvironmentWithDefaultServices(xRef); this.ePackageCallBack = new EPackageLoadingCallback() { @Override @@ -140,7 +138,7 @@ public class AQLSiriusInterpreter extends AcceleoAbstractInterpreter { }; this.javaExtensions.addClassLoadingCallBack(callback); this.javaExtensions.addEPackageCallBack(ePackageCallBack); - final IQueryBuilderEngine builder = new QueryBuilderEngine(queryEnvironment); + final IQueryBuilderEngine builder = QueryParsing.newBuilder(queryEnvironment); this.parsedExpressions = CacheBuilder.newBuilder().maximumSize(500).build(new CacheLoader<String, AstResult>() { @Override @@ -184,13 +182,8 @@ public class AQLSiriusInterpreter extends AcceleoAbstractInterpreter { AstResult build; try { build = parsedExpressions.get(expression); - Expression ast = build.getAst(); - AstEvaluator evaluator = new AstEvaluator(new EvaluationServices(queryEnvironment, false)); - Object result = evaluator.eval(variables, ast); - if (result instanceof Nothing) { - result = null; - } - return result; + IQueryEvaluationEngine evaluationEngine = QueryEvaluation.newEngine(queryEnvironment); + return evaluationEngine.eval(build, variables); } catch (ExecutionException e) { throw new EvaluationException(e.getCause()); } @@ -229,7 +222,7 @@ public class AQLSiriusInterpreter extends AcceleoAbstractInterpreter { Map<String, Set<IType>> variableTypes = TypesUtil.createAQLVariableTypesFromInterpreterContext(context, queryEnvironment); - QueryValidationEngine validator = new QueryValidationEngine(this.queryEnvironment); + IQueryValidationEngine validator = QueryValidation.newEngine(this.queryEnvironment); try { IValidationResult validationResult = validator.validate(trimmedExpression, variableTypes); for (IValidationMessage message : validationResult.getMessages()) { |
