Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcbrun2015-04-23 13:20:49 +0000
committercbrun2015-04-23 13:20:49 +0000
commite51133e134c5047181da9ad6d6526a46dd4f8ea3 (patch)
treee5f9d6b7ffc36f3244de73334571916a468e455f
parentc7dfd3b35eac0bafb0e7be05f67d4b96b7ebfec3 (diff)
downloadorg.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>
-rw-r--r--plugins/org.eclipse.sirius.common.acceleo.aql.ide/src/org/eclipse/sirius/common/acceleo/aql/ide/proposal/AQLProposalProvider.java8
-rw-r--r--plugins/org.eclipse.sirius.common.acceleo.aql/src/org/eclipse/sirius/common/acceleo/aql/business/internal/AQLSiriusInterpreter.java29
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()) {

Back to the top