diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ExposedPorts.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ExposedPorts.java index 445cba2de..9fb9910bd 100644 --- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ExposedPorts.java +++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ExposedPorts.java @@ -1,14 +1,14 @@ package com.github.dockerjava.api.model; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonValue; + import java.io.Serializable; import java.util.List; import java.util.Map; import java.util.stream.Collectors; import java.util.stream.Stream; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonValue; - public class ExposedPorts implements Serializable { private static final long serialVersionUID = 1L; @@ -36,8 +36,9 @@ public static ExposedPorts fromPrimitive(Map object) { @JsonValue public Map toPrimitive() { return Stream.of(exposedPorts).collect(Collectors.toMap( - ExposedPort::toString, - __ -> new Object() + ExposedPort::toString, + __ -> new Object(), + (a, b) -> a )); } diff --git a/docker-java/src/test/java/com/github/dockerjava/api/model/ExposedPortsTest.java b/docker-java/src/test/java/com/github/dockerjava/api/model/ExposedPortsTest.java index c64d5ace2..456e65ca4 100644 --- a/docker-java/src/test/java/com/github/dockerjava/api/model/ExposedPortsTest.java +++ b/docker-java/src/test/java/com/github/dockerjava/api/model/ExposedPortsTest.java @@ -6,10 +6,13 @@ import org.junit.Test; import java.util.List; +import java.util.Map; import java.util.Map.Entry; import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.aMapWithSize; import static org.hamcrest.Matchers.arrayContainingInAnyOrder; +import static org.hamcrest.Matchers.arrayWithSize; import static org.hamcrest.Matchers.notNullValue; public class ExposedPortsTest { @@ -46,4 +49,19 @@ public void usesFromJson() throws Exception { new ExposedPort(3868, InternetProtocol.SCTP) )); } + + @Test + public void usesFromJsonWithDuplicate() throws Exception { + ExposedPorts ports = new ExposedPorts( + new ExposedPort(80, InternetProtocol.UDP), + new ExposedPort(80), + new ExposedPort(80) + ); + + assertThat(ports, notNullValue()); + assertThat(ports.getExposedPorts(), arrayWithSize(3)); + + Map map = ports.toPrimitive(); + assertThat(map, aMapWithSize(2)); + } }