Generating imports after all usages were generated
This commit is contained in:
@@ -68,17 +68,15 @@ public class DependencyInjectorGenerator {
|
||||
}
|
||||
}
|
||||
|
||||
StringBuilder out = new StringBuilder();
|
||||
Printer p = new Printer(out);
|
||||
fields.addAll(dependencies.satisfyDependencies());
|
||||
|
||||
String copyright = "injector-generator/copyright.txt";
|
||||
p.println(FileUtil.loadFile(new File(copyright)));
|
||||
|
||||
p.println("package " + injectorPackageName + ";");
|
||||
p.println();
|
||||
StringBuilder preamble = new StringBuilder();
|
||||
generatePreamble(injectorPackageName, new Printer(preamble));
|
||||
|
||||
StringBuilder body = new StringBuilder();
|
||||
Printer p = new Printer(body);
|
||||
|
||||
generateImports(p, injectorPackageName);
|
||||
p.println();
|
||||
|
||||
p.println("/* This file is generated by " + generatorClass.getName() + ". DO NOT EDIT! */");
|
||||
@@ -94,14 +92,20 @@ public class DependencyInjectorGenerator {
|
||||
generateDestroy(injectorClassName, p);
|
||||
p.println();
|
||||
generateGetters(p);
|
||||
if (!factoryMethods.isEmpty()) {
|
||||
p.println();
|
||||
generateFactoryMethods(p);
|
||||
}
|
||||
generateFactoryMethods(p);
|
||||
p.popIndent();
|
||||
p.println("}"); // class
|
||||
|
||||
FileUtil.writeToFile(tmpfile, out.toString());
|
||||
importManager.addClass(org.jetbrains.annotations.NotNull.class);
|
||||
importManager.addClass(javax.annotation.PreDestroy.class);
|
||||
StringBuilder imports = new StringBuilder();
|
||||
generateImports(new Printer(imports), injectorPackageName);
|
||||
|
||||
StringBuilder text = new StringBuilder(preamble);
|
||||
text.append(imports);
|
||||
text.append(body);
|
||||
|
||||
FileUtil.writeToFile(tmpfile, text.toString());
|
||||
System.out.println("File written: " + tmpfile.getAbsolutePath());
|
||||
if (useTmpfile) {
|
||||
if (!tmpfile.renameTo(file)) {
|
||||
@@ -112,6 +116,14 @@ public class DependencyInjectorGenerator {
|
||||
System.out.println();
|
||||
}
|
||||
|
||||
private void generatePreamble(String injectorPackageName, Printer p) throws IOException {
|
||||
String copyright = "injector-generator/copyright.txt";
|
||||
p.println(FileUtil.loadFile(new File(copyright)));
|
||||
|
||||
p.println("package " + injectorPackageName + ";");
|
||||
p.println();
|
||||
}
|
||||
|
||||
private void generateImplementsList(Printer out) {
|
||||
if (!implementsList.isEmpty()) {
|
||||
out.print(" implements ");
|
||||
@@ -311,6 +323,9 @@ public class DependencyInjectorGenerator {
|
||||
}
|
||||
|
||||
private void generateFactoryMethods(Printer p) {
|
||||
if (factoryMethods.isEmpty()) return;
|
||||
p.println();
|
||||
|
||||
p.pushIndent();
|
||||
for (FactoryMethod method : factoryMethods) {
|
||||
generateFactoryMethod(p, method);
|
||||
|
||||
Reference in New Issue
Block a user