diff --git a/processor/src/test/java/org/mapstruct/ap/test/collection/CollectionMappingTest.java b/processor/src/test/java/org/mapstruct/ap/test/collection/CollectionMappingTest.java index 7ab530460..532c7b1ea 100644 --- a/processor/src/test/java/org/mapstruct/ap/test/collection/CollectionMappingTest.java +++ b/processor/src/test/java/org/mapstruct/ap/test/collection/CollectionMappingTest.java @@ -21,7 +21,9 @@ package org.mapstruct.ap.test.collection; import java.util.ArrayList; import java.util.Arrays; import java.util.EnumSet; +import java.util.HashMap; import java.util.HashSet; +import java.util.Map; import org.mapstruct.ap.testutil.IssueKey; import org.mapstruct.ap.testutil.MapperTestBase; @@ -258,4 +260,19 @@ public class CollectionMappingTest extends MapperTestBase { assertThat( source ).isNotNull(); assertThat( source.getColours() ).containsOnly( Colour.GREEN, Colour.BLUE ); } + + @Test + public void shouldMapMapAsCopy() { + Source source = new Source(); + + Map map = new HashMap(); + map.put( "Bob", 123L ); + map.put( "Alice", 456L ); + source.setStringLongMap( map ); + + Target target = SourceTargetMapper.INSTANCE.sourceToTarget( source ); + target.getStringLongMap().put( "Bill", 789L ); + + assertThat( source.getStringLongMap() ).hasSize( 2 ); + } } diff --git a/processor/src/test/java/org/mapstruct/ap/test/collection/Source.java b/processor/src/test/java/org/mapstruct/ap/test/collection/Source.java index f80218111..cf9d07c05 100644 --- a/processor/src/test/java/org/mapstruct/ap/test/collection/Source.java +++ b/processor/src/test/java/org/mapstruct/ap/test/collection/Source.java @@ -22,6 +22,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; import java.util.List; +import java.util.Map; import java.util.Set; public class Source { @@ -42,6 +43,8 @@ public class Source { private Set colours; + private Map stringLongMap; + public List getStringList() { return stringList; } @@ -113,4 +116,12 @@ public class Source { public void setColours(Set colours) { this.colours = colours; } + + public Map getStringLongMap() { + return stringLongMap; + } + + public void setStringLongMap(Map stringLongMap) { + this.stringLongMap = stringLongMap; + } } diff --git a/processor/src/test/java/org/mapstruct/ap/test/collection/Target.java b/processor/src/test/java/org/mapstruct/ap/test/collection/Target.java index 6bea9d25b..45092d63e 100644 --- a/processor/src/test/java/org/mapstruct/ap/test/collection/Target.java +++ b/processor/src/test/java/org/mapstruct/ap/test/collection/Target.java @@ -22,6 +22,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; import java.util.List; +import java.util.Map; import java.util.Set; public class Target { @@ -40,6 +41,8 @@ public class Target { private Set colours; + private Map stringLongMap; + @SuppressWarnings("rawtypes") private Set set; @@ -116,4 +119,12 @@ public class Target { public Set getColours() { return colours; } + + public Map getStringLongMap() { + return stringLongMap; + } + + public void setStringLongMap(Map stringLongMap) { + this.stringLongMap = stringLongMap; + } }