Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Belle2021-03-27 18:58:14 +0000
committerJan Belle2021-03-27 19:11:43 +0000
commit6106b171b93862f0aa858c26f474155bdc412fe1 (patch)
tree1c57524160071963760ad6fd363460d991eddfc0
parentda31a768d089a19934f9484cb00f5a861fd95106 (diff)
downloadorg.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
-rw-r--r--plugins/org.eclipse.etrice.generator.base/src/org/eclipse/etrice/generator/base/GeneratorApplication.java8
-rw-r--r--plugins/org.eclipse.etrice.generator.base/src/org/eclipse/etrice/generator/base/io/GeneratorFileIO.java53
-rw-r--r--plugins/org.eclipse.etrice.generator.base/src/org/eclipse/etrice/generator/base/logging/ILineOutputLogger.java35
-rw-r--r--plugins/org.eclipse.etrice.generator.base/src/org/eclipse/etrice/generator/base/logging/ILogger.java5
-rw-r--r--plugins/org.eclipse.etrice.generator.base/src/org/eclipse/etrice/generator/base/logging/Logger.java34
-rw-r--r--plugins/org.eclipse.etrice.generator.base/src/org/eclipse/etrice/generator/base/logging/NullLogger.java7
-rw-r--r--plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/base/AbstractGeneratorBaseModule.java2
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);

Back to the top