Skip to content

Commit 0471110

Browse files
authored
Merge pull request #5 from jbock-java/4-dumb-constructor
ISSUES-4 dumb constructor
2 parents 30440c6 + 20a1e5d commit 0471110

File tree

1 file changed

+26
-15
lines changed

1 file changed

+26
-15
lines changed

compiler/src/main/java/io/jbock/simple/processor/writing/ComponentImpl.java

Lines changed: 26 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -53,22 +53,13 @@ TypeSpec generate() {
5353
TypeSpec.Builder spec = TypeSpec.classBuilder(component.generatedClass())
5454
.addModifiers(modifiers)
5555
.addSuperinterface(component.element().asType());
56-
MethodSpec.Builder constructor = MethodSpec.constructorBuilder().addModifiers(PRIVATE);
56+
MethodSpec constructor = generateConstructor();
5757
for (NamedBinding namedBinding : sorted.values()) {
58-
Binding b = namedBinding.binding();
59-
Key key = b.key();
60-
String name = namedBinding.name();
61-
if (namedBinding.isComponentRequest()) {
62-
FieldSpec field = FieldSpec.builder(key.typeName(), name, PRIVATE, FINAL).build();
63-
spec.addField(field);
64-
constructor.addStatement("this.$N = $L", field, b.invocation(names));
65-
} else if (!(b instanceof ParameterBinding)) {
66-
ParameterSpec param = names.apply(key);
67-
constructor.addStatement("$T $N = $L", b.key().typeName(), param, b.invocation(names));
68-
}
69-
if (b instanceof ParameterBinding) {
70-
constructor.addParameter(names.apply(key));
58+
if (!namedBinding.isComponentRequest()) {
59+
continue;
7160
}
61+
TypeName type = namedBinding.binding().key().typeName();
62+
spec.addField(FieldSpec.builder(type, namedBinding.name(), PRIVATE, FINAL).build());
7263
}
7364
for (DependencyRequest r : component.requests()) {
7465
MethodSpec.Builder method = MethodSpec.methodBuilder(r.requestingElement().getSimpleName().toString());
@@ -109,11 +100,31 @@ TypeSpec generate() {
109100
.addMember("comments", CodeBlock.of("$S", "https://github.com/jbock-java/simple-component"))
110101
.build());
111102
spec.addModifiers(FINAL);
112-
spec.addMethod(constructor.build());
103+
spec.addMethod(constructor);
113104
spec.addOriginatingElement(component.element());
114105
return spec.build();
115106
}
116107

108+
private MethodSpec generateConstructor() {
109+
MethodSpec.Builder constructor = MethodSpec.constructorBuilder().addModifiers(PRIVATE);
110+
for (NamedBinding namedBinding : sorted.values()) {
111+
Binding b = namedBinding.binding();
112+
Key key = b.key();
113+
String name = namedBinding.name();
114+
if (namedBinding.isComponentRequest()) {
115+
FieldSpec field = FieldSpec.builder(key.typeName(), name, PRIVATE, FINAL).build();
116+
constructor.addStatement("this.$N = $L", field, b.invocation(names));
117+
} else if (!(b instanceof ParameterBinding)) {
118+
ParameterSpec param = names.apply(key);
119+
constructor.addStatement("$T $N = $L", b.key().typeName(), param, b.invocation(names));
120+
}
121+
if (b instanceof ParameterBinding) {
122+
constructor.addParameter(names.apply(key));
123+
}
124+
}
125+
return constructor.build();
126+
}
127+
117128
private TypeSpec createFactoryImpl(FactoryElement factory) {
118129
Collection<ParameterBinding> parameterBindings = component.parameterBindings();
119130
TypeSpec.Builder spec = TypeSpec.classBuilder(factory.generatedClass());

0 commit comments

Comments
 (0)