Removed IAcceleoEnvironment.getDestination().
Change-Id: I617bc617d6cc15d55b59e2b8e8ba8fb32f3da9ee
diff --git a/plugins/org.eclipse.acceleo.aql.launcher/src/org/eclipse/acceleo/aql/launcher/AcceleoLauncher.java b/plugins/org.eclipse.acceleo.aql.launcher/src/org/eclipse/acceleo/aql/launcher/AcceleoLauncher.java
index 22f15ff..89e118a 100644
--- a/plugins/org.eclipse.acceleo.aql.launcher/src/org/eclipse/acceleo/aql/launcher/AcceleoLauncher.java
+++ b/plugins/org.eclipse.acceleo.aql.launcher/src/org/eclipse/acceleo/aql/launcher/AcceleoLauncher.java
@@ -220,7 +220,7 @@
final QualifiedNameQueryEnvironment queryEnvironment = new QualifiedNameQueryEnvironment(resolver);
// TODO generation strategy should be configurable
IAcceleoEnvironment acceleoEnvironment = new AcceleoEnvironment(queryEnvironment,
- new DefaultGenerationStrategy(), URI.createURI(target));
+ new DefaultGenerationStrategy());
AcceleoEvaluator evaluator = new AcceleoEvaluator(acceleoEnvironment, queryEnvironment
.getLookupEngine());
@@ -241,7 +241,7 @@
private void evaluate(AcceleoEvaluator evaluator, IAcceleoEnvironment environment,
IQualifiedNameLookupEngine lookupEngine, Module mainModule, ResourceSet modelResourceSet) {
- AcceleoUtil.generate(evaluator, environment, mainModule, modelResourceSet);
+ AcceleoUtil.generate(evaluator, environment, mainModule, modelResourceSet, URI.createURI(target));
}
private void printDiagnostic(PrintStream stream, Diagnostic diagnostic, String indentation) {
diff --git a/plugins/org.eclipse.acceleo.aql.ls.debug/src/org/eclipse/acceleo/aql/ls/debug/AcceleoDebugger.java b/plugins/org.eclipse.acceleo.aql.ls.debug/src/org/eclipse/acceleo/aql/ls/debug/AcceleoDebugger.java
index 4be56bb..8813229 100644
--- a/plugins/org.eclipse.acceleo.aql.ls.debug/src/org/eclipse/acceleo/aql/ls/debug/AcceleoDebugger.java
+++ b/plugins/org.eclipse.acceleo.aql.ls.debug/src/org/eclipse/acceleo/aql/ls/debug/AcceleoDebugger.java
@@ -91,7 +91,7 @@
resolver.addLoader(QueryPlugin.getPlugin().createJavaLoader(
AcceleoParser.QUALIFIER_SEPARATOR));
- AcceleoUtil.generate(evaluator, environment, module, model);
+ AcceleoUtil.generate(evaluator, environment, module, model, getDestination());
}
} finally {
// FIXME workaround: UI jobs are coming from core.debug even if the gen has finished,
@@ -110,8 +110,8 @@
IWorkspace workspace = ResourcesPlugin.getWorkspace();
if (workspace != null) {
- IContainer container = workspace.getRoot().getContainerForLocation(new Path(environment
- .getDestination().toFileString()));
+ IContainer container = workspace.getRoot().getContainerForLocation(new Path(destination
+ .toFileString()));
if (container != null) {
try {
container.refreshLocal(IResource.DEPTH_INFINITE, new NullProgressMonitor());
@@ -144,11 +144,6 @@
}
@Override
- public Object generate(ASTNode node, Map<String, Object> variables) {
- return super.generate(node, variables);
- }
-
- @Override
public Object doSwitch(EObject eObject) {
if (isTerminated()) {
return null;
@@ -196,6 +191,11 @@
private IAcceleoEnvironment environment;
/**
+ * The destination {@link URI}.
+ */
+ private URI destination;
+
+ /**
* The {@link AcceleoAstResult}.
*/
private AcceleoAstResult astResult;
@@ -227,14 +227,14 @@
setNoDebug(noDebug);
final URI moduleURI = URI.createURI((String)arguments.get(MODULE));
final URI modelURI = URI.createURI((String)arguments.get(MODEL));
- final URI destination = URI.createURI((String)arguments.get(DESTINATION));
+ destination = URI.createURI((String)arguments.get(DESTINATION));
final IProject project = LSPEclipseUtils.findResourceFor((String)arguments.get(MODULE)).getProject();
final IQualifiedNameResolver resolver = QueryPlugin.getPlugin().createQualifiedNameResolver(
AcceleoPlugin.getPlugin().getClass().getClassLoader(), project,
AcceleoParser.QUALIFIER_SEPARATOR);
final IQualifiedNameQueryEnvironment queryEnvironment = new QualifiedNameQueryEnvironment(resolver);
- environment = new AcceleoEnvironment(queryEnvironment, new DefaultGenerationStrategy(), destination);
+ environment = new AcceleoEnvironment(queryEnvironment, new DefaultGenerationStrategy());
for (String nsURI : new ArrayList<String>(EPackage.Registry.INSTANCE.keySet())) {
registerEPackage(queryEnvironment, EPackage.Registry.INSTANCE.getEPackage(nsURI));
}
@@ -325,7 +325,7 @@
resolver.addLoader(new ModuleLoader(new AcceleoParser(), noDebugEvaluator));
resolver.addLoader(QueryPlugin.getPlugin().createJavaLoader(AcceleoParser.QUALIFIER_SEPARATOR));
- AcceleoUtil.generate(noDebugEvaluator, env, module, modelResource);
+ AcceleoUtil.generate(noDebugEvaluator, env, module, modelResource, getDestination());
}
@Override
@@ -470,4 +470,14 @@
return res;
}
+
+ /**
+ * Gets the destination {@link URI}.
+ *
+ * @return the destination {@link URI}
+ */
+ protected URI getDestination() {
+ return destination;
+ }
+
}
diff --git a/plugins/org.eclipse.acceleo.aql.ls/src/org/eclipse/acceleo/aql/ls/services/textdocument/AcceleoTextDocument.java b/plugins/org.eclipse.acceleo.aql.ls/src/org/eclipse/acceleo/aql/ls/services/textdocument/AcceleoTextDocument.java
index b7ddbf2..18de02d 100644
--- a/plugins/org.eclipse.acceleo.aql.ls/src/org/eclipse/acceleo/aql/ls/services/textdocument/AcceleoTextDocument.java
+++ b/plugins/org.eclipse.acceleo.aql.ls/src/org/eclipse/acceleo/aql/ls/services/textdocument/AcceleoTextDocument.java
@@ -178,7 +178,7 @@
final IQualifiedNameQueryEnvironment queryEnvironment = new QualifiedNameQueryEnvironment(getProject()
.getResolver());
- acceleoEnvironment = new AcceleoEnvironment(queryEnvironment, null, null);
+ acceleoEnvironment = new AcceleoEnvironment(queryEnvironment, null);
for (Metamodel metamodel : parsingResult.getModule().getMetamodels()) {
if (metamodel.getReferencedPackage() != null) {
diff --git a/plugins/org.eclipse.acceleo.aql/src/org/eclipse/acceleo/aql/AcceleoEnvironment.java b/plugins/org.eclipse.acceleo.aql/src/org/eclipse/acceleo/aql/AcceleoEnvironment.java
index 3075527..e75c707 100644
--- a/plugins/org.eclipse.acceleo.aql/src/org/eclipse/acceleo/aql/AcceleoEnvironment.java
+++ b/plugins/org.eclipse.acceleo.aql/src/org/eclipse/acceleo/aql/AcceleoEnvironment.java
@@ -39,11 +39,6 @@
private final IAcceleoGenerationStrategy generationStrategy;
/**
- * The destination {@link URI}.
- */
- private final URI destination;
-
- /**
* The {@link GenerationResult}.
*/
private final GenerationResult generationResult = new GenerationResult();
@@ -55,13 +50,10 @@
* the {@link IQualifiedNameQueryEnvironment}
* @param generationStrategy
* the {@link IAcceleoGenerationStrategy}
- * @param destination
- * the destination {@link URI}
*/
public AcceleoEnvironment(IQualifiedNameQueryEnvironment aqlEnvironment,
- IAcceleoGenerationStrategy generationStrategy, URI destination) {
+ IAcceleoGenerationStrategy generationStrategy) {
this.generationStrategy = generationStrategy;
- this.destination = destination;
this.aqlEnvironment = aqlEnvironment;
/* FIXME we need a cross reference provider, and we need to make it configurable */
@@ -95,11 +87,6 @@
}
@Override
- public URI getDestination() {
- return destination;
- }
-
- @Override
public GenerationResult getGenerationResult() {
return generationResult;
}
diff --git a/plugins/org.eclipse.acceleo.aql/src/org/eclipse/acceleo/aql/AcceleoUtil.java b/plugins/org.eclipse.acceleo.aql/src/org/eclipse/acceleo/aql/AcceleoUtil.java
index d1f60be..3d2d412 100644
--- a/plugins/org.eclipse.acceleo.aql/src/org/eclipse/acceleo/aql/AcceleoUtil.java
+++ b/plugins/org.eclipse.acceleo.aql/src/org/eclipse/acceleo/aql/AcceleoUtil.java
@@ -27,6 +27,7 @@
import org.eclipse.acceleo.query.runtime.IQueryEnvironment;
import org.eclipse.acceleo.query.services.EObjectServices;
import org.eclipse.acceleo.util.AcceleoSwitch;
+import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EClassifier;
import org.eclipse.emf.ecore.EObject;
@@ -94,10 +95,12 @@
* the {@link Module}
* @param model
* the {@link Resource} containing the model
+ * @param destination
+ * destination {@link URI}
*/
public static void generate(AcceleoEvaluator evaluator, IAcceleoEnvironment acceleoEnvironment,
- Module module, Resource model) {
- generate(evaluator, acceleoEnvironment, module, Collections.singletonList(model));
+ Module module, Resource model, URI destination) {
+ generate(evaluator, acceleoEnvironment, module, Collections.singletonList(model), destination);
}
/**
@@ -111,14 +114,16 @@
* the {@link Module}
* @param resourceSet
* the {@link ResourceSet} containing the input model(s)
+ * @param destination
+ * the destination {@link URI}
*/
public static void generate(AcceleoEvaluator evaluator, IAcceleoEnvironment acceleoEnvironment,
- Module module, ResourceSet resourceSet) {
- generate(evaluator, acceleoEnvironment, module, resourceSet.getResources());
+ Module module, ResourceSet resourceSet, URI destination) {
+ generate(evaluator, acceleoEnvironment, module, resourceSet.getResources(), destination);
}
private static void generate(AcceleoEvaluator evaluator, IAcceleoEnvironment acceleoEnvironment,
- Module module, List<Resource> resources) {
+ Module module, List<Resource> resources, URI destination) {
final IQueryEnvironment queryEnvironment = acceleoEnvironment.getQueryEnvironment();
final EObjectServices services = new EObjectServices(queryEnvironment, null, null);
@@ -148,7 +153,7 @@
final Map<String, Object> variables = new HashMap<String, Object>();
for (EObject value : values) {
variables.put(parameterName, value);
- evaluator.generate(module, variables);
+ evaluator.generate(module, variables, destination);
}
}
}
diff --git a/plugins/org.eclipse.acceleo.aql/src/org/eclipse/acceleo/aql/IAcceleoEnvironment.java b/plugins/org.eclipse.acceleo.aql/src/org/eclipse/acceleo/aql/IAcceleoEnvironment.java
index b1af7ad..ccb8828 100644
--- a/plugins/org.eclipse.acceleo.aql/src/org/eclipse/acceleo/aql/IAcceleoEnvironment.java
+++ b/plugins/org.eclipse.acceleo.aql/src/org/eclipse/acceleo/aql/IAcceleoEnvironment.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2017, 2020 Obeo.
+ * Copyright (c) 2017, 2021 Obeo.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -26,13 +26,6 @@
public interface IAcceleoEnvironment {
/**
- * Gets the destination {@link URI}.
- *
- * @return the destination {@link URI}
- */
- URI getDestination();
-
- /**
* Gets the {@link IQualifiedNameQueryEnvironment}.
*
* @return the {@link IQualifiedNameQueryEnvironment}
diff --git a/plugins/org.eclipse.acceleo.aql/src/org/eclipse/acceleo/aql/evaluation/AcceleoEvaluator.java b/plugins/org.eclipse.acceleo.aql/src/org/eclipse/acceleo/aql/evaluation/AcceleoEvaluator.java
index 561b8e1..a85e9e2 100644
--- a/plugins/org.eclipse.acceleo.aql/src/org/eclipse/acceleo/aql/evaluation/AcceleoEvaluator.java
+++ b/plugins/org.eclipse.acceleo.aql/src/org/eclipse/acceleo/aql/evaluation/AcceleoEvaluator.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2016, 2020 Obeo.
+ * Copyright (c) 2016, 2021 Obeo.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -115,6 +115,11 @@
private boolean inlinedBlock;
/**
+ * The destination {@link URI}.
+ */
+ private URI destination;
+
+ /**
* Constructor.
*
* @param other
@@ -122,6 +127,7 @@
*/
public AcceleoEvaluator(AcceleoEvaluator other) {
this(other.environment, other.lookupEngine);
+ destination = other.destination;
}
/**
@@ -146,12 +152,15 @@
* the {@link ASTNode} to generate
* @param variables
* the variables
+ * @param destinationURI
+ * the destination {@link URI}
* @return the generated {@link Object}, can be <code>null</code>
*/
- public Object generate(ASTNode node, Map<String, Object> variables) {
+ public Object generate(ASTNode node, Map<String, Object> variables, URI destinationURI) {
final Object res;
+ destination = destinationURI;
lastLineOfLastStatement = "";
pushVariables(variables);
try {
@@ -499,7 +508,7 @@
} else {
final OpenModeKind mode = fileStatement.getMode();
final Charset charset = getCharset(fileStatement);
- final URI uri = URI.createURI(toString(uriObject), true).resolve(environment.getDestination());
+ final URI uri = URI.createURI(toString(uriObject), true).resolve(destination);
try {
// FIXME line delimiter
environment.openWriter(uri, mode, charset, NEW_LINE);
@@ -674,4 +683,13 @@
return buffer.toString();
}
+ /**
+ * Gets the destination {@link URI}.
+ *
+ * @return the destination {@link URI}
+ */
+ public URI getDestination() {
+ return destination;
+ }
+
}
diff --git a/plugins/org.eclipse.acceleo.aql/src/org/eclipse/acceleo/aql/evaluation/QueryService.java b/plugins/org.eclipse.acceleo.aql/src/org/eclipse/acceleo/aql/evaluation/QueryService.java
index 0071752..18b02bf 100644
--- a/plugins/org.eclipse.acceleo.aql/src/org/eclipse/acceleo/aql/evaluation/QueryService.java
+++ b/plugins/org.eclipse.acceleo.aql/src/org/eclipse/acceleo/aql/evaluation/QueryService.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2016, 2017 Obeo.
+ * Copyright (c) 2016, 2021 Obeo.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -101,7 +101,8 @@
variables.put(var.getName(), arguments[i]);
}
- return getEvaluator().generate(getOrigin(), variables);
+ final AcceleoEvaluator evaluator = getEvaluator();
+ return evaluator.generate(getOrigin(), variables, evaluator.getDestination());
}
@Override
diff --git a/plugins/org.eclipse.acceleo.aql/src/org/eclipse/acceleo/aql/evaluation/TemplateService.java b/plugins/org.eclipse.acceleo.aql/src/org/eclipse/acceleo/aql/evaluation/TemplateService.java
index d506bfb..664fe09 100644
--- a/plugins/org.eclipse.acceleo.aql/src/org/eclipse/acceleo/aql/evaluation/TemplateService.java
+++ b/plugins/org.eclipse.acceleo.aql/src/org/eclipse/acceleo/aql/evaluation/TemplateService.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2016, 2017 Obeo.
+ * Copyright (c) 2016, 2021 Obeo.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -99,7 +99,8 @@
variables.put(var.getName(), arguments[i]);
}
- return getEvaluator().generate(getOrigin(), variables);
+ final AcceleoEvaluator evaluator = getEvaluator();
+ return evaluator.generate(getOrigin(), variables, evaluator.getDestination());
}
@Override
diff --git a/tests/org.eclipse.acceleo.aql.tests/src/org/eclipse/acceleo/tests/completion/CompletionTests.java b/tests/org.eclipse.acceleo.aql.tests/src/org/eclipse/acceleo/tests/completion/CompletionTests.java
index 0233ed8..e6c0ff4 100644
--- a/tests/org.eclipse.acceleo.aql.tests/src/org/eclipse/acceleo/tests/completion/CompletionTests.java
+++ b/tests/org.eclipse.acceleo.aql.tests/src/org/eclipse/acceleo/tests/completion/CompletionTests.java
@@ -45,7 +45,6 @@
import org.eclipse.acceleo.query.runtime.namespace.IQualifiedNameQueryEnvironment;
import org.eclipse.acceleo.query.runtime.namespace.IQualifiedNameResolver;
import org.eclipse.acceleo.tests.utils.AbstractLanguageTestSuite;
-import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -124,7 +123,7 @@
.getClassLoader(), AcceleoParser.QUALIFIER_SEPARATOR);
final IQualifiedNameQueryEnvironment queryEnvironment = new QualifiedNameQueryEnvironment(resolver);
final IAcceleoEnvironment acceleoEnvironment = new AcceleoEnvironment(queryEnvironment,
- new DefaultGenerationStrategy(), URI.createURI(""));
+ new DefaultGenerationStrategy());
final AcceleoEvaluator evaluator = new AcceleoEvaluator(acceleoEnvironment, queryEnvironment
.getLookupEngine());
diff --git a/tests/org.eclipse.acceleo.aql.tests/src/org/eclipse/acceleo/tests/utils/AbstractEvaluationTestSuite.java b/tests/org.eclipse.acceleo.aql.tests/src/org/eclipse/acceleo/tests/utils/AbstractEvaluationTestSuite.java
index d95a132..e153f7d 100644
--- a/tests/org.eclipse.acceleo.aql.tests/src/org/eclipse/acceleo/tests/utils/AbstractEvaluationTestSuite.java
+++ b/tests/org.eclipse.acceleo.aql.tests/src/org/eclipse/acceleo/tests/utils/AbstractEvaluationTestSuite.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2016, 2020 Obeo.
+ * Copyright (c) 2016, 2021 Obeo.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -103,7 +103,7 @@
final URI generatedFolderURI = URI.createURI("generated/").resolve(model.getURI());
final List<URI> expectedGeneratedFiles = getExpectedGeneratedFiles(generatedFolderURI);
final List<URI> unexpectedGeneratedFiles = new ArrayList<URI>();
- AcceleoUtil.generate(evaluator, environment, module, model);
+ AcceleoUtil.generate(evaluator, environment, module, model, memoryDestination);
assertGenerationMessages(environment.getGenerationResult());
diff --git a/tests/org.eclipse.acceleo.aql.tests/src/org/eclipse/acceleo/tests/utils/AbstractLanguageTestSuite.java b/tests/org.eclipse.acceleo.aql.tests/src/org/eclipse/acceleo/tests/utils/AbstractLanguageTestSuite.java
index d383ec8..b6d2cf8 100644
--- a/tests/org.eclipse.acceleo.aql.tests/src/org/eclipse/acceleo/tests/utils/AbstractLanguageTestSuite.java
+++ b/tests/org.eclipse.acceleo.aql.tests/src/org/eclipse/acceleo/tests/utils/AbstractLanguageTestSuite.java
@@ -144,8 +144,7 @@
final IQualifiedNameResolver resolver = new ClassLoaderQualifiedNameResolver(classLoader,
AcceleoParser.QUALIFIER_SEPARATOR);
final IQualifiedNameQueryEnvironment queryEnvironment = new QualifiedNameQueryEnvironment(resolver);
- this.environment = new AcceleoEnvironment(queryEnvironment, new DefaultGenerationStrategy(),
- memoryDestination);
+ this.environment = new AcceleoEnvironment(queryEnvironment, new DefaultGenerationStrategy());
evaluator = new AcceleoEvaluator(this.environment, queryEnvironment.getLookupEngine());
resolver.addLoader(new ModuleLoader(new AcceleoParser(), evaluator));