BAEL-3097 new example added
This commit is contained in:
parent
91d071c43e
commit
d93e68d4df
@ -5,6 +5,7 @@ import lombok.Setter;
|
|||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
public class UrlDTO {
|
public class UserBodyImperialValuesDTO {
|
||||||
private String address;
|
private int inch;
|
||||||
|
private int pound;
|
||||||
}
|
}
|
@ -5,6 +5,7 @@ import lombok.Setter;
|
|||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
public class UrlObject {
|
public class UserBodyValues {
|
||||||
private String address;
|
private double kilogram;
|
||||||
|
private double centimeter;
|
||||||
}
|
}
|
@ -10,4 +10,4 @@ import java.lang.annotation.Target;
|
|||||||
@Qualifier
|
@Qualifier
|
||||||
@Target(ElementType.METHOD)
|
@Target(ElementType.METHOD)
|
||||||
@Retention(RetentionPolicy.CLASS)
|
@Retention(RetentionPolicy.CLASS)
|
||||||
public @interface ProtocolRemover {}
|
public @interface PoundToKilogramMapper {}
|
@ -1,39 +0,0 @@
|
|||||||
package com.baeldung.mapper;
|
|
||||||
|
|
||||||
import com.baeldung.dto.UrlDTO;
|
|
||||||
import com.baeldung.entity.UrlObject;
|
|
||||||
import org.mapstruct.Mapper;
|
|
||||||
import org.mapstruct.Mapping;
|
|
||||||
import org.mapstruct.Named;
|
|
||||||
import org.mapstruct.factory.Mappers;
|
|
||||||
|
|
||||||
import java.net.URI;
|
|
||||||
import java.net.URISyntaxException;
|
|
||||||
import java.net.URL;
|
|
||||||
|
|
||||||
@Mapper
|
|
||||||
public interface UrlMapper {
|
|
||||||
|
|
||||||
UrlMapper INSTANCE = Mappers.getMapper(UrlMapper.class);
|
|
||||||
|
|
||||||
|
|
||||||
@Mapping(source = "address", target = "address", qualifiedByName = "protocolRemover")
|
|
||||||
public UrlObject urlObjectNamedMapper(UrlDTO urlDTO);
|
|
||||||
|
|
||||||
@Mapping(source = "address", target = "address", qualifiedBy = ProtocolRemover.class)
|
|
||||||
public UrlObject urlObjectAnnotatedMapper(UrlDTO urlDTO);
|
|
||||||
|
|
||||||
@Named("protocolRemover")
|
|
||||||
public static String protocolRemoverWithCustomMethod(String address) throws URISyntaxException {
|
|
||||||
URI uri = new URI(address);
|
|
||||||
|
|
||||||
return uri.getHost() + uri.getPath();
|
|
||||||
}
|
|
||||||
|
|
||||||
@ProtocolRemover
|
|
||||||
public static String protocolRemoverMethod(String address) throws URISyntaxException {
|
|
||||||
URI uri = new URI(address);
|
|
||||||
|
|
||||||
return uri.getHost() + uri.getPath();
|
|
||||||
}
|
|
||||||
}
|
|
@ -0,0 +1,28 @@
|
|||||||
|
package com.baeldung.mapper;
|
||||||
|
|
||||||
|
import com.baeldung.dto.UserBodyImperialValuesDTO;
|
||||||
|
import com.baeldung.entity.UserBodyValues;
|
||||||
|
import org.mapstruct.Mapper;
|
||||||
|
import org.mapstruct.Mapping;
|
||||||
|
import org.mapstruct.Named;
|
||||||
|
import org.mapstruct.factory.Mappers;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
public interface UserBodyValuesMapper {
|
||||||
|
|
||||||
|
UserBodyValuesMapper INSTANCE = Mappers.getMapper(UserBodyValuesMapper.class);
|
||||||
|
|
||||||
|
@Mapping(source = "pound", target = "kilogram", qualifiedBy = PoundToKilogramMapper.class)
|
||||||
|
@Mapping(source = "inch", target = "centimeter", qualifiedByName = "inchToCentimeter")
|
||||||
|
public UserBodyValues userBodyValuesMapper(UserBodyImperialValuesDTO dto);
|
||||||
|
|
||||||
|
@Named("inchToCentimeter")
|
||||||
|
public static double inchToCentimeter(int inch) {
|
||||||
|
return inch * 2.54;
|
||||||
|
}
|
||||||
|
|
||||||
|
@PoundToKilogramMapper
|
||||||
|
public static double poundToKilogram(int pound) {
|
||||||
|
return pound * 0.4535;
|
||||||
|
}
|
||||||
|
}
|
@ -1,30 +0,0 @@
|
|||||||
package com.baeldung.mapper;
|
|
||||||
|
|
||||||
import com.baeldung.dto.UrlDTO;
|
|
||||||
import com.baeldung.entity.UrlObject;
|
|
||||||
import org.junit.Test;
|
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
|
||||||
|
|
||||||
public class UrlMapperUnitTest {
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void givenDomain_whenCallNamedMapper_thenReturnDomainWithoutProtocol() {
|
|
||||||
UrlDTO dto = new UrlDTO();
|
|
||||||
dto.setAddress("http://www.baeldung.com/mapstruct");
|
|
||||||
|
|
||||||
UrlObject urlObject = UrlMapper.INSTANCE.urlObjectNamedMapper(dto);
|
|
||||||
|
|
||||||
assertEquals(urlObject.getAddress(), "www.baeldung.com/mapstruct");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void givenAddress_whenCallAnnotatedMapper_thenReturnDomainWithoutProtocol() {
|
|
||||||
UrlDTO dto = new UrlDTO();
|
|
||||||
dto.setAddress("http://www.baeldung.com/customMappers");
|
|
||||||
|
|
||||||
UrlObject urlObject = UrlMapper.INSTANCE.urlObjectAnnotatedMapper(dto);
|
|
||||||
|
|
||||||
assertEquals(urlObject.getAddress(), "www.baeldung.com/customMappers");
|
|
||||||
}
|
|
||||||
}
|
|
@ -0,0 +1,47 @@
|
|||||||
|
package com.baeldung.mapper;
|
||||||
|
|
||||||
|
import com.baeldung.dto.UserBodyImperialValuesDTO;
|
||||||
|
import com.baeldung.entity.UserBodyValues;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.junit.Assert.assertNotNull;
|
||||||
|
|
||||||
|
|
||||||
|
public class UserBodyValuesMapperUnitTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenUserBodyImperialValuesDTOToUserBodyValuesObject_whenMaps_thenCorrect() {
|
||||||
|
UserBodyImperialValuesDTO dto = new UserBodyImperialValuesDTO();
|
||||||
|
dto.setInch(10);
|
||||||
|
dto.setPound(100);
|
||||||
|
|
||||||
|
UserBodyValues obj = UserBodyValuesMapper.INSTANCE.userBodyValuesMapper(dto);
|
||||||
|
|
||||||
|
assertNotNull(obj);
|
||||||
|
assertEquals(25.4, obj.getCentimeter(), 0);
|
||||||
|
assertEquals(45.35, obj.getKilogram(), 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenUserBodyImperialValuesDTOWithInchToUserBodyValuesObject_whenMaps_thenCorrect() {
|
||||||
|
UserBodyImperialValuesDTO dto = new UserBodyImperialValuesDTO();
|
||||||
|
dto.setInch(10);
|
||||||
|
|
||||||
|
UserBodyValues obj = UserBodyValuesMapper.INSTANCE.userBodyValuesMapper(dto);
|
||||||
|
|
||||||
|
assertNotNull(obj);
|
||||||
|
assertEquals(25.4, obj.getCentimeter(), 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenUserBodyImperialValuesDTOWithPoundToUserBodyValuesObject_whenMaps_thenCorrect() {
|
||||||
|
UserBodyImperialValuesDTO dto = new UserBodyImperialValuesDTO();
|
||||||
|
dto.setPound(100);
|
||||||
|
|
||||||
|
UserBodyValues obj = UserBodyValuesMapper.INSTANCE.userBodyValuesMapper(dto);
|
||||||
|
|
||||||
|
assertNotNull(obj);
|
||||||
|
assertEquals(45.35, obj.getKilogram(), 0);
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user