diff --git a/injector-generator/src/org/jetbrains/jet/di/DependencyInjectorGenerator.java b/injector-generator/src/org/jetbrains/jet/di/DependencyInjectorGenerator.java index f1550d32bea..644112a22d9 100644 --- a/injector-generator/src/org/jetbrains/jet/di/DependencyInjectorGenerator.java +++ b/injector-generator/src/org/jetbrains/jet/di/DependencyInjectorGenerator.java @@ -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);