From edfa297c906cf2df096ab6d10367d5870a4dd736 Mon Sep 17 00:00:00 2001 From: Rui Fernando Hayashi Date: Mon, 25 Jan 2016 18:32:24 -0200 Subject: [PATCH 1/2] fix npe on ContainerConfig.getExposedPorts --- .../com/github/dockerjava/api/model/ContainerConfig.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/github/dockerjava/api/model/ContainerConfig.java b/src/main/java/com/github/dockerjava/api/model/ContainerConfig.java index 34cb71d4d..5a6ae65b6 100644 --- a/src/main/java/com/github/dockerjava/api/model/ContainerConfig.java +++ b/src/main/java/com/github/dockerjava/api/model/ContainerConfig.java @@ -81,7 +81,11 @@ public class ContainerConfig { @JsonIgnore public ExposedPort[] getExposedPorts() { - return exposedPorts.getExposedPorts(); + if (exposedPorts == null) { + return new ExposedPort[0]; + } else { + return exposedPorts.getExposedPorts(); + } } public boolean isNetworkDisabled() { From bbe940fc4cae2024945473f97ab36993eccbc2a4 Mon Sep 17 00:00:00 2001 From: Rui Fernando Hayashi Date: Tue, 26 Jan 2016 09:57:41 -0200 Subject: [PATCH 2/2] added test case for ContainerConfig.getExposedPorts --- .../api/model/ContainerConfigTest.java | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 src/test/java/com/github/dockerjava/api/model/ContainerConfigTest.java diff --git a/src/test/java/com/github/dockerjava/api/model/ContainerConfigTest.java b/src/test/java/com/github/dockerjava/api/model/ContainerConfigTest.java new file mode 100644 index 000000000..e37eefb84 --- /dev/null +++ b/src/test/java/com/github/dockerjava/api/model/ContainerConfigTest.java @@ -0,0 +1,43 @@ +package com.github.dockerjava.api.model; + +import com.fasterxml.jackson.databind.ObjectMapper; +import org.testng.annotations.Test; + +import java.io.IOException; + +import static junit.framework.Assert.assertEquals; + +public class ContainerConfigTest { + + @Test + public void missingExposedPortsReturnEmptyArray() throws IOException { + String s = "{}"; + ObjectMapper objectMapper = new ObjectMapper(); + ContainerConfig config = objectMapper.readValue(s, ContainerConfig.class); + assertEquals(0, config.getExposedPorts().length); + } + + @Test + public void nullExposedPortsReturnEmptyArray() throws IOException { + String s = "{\"ExposedPorts\": null}"; + ObjectMapper objectMapper = new ObjectMapper(); + ContainerConfig config = objectMapper.readValue(s, ContainerConfig.class); + assertEquals(0, config.getExposedPorts().length); + } + + @Test + public void exposedPortsReturnArray() throws IOException { + String s = "{\"ExposedPorts\": {\"22/tcp\": {}, \"80/tcp\": {}}}"; + ObjectMapper objectMapper = new ObjectMapper(); + ContainerConfig config = objectMapper.readValue(s, ContainerConfig.class); + ExposedPort[] ports = config.getExposedPorts(); + assertEquals(2, ports.length); + ExposedPort port22tcp = ports[0]; + assertEquals(22, port22tcp.getPort()); + assertEquals(InternetProtocol.TCP, port22tcp.getProtocol()); + ExposedPort port80tcp = ports[1]; + assertEquals(80, port80tcp.getPort()); + assertEquals(InternetProtocol.TCP, port80tcp.getProtocol()); + } + +}