Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
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
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,20 @@
/*
* 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 BoundCopyMapper {

CollectionSuperTypes copySuperCollection(CollectionSuperTypes collectionSuperTypes);

CollectionExtendTypes copyExtendsCollection(CollectionExtendTypes collectionExtendTypes);

MapSuperType copySuperMap(MapSuperType mapSuperType);

MapExtendType copyExtendMap(MapExtendType mapExtendType);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
/*
* 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 BoundDirectCopyTest {

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

@ProcessorTest
@WithClasses({
SimpleObject.class,
CollectionSuperTypes.class,
CollectionExtendTypes.class,
MapSuperType.class,
MapExtendType.class,
BoundCopyMapper.class
})
public void shouldCopyBoundedDirectly() {

}
}
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 MapExtendType {

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

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

public void setSimpleMap(
Map<? extends SimpleObject, ? extends SimpleObject> simpleMap) {
this.simpleMap = simpleMap;
}
}
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
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,84 @@
/*
* 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-30T02:05:36+0200",
comments = "version: , compiler: javac, environment: Java 21.0.5 (Eclipse Adoptium)"
)
public class BoundCopyMapperImpl implements BoundCopyMapper {

@Override
public CollectionSuperTypes copySuperCollection(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 CollectionExtendTypes copyExtendsCollection(CollectionExtendTypes collectionExtendTypes) {
if ( collectionExtendTypes == null ) {
return null;
}

CollectionExtendTypes collectionExtendTypes1 = new CollectionExtendTypes();

Collection<? extends SimpleObject> collection = collectionExtendTypes.getSimpleObjectsCollection();
if ( collection != null ) {
collectionExtendTypes1.setSimpleObjectsCollection( new ArrayList<>( collection ) );
}

return collectionExtendTypes1;
}

@Override
public MapSuperType copySuperMap(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;
}

@Override
public MapExtendType copyExtendMap(MapExtendType mapExtendType) {
if ( mapExtendType == null ) {
return null;
}

MapExtendType mapExtendType1 = new MapExtendType();

Map<? extends SimpleObject, ? extends SimpleObject> map = mapExtendType.getSimpleMap();
if ( map != null ) {
mapExtendType1.setSimpleMap( new LinkedHashMap<>( map ) );
}

return mapExtendType1;
}
}
Loading