BAEL-3097 init for mapstruct custom mapping method
This commit is contained in:
parent
fc822dec7d
commit
0b7ceebb66
|
@ -0,0 +1,11 @@
|
|||
package com.baeldung.dto;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
public class UrlDTO {
|
||||
private String url;
|
||||
private String subUrl;
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
package com.baeldung.entity;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
public class UrlObject {
|
||||
private String url;
|
||||
private String subUrl;
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
package com.baeldung.mapper;
|
||||
|
||||
import org.mapstruct.Qualifier;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
@Qualifier
|
||||
@Target(ElementType.METHOD)
|
||||
@Retention(RetentionPolicy.CLASS)
|
||||
public @interface SuffixRemover {}
|
|
@ -0,0 +1,34 @@
|
|||
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;
|
||||
|
||||
@Mapper
|
||||
public interface UrlMapper {
|
||||
|
||||
UrlMapper INSTANCE = Mappers.getMapper(UrlMapper.class);
|
||||
|
||||
|
||||
@Mapping(source = "subUrl", target = "subUrl", qualifiedByName = "protocolRemover")
|
||||
@Mapping(source = "url", target = "url", qualifiedBy = SuffixRemover.class)
|
||||
public UrlObject urlObjectDomainMapper(UrlDTO urlDTO);
|
||||
|
||||
@Named("protocolRemover")
|
||||
public static String protocolRemoverWithCustomMethod(String domain) throws URISyntaxException {
|
||||
URI uri = new URI(domain);
|
||||
return uri.getHost();
|
||||
}
|
||||
|
||||
@SuffixRemover
|
||||
public static String protocolRemoverMethod(String domain) throws URISyntaxException {
|
||||
URI uri = new URI(domain);
|
||||
return uri.getHost();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
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 UrlMapperTest {
|
||||
|
||||
@Test
|
||||
public void givenDomains_whenCallDomainMapper_thenReturnDomainsWithoutProtocols() {
|
||||
UrlDTO dto = new UrlDTO();
|
||||
dto.setUrl("http://www.baeldung.com");
|
||||
dto.setSubUrl("https://www.baeldung.com");
|
||||
|
||||
UrlObject urlObject = UrlMapper.INSTANCE.urlObjectDomainMapper(dto);
|
||||
|
||||
assertEquals(urlObject.getUrl(), "www.baeldung.com");
|
||||
assertEquals(urlObject.getSubUrl(), "www.baeldung.com");
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue