51 lines
2.0 KiB
Plaintext
51 lines
2.0 KiB
Plaintext
# Null handling: IGNORE vs the default on a patch, and RETURN_DEFAULT on whole objects and collections
|
|
|
|
|
|
--- patch(): nullValuePropertyMappingStrategy = IGNORE, applied with a patch whose components are all null ---
|
|
before: [email protected], nickname=ash, roles=[USER], address=12 Park Road/Pune/411001
|
|
after : [email protected], nickname=ash, roles=[USER], address=12 Park Road/Pune/411001
|
|
|
|
--- replace(): the default strategy (SET_TO_NULL), same all-null patch ---
|
|
before: [email protected], nickname=ash, roles=[USER], address=12 Park Road/Pune/411001
|
|
after : email=null, nickname=null, roles=null, address=null
|
|
|
|
--- whole objects and collections: OrderMapper (default) vs LenientOrderMapper (RETURN_DEFAULT) ---
|
|
strict.toDto(null) : null
|
|
lenient.toDto(null) : OrderDto[id=null, status=null, placedAt=null, lines=null, total=null]
|
|
strict order, lines = null : lines=null
|
|
lenient order, lines = null : lines=[]
|
|
strict.toDtos(null) : null
|
|
|
|
--- the generated patch() (IGNORE): every assignment is guarded ---
|
|
public void patch(CustomerPatch patch, Customer customer) {
|
|
if ( patch == null ) {
|
|
return;
|
|
}
|
|
|
|
if ( patch.email() != null ) {
|
|
customer.setEmail( patch.email() );
|
|
}
|
|
if ( patch.nickname() != null ) {
|
|
customer.setNickname( patch.nickname() );
|
|
}
|
|
if ( patch.address() != null ) {
|
|
if ( customer.getAddress() == null ) {
|
|
customer.setAddress( new Address() );
|
|
}
|
|
addressMapper.update( patch.address(), customer.getAddress() );
|
|
}
|
|
if ( customer.getRoles() != null ) {
|
|
Set<String> set = patch.roles();
|
|
if ( set != null ) {
|
|
customer.getRoles().clear();
|
|
customer.getRoles().addAll( set );
|
|
}
|
|
}
|
|
else {
|
|
Set<String> set = patch.roles();
|
|
if ( set != null ) {
|
|
customer.setRoles( new LinkedHashSet<String>( set ) );
|
|
}
|
|
}
|
|
}
|