Skip to content

Commit 55f69cc

Browse files
committed
Merge branch 'Adrodoc55-fix/142' into devel
2 parents cc97561 + d87c674 commit 55f69cc

File tree

5 files changed

+31
-59
lines changed

5 files changed

+31
-59
lines changed

src/main/java/net/karneim/pojobuilder/sourcegen/BuilderSourceGenerator.java

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -350,28 +350,30 @@ private void emitParameterAssignment(PropertyM prop, String parameterFieldName,
350350
writer.emitStatement("%s %s", compressedType, parameterFieldName);
351351
writer.beginControlFlow("if (!%s && %s != null)", prop.getIsSetFieldName(), builderFieldName);
352352
writer.emitStatement("%s = %s", parameterFieldName, callBuild);
353-
writer.nextControlFlow("else").emitStatement("%s = %s", parameterFieldName, valueField);
353+
writer.nextControlFlow("else");
354+
writer.emitStatement("%s = %s", parameterFieldName, valueField);
354355
writer.endControlFlow();
355356
} else {
356-
String defaultValue = "null";
357-
if (propertyType.isPrimitive()) {
358-
Class<?> type = ((PrimitiveTypeM) propertyType).getType();
359-
defaultValue = Defaults.defaultValueAsLiteral(type);
360-
}
361-
writer.emitStatement("%s %s = %s", compressedType, parameterFieldName, defaultValue);
362357
if (prop.isOptionalProperty(optional)) {
363-
writer.beginControlFlow("if (%s == null || %s.isPresent())", valueField, valueField);
364-
writer.emitStatement("%s = %s", parameterFieldName, valueField);
358+
writer.emitStatement("%s %s = %s", compressedType, parameterFieldName, valueField);
365359
if (hasBuilderProperties) {
366-
writer.nextControlFlow("else if (%s != null)", builderFieldName);
360+
writer.beginControlFlow("if (%s != null && !%s.isPresent() && %s != null)", valueField, valueField,
361+
builderFieldName);
367362
String basicType = writer.compressType(prop.getBasicPropertyType(optional).getGenericType());
368363
String tempFieldName = "builtValue";
369364
writer.emitStatement("%s %s = %s", basicType, tempFieldName, callBuild);
370365
writer.beginControlFlow("if (%s != null)", tempFieldName);
371366
writer.emitStatement("%s = %s", parameterFieldName, optional.of(tempFieldName));
372367
writer.endControlFlow();
368+
writer.endControlFlow();
373369
}
374370
} else {
371+
String defaultValue = "null";
372+
if (propertyType.isPrimitive()) {
373+
Class<?> type = ((PrimitiveTypeM) propertyType).getType();
374+
defaultValue = Defaults.defaultValueAsLiteral(type);
375+
}
376+
writer.emitStatement("%s %s = %s", compressedType, parameterFieldName, defaultValue);
375377
boolean extraControlFlow = false;
376378
if (propertyType.isPrimitive()) {
377379
writer.beginControlFlow("if (%s.isPresent())", valueField);
@@ -390,8 +392,8 @@ private void emitParameterAssignment(PropertyM prop, String parameterFieldName,
390392
if (extraControlFlow) {
391393
writer.endControlFlow();
392394
}
395+
writer.endControlFlow();
393396
}
394-
writer.endControlFlow();
395397
}
396398
}
397399

src/testdata/java/net/karneim/pojobuilder/processor/with/optionals/PojoWithGuavaOptionalOptionalConstructorBuilder.java

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -135,18 +135,9 @@ public PojoWithGuavaOptionalOptionalConstructorBuilder but() {
135135
*/
136136
public PojoWithGuavaOptionalOptionalConstructor build() {
137137
try {
138-
Optional<Integer> _boxedInt = null;
139-
if (value$boxedInt$com$google$common$base$Optional == null || value$boxedInt$com$google$common$base$Optional.isPresent()) {
140-
_boxedInt = value$boxedInt$com$google$common$base$Optional;
141-
}
142-
Optional<int[]> _array = null;
143-
if (value$array$com$google$common$base$Optional == null || value$array$com$google$common$base$Optional.isPresent()) {
144-
_array = value$array$com$google$common$base$Optional;
145-
}
146-
Optional<List<Integer>> _list = null;
147-
if (value$list$com$google$common$base$Optional == null || value$list$com$google$common$base$Optional.isPresent()) {
148-
_list = value$list$com$google$common$base$Optional;
149-
}
138+
Optional<Integer> _boxedInt = value$boxedInt$com$google$common$base$Optional;
139+
Optional<int[]> _array = value$array$com$google$common$base$Optional;
140+
Optional<List<Integer>> _list = value$list$com$google$common$base$Optional;
150141
PojoWithGuavaOptionalOptionalConstructor result = new PojoWithGuavaOptionalOptionalConstructor(_boxedInt, _array, _list);
151142
return result;
152143
} catch (RuntimeException ex) {

src/testdata/java/net/karneim/pojobuilder/processor/with/optionals/PojoWithGuavaOptionalOptionalConstructorWithBuilderPropertiesBuilder.java

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -176,28 +176,22 @@ public PojoWithGuavaOptionalOptionalConstructorWithBuilderPropertiesBuilder but(
176176
@Override
177177
public PojoWithGuavaOptionalOptionalConstructorWithBuilderProperties build() {
178178
try {
179-
Optional<Integer> _boxedInt = null;
180-
if (value$boxedInt$com$google$common$base$Optional == null || value$boxedInt$com$google$common$base$Optional.isPresent()) {
181-
_boxedInt = value$boxedInt$com$google$common$base$Optional;
182-
} else if (builder$boxedInt$com$google$common$base$Optional != null) {
179+
Optional<Integer> _boxedInt = value$boxedInt$com$google$common$base$Optional;
180+
if (value$boxedInt$com$google$common$base$Optional != null && !value$boxedInt$com$google$common$base$Optional.isPresent() && builder$boxedInt$com$google$common$base$Optional != null) {
183181
Integer builtValue = builder$boxedInt$com$google$common$base$Optional.build();
184182
if (builtValue != null) {
185183
_boxedInt = Optional.of(builtValue);
186184
}
187185
}
188-
Optional<int[]> _array = null;
189-
if (value$array$com$google$common$base$Optional == null || value$array$com$google$common$base$Optional.isPresent()) {
190-
_array = value$array$com$google$common$base$Optional;
191-
} else if (builder$array$com$google$common$base$Optional != null) {
186+
Optional<int[]> _array = value$array$com$google$common$base$Optional;
187+
if (value$array$com$google$common$base$Optional != null && !value$array$com$google$common$base$Optional.isPresent() && builder$array$com$google$common$base$Optional != null) {
192188
int[] builtValue = builder$array$com$google$common$base$Optional.build();
193189
if (builtValue != null) {
194190
_array = Optional.of(builtValue);
195191
}
196192
}
197-
Optional<List<Integer>> _list = null;
198-
if (value$list$com$google$common$base$Optional == null || value$list$com$google$common$base$Optional.isPresent()) {
199-
_list = value$list$com$google$common$base$Optional;
200-
} else if (builder$list$com$google$common$base$Optional != null) {
193+
Optional<List<Integer>> _list = value$list$com$google$common$base$Optional;
194+
if (value$list$com$google$common$base$Optional != null && !value$list$com$google$common$base$Optional.isPresent() && builder$list$com$google$common$base$Optional != null) {
201195
List<Integer> builtValue = builder$list$com$google$common$base$Optional.build();
202196
if (builtValue != null) {
203197
_list = Optional.of(builtValue);

src/testdata/java/net/karneim/pojobuilder/processor/with/optionals/PojoWithGuavaOptionalOptionalFactoryBuilder.java

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -135,18 +135,9 @@ public PojoWithGuavaOptionalOptionalFactoryBuilder but() {
135135
*/
136136
public PojoWithGuavaOptionalOptionalFactory build() {
137137
try {
138-
Optional<Integer> _boxedInt = null;
139-
if (value$boxedInt$com$google$common$base$Optional == null || value$boxedInt$com$google$common$base$Optional.isPresent()) {
140-
_boxedInt = value$boxedInt$com$google$common$base$Optional;
141-
}
142-
Optional<int[]> _array = null;
143-
if (value$array$com$google$common$base$Optional == null || value$array$com$google$common$base$Optional.isPresent()) {
144-
_array = value$array$com$google$common$base$Optional;
145-
}
146-
Optional<List<Integer>> _list = null;
147-
if (value$list$com$google$common$base$Optional == null || value$list$com$google$common$base$Optional.isPresent()) {
148-
_list = value$list$com$google$common$base$Optional;
149-
}
138+
Optional<Integer> _boxedInt = value$boxedInt$com$google$common$base$Optional;
139+
Optional<int[]> _array = value$array$com$google$common$base$Optional;
140+
Optional<List<Integer>> _list = value$list$com$google$common$base$Optional;
150141
PojoWithGuavaOptionalOptionalFactory result = PojoWithGuavaOptionalOptionalFactory.create(_boxedInt, _array, _list);
151142
return result;
152143
} catch (RuntimeException ex) {

src/testdata/java/net/karneim/pojobuilder/processor/with/optionals/PojoWithGuavaOptionalOptionalFactoryWithBuilderPropertiesBuilder.java

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -176,28 +176,22 @@ public PojoWithGuavaOptionalOptionalFactoryWithBuilderPropertiesBuilder but() {
176176
@Override
177177
public PojoWithGuavaOptionalOptionalFactoryWithBuilderProperties build() {
178178
try {
179-
Optional<Integer> _boxedInt = null;
180-
if (value$boxedInt$com$google$common$base$Optional == null || value$boxedInt$com$google$common$base$Optional.isPresent()) {
181-
_boxedInt = value$boxedInt$com$google$common$base$Optional;
182-
} else if (builder$boxedInt$com$google$common$base$Optional != null) {
179+
Optional<Integer> _boxedInt = value$boxedInt$com$google$common$base$Optional;
180+
if (value$boxedInt$com$google$common$base$Optional != null && !value$boxedInt$com$google$common$base$Optional.isPresent() && builder$boxedInt$com$google$common$base$Optional != null) {
183181
Integer builtValue = builder$boxedInt$com$google$common$base$Optional.build();
184182
if (builtValue != null) {
185183
_boxedInt = Optional.of(builtValue);
186184
}
187185
}
188-
Optional<int[]> _array = null;
189-
if (value$array$com$google$common$base$Optional == null || value$array$com$google$common$base$Optional.isPresent()) {
190-
_array = value$array$com$google$common$base$Optional;
191-
} else if (builder$array$com$google$common$base$Optional != null) {
186+
Optional<int[]> _array = value$array$com$google$common$base$Optional;
187+
if (value$array$com$google$common$base$Optional != null && !value$array$com$google$common$base$Optional.isPresent() && builder$array$com$google$common$base$Optional != null) {
192188
int[] builtValue = builder$array$com$google$common$base$Optional.build();
193189
if (builtValue != null) {
194190
_array = Optional.of(builtValue);
195191
}
196192
}
197-
Optional<List<Integer>> _list = null;
198-
if (value$list$com$google$common$base$Optional == null || value$list$com$google$common$base$Optional.isPresent()) {
199-
_list = value$list$com$google$common$base$Optional;
200-
} else if (builder$list$com$google$common$base$Optional != null) {
193+
Optional<List<Integer>> _list = value$list$com$google$common$base$Optional;
194+
if (value$list$com$google$common$base$Optional != null && !value$list$com$google$common$base$Optional.isPresent() && builder$list$com$google$common$base$Optional != null) {
201195
List<Integer> builtValue = builder$list$com$google$common$base$Optional.build();
202196
if (builtValue != null) {
203197
_list = Optional.of(builtValue);

0 commit comments

Comments
 (0)