Skip to content

Commit 3d2c7a0

Browse files
bsideupcoestrectoestreich
authored
Fix for duplicate key violation for exposed ports (docker-java#1406)
* Fix for duplicate key violation for exposed ports docker-java#1391 * use 3-arg `toMap` Co-authored-by: coestre <c@optum.com> Co-authored-by: Christian Oestreich <acetrike@yahoo.com>
1 parent 0ecee0c commit 3d2c7a0

File tree

2 files changed

+24
-5
lines changed

2 files changed

+24
-5
lines changed

docker-java-api/src/main/java/com/github/dockerjava/api/model/ExposedPorts.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
package com.github.dockerjava.api.model;
22

3+
import com.fasterxml.jackson.annotation.JsonCreator;
4+
import com.fasterxml.jackson.annotation.JsonValue;
5+
36
import java.io.Serializable;
47
import java.util.List;
58
import java.util.Map;
69
import java.util.stream.Collectors;
710
import java.util.stream.Stream;
811

9-
import com.fasterxml.jackson.annotation.JsonCreator;
10-
import com.fasterxml.jackson.annotation.JsonValue;
11-
1212
public class ExposedPorts implements Serializable {
1313
private static final long serialVersionUID = 1L;
1414

@@ -36,8 +36,9 @@ public static ExposedPorts fromPrimitive(Map<String, Object> object) {
3636
@JsonValue
3737
public Map<String, Object> toPrimitive() {
3838
return Stream.of(exposedPorts).collect(Collectors.toMap(
39-
ExposedPort::toString,
40-
__ -> new Object()
39+
ExposedPort::toString,
40+
__ -> new Object(),
41+
(a, b) -> a
4142
));
4243
}
4344

docker-java/src/test/java/com/github/dockerjava/api/model/ExposedPortsTest.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,13 @@
66
import org.junit.Test;
77

88
import java.util.List;
9+
import java.util.Map;
910
import java.util.Map.Entry;
1011

1112
import static org.hamcrest.MatcherAssert.assertThat;
13+
import static org.hamcrest.Matchers.aMapWithSize;
1214
import static org.hamcrest.Matchers.arrayContainingInAnyOrder;
15+
import static org.hamcrest.Matchers.arrayWithSize;
1316
import static org.hamcrest.Matchers.notNullValue;
1417

1518
public class ExposedPortsTest {
@@ -46,4 +49,19 @@ public void usesFromJson() throws Exception {
4649
new ExposedPort(3868, InternetProtocol.SCTP)
4750
));
4851
}
52+
53+
@Test
54+
public void usesFromJsonWithDuplicate() throws Exception {
55+
ExposedPorts ports = new ExposedPorts(
56+
new ExposedPort(80, InternetProtocol.UDP),
57+
new ExposedPort(80),
58+
new ExposedPort(80)
59+
);
60+
61+
assertThat(ports, notNullValue());
62+
assertThat(ports.getExposedPorts(), arrayWithSize(3));
63+
64+
Map<String, Object> map = ports.toPrimitive();
65+
assertThat(map, aMapWithSize(2));
66+
}
4967
}

0 commit comments

Comments
 (0)