From f7de41ea1b21af547ebe596390f9c0bbef789b44 Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Tue, 5 Mar 2013 19:46:34 +0400 Subject: [PATCH] The rudimentary support for lazy injection removed --- .../injectors/GenerateInjectors.java | 20 ++--- .../jet/di/DependencyInjectorGenerator.java | 74 +------------------ 2 files changed, 14 insertions(+), 80 deletions(-) diff --git a/generators/org/jetbrains/jet/generators/injectors/GenerateInjectors.java b/generators/org/jetbrains/jet/generators/injectors/GenerateInjectors.java index 148f0afcc1f..cd95c260b88 100644 --- a/generators/org/jetbrains/jet/generators/injectors/GenerateInjectors.java +++ b/generators/org/jetbrains/jet/generators/injectors/GenerateInjectors.java @@ -61,7 +61,7 @@ public class GenerateInjectors { } private static void generateInjectorForLazyResolve() throws IOException { - DependencyInjectorGenerator generator = new DependencyInjectorGenerator(false); + DependencyInjectorGenerator generator = new DependencyInjectorGenerator(); generator.addParameter(Project.class); generator.addParameter(ResolveSession.class); generator.addParameter(BindingTrace.class); @@ -77,7 +77,7 @@ public class GenerateInjectors { } private static void generateInjectorForTopDownAnalyzerBasic() throws IOException { - DependencyInjectorGenerator generator = new DependencyInjectorGenerator(false); + DependencyInjectorGenerator generator = new DependencyInjectorGenerator(); generateInjectorForTopDownAnalyzerCommon(generator); generator.addParameter(ModuleConfiguration.class); generator.addField(DependencyClassByQualifiedNameResolverDummyImpl.class); @@ -86,7 +86,7 @@ public class GenerateInjectors { } private static void generateInjectorForTopDownAnalyzerForJs() throws IOException { - DependencyInjectorGenerator generator = new DependencyInjectorGenerator(false); + DependencyInjectorGenerator generator = new DependencyInjectorGenerator(); generateInjectorForTopDownAnalyzerCommon(generator); generator.addPublicParameter(ModuleConfiguration.class); generator.addField(DependencyClassByQualifiedNameResolverDummyImpl.class); @@ -95,7 +95,7 @@ public class GenerateInjectors { } private static void generateInjectorForTopDownAnalyzerForJvm() throws IOException { - DependencyInjectorGenerator generator = new DependencyInjectorGenerator(false); + DependencyInjectorGenerator generator = new DependencyInjectorGenerator(); generator.implementInterface(InjectorForTopDownAnalyzer.class); generateInjectorForTopDownAnalyzerCommon(generator); generator.addField(true, ModuleConfiguration.class, null, new InstantiateType(JavaBridgeConfiguration.class)); @@ -107,7 +107,7 @@ public class GenerateInjectors { } private static void generateInjectorForJavaDescriptorResolver() throws IOException { - DependencyInjectorGenerator generator = new DependencyInjectorGenerator(false); + DependencyInjectorGenerator generator = new DependencyInjectorGenerator(); // Parameters generator.addPublicParameter(Project.class); @@ -141,7 +141,7 @@ public class GenerateInjectors { } private static void generateMacroInjector() throws IOException { - DependencyInjectorGenerator generator = new DependencyInjectorGenerator(false); + DependencyInjectorGenerator generator = new DependencyInjectorGenerator(); // Fields generator.addPublicField(ExpressionTypingServices.class); @@ -154,7 +154,7 @@ public class GenerateInjectors { } private static void generateTestInjector() throws IOException { - DependencyInjectorGenerator generator = new DependencyInjectorGenerator(false); + DependencyInjectorGenerator generator = new DependencyInjectorGenerator(); // Fields generator.addPublicField(DescriptorResolver.class); @@ -171,7 +171,7 @@ public class GenerateInjectors { } private static void generateInjectorForJavaSemanticServices() throws IOException { - DependencyInjectorGenerator generator = new DependencyInjectorGenerator(false); + DependencyInjectorGenerator generator = new DependencyInjectorGenerator(); // Fields generator.addPublicField(JavaSemanticServices.class); @@ -192,7 +192,7 @@ public class GenerateInjectors { } private static void generateInjectorForJvmCodegen() throws IOException { - DependencyInjectorGenerator generator = new DependencyInjectorGenerator(false); + DependencyInjectorGenerator generator = new DependencyInjectorGenerator(); // Parameters generator.addPublicParameter(JetTypeMapper.class); @@ -217,7 +217,7 @@ public class GenerateInjectors { } private static void generateInjectorForBodyResolve() throws IOException { - DependencyInjectorGenerator generator = new DependencyInjectorGenerator(false); + DependencyInjectorGenerator generator = new DependencyInjectorGenerator(); // Fields generator.addPublicField(BodyResolver.class); diff --git a/injector-generator/src/org/jetbrains/jet/di/DependencyInjectorGenerator.java b/injector-generator/src/org/jetbrains/jet/di/DependencyInjectorGenerator.java index dcbb383c09c..051f0c38220 100644 --- a/injector-generator/src/org/jetbrains/jet/di/DependencyInjectorGenerator.java +++ b/injector-generator/src/org/jetbrains/jet/di/DependencyInjectorGenerator.java @@ -36,9 +36,7 @@ import static org.jetbrains.jet.di.InjectorGeneratorUtil.var; public class DependencyInjectorGenerator { public static final String INDENT_STEP = " "; - private static final String LOCK_NAME = "__lock__"; - private final boolean lazy; private final Set fields = Sets.newLinkedHashSet(); private final Set parameters = Sets.newLinkedHashSet(); private final Set factoryMethods = Sets.newLinkedHashSet(); @@ -50,8 +48,7 @@ public class DependencyInjectorGenerator { private final List> implementsList = Lists.newArrayList(); private final Collection> imports = Sets.newHashSet(); - public DependencyInjectorGenerator(boolean lazy) { - this.lazy = lazy; + public DependencyInjectorGenerator() { } public void generate(String targetSourceRoot, String injectorPackageName, String injectorClassName, Class generatorClass) @@ -95,9 +92,6 @@ public class DependencyInjectorGenerator { out.print("public class " + injectorClassName); generateImplementsList(out); out.println(" {"); -// Needed for double-checked locking -// out.println(); -// out.println(" private static final Object " + LOCK_NAME + " = new Object();"); out.println(); generateFields(out); out.println(); @@ -110,9 +104,6 @@ public class DependencyInjectorGenerator { out.println(); generateFactoryMethods(out); } -// Needed to fix double-checked locking -// out.println(); -// generateMakeFunction(out); out.println("}"); // class fileOutputStream.close(); @@ -322,15 +313,8 @@ public class DependencyInjectorGenerator { } p.pushIndent(); - if (lazy) { - // Remember parameters - for (Parameter parameter : parameters) { - p.println("this.", parameter.getField().getName(), " = ", parameter.getName(), ";"); - } - } - else { - InjectionLogicGenerator.FIELDS.generate(p, fields); - } + + InjectionLogicGenerator.FIELDS.generate(p, fields); p.popIndent(); p.println("}"); @@ -356,47 +340,11 @@ public class DependencyInjectorGenerator { private void generateGetters(PrintStream out) { String indent0 = " "; String indent1 = indent0 + INDENT_STEP; - String indent2 = indent1 + INDENT_STEP; - String indent3 = indent2 + INDENT_STEP; - String indent4 = indent3 + INDENT_STEP; for (Field field : fields) { - if (!lazy && !field.isPublic()) continue; + if (!field.isPublic()) continue; String visibility = field.isPublic() ? "public" : "private"; out.println(indent0 + visibility + " " + field.getTypeName() + " " + field.getGetterName() + "() {"); - if (lazy && !backsParameter.contains(field)) { - Expression initialization = field.getInitialization(); - assert initialization instanceof InstantiateType : field; - - // Double-checked locking - out.println(indent1 + "if (this." + field.getName() + " == null) {"); - - out.println(indent2 + "this." + field.getName() + " = " + initialization + ";"); - // Invoke setters - for (SetterDependency dependency : field.getDependencies()) { - out.println(indent2 + "this." + field.getName() + "." + dependency.getSetterName() + "(" + dependency.getDependency().getGetterName() + "());"); - } - - out.println(indent1 + "}"); // Outer if - - /* - // Double-checked locking - out.println(indent1 + "if (this." + field.getName() + " == null) {"); - out.println(indent2 + "synchronized (" + LOCK_NAME + ") {"); - out.println(indent3 + "if (this." + field.getName() + " == null) {"); - - out.println(indent4 + "this." + field.getName() + " = " + initialization + ";"); - // Invoke setters - for (SetterDependency dependency : field.getDependencies()) { - out.println(indent4 + "this." + field.getName() + "." + dependency.getSetterName() + "(" + dependency.getDependency().getGetterName() + "());"); - } - - out.println(indent3 + "}"); // Inner if - out.println(indent2 + "}"); // synchronized - out.println(indent1 + "}"); // Outer if - */ - } - out.println(indent1 + "return this." + field.getName() + ";"); out.println(indent0 + "}"); out.println(); @@ -456,18 +404,4 @@ public class DependencyInjectorGenerator { private String type(DiType type) { return type.getSimpleName(); } - - private void generateMakeFunction(PrintStream out) { - out.println(" private static T make(Class theClass) {"); - out.println(" try { "); - out.println(" return theClass.newInstance(); "); - out.println(" } "); - out.println(" catch (InstantiationException e) { "); - out.println(" throw new IllegalStateException(e); "); - out.println(" } "); - out.println(" catch (IllegalAccessException e) { "); - out.println(" throw new IllegalStateException(e); "); - out.println(" } "); - out.println(" } "); - } }