Merge pull request #14888 from balasr21/BAEL-7032-MapStruct
BAEL-7032: Improvement to conditional mapping by using @Condition
This commit is contained in:
commit
c3bcd6ec1e
|
@ -11,6 +11,8 @@ public class LicenseDto {
|
|||
|
||||
private LocalDateTime endDate;
|
||||
|
||||
private String licenseType;
|
||||
|
||||
public UUID getId() {
|
||||
return id;
|
||||
}
|
||||
|
@ -35,4 +37,12 @@ public class LicenseDto {
|
|||
this.endDate = endDate;
|
||||
}
|
||||
|
||||
public String getLicenseType() {
|
||||
return licenseType;
|
||||
}
|
||||
|
||||
public void setLicenseType(String licenseType) {
|
||||
this.licenseType = licenseType;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@ import java.time.OffsetDateTime;
|
|||
import java.time.ZoneOffset;
|
||||
|
||||
import org.mapstruct.AfterMapping;
|
||||
import org.mapstruct.Condition;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.Mapping;
|
||||
import org.mapstruct.MappingTarget;
|
||||
|
@ -40,4 +41,13 @@ public interface LicenseMapper {
|
|||
.toDays() <= 14;
|
||||
}
|
||||
|
||||
}
|
||||
@Condition
|
||||
default boolean mapsToExpectedLicenseType(String licenseType) {
|
||||
try {
|
||||
return licenseType != null && License.LicenseType.valueOf(licenseType) != null;
|
||||
} catch (IllegalArgumentException e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -3,7 +3,6 @@ package com.baeldung.expression.model;
|
|||
import java.time.OffsetDateTime;
|
||||
import java.util.UUID;
|
||||
|
||||
|
||||
public class License {
|
||||
|
||||
private UUID id;
|
||||
|
@ -16,6 +15,8 @@ public class License {
|
|||
|
||||
private boolean renewalRequired;
|
||||
|
||||
private LicenseType licenseType;
|
||||
|
||||
public UUID getId() {
|
||||
return id;
|
||||
}
|
||||
|
@ -55,4 +56,16 @@ public class License {
|
|||
public void setRenewalRequired(boolean renewalRequired) {
|
||||
this.renewalRequired = renewalRequired;
|
||||
}
|
||||
}
|
||||
|
||||
public enum LicenseType {
|
||||
INDIVIDUAL, FAMILY
|
||||
}
|
||||
|
||||
public LicenseType getLicenseType() {
|
||||
return licenseType;
|
||||
}
|
||||
|
||||
public void setLicenseType(LicenseType licenseType) {
|
||||
this.licenseType = licenseType;
|
||||
}
|
||||
}
|
|
@ -6,6 +6,7 @@ import java.time.LocalDate;
|
|||
import java.time.LocalDateTime;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
|
||||
|
@ -74,4 +75,31 @@ class LicenseMapperUnitTest {
|
|||
assertThat(license.getId()).isSameAs(id);
|
||||
}
|
||||
|
||||
@Test
|
||||
void givenLicenseDtoWithoutLicenseTypeString_whenMapperMethodIsInvoked_thenLicenseShouldBePopulatedWithoutLicenseType() {
|
||||
LicenseDto licenseDto = new LicenseDto();
|
||||
License license = licenseMapper.toLicense(licenseDto);
|
||||
assertThat(license).isNotNull();
|
||||
Assertions.assertNull(license.getLicenseType());
|
||||
}
|
||||
|
||||
@Test
|
||||
void givenLicenseDtoWithInvalidLicenseTypeString_whenMapperMethodIsInvoked_thenLicenseShouldBePopulatedWithoutLicenseType() {
|
||||
LicenseDto licenseDto = new LicenseDto();
|
||||
licenseDto.setLicenseType("invalid_license_type");
|
||||
License license = licenseMapper.toLicense(licenseDto);
|
||||
assertThat(license).isNotNull();
|
||||
Assertions.assertNull(license.getLicenseType());
|
||||
}
|
||||
|
||||
@Test
|
||||
void givenLicenseDtoWithValidLicenseTypeString_whenMapperMethodIsInvoked_thenLicenseShouldBePopulatedWithMatchingLicenseType() {
|
||||
LicenseDto licenseDto = new LicenseDto();
|
||||
licenseDto.setLicenseType("INDIVIDUAL");
|
||||
License license = licenseMapper.toLicense(licenseDto);
|
||||
assertThat(license).isNotNull();
|
||||
Assertions.assertNotNull(license.getLicenseType());
|
||||
assertThat(license.getLicenseType()).isEqualTo(License.LicenseType.INDIVIDUAL);
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue