Skip to content

Commit 552e58b

Browse files
authored
Merge pull request #6 from ktown4u/feature/printWithInclusions
Feature/ 원하는 필드만 포함하는 printWithInclusions method 추가
2 parents 17d9dc2 + 49f4ece commit 552e58b

File tree

2 files changed

+24
-0
lines changed

2 files changed

+24
-0
lines changed

lib/src/main/java/com/ktown4u/utils/YamlPrinter.java

+15
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
import com.fasterxml.jackson.databind.ser.impl.SimpleFilterProvider;
1313
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
1414

15+
import java.util.Arrays;
16+
1517
public enum YamlPrinter {
1618
;
1719
private static final ObjectMapper mapper;
@@ -38,6 +40,19 @@ public static String printWithExclusions(final Object object, final String... fi
3840
return writeValueAsString(writer, object);
3941
}
4042

43+
public static String printWithInclusions(final Object object, final String... fieldPathToInclude) {
44+
final SimpleBeanPropertyFilter filter = SimpleBeanPropertyFilter.filterOutAllExcept(splitAndFlatten(fieldPathToInclude));
45+
final FilterProvider filterProvider = new SimpleFilterProvider().addFilter("PropertyFilter", filter);
46+
final ObjectWriter writer = mapper.writer(filterProvider);
47+
return writeValueAsString(writer, object);
48+
}
49+
50+
private static String[] splitAndFlatten(final String[] fieldNamesToInclude) {
51+
return Arrays.stream(fieldNamesToInclude)
52+
.flatMap(s -> Arrays.stream(s.split("\\.")))
53+
.toArray(String[]::new);
54+
}
55+
4156
private static String writeValueAsString(final ObjectWriter writer, final Object object) {
4257
try {
4358
return writer.writeValueAsString(object);

lib/src/test/java/com/ktown4u/utils/YamlPrinterTest.java

+9
Original file line numberDiff line numberDiff line change
@@ -48,4 +48,13 @@ void printWithExclusions() {
4848

4949
Approvals.verify(result);
5050
}
51+
52+
@Test
53+
@DisplayName("printWithInclusions - 원하는 필드만 포함하고 YAML 포멧 문자열로 반환.")
54+
void printWithInclusions() {
55+
final String[] filedPathToInclude = {"lineItems.product.description", "lineItems.product.price"};
56+
final String result = YamlPrinter.printWithInclusions(order, filedPathToInclude);
57+
58+
Approvals.verify(result);
59+
}
5160
}

0 commit comments

Comments
 (0)