From 7e5794cc7fd1f2098f59b7a4d6f02bb1ed671778 Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Wed, 6 Mar 2013 12:44:54 +0400 Subject: [PATCH] A common method extracted --- .../jet/di/DependencyInjectorGenerator.java | 61 ++++++++++--------- 1 file changed, 31 insertions(+), 30 deletions(-) diff --git a/injector-generator/src/org/jetbrains/jet/di/DependencyInjectorGenerator.java b/injector-generator/src/org/jetbrains/jet/di/DependencyInjectorGenerator.java index 644112a22d9..4ab2e68edcf 100644 --- a/injector-generator/src/org/jetbrains/jet/di/DependencyInjectorGenerator.java +++ b/injector-generator/src/org/jetbrains/jet/di/DependencyInjectorGenerator.java @@ -261,22 +261,8 @@ public class DependencyInjectorGenerator { p.println("public ", injectorClassName, "() {"); } else { - p.println("public ", injectorClassName, "("); - p.pushIndent(); - for (Iterator iterator = parameters.iterator(); iterator.hasNext(); ) { - Parameter parameter = iterator.next(); - p.print(); // indent - if (parameter.isRequired()) { - p.printWithNoIndent("@NotNull "); - } - p.printWithNoIndent(type(parameter.getType()), " ", parameter.getName()); - if (iterator.hasNext()) { - p.printlnWithNoIndent(","); - } - } - p.printlnWithNoIndent(); - p.popIndent(); - p.println(") {"); + p.print("public ", injectorClassName); + generateParameterList(p, parameters); } p.pushIndent(); @@ -287,6 +273,25 @@ public class DependencyInjectorGenerator { p.println("}"); } + private void generateParameterList(Printer p, Collection parameters) { + p.printlnWithNoIndent("("); + p.pushIndent(); + for (Iterator iterator = parameters.iterator(); iterator.hasNext(); ) { + Parameter parameter = iterator.next(); + p.print(); // indent + if (parameter.isRequired()) { + p.printWithNoIndent("@NotNull "); + } + p.printWithNoIndent(type(parameter.getType()), " ", parameter.getName()); + if (iterator.hasNext()) { + p.printlnWithNoIndent(","); + } + } + p.printlnWithNoIndent(); + p.popIndent(); + p.println(") {"); + } + private void generateDestroy(@NotNull String injectorClassName, @NotNull Printer out) { out.println("@PreDestroy"); out.println("public void destroy() {"); @@ -333,7 +338,7 @@ public class DependencyInjectorGenerator { p.popIndent(); } - private void generateFactoryMethod(Printer p, FactoryMethod method) { + private Collection computeFieldsForFactoryMethod(FactoryMethod method, Field resultField) { Dependencies localDependencies = new Dependencies(); Map parameterToField = Maps.newHashMap(); @@ -347,24 +352,20 @@ public class DependencyInjectorGenerator { localDependencies.addSatisfiedField(storedField); } - Field resultField = new Field(true, method.getReturnType(), "_result"); localDependencies.addField(resultField); Collection fields = Lists.newArrayList(localDependencies.satisfyDependencies()); fields.add(resultField); + return fields; + } + + private void generateFactoryMethod(Printer p, FactoryMethod method) { + Field resultField = new Field(true, method.getReturnType(), "_result"); + Collection fields = computeFieldsForFactoryMethod(method, resultField); + + p.print("public ", type(method.getReturnType()), " ", method.getName()); + generateParameterList(p, method.getParameters()); - p.println("public ", type(method.getReturnType()), " ", method.getName(), "("); - p.pushIndent(); - for (Iterator iterator = method.getParameters().iterator(); iterator.hasNext(); ) { - Parameter parameter = iterator.next(); - p.print(type(parameter.getType()), " ", parameter.getName()); - if (iterator.hasNext()) { - p.printlnWithNoIndent(", "); - } - } - p.println(); - p.popIndent(); - p.println(") {"); p.pushIndent(); InjectionLogicGenerator.generateForLocalVariables(importManager, p, fields);