diff options
author | Jan Belle | 2021-03-27 18:58:14 +0000 |
---|---|---|
committer | Jan Belle | 2021-03-27 19:11:43 +0000 |
commit | 6106b171b93862f0aa858c26f474155bdc412fe1 (patch) | |
tree | 1c57524160071963760ad6fd363460d991eddfc0 | |
parent | da31a768d089a19934f9484cb00f5a861fd95106 (diff) | |
download | org.eclipse.etrice-6106b171b93862f0aa858c26f474155bdc412fe1.tar.gz org.eclipse.etrice-6106b171b93862f0aa858c26f474155bdc412fe1.tar.xz org.eclipse.etrice-6106b171b93862f0aa858c26f474155bdc412fe1.zip |
[generator.base] Fix clean up of generation directory
The GeneratorFileIO object of the generator is a singleton and must be
reset on each generation pass.
Bug 572360
Change-Id: Ifbbd45ac368e628894e600dbdbfe70bfd548e6e8
7 files changed, 32 insertions, 112 deletions
diff --git a/plugins/org.eclipse.etrice.generator.base/src/org/eclipse/etrice/generator/base/GeneratorApplication.java b/plugins/org.eclipse.etrice.generator.base/src/org/eclipse/etrice/generator/base/GeneratorApplication.java index bc705bc0f..6240d9050 100644 --- a/plugins/org.eclipse.etrice.generator.base/src/org/eclipse/etrice/generator/base/GeneratorApplication.java +++ b/plugins/org.eclipse.etrice.generator.base/src/org/eclipse/etrice/generator/base/GeneratorApplication.java @@ -193,15 +193,15 @@ public class GeneratorApplication { private Logger createLogger(Arguments arguments, ILineOutput out) { Logger logger = loggerProvider.get(); - logger.setLoglevel(arguments.get(GeneratorApplicationOptions.LOGLEVEL)); - logger.setOutput(out); + Loglevel loglevel = arguments.get(GeneratorApplicationOptions.LOGLEVEL); + logger.init(loglevel, out); return logger; } private GeneratorFileIO createGeneratorFileIO(Arguments arguments, Logger logger) { GeneratorFileIO fileIO = fileIOProvider.get(); - fileIO.setOutputDirectory(arguments.get(GeneratorApplicationOptions.GEN_DIR)); - fileIO.setLogger(logger); + String genDir = arguments.get(GeneratorApplicationOptions.GEN_DIR); + fileIO.init(genDir, logger); return fileIO; } diff --git a/plugins/org.eclipse.etrice.generator.base/src/org/eclipse/etrice/generator/base/io/GeneratorFileIO.java b/plugins/org.eclipse.etrice.generator.base/src/org/eclipse/etrice/generator/base/io/GeneratorFileIO.java index 43408753f..ba07300ff 100644 --- a/plugins/org.eclipse.etrice.generator.base/src/org/eclipse/etrice/generator/base/io/GeneratorFileIO.java +++ b/plugins/org.eclipse.etrice.generator.base/src/org/eclipse/etrice/generator/base/io/GeneratorFileIO.java @@ -34,6 +34,8 @@ import org.eclipse.etrice.generator.base.logging.ILogger; import org.eclipse.etrice.generator.base.logging.NullLogger; import org.eclipse.xtext.util.RuntimeIOException; +import com.google.inject.Inject; + /** * Incrementally writes files to an output directory. * @@ -49,20 +51,10 @@ public class GeneratorFileIO implements IGeneratorFileIO { private Path outputPath; private ILogger logger; - /** - * Creates a new generator file io instance that writes to the working directory. - */ - public GeneratorFileIO() { - this(""); - } - - /** - * Creates a new generator file io that writes to the specified output directory. - * - * @param outputPath the path to the output directory - */ - public GeneratorFileIO(String outputPath) { - this(outputPath, new NullLogger()); + @Inject + @Deprecated + private GeneratorFileIO() { + init("", new NullLogger()); } /** @@ -72,19 +64,20 @@ public class GeneratorFileIO implements IGeneratorFileIO { * @param logger the logger */ public GeneratorFileIO(String outputPath, ILogger logger) { - generatedFiles = new HashSet<>(); - - setOutputDirectory(outputPath); - setLogger(logger); + init(outputPath, logger); } /** - * Sets to logger. + * Sets the output directory and logger for this file io and + * clears the record of already generated files. * - * @param logger the logger + * @param outputPath the path to the output directory + * @param logger a logger */ - public void setLogger(ILogger logger) { + public void init(String outputPath, ILogger logger) { + this.outputPath = Paths.get(outputPath).normalize(); this.logger = logger; + generatedFiles = new HashSet<>(); } /** @@ -96,24 +89,6 @@ public class GeneratorFileIO implements IGeneratorFileIO { return outputPath; } - /** - * Sets the output directory. - * - * @param path the path to the new output directory - */ - public void setOutputDirectory(Path path) { - outputPath = path.normalize(); - } - - /** - * Sets the output directory. - * - * @param path the path to the new output directory - */ - public void setOutputDirectory(String path) { - setOutputDirectory(Paths.get(path)); - } - @Override public void generateFile(String file, CharSequence content) { generateFile("generating file", file, content); diff --git a/plugins/org.eclipse.etrice.generator.base/src/org/eclipse/etrice/generator/base/logging/ILineOutputLogger.java b/plugins/org.eclipse.etrice.generator.base/src/org/eclipse/etrice/generator/base/logging/ILineOutputLogger.java deleted file mode 100644 index 3bb421dc3..000000000 --- a/plugins/org.eclipse.etrice.generator.base/src/org/eclipse/etrice/generator/base/logging/ILineOutputLogger.java +++ /dev/null @@ -1,35 +0,0 @@ -/******************************************************************************* -* Copyright (c) 2011 protos software gmbh (http://www.protos.de). -* All rights reserved. -* -* This program and the accompanying materials are made -* available under the terms of the Eclipse Public License 2.0 -* which is available at https://www.eclipse.org/legal/epl-2.0/ -* -* SPDX-License-Identifier: EPL-2.0 -* -* CONTRIBUTORS: -* Thomas Schuetz and Henrik Rentz-Reichert (initial contribution) -* - *******************************************************************************/ - -package org.eclipse.etrice.generator.base.logging; - -import org.eclipse.etrice.generator.base.io.ILineOutput; - -import com.google.inject.ImplementedBy; - -/** - * An ILineOutputLogger will send its output to the specified {@link ILineOutput} if one is set. - * - * @author Henrik Rentz-Reichert - * - */ -@ImplementedBy(Logger.class) -public interface ILineOutputLogger extends ILogger { - - /** - * @param lo a line output to be used by the logger - */ - void setOutput(ILineOutput lo); -} diff --git a/plugins/org.eclipse.etrice.generator.base/src/org/eclipse/etrice/generator/base/logging/ILogger.java b/plugins/org.eclipse.etrice.generator.base/src/org/eclipse/etrice/generator/base/logging/ILogger.java index 1f4bc178b..db6f64986 100644 --- a/plugins/org.eclipse.etrice.generator.base/src/org/eclipse/etrice/generator/base/logging/ILogger.java +++ b/plugins/org.eclipse.etrice.generator.base/src/org/eclipse/etrice/generator/base/logging/ILogger.java @@ -51,9 +51,4 @@ public interface ILogger { */ Loglevel getLoglevel(); - /** - * @param loglevel the loglevel - */ - void setLoglevel(Loglevel loglevel); - } diff --git a/plugins/org.eclipse.etrice.generator.base/src/org/eclipse/etrice/generator/base/logging/Logger.java b/plugins/org.eclipse.etrice.generator.base/src/org/eclipse/etrice/generator/base/logging/Logger.java index 85b506eec..5b2430661 100644 --- a/plugins/org.eclipse.etrice.generator.base/src/org/eclipse/etrice/generator/base/logging/Logger.java +++ b/plugins/org.eclipse.etrice.generator.base/src/org/eclipse/etrice/generator/base/logging/Logger.java @@ -18,6 +18,8 @@ package org.eclipse.etrice.generator.base.logging; import org.eclipse.etrice.generator.base.io.ILineOutput; import org.eclipse.etrice.generator.base.io.LineOutput; +import com.google.inject.Inject; + /** * A simple logger class implementing the * {@link ILineOutputLogger ILineOutputLogger} @@ -27,7 +29,7 @@ import org.eclipse.etrice.generator.base.io.LineOutput; * @author Henrik Rentz-Reichert * */ -public class Logger implements ILineOutputLogger, ILineOutput { +public class Logger implements ILogger, ILineOutput { private static final String DEBUG_PREFIX = "[DEBUG] "; private static final String INFO_PREFIX = "[INFO] "; @@ -38,21 +40,19 @@ public class Logger implements ILineOutputLogger, ILineOutput { private Loglevel loglevel; private ILineOutput output; - public Logger() { - this(Loglevel.WARNING, new LineOutput()); - } - - public Logger(Loglevel loglevel) { - this(loglevel, new LineOutput()); + @Inject + @Deprecated + private Logger() { + init(Loglevel.WARNING, new LineOutput()); } - public Logger(ILineOutput out) { - this(Loglevel.WARNING, out); + public Logger(Loglevel loglevel, ILineOutput out) { + init(loglevel, out); } - public Logger(Loglevel loglevel, ILineOutput out) { - setLoglevel(loglevel); - setOutput(out); + public void init(Loglevel loglevel, ILineOutput output) { + this.loglevel = loglevel; + this.output = output; } @Override @@ -89,16 +89,6 @@ public class Logger implements ILineOutputLogger, ILineOutput { } @Override - public void setLoglevel(Loglevel loglevel) { - this.loglevel = loglevel; - } - - @Override - public void setOutput(ILineOutput out) { - output = out; - } - - @Override public void println(String txt) { output.println(txt); } diff --git a/plugins/org.eclipse.etrice.generator.base/src/org/eclipse/etrice/generator/base/logging/NullLogger.java b/plugins/org.eclipse.etrice.generator.base/src/org/eclipse/etrice/generator/base/logging/NullLogger.java index 54ea2cc73..9eddcdcd4 100644 --- a/plugins/org.eclipse.etrice.generator.base/src/org/eclipse/etrice/generator/base/logging/NullLogger.java +++ b/plugins/org.eclipse.etrice.generator.base/src/org/eclipse/etrice/generator/base/logging/NullLogger.java @@ -15,9 +15,6 @@ package org.eclipse.etrice.generator.base.logging; -import org.eclipse.etrice.generator.base.logging.ILogger; -import org.eclipse.etrice.generator.base.logging.Loglevel; - /** * @author Henrik Rentz-Reichert * @@ -48,10 +45,6 @@ public class NullLogger implements ILogger { return Loglevel.OFF; } - @Override - public void setLoglevel(Loglevel loglevel) { - } - public boolean hasErrors() { return hasErrors; } diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/base/AbstractGeneratorBaseModule.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/base/AbstractGeneratorBaseModule.java index 8d6d1b3f0..b5423dfbd 100644 --- a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/base/AbstractGeneratorBaseModule.java +++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/base/AbstractGeneratorBaseModule.java @@ -68,6 +68,8 @@ public abstract class AbstractGeneratorBaseModule implements Module { public void configure(Binder binder) { binder.bind(ResourceSet.class).to(XtextResourceSet.class); + // Logger and GeneratorFileIO objects should *not* be injected by dependency injection. + // However, in order to avoid rewriting a lot of code we still provide these singletons. binder.bind(Logger.class).in(Singleton.class); binder.bind(GeneratorFileIO.class).in(Singleton.class); |