-
-
Notifications
You must be signed in to change notification settings - Fork 1k
Open
Labels
Description
Expected behavior
In version 1.5.X given this mapper:
package org.foo;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import java.util.List;
import java.util.Map;
@Mapper
public interface MessageConsumerDetailsMapper {
@Mapping(target = "username", source = "username")
MessageConsumerDetails mapToMessageConsumerDetails(final String username, Map<String, Object> userExtraInfo);
default String map(final Object value) {
return value != null ? value.toString() : null;
}
@SuppressWarnings("unchecked")
default List<Integer> mapIntegerList(final Object value) {
return value != null ? (List<Integer>) value : null;
}
}the mapperImpl generated is:
package org.foo;
import java.util.Map;
import javax.annotation.processing.Generated;
@Generated(
value = "org.mapstruct.ap.MappingProcessor",
date = "2024-12-19T12:24:49+0100",
comments = "version: 1.5.0.Final, compiler: javac, environment: Java 21.0.2 (Eclipse Adoptium)"
)
public class MessageConsumerDetailsMapperImpl implements MessageConsumerDetailsMapper {
@Override
public MessageConsumerDetails mapToMessageConsumerDetails(String username, Map<String, Object> userExtraInfo) {
if ( username == null && userExtraInfo == null ) {
return null;
}
MessageConsumerDetails.MessageConsumerDetailsBuilder messageConsumerDetails = MessageConsumerDetails.builder();
if ( userExtraInfo != null ) {
if ( userExtraInfo.containsKey( "eventName" ) ) {
messageConsumerDetails.eventName( map( userExtraInfo.get( "eventName" ) ) );
}
if ( userExtraInfo.containsKey( "messageId" ) ) {
messageConsumerDetails.messageId( map( userExtraInfo.get( "messageId" ) ) );
}
if ( userExtraInfo.containsKey( "inboxId" ) ) {
messageConsumerDetails.inboxId( map( userExtraInfo.get( "inboxId" ) ) );
}
}
messageConsumerDetails.username( map( username ) );
return messageConsumerDetails.build();
}
}Actual behavior
In version 1.6.X the mapperImp generated is:
package org.foo;
import java.util.Map;
import javax.annotation.processing.Generated;
@Generated(
value = "org.mapstruct.ap.MappingProcessor",
date = "2024-12-19T12:28:54+0100",
comments = "version: 1.6.3, compiler: javac, environment: Java 21.0.2 (Eclipse Adoptium)"
)
public class MessageConsumerDetailsMapperImpl implements MessageConsumerDetailsMapper {
@Override
public MessageConsumerDetails mapToMessageConsumerDetails(String username, Map<String, Object> userExtraInfo) {
if ( username == null && userExtraInfo == null ) {
return null;
}
MessageConsumerDetails.MessageConsumerDetailsBuilder messageConsumerDetails = MessageConsumerDetails.builder();
messageConsumerDetails.username( map( username ) );
return messageConsumerDetails.build();
}
}The userExtraInfo is not used/mapped
Steps to reproduce the problem
attached project use 1.5.0.Final and everything is ok (mvn clean install)
change version of mapstruct to 1.6.3 and execute mvn clean install, test fail because the mapperImpl
MapStruct Version
1.6.3
Reactions are currently unavailable