Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
use diamond operator for collections and maps on SetterWrapperForColl…
…ectionsAndMapsWithNullCheck
  • Loading branch information
hduelme committed Mar 29, 2026
commit d36bdff154624d85533b36859df6a88c67bec2ae
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,6 @@
<#if enumSet>
EnumSet.copyOf( ${nullCheckLocalVarName} )
<#else>
new <#if ext.targetType.implementationType??><@includeModel object=ext.targetType.implementationType/><#else><@includeModel object=ext.targetType/></#if>( ${nullCheckLocalVarName} )
new <#if ext.targetType.implementationType??><@includeModel object=ext.targetType.implementationType useDiamondOperator=true/><#else><@includeModel object=ext.targetType/></#if>( ${nullCheckLocalVarName} )
</#if>
</@compress></#macro>
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,6 @@
<#elseif hasSuperBound()>
? super <@includeModel object=typeBound />
<#else>
<#if ext.asVarArgs!false>${createReferenceName()?remove_ending("[]")}...<#else>${createReferenceName()}</#if></#if><#if (!ext.raw?? && typeParameters?size > 0) ><<#list typeParameters as typeParameter><@includeModel object=typeParameter /><#if typeParameter_has_next>, </#if></#list>>
<#if ext.asVarArgs!false>${createReferenceName()?remove_ending("[]")}...<#else>${createReferenceName()}</#if></#if><#if (!ext.raw?? && typeParameters?size > 0) ><<#if !ext.useDiamondOperator??><#list typeParameters as typeParameter><@includeModel object=typeParameter /><#if typeParameter_has_next>, </#if></#list></#if>>
</#if>
</@compress>
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
/*
* Copyright MapStruct Authors.
*
* Licensed under the Apache License version 2.0, available at http://www.apache.org/licenses/LICENSE-2.0
*/
package org.mapstruct.ap.test.generics.wildcard;

import java.util.Map;

public class MapSuperType {

private Map<? super SimpleObject, ? super SimpleObject> simpleMap;

public Map<? super SimpleObject, ? super SimpleObject> getSimpleMap() {
return simpleMap;
}

public void setSimpleMap(
Map<? super SimpleObject, ? super SimpleObject> simpleMap) {
this.simpleMap = simpleMap;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
/*
* Copyright MapStruct Authors.
*
* Licensed under the Apache License version 2.0, available at http://www.apache.org/licenses/LICENSE-2.0
*/
package org.mapstruct.ap.test.generics.wildcard;

import org.mapstruct.Mapper;

@Mapper
public interface SuperBoundCopyMapper {

CollectionSuperTypes copyCollection(CollectionSuperTypes collectionSuperTypes);

MapSuperType copyMap(MapSuperType mapSuperType);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
/*
* Copyright MapStruct Authors.
*
* Licensed under the Apache License version 2.0, available at http://www.apache.org/licenses/LICENSE-2.0
*/
package org.mapstruct.ap.test.generics.wildcard;

import org.junit.jupiter.api.extension.RegisterExtension;
import org.mapstruct.ap.testutil.ProcessorTest;
import org.mapstruct.ap.testutil.WithClasses;
import org.mapstruct.ap.testutil.runner.GeneratedSource;

/**
* @author hduelme
*
*/
public class SuperBoundCopyTest {

@RegisterExtension
final GeneratedSource generatedSource = new GeneratedSource().addComparisonToFixtureFor(
SuperBoundCopyMapper.class
);

@ProcessorTest
@WithClasses({SimpleObject.class, CollectionSuperTypes.class, MapSuperType.class, SuperBoundCopyMapper.class})
public void shouldCopySuperBoundedDirectly() {

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -30,21 +30,21 @@ public Domain create(DtoWithPresenceCheck source) {

if ( source.hasStrings() ) {
List<String> list = source.getStrings();
domain.setStrings( new LinkedHashSet<String>( list ) );
domain.setStrings( new LinkedHashSet<>( list ) );
}
if ( source.hasStrings() ) {
domain.setLongs( stringListToLongSet( source.getStrings() ) );
}
if ( source.hasStringsInitialized() ) {
List<String> list1 = source.getStringsInitialized();
domain.setStringsInitialized( new LinkedHashSet<String>( list1 ) );
domain.setStringsInitialized( new LinkedHashSet<>( list1 ) );
}
if ( source.hasStringsInitialized() ) {
domain.setLongsInitialized( stringListToLongSet( source.getStringsInitialized() ) );
}
if ( source.hasStringsWithDefault() ) {
List<String> list2 = source.getStringsWithDefault();
domain.setStringsWithDefault( new ArrayList<String>( list2 ) );
domain.setStringsWithDefault( new ArrayList<>( list2 ) );
}
else {
domain.setStringsWithDefault( helper.toList( "3" ) );
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,17 +28,17 @@ public Domain create(Dto source) {
if ( source != null ) {
List<String> list = source.getStrings();
if ( list != null ) {
domain.setStrings( new LinkedHashSet<String>( list ) );
domain.setStrings( new LinkedHashSet<>( list ) );
}
domain.setLongs( stringListToLongSet( source.getStrings() ) );
List<String> list1 = source.getStringsInitialized();
if ( list1 != null ) {
domain.setStringsInitialized( new LinkedHashSet<String>( list1 ) );
domain.setStringsInitialized( new LinkedHashSet<>( list1 ) );
}
domain.setLongsInitialized( stringListToLongSet( source.getStringsInitialized() ) );
List<String> list2 = source.getStringsWithDefault();
if ( list2 != null ) {
domain.setStringsWithDefault( new ArrayList<String>( list2 ) );
domain.setStringsWithDefault( new ArrayList<>( list2 ) );
}
else {
domain.setStringsWithDefault( helper.toList( "3" ) );
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,17 +30,17 @@ public Domain create(Dto source) {

List<String> list = source.getStrings();
if ( list != null ) {
domain.setStrings( new LinkedHashSet<String>( list ) );
domain.setStrings( new LinkedHashSet<>( list ) );
}
domain.setLongs( stringListToLongSet( source.getStrings() ) );
List<String> list1 = source.getStringsInitialized();
if ( list1 != null ) {
domain.setStringsInitialized( new LinkedHashSet<String>( list1 ) );
domain.setStringsInitialized( new LinkedHashSet<>( list1 ) );
}
domain.setLongsInitialized( stringListToLongSet( source.getStringsInitialized() ) );
List<String> list2 = source.getStringsWithDefault();
if ( list2 != null ) {
domain.setStringsWithDefault( new ArrayList<String>( list2 ) );
domain.setStringsWithDefault( new ArrayList<>( list2 ) );
}
else {
domain.setStringsWithDefault( helper.toList( "3" ) );
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,21 +30,21 @@ public Domain create(DtoWithPresenceCheck source) {

if ( source.hasStrings() ) {
List<String> list = source.getStrings();
domain.setStrings( new LinkedHashSet<String>( list ) );
domain.setStrings( new LinkedHashSet<>( list ) );
}
if ( source.hasStrings() ) {
domain.setLongs( stringListToLongSet( source.getStrings() ) );
}
if ( source.hasStringsInitialized() ) {
List<String> list1 = source.getStringsInitialized();
domain.setStringsInitialized( new LinkedHashSet<String>( list1 ) );
domain.setStringsInitialized( new LinkedHashSet<>( list1 ) );
}
if ( source.hasStringsInitialized() ) {
domain.setLongsInitialized( stringListToLongSet( source.getStringsInitialized() ) );
}
if ( source.hasStringsWithDefault() ) {
List<String> list2 = source.getStringsWithDefault();
domain.setStringsWithDefault( new ArrayList<String>( list2 ) );
domain.setStringsWithDefault( new ArrayList<>( list2 ) );
}
else {
domain.setStringsWithDefault( helper.toList( "3" ) );
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,7 @@ protected ContactDataDTO userToContactDataDTO(User user) {
contactDataDTO.setAddress( user.getAddress() );
List<String> list = user.getPreferences();
if ( list != null ) {
contactDataDTO.setPreferences( new ArrayList<String>( list ) );
contactDataDTO.setPreferences( new ArrayList<>( list ) );
}
String[] settings = user.getSettings();
if ( settings != null ) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,21 +30,21 @@ public Domain create(DtoWithPresenceCheck source) {

if ( source.hasStrings() ) {
List<String> list = source.getStrings();
domain.setStrings( new LinkedHashSet<String>( list ) );
domain.setStrings( new LinkedHashSet<>( list ) );
}
if ( source.hasStrings() ) {
domain.setLongs( stringListToLongSet( source.getStrings() ) );
}
if ( source.hasStringsInitialized() ) {
List<String> list1 = source.getStringsInitialized();
domain.setStringsInitialized( new LinkedHashSet<String>( list1 ) );
domain.setStringsInitialized( new LinkedHashSet<>( list1 ) );
}
if ( source.hasStringsInitialized() ) {
domain.setLongsInitialized( stringListToLongSet( source.getStringsInitialized() ) );
}
if ( source.hasStringsWithDefault() ) {
List<String> list2 = source.getStringsWithDefault();
domain.setStringsWithDefault( new ArrayList<String>( list2 ) );
domain.setStringsWithDefault( new ArrayList<>( list2 ) );
}
else {
domain.setStringsWithDefault( helper.toList( "3" ) );
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,17 +28,17 @@ public Domain create(Dto source) {
if ( source != null ) {
List<String> list = source.getStrings();
if ( list != null ) {
domain.setStrings( new LinkedHashSet<String>( list ) );
domain.setStrings( new LinkedHashSet<>( list ) );
}
domain.setLongs( stringListToLongSet( source.getStrings() ) );
List<String> list1 = source.getStringsInitialized();
if ( list1 != null ) {
domain.setStringsInitialized( new LinkedHashSet<String>( list1 ) );
domain.setStringsInitialized( new LinkedHashSet<>( list1 ) );
}
domain.setLongsInitialized( stringListToLongSet( source.getStringsInitialized() ) );
List<String> list2 = source.getStringsWithDefault();
if ( list2 != null ) {
domain.setStringsWithDefault( new ArrayList<String>( list2 ) );
domain.setStringsWithDefault( new ArrayList<>( list2 ) );
}
else {
domain.setStringsWithDefault( helper.toList( "3" ) );
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,17 +30,17 @@ public Domain create(Dto source) {

List<String> list = source.getStrings();
if ( list != null ) {
domain.setStrings( new LinkedHashSet<String>( list ) );
domain.setStrings( new LinkedHashSet<>( list ) );
}
domain.setLongs( stringListToLongSet( source.getStrings() ) );
List<String> list1 = source.getStringsInitialized();
if ( list1 != null ) {
domain.setStringsInitialized( new LinkedHashSet<String>( list1 ) );
domain.setStringsInitialized( new LinkedHashSet<>( list1 ) );
}
domain.setLongsInitialized( stringListToLongSet( source.getStringsInitialized() ) );
List<String> list2 = source.getStringsWithDefault();
if ( list2 != null ) {
domain.setStringsWithDefault( new ArrayList<String>( list2 ) );
domain.setStringsWithDefault( new ArrayList<>( list2 ) );
}
else {
domain.setStringsWithDefault( helper.toList( "3" ) );
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,21 +30,21 @@ public Domain create(DtoWithPresenceCheck source) {

if ( source.hasStrings() ) {
List<String> list = source.getStrings();
domain.setStrings( new LinkedHashSet<String>( list ) );
domain.setStrings( new LinkedHashSet<>( list ) );
}
if ( source.hasStrings() ) {
domain.setLongs( stringListToLongSet( source.getStrings() ) );
}
if ( source.hasStringsInitialized() ) {
List<String> list1 = source.getStringsInitialized();
domain.setStringsInitialized( new LinkedHashSet<String>( list1 ) );
domain.setStringsInitialized( new LinkedHashSet<>( list1 ) );
}
if ( source.hasStringsInitialized() ) {
domain.setLongsInitialized( stringListToLongSet( source.getStringsInitialized() ) );
}
if ( source.hasStringsWithDefault() ) {
List<String> list2 = source.getStringsWithDefault();
domain.setStringsWithDefault( new ArrayList<String>( list2 ) );
domain.setStringsWithDefault( new ArrayList<>( list2 ) );
}
else {
domain.setStringsWithDefault( helper.toList( "3" ) );
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
/*
* Copyright MapStruct Authors.
*
* Licensed under the Apache License version 2.0, available at http://www.apache.org/licenses/LICENSE-2.0
*/
package org.mapstruct.ap.test.generics.wildcard;

import java.util.ArrayList;
import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.Map;
import javax.annotation.processing.Generated;

@Generated(
value = "org.mapstruct.ap.MappingProcessor",
date = "2026-03-29T19:42:23+0200",
comments = "version: , compiler: javac, environment: Java 21.0.5 (Eclipse Adoptium)"
)
public class SuperBoundCopyMapperImpl implements SuperBoundCopyMapper {

@Override
public CollectionSuperTypes copyCollection(CollectionSuperTypes collectionSuperTypes) {
if ( collectionSuperTypes == null ) {
return null;
}

CollectionSuperTypes collectionSuperTypes1 = new CollectionSuperTypes();

Collection<? super SimpleObject> collection = collectionSuperTypes.getSimpleObjectsCollection();
if ( collection != null ) {
collectionSuperTypes1.setSimpleObjectsCollection( new ArrayList<>( collection ) );
}

return collectionSuperTypes1;
}

@Override
public MapSuperType copyMap(MapSuperType mapSuperType) {
if ( mapSuperType == null ) {
return null;
}

MapSuperType mapSuperType1 = new MapSuperType();

Map<? super SimpleObject, ? super SimpleObject> map = mapSuperType.getSimpleMap();
if ( map != null ) {
mapSuperType1.setSimpleMap( new LinkedHashMap<>( map ) );
}

return mapSuperType1;
}
}
Loading