Allow components stream method to work with null fields (#85)
Co-authored-by: Madis Parn <madis.parn@topia.com>
This commit is contained in:
@@ -237,7 +237,6 @@ class InternalRecordBuilderProcessor {
|
|||||||
codeBlockBuilder.add(";$]");
|
codeBlockBuilder.add(";$]");
|
||||||
|
|
||||||
var methodName = getWithMethodName(component, metaData.withClassMethodPrefix());
|
var methodName = getWithMethodName(component, metaData.withClassMethodPrefix());
|
||||||
var singleItemsMetaData = collectionBuilderUtils.singleItemsMetaData(component, STANDARD_FOR_SETTER);
|
|
||||||
var parameterSpecBuilder = ParameterSpec.builder(component.typeName(), component.name());
|
var parameterSpecBuilder = ParameterSpec.builder(component.typeName(), component.name());
|
||||||
addConstructorAnnotations(component, parameterSpecBuilder);
|
addConstructorAnnotations(component, parameterSpecBuilder);
|
||||||
var methodSpec = MethodSpec.methodBuilder(methodName)
|
var methodSpec = MethodSpec.methodBuilder(methodName)
|
||||||
@@ -598,8 +597,8 @@ class InternalRecordBuilderProcessor {
|
|||||||
Adds a static method that converts a record instance into a stream of its component parts
|
Adds a static method that converts a record instance into a stream of its component parts
|
||||||
|
|
||||||
public static Stream<Map.Entry<String, Object>> stream(MyRecord record) {
|
public static Stream<Map.Entry<String, Object>> stream(MyRecord record) {
|
||||||
return Stream.of(Map.entry("p1", record.p1()),
|
return Stream.of(new AbstractMap.SimpleImmutableEntry<>("p1", record.p1()),
|
||||||
Map.entry("p2", record.p2()));
|
new AbstractMap.SimpleImmutableEntry<>("p2", record.p2()));
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
var codeBuilder = CodeBlock.builder().add("return $T.of(", Stream.class);
|
var codeBuilder = CodeBlock.builder().add("return $T.of(", Stream.class);
|
||||||
@@ -608,7 +607,7 @@ class InternalRecordBuilderProcessor {
|
|||||||
codeBuilder.add(",\n ");
|
codeBuilder.add(",\n ");
|
||||||
}
|
}
|
||||||
var name = recordComponents.get(index).name();
|
var name = recordComponents.get(index).name();
|
||||||
codeBuilder.add("$T.entry($S, record.$L())", Map.class, name, name);
|
codeBuilder.add("new $T<>($S, record.$L())", AbstractMap.SimpleImmutableEntry.class, name, name);
|
||||||
});
|
});
|
||||||
codeBuilder.add(")");
|
codeBuilder.add(")");
|
||||||
var mapEntryTypeVariables = ParameterizedTypeName.get(Map.Entry.class, String.class, Object.class);
|
var mapEntryTypeVariables = ParameterizedTypeName.get(Map.Entry.class, String.class, Object.class);
|
||||||
|
|||||||
@@ -15,6 +15,9 @@
|
|||||||
*/
|
*/
|
||||||
package io.soabase.recordbuilder.test;
|
package io.soabase.recordbuilder.test;
|
||||||
|
|
||||||
|
import java.util.AbstractMap.SimpleImmutableEntry;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import org.junit.jupiter.api.Assertions;
|
import org.junit.jupiter.api.Assertions;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
@@ -48,4 +51,28 @@ public class TestRecordInterface
|
|||||||
Assertions.assertEquals(generic.i(), 101);
|
Assertions.assertEquals(generic.i(), 101);
|
||||||
Assertions.assertEquals(generic.s(), now);
|
Assertions.assertEquals(generic.s(), now);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testBuilderStreamWithValues()
|
||||||
|
{
|
||||||
|
var stream = SimpleRecordBuilder.stream(SimpleRecordBuilder.builder()
|
||||||
|
.i(19)
|
||||||
|
.s("value")
|
||||||
|
.build())
|
||||||
|
.toList();
|
||||||
|
Assertions.assertEquals(stream, List.of(
|
||||||
|
Map.entry("i", 19),
|
||||||
|
Map.entry("s", "value")));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testBuilderStreamWithNulls()
|
||||||
|
{
|
||||||
|
var stream = SimpleRecordBuilder.stream(SimpleRecordBuilder.builder()
|
||||||
|
.build())
|
||||||
|
.toList();
|
||||||
|
Assertions.assertEquals(stream, List.of(
|
||||||
|
new SimpleImmutableEntry<>("i", 0),
|
||||||
|
new SimpleImmutableEntry<>("s", null)));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user