diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Network.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Network.java
index 7e5110ce6..7e9d3b2fd 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Network.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Network.java
@@ -7,6 +7,7 @@
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Date;
import java.util.List;
import java.util.Map;
@@ -18,6 +19,9 @@ public class Network extends DockerObject implements Serializable {
@JsonProperty("Id")
private String id;
+ @JsonProperty("Created")
+ private Date created;
+
@JsonProperty("Name")
private String name;
@@ -52,6 +56,10 @@ public String getId() {
return id;
}
+ public Date getCreated() {
+ return created;
+ }
+
public String getName() {
return name;
}
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/PullResponseItem.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/PullResponseItem.java
index 66a559934..1d3f33c8e 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/PullResponseItem.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/PullResponseItem.java
@@ -19,6 +19,8 @@ public class PullResponseItem extends ResponseItem {
private static final String DOWNLOADED_SWARM = ": downloaded";
+ private static final String ALREADY_EXISTS = "Already exists";
+
/**
* Returns whether the status indicates a successful pull operation
*
@@ -34,7 +36,8 @@ public boolean isPullSuccessIndicated() {
getStatus().contains(IMAGE_UP_TO_DATE) ||
getStatus().contains(DOWNLOADED_NEWER_IMAGE) ||
getStatus().contains(LEGACY_REGISTRY) ||
- getStatus().contains(DOWNLOADED_SWARM)
+ getStatus().contains(DOWNLOADED_SWARM) ||
+ getStatus().contains(ALREADY_EXISTS)
);
}
}
diff --git a/docker-java-core/pom.xml b/docker-java-core/pom.xml
index b8369fa37..290a1fed9 100644
--- a/docker-java-core/pom.xml
+++ b/docker-java-core/pom.xml
@@ -99,6 +99,7 @@
8
8
+ true
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/LocalDirectorySSLConfig.java b/docker-java-core/src/main/java/com/github/dockerjava/core/LocalDirectorySSLConfig.java
index 665f48f06..0f50f561d 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/LocalDirectorySSLConfig.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/LocalDirectorySSLConfig.java
@@ -64,7 +64,8 @@ public SSLContext getSSLContext() {
TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(tmfAlgorithm);
trustManagerFactory.init(CertificateUtils.createTrustStore(capem));
- SSLContext sslContext = SSLContext.getInstance("TLSv1.2");
+ SSLContext sslContext = SSLContext.getInstance(AccessController.doPrivileged(getSystemProperty("ssl.protocol",
+ "TLSv1.2")));
sslContext.init(keyManagerFactory.getKeyManagers(), trustManagerFactory.getTrustManagers(), null);
return sslContext;
diff --git a/docker-java/src/test/java/com/github/dockerjava/api/model/PullResponseItemTest.java b/docker-java/src/test/java/com/github/dockerjava/api/model/PullResponseItemTest.java
index 486badd55..f73036864 100644
--- a/docker-java/src/test/java/com/github/dockerjava/api/model/PullResponseItemTest.java
+++ b/docker-java/src/test/java/com/github/dockerjava/api/model/PullResponseItemTest.java
@@ -29,6 +29,14 @@
* @author Zach Marshall
*/
public class PullResponseItemTest {
+ @Test
+ public void imageAlreadyExists() throws IOException {
+ PullResponseItem response = testRoundTrip(PullResponseJSONSamples.pullImageResponse_alreadyExists,
+ PullResponseItem.class);
+ assertTrue(response.isPullSuccessIndicated());
+ assertFalse(response.isErrorIndicated());
+ }
+
@Test
public void pullNewerImage() throws IOException {
PullResponseItem response = testRoundTrip(PullResponseJSONSamples.pullImageResponse_newerImage,
diff --git a/docker-java/src/test/java/com/github/dockerjava/api/model/PullResponseJSONSamples.java b/docker-java/src/test/java/com/github/dockerjava/api/model/PullResponseJSONSamples.java
index 31cdf0f3b..4997a390a 100644
--- a/docker-java/src/test/java/com/github/dockerjava/api/model/PullResponseJSONSamples.java
+++ b/docker-java/src/test/java/com/github/dockerjava/api/model/PullResponseJSONSamples.java
@@ -23,7 +23,9 @@
* @author Zach Marshall
*/
public enum PullResponseJSONSamples implements JSONResourceRef {
- pullImageResponse_legacy, pullImageResponse_error, pullImageResponse_newerImage, pullImageResponse_upToDate;
+ pullImageResponse_legacy, pullImageResponse_error,
+ pullImageResponse_newerImage, pullImageResponse_upToDate,
+ pullImageResponse_alreadyExists;
@Override
public String getFileName() {
diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/CreateNetworkCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/CreateNetworkCmdIT.java
index deb8a4718..d60425a2a 100644
--- a/docker-java/src/test/java/com/github/dockerjava/cmd/CreateNetworkCmdIT.java
+++ b/docker-java/src/test/java/com/github/dockerjava/cmd/CreateNetworkCmdIT.java
@@ -15,9 +15,11 @@
import static com.github.dockerjava.junit.DockerMatchers.isGreaterOrEqual;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.notNullValue;
+
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.greaterThan;
import static org.junit.Assert.assertTrue;
import static org.junit.Assume.assumeThat;
@@ -37,6 +39,7 @@ public void createNetwork() throws DockerException {
Network network = dockerRule.getClient().inspectNetworkCmd().withNetworkId(createNetworkResponse.getId()).exec();
assertThat(network.getName(), is(networkName));
assertThat(network.getDriver(), is("bridge"));
+ assertThat(network.getCreated().getTime(), greaterThan(0L));
}
@Test
diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/InspectNetworkCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/InspectNetworkCmdIT.java
index eca86497d..035d3d767 100644
--- a/docker-java/src/test/java/com/github/dockerjava/cmd/InspectNetworkCmdIT.java
+++ b/docker-java/src/test/java/com/github/dockerjava/cmd/InspectNetworkCmdIT.java
@@ -10,6 +10,7 @@
import static com.github.dockerjava.utils.TestUtils.findNetwork;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.equalTo;
+import static org.hamcrest.Matchers.greaterThan;
public class InspectNetworkCmdIT extends CmdIT {
@@ -28,5 +29,6 @@ public void inspectNetwork() throws DockerException {
assertThat(network.getDriver(), equalTo(expected.getDriver()));
assertThat(network.getIpam().getConfig().get(0).getSubnet(), equalTo(expected.getIpam().getConfig().get(0).getSubnet()));
assertThat(network.getIpam().getDriver(), equalTo(expected.getIpam().getDriver()));
+ assertThat(network.getCreated().getTime(), greaterThan(0L));
}
}
diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/ListContainersCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/ListContainersCmdIT.java
index 30667671f..3490924c7 100644
--- a/docker-java/src/test/java/com/github/dockerjava/cmd/ListContainersCmdIT.java
+++ b/docker-java/src/test/java/com/github/dockerjava/cmd/ListContainersCmdIT.java
@@ -330,11 +330,11 @@ public void testAncestorFilter() throws Exception {
DockerAssume.assumeNotSwarm(dockerRule.getClient());
dockerRule.getClient().pullImageCmd("busybox")
- .withTag("1.24")
+ .withTag("1.35")
.start()
.awaitCompletion();
- dockerRule.getClient().createContainerCmd("busybox:1.24")
+ dockerRule.getClient().createContainerCmd("busybox:1.35")
.withLabels(testLabel)
.exec();
diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/PullImageCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/PullImageCmdIT.java
index 539a2b606..3b8dde3ff 100644
--- a/docker-java/src/test/java/com/github/dockerjava/cmd/PullImageCmdIT.java
+++ b/docker-java/src/test/java/com/github/dockerjava/cmd/PullImageCmdIT.java
@@ -45,7 +45,7 @@ public void testPullImage() throws Exception {
// pulled down, preferably small in size. If tag is not used pull will
// download all images in that repository but tmpImgs will only
// deleted 'latest' image but not images with other tags
- String testImage = "hackmann/empty";
+ String testImage = "alpine:3.17";
LOG.info("Removing image: {}", testImage);
diff --git a/docker-java/src/test/resources/com/github/dockerjava/api/model/pullImageResponse_alreadyExists.json b/docker-java/src/test/resources/com/github/dockerjava/api/model/pullImageResponse_alreadyExists.json
new file mode 100644
index 000000000..ae318e29d
--- /dev/null
+++ b/docker-java/src/test/resources/com/github/dockerjava/api/model/pullImageResponse_alreadyExists.json
@@ -0,0 +1 @@
+{"status":"Already exists"}
diff --git a/pom.xml b/pom.xml
index 3ada79555..f58a3d448 100644
--- a/pom.xml
+++ b/pom.xml
@@ -148,6 +148,7 @@
${jdk.target}
${jdk.debug}
${jdk.optimize}
+ true