Skip to content

Commit 818a9f3

Browse files
authored
Merge pull request #330 from avaje/feature/tidy-factory-nullable
Tidy code generation for conditions on factory
2 parents d6196b0 + 1f3deae commit 818a9f3

File tree

3 files changed

+17
-7
lines changed

3 files changed

+17
-7
lines changed

inject-generator/src/main/java/io/avaje/inject/generator/BeanReader.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -399,4 +399,8 @@ void writeConstructorInit(Append writer) {
399399
writer.append(");").eol();
400400
}
401401
}
402+
403+
boolean hasConditions() {
404+
return !conditions.isEmpty();
405+
}
402406
}

inject-generator/src/main/java/io/avaje/inject/generator/MethodReader.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -135,9 +135,9 @@ MetaData createMeta() {
135135
.map(t -> "con:" + t)
136136
.forEach(dependsOn::add);
137137
conditions.missingTypes.stream()
138-
.filter(t -> !t.equals(returnTypeRaw))
139-
.map(t -> "con:" + t)
140-
.forEach(dependsOn::add);
138+
.filter(t -> !t.equals(returnTypeRaw))
139+
.map(t -> "con:" + t)
140+
.forEach(dependsOn::add);
141141
for (final MethodParam param : params) {
142142
dependsOn.add(GenericType.trimWildcard(param.paramType));
143143
}
@@ -152,8 +152,13 @@ private String fullBuildMethod() {
152152
return factoryType + Constants.DI + ".build_" + element.getSimpleName().toString();
153153
}
154154

155-
String builderGetFactory() {
156-
return String.format(" var factory = builder.getNullable(%s.class); %n if (factory == null) return;", factoryShortName);
155+
void builderGetFactory(Append writer, boolean factoryHasConditions) {
156+
if (factoryHasConditions) {
157+
writer.append(" var factory = builder.getNullable(%s.class);", factoryShortName).eol();
158+
writer.append(" if (factory == null) return;").eol();
159+
} else {
160+
writer.append(" var factory = builder.get(%s.class);", factoryShortName).eol();
161+
}
157162
}
158163

159164
void builderBuildBean(Append writer) {

inject-generator/src/main/java/io/avaje/inject/generator/SimpleBeanWriter.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ private void writeFactoryBeanMethod(MethodReader method) {
102102
writer.append(" public static void build_%s(%s builder) {", method.name(), beanReader.builderType()).eol();
103103
method.buildConditional(writer);
104104
method.buildAddFor(writer);
105-
writer.append(method.builderGetFactory()).eol();
105+
method.builderGetFactory(writer, beanReader.hasConditions());
106106
if (method.isProtoType()) {
107107
method.builderAddBeanProvider(writer);
108108
} else if (method.isUseProviderForSecondary()) {
@@ -160,7 +160,8 @@ private void writeBuildMethodStart() {
160160
writer.append(" public static void build(%s builder) {", beanReader.builderType()).eol();
161161
}
162162

163-
String indent = " ";
163+
private String indent = " ";
164+
164165
private void writeCreateBean(MethodReader constructor) {
165166
writer.append(indent).append(" var bean = new %s(", shortName);
166167
// add constructor dependencies

0 commit comments

Comments
 (0)