'host': use the host network stack inside the container. Note: the host mode gives the container full access to local system
* services such as D-bus and is therefore considered insecure.
*
+ * Any other value is interpreted as a custom network's name for this container to connect to.
*/
public HostConfig withNetworkMode(String networkMode) {
this.networkMode = networkMode;
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/CreateContainerCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/CreateContainerCmdImpl.java
index 65839a6586..fd46535597 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/CreateContainerCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/CreateContainerCmdImpl.java
@@ -600,7 +600,7 @@ public CreateContainerResponse exec() throws NotFoundException, ConflictExceptio
containerNetwork.withAliases(aliases);
}
- if (containerNetwork != null) {
+ if (containerNetwork != null && hostConfig.getNetworkMode() != null) {
networkingConfig = new NetworkingConfig()
.withEndpointsConfig(singletonMap(hostConfig.getNetworkMode(), containerNetwork));
}
diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/CreateContainerCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/CreateContainerCmdIT.java
index c8c755a54b..7bb26eaa07 100644
--- a/docker-java/src/test/java/com/github/dockerjava/cmd/CreateContainerCmdIT.java
+++ b/docker-java/src/test/java/com/github/dockerjava/cmd/CreateContainerCmdIT.java
@@ -23,6 +23,7 @@
import com.github.dockerjava.api.model.Link;
import com.github.dockerjava.api.model.LogConfig;
import com.github.dockerjava.api.model.Network;
+import com.github.dockerjava.api.model.PortBinding;
import com.github.dockerjava.api.model.Ports;
import com.github.dockerjava.api.model.Ports.Binding;
import com.github.dockerjava.api.model.RestartPolicy;
@@ -1125,4 +1126,15 @@ public void shouldNotEncodeAuth() {
assertThat(jsonNode.get("authConfig"), nullValue());
}
+
+ @Test
+ public void shouldHandleANetworkAliasWithoutACustomNetworkGracefully() {
+ // Should not throw
+ dockerRule.getClient()
+ .createContainerCmd(DEFAULT_IMAGE)
+ .withAliases("hello-world")
+ .withHostConfig(newHostConfig())
+ .withCmd("sleep", "9999")
+ .exec();
+ }
}
From 3ea46f9a1d279d8653f528d91c6ab6f5a8259b6a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=A8=BE=E6=98=8E=E5=8D=8E?= <565209960@qq.com>
Date: Mon, 19 Sep 2022 18:22:11 +0800
Subject: [PATCH 002/163] Add Init attribute in ContainerSpec (#1927)
---
.../dockerjava/api/model/ContainerSpec.java | 17 +++++++++++++++++
.../cmd/swarm/UpdateSwarmServiceIT.java | 2 +-
2 files changed, 18 insertions(+), 1 deletion(-)
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ContainerSpec.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ContainerSpec.java
index d80d043161..0a26e54fda 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ContainerSpec.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ContainerSpec.java
@@ -161,6 +161,14 @@ public class ContainerSpec extends DockerObject implements Serializable {
@JsonProperty("Configs")
private List configs;
+ /**
+ * @since 1.38
+ * Run an init inside the container that forwards signals and reaps processes.
+ * This field is omitted if empty, and the default (as configured on the daemon) is used.
+ */
+ @JsonProperty("Init")
+ private Boolean init;
+
/**
* @see #image
*/
@@ -435,4 +443,13 @@ public ContainerSpec withConfigs(List configs) {
this.configs = configs;
return this;
}
+
+ public Boolean getInit() {
+ return init;
+ }
+
+ public ContainerSpec withInit(Boolean init) {
+ this.init = init;
+ return this;
+ }
}
diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/swarm/UpdateSwarmServiceIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/swarm/UpdateSwarmServiceIT.java
index f98c3ed36a..deb9594751 100644
--- a/docker-java/src/test/java/com/github/dockerjava/cmd/swarm/UpdateSwarmServiceIT.java
+++ b/docker-java/src/test/java/com/github/dockerjava/cmd/swarm/UpdateSwarmServiceIT.java
@@ -27,7 +27,7 @@ public void testUpdateServiceReplicate() throws Exception {
String networkId = dockerClient.createNetworkCmd().withName("networkname").withDriver("overlay")
.withIpam(new Network.Ipam().withDriver("default")).exec().getId();
TaskSpec taskSpec = new TaskSpec().withContainerSpec(
- new ContainerSpec().withImage("busybox").withArgs(Arrays.asList("sleep", "3600")));
+ new ContainerSpec().withImage("busybox").withArgs(Arrays.asList("sleep", "3600")).withInit(true));
ServiceSpec serviceSpec = new ServiceSpec()
.withMode(new ServiceModeConfig().withReplicated(new ServiceReplicatedModeOptions().withReplicas(1)))
.withTaskTemplate(taskSpec)
From 83f95f0ec806a80af8e8a83915d46475136a1096 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 19 Sep 2022 05:58:51 -0500
Subject: [PATCH 003/163] Bump jna from 5.8.0 to 5.12.1 (#1898)
Bumps [jna](https://github.com/java-native-access/jna) from 5.8.0 to 5.12.1.
- [Release notes](https://github.com/java-native-access/jna/releases)
- [Changelog](https://github.com/java-native-access/jna/blob/master/CHANGES.md)
- [Commits](https://github.com/java-native-access/jna/compare/5.8.0...5.12.1)
---
updated-dependencies:
- dependency-name: net.java.dev.jna:jna
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
docker-java-transport-httpclient5/pom.xml | 2 +-
docker-java-transport-okhttp/pom.xml | 2 +-
docker-java-transport/pom.xml | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/docker-java-transport-httpclient5/pom.xml b/docker-java-transport-httpclient5/pom.xml
index 057739a39d..938c25342f 100644
--- a/docker-java-transport-httpclient5/pom.xml
+++ b/docker-java-transport-httpclient5/pom.xml
@@ -37,7 +37,7 @@
net.java.dev.jnajna
- 5.8.0
+ 5.12.1
diff --git a/docker-java-transport-okhttp/pom.xml b/docker-java-transport-okhttp/pom.xml
index 41598807a9..60e6690071 100644
--- a/docker-java-transport-okhttp/pom.xml
+++ b/docker-java-transport-okhttp/pom.xml
@@ -31,7 +31,7 @@
net.java.dev.jnajna
- 5.8.0
+ 5.12.1
diff --git a/docker-java-transport/pom.xml b/docker-java-transport/pom.xml
index a7e76095d4..ffc6ba52a8 100644
--- a/docker-java-transport/pom.xml
+++ b/docker-java-transport/pom.xml
@@ -33,7 +33,7 @@
net.java.dev.jnajna
- 5.8.0
+ 5.12.1provided
From ffb09202701bf2a4494f7023b28abd3c1c9e7b88 Mon Sep 17 00:00:00 2001
From: jmformenti
Date: Thu, 22 Sep 2022 06:29:16 +0200
Subject: [PATCH 004/163] Add capability values (#1955)
See https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities
---
.../github/dockerjava/api/model/Capability.java | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Capability.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Capability.java
index 6237a65ae6..fe71864c0f 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Capability.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Capability.java
@@ -18,6 +18,10 @@ public enum Capability {
*
*/
AUDIT_CONTROL,
+ /**
+ * Allow reading the audit log via multicast netlink socket.
+ */
+ AUDIT_READ,
/**
* Write records to kernel auditing log.
*/
@@ -26,6 +30,14 @@ public enum Capability {
* Employ features that can block system suspend.
*/
BLOCK_SUSPEND,
+ /**
+ * Allow creating BPF maps, loading BPF Type Format (BTF) data, retrieve JITed code of BPF programs, and more.
+ */
+ BPF,
+ /**
+ * Allow checkpoint/restore related operations. Introduced in kernel 5.9.
+ */
+ CHECKPOINT_RESTORE,
/**
* Make arbitrary changes to file UIDs and GIDs (see chown(2)).
*/
@@ -120,6 +132,10 @@ public enum Capability {
*
*/
NET_RAW,
+ /**
+ * Allow system performance and observability privileged operations using perf_events, i915_perf and other kernel subsystems
+ */
+ PERFMON,
/**
* Set file capabilities.
*/
From 2c690f35a273d090a3a3cc46dab1dfdd771021b6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Edd=C3=BA=20Mel=C3=A9ndez=20Gonzales?=
Date: Mon, 26 Sep 2022 12:08:18 -0500
Subject: [PATCH 005/163] Add Automatic-Module-Name (#1962)
---
docker-java-api/pom.xml | 4 ++++
docker-java-core/pom.xml | 4 ++++
docker-java-transport-httpclient5/pom.xml | 4 ++++
docker-java-transport-jersey/pom.xml | 4 ++++
docker-java-transport-netty/pom.xml | 4 ++++
docker-java-transport-okhttp/pom.xml | 4 ++++
docker-java-transport-tck/pom.xml | 4 ++++
docker-java-transport-zerodep/pom.xml | 4 ++++
docker-java-transport/pom.xml | 4 ++++
docker-java/pom.xml | 4 ++++
pom.xml | 7 +++++++
11 files changed, 47 insertions(+)
diff --git a/docker-java-api/pom.xml b/docker-java-api/pom.xml
index 1016da4ec4..dca404bc18 100644
--- a/docker-java-api/pom.xml
+++ b/docker-java-api/pom.xml
@@ -15,6 +15,10 @@
https://github.com/docker-java/docker-javaJava API Client for Docker
+
+ com.github.dockerjava.api
+
+
com.fasterxml.jackson.core
diff --git a/docker-java-core/pom.xml b/docker-java-core/pom.xml
index fed62f1a6c..cec97d25d0 100644
--- a/docker-java-core/pom.xml
+++ b/docker-java-core/pom.xml
@@ -15,6 +15,10 @@
https://github.com/docker-java/docker-javaJava API Client for Docker
+
+ com.github.dockerjava.core
+
+
${project.groupId}
diff --git a/docker-java-transport-httpclient5/pom.xml b/docker-java-transport-httpclient5/pom.xml
index 938c25342f..5800fb9947 100644
--- a/docker-java-transport-httpclient5/pom.xml
+++ b/docker-java-transport-httpclient5/pom.xml
@@ -15,6 +15,10 @@
https://github.com/docker-java/docker-javaJava API Client for Docker
+
+ com.github.dockerjava.transport.httpclient5
+
+
${project.groupId}
diff --git a/docker-java-transport-jersey/pom.xml b/docker-java-transport-jersey/pom.xml
index c6e778c89e..fbef13f1eb 100644
--- a/docker-java-transport-jersey/pom.xml
+++ b/docker-java-transport-jersey/pom.xml
@@ -15,6 +15,10 @@
https://github.com/docker-java/docker-javaJava API Client for Docker
+
+ com.github.dockerjava.transport.jersey
+
+
${project.groupId}
diff --git a/docker-java-transport-netty/pom.xml b/docker-java-transport-netty/pom.xml
index f9bc3bed98..42fdd34b7d 100644
--- a/docker-java-transport-netty/pom.xml
+++ b/docker-java-transport-netty/pom.xml
@@ -15,6 +15,10 @@
https://github.com/docker-java/docker-javaJava API Client for Docker
+
+ com.github.dockerjava.transport.netty
+
+
${project.groupId}
diff --git a/docker-java-transport-okhttp/pom.xml b/docker-java-transport-okhttp/pom.xml
index 60e6690071..351005461d 100644
--- a/docker-java-transport-okhttp/pom.xml
+++ b/docker-java-transport-okhttp/pom.xml
@@ -15,6 +15,10 @@
https://github.com/docker-java/docker-javaJava API Client for Docker
+
+ com.github.dockerjava.transport.okhttp
+
+
${project.groupId}
diff --git a/docker-java-transport-tck/pom.xml b/docker-java-transport-tck/pom.xml
index f65fead093..9ad692c1fe 100644
--- a/docker-java-transport-tck/pom.xml
+++ b/docker-java-transport-tck/pom.xml
@@ -15,6 +15,10 @@
https://github.com/docker-java/docker-javaJava API Client for Docker
+
+ com.github.dockerjava.transport.tck
+
+
${project.groupId}
diff --git a/docker-java-transport-zerodep/pom.xml b/docker-java-transport-zerodep/pom.xml
index 7d3fb40341..3cccafa333 100644
--- a/docker-java-transport-zerodep/pom.xml
+++ b/docker-java-transport-zerodep/pom.xml
@@ -15,6 +15,10 @@
https://github.com/docker-java/docker-javaJava API Client for Docker
+
+ com.github.dockerjava.transport.zerodep
+
+
${project.groupId}
diff --git a/docker-java-transport/pom.xml b/docker-java-transport/pom.xml
index ffc6ba52a8..633053c397 100644
--- a/docker-java-transport/pom.xml
+++ b/docker-java-transport/pom.xml
@@ -15,6 +15,10 @@
https://github.com/docker-java/docker-javaJava API Client for Docker
+
+ com.github.dockerjava.transport
+
+
com.google.code.findbugs
diff --git a/docker-java/pom.xml b/docker-java/pom.xml
index 453851ce13..39e1b1b65b 100644
--- a/docker-java/pom.xml
+++ b/docker-java/pom.xml
@@ -15,6 +15,10 @@
https://github.com/docker-java/docker-javaJava API Client for Docker
+
+ com.github.dockerjava
+
+
${project.groupId}
diff --git a/pom.xml b/pom.xml
index 7da7062b3e..6976c5c74d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -163,6 +163,13 @@
+
+
+
+ ${automatic.module.name}
+
+
+
From 3951333e3593f05b9c6c3cfc01a86193b8687df3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Edd=C3=BA=20Mel=C3=A9ndez=20Gonzales?=
Date: Thu, 6 Oct 2022 09:33:38 -0500
Subject: [PATCH 006/163] Add support for `reference` query param in List
Images (#1941)
`filter` query param was removed in Docker API 1.41. Using `reference`
query param will allow to use format [:]. Also,
`withFilter(String name, Collection value)` is provided.
Fixes #1935
---
.../dockerjava/api/command/ListImagesCmd.java | 10 ++++++
.../core/command/ListImagesCmdImpl.java | 19 ++++++++++-
.../dockerjava/cmd/ListImagesCmdIT.java | 33 +++++++++++++++++++
3 files changed, 61 insertions(+), 1 deletion(-)
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/ListImagesCmd.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/ListImagesCmd.java
index 7741df743e..cc60a5bcc2 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/command/ListImagesCmd.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/ListImagesCmd.java
@@ -1,5 +1,6 @@
package com.github.dockerjava.api.command;
+import java.util.Collection;
import java.util.List;
import java.util.Map;
@@ -44,6 +45,15 @@ public interface ListImagesCmd extends SyncDockerCmd> {
*/
ListImagesCmd withLabelFilter(Map labels);
+ /**
+ * Filter images by reference
+ *
+ * @param reference string in the form {@code [:]}
+ */
+ ListImagesCmd withReferenceFilter(String reference);
+
+ ListImagesCmd withFilter(String key, Collection values);
+
interface Exec extends DockerCmdSyncExec> {
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/ListImagesCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/ListImagesCmdImpl.java
index a98be8f538..b4fb1e0d9e 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/ListImagesCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/ListImagesCmdImpl.java
@@ -2,6 +2,8 @@
import static com.google.common.base.Preconditions.checkNotNull;
+import java.util.Collection;
+import java.util.Collections;
import java.util.List;
import java.util.Map;
@@ -46,7 +48,7 @@ public ListImagesCmd withShowAll(Boolean showAll) {
@Override
public ListImagesCmd withDanglingFilter(Boolean dangling) {
checkNotNull(dangling, "dangling have not been specified");
- filters.withFilter("dangling", dangling.toString());
+ withFilter("dangling", Collections.singletonList(dangling.toString()));
return this;
}
@@ -71,6 +73,21 @@ public ListImagesCmd withImageNameFilter(String imageNameFilter) {
return this;
}
+ @Override
+ public ListImagesCmd withReferenceFilter(String reference) {
+ checkNotNull(reference, "reference filter not specified");
+ withFilter("reference", Collections.singletonList(reference));
+ return this;
+ }
+
+ @Override
+ public ListImagesCmd withFilter(String key, Collection values) {
+ checkNotNull(key, "key not specified");
+ checkNotNull(values, "values not specified");
+ filters.withFilter(key, values);
+ return this;
+ }
+
@Override
public String getImageNameFilter() {
return this.imageNameFilter;
diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/ListImagesCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/ListImagesCmdIT.java
index c89b98a0ad..38b756dab5 100644
--- a/docker-java/src/test/java/com/github/dockerjava/cmd/ListImagesCmdIT.java
+++ b/docker-java/src/test/java/com/github/dockerjava/cmd/ListImagesCmdIT.java
@@ -4,10 +4,12 @@
import com.github.dockerjava.api.exception.DockerException;
import com.github.dockerjava.api.model.Image;
import com.github.dockerjava.api.model.Info;
+import org.apache.commons.lang3.RandomUtils;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.Collections;
import java.util.List;
import static com.github.dockerjava.utils.TestUtils.isNotSwarm;
@@ -15,6 +17,7 @@
import static org.hamcrest.Matchers.emptyArray;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.greaterThan;
+import static org.hamcrest.Matchers.hasSize;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.emptyString;
import static org.hamcrest.Matchers.not;
@@ -54,6 +57,36 @@ public void listImagesWithDanglingFilter() throws DockerException {
assertTrue(imageInFilteredList);
}
+ @Test
+ public void listImagesWithReferenceFilter() throws DockerException {
+ String tag = "" + RandomUtils.nextInt(0, Integer.MAX_VALUE);
+
+ dockerRule.getClient().tagImageCmd("busybox:latest", "docker-java/busybox", tag).exec();
+ try {
+ List images = dockerRule.getClient().listImagesCmd().withReferenceFilter("docker-java/busybox")
+ .exec();
+ assertThat(images, hasSize(1));
+ }
+ finally {
+ dockerRule.getClient().removeImageCmd("docker-java/busybox:" + tag).exec();
+ }
+ }
+
+ @Test
+ public void listImagesWithFilter() throws DockerException {
+ String tag = "" + RandomUtils.nextInt(0, Integer.MAX_VALUE);
+
+ dockerRule.getClient().tagImageCmd("busybox:latest", "docker-java/busybox", tag).exec();
+ try {
+ List images = dockerRule.getClient().listImagesCmd().withFilter("reference", Collections.singletonList("docker-java/busybox"))
+ .exec();
+ assertThat(images, hasSize(1));
+ }
+ finally {
+ dockerRule.getClient().removeImageCmd("docker-java/busybox:" + tag).exec();
+ }
+ }
+
private boolean isImageInFilteredList(List images, String expectedImageId) {
for (Image image : images) {
if (expectedImageId.equals(image.getId())) {
From d7db365f345fb1a989983018850698647c603097 Mon Sep 17 00:00:00 2001
From: Keith Wall
Date: Mon, 17 Oct 2022 18:24:05 +0100
Subject: [PATCH 007/163] Support copyUIDGID option in
CopyArchiveToContainerCmd (#1963)
Fix #1258
Signed-off-by: kwall
---
.../command/CopyArchiveToContainerCmd.java | 9 +++
.../CopyArchiveToContainerCmdImpl.java | 17 ++++-
.../exec/CopyArchiveToContainerCmdExec.java | 4 +-
.../cmd/CopyArchiveToContainerCmdIT.java | 72 +++++++++++++++++++
4 files changed, 99 insertions(+), 3 deletions(-)
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/CopyArchiveToContainerCmd.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/CopyArchiveToContainerCmd.java
index a4dfb5c03d..19b3c38437 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/command/CopyArchiveToContainerCmd.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/CopyArchiveToContainerCmd.java
@@ -16,6 +16,7 @@ public interface CopyArchiveToContainerCmd extends SyncDockerCmd {
boolean isDirChildrenOnly();
+ boolean isCopyUIDGID();
/**
* Set container's id
*
@@ -49,6 +50,14 @@ public interface CopyArchiveToContainerCmd extends SyncDockerCmd {
*/
CopyArchiveToContainerCmd withNoOverwriteDirNonDir(boolean noOverwriteDirNonDir);
+ /**
+ * If set to true then ownership is set to the user and primary group at the destination
+ *
+ * @param copyUIDGID
+ * flag to know if ownership should be set to the user and primary group at the destination
+ */
+ CopyArchiveToContainerCmd withCopyUIDGID(boolean copyUIDGID);
+
/**
* If this flag is set to true, all children of the local directory will be copied to the remote without the root directory. For ex: if
* I have root/titi and root/tata and the remote path is /var/data. dirChildrenOnly = true will create /var/data/titi and /var/data/tata
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/CopyArchiveToContainerCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/CopyArchiveToContainerCmdImpl.java
index cac15fadf5..a915a3b020 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/CopyArchiveToContainerCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/CopyArchiveToContainerCmdImpl.java
@@ -31,6 +31,8 @@ public class CopyArchiveToContainerCmdImpl extends AbstrDockerCmd unixSystemClazz = Class.forName("com.sun.security.auth.module.UnixSystem");
+ Object unixSystem = unixSystemClazz.newInstance();
+ Object uid = unixSystemClazz.getMethod("getUid").invoke(unixSystem);
+ if (uid == null) {
+ return null;
+ }
+
+ return uid instanceof Long ? (Long) uid : Long.parseLong(uid.toString());
+ } catch (Exception e) {
+ return null;
+ }
+ }
}
From f6f9d676d9244d6048fdf85c5db6f2c4813d5c23 Mon Sep 17 00:00:00 2001
From: aryeh
Date: Mon, 17 Oct 2022 10:28:51 -0700
Subject: [PATCH 008/163] Improve getting_started.md (#1966)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Co-authored-by: Eddú Meléndez Gonzales
---
docs/getting_started.md | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/docs/getting_started.md b/docs/getting_started.md
index 012b721d42..7781e38eca 100644
--- a/docs/getting_started.md
+++ b/docs/getting_started.md
@@ -16,10 +16,15 @@ You will need an instance of `DockerClientConfig` to tell the library how to acc
The builder is available and allows you to configure every property of the client:
```java
+import com.github.dockerjava.core.DockerClientConfig
+import com.github.dockerjava.core.DefaultDockerClientConfig
DockerClientConfig standard = DefaultDockerClientConfig.createDefaultConfigBuilder().build();
```
```java
+import com.github.dockerjava.core.DockerClientConfig
+import com.github.dockerjava.core.DefaultDockerClientConfig
+
DockerClientConfig custom = DefaultDockerClientConfig.createDefaultConfigBuilder()
.withDockerHost("tcp://docker.somewhere.tld:2376")
.withDockerTlsVerify(true)
From 9b7adaeb0c7d616f7ff7550059fca5b3f01cbcad Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Edd=C3=BA=20Mel=C3=A9ndez=20Gonzales?=
Date: Tue, 22 Nov 2022 09:15:10 -0800
Subject: [PATCH 009/163] Add load async operation (#1982)
---
.../github/dockerjava/api/DockerClient.java | 3 ++
.../dockerjava/api/DockerClientDelegate.java | 6 +++
.../DelegatingDockerCmdExecFactory.java | 5 ++
.../api/command/DockerCmdExecFactory.java | 2 +
.../api/command/LoadImageAsyncCmd.java | 22 +++++++++
.../api/command/LoadImageCallback.java | 49 +++++++++++++++++++
.../api/model/LoadResponseItem.java | 33 +++++++++++++
.../core/AbstractDockerCmdExecFactory.java | 7 +++
.../dockerjava/core/DockerClientImpl.java | 7 +++
.../core/command/LoadImageAsyncCmdImpl.java | 42 ++++++++++++++++
.../core/exec/LoadImageAsyncCmdExec.java | 30 ++++++++++++
.../github/dockerjava/cmd/LoadImageCmdIT.java | 14 ++++++
12 files changed, 220 insertions(+)
create mode 100644 docker-java-api/src/main/java/com/github/dockerjava/api/command/LoadImageAsyncCmd.java
create mode 100644 docker-java-api/src/main/java/com/github/dockerjava/api/command/LoadImageCallback.java
create mode 100644 docker-java-api/src/main/java/com/github/dockerjava/api/model/LoadResponseItem.java
create mode 100644 docker-java-core/src/main/java/com/github/dockerjava/core/command/LoadImageAsyncCmdImpl.java
create mode 100644 docker-java-core/src/main/java/com/github/dockerjava/core/exec/LoadImageAsyncCmdExec.java
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/DockerClient.java b/docker-java-api/src/main/java/com/github/dockerjava/api/DockerClient.java
index 9df5c5f116..e5f57e1bb5 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/DockerClient.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/DockerClient.java
@@ -42,6 +42,7 @@
import com.github.dockerjava.api.command.ListSwarmNodesCmd;
import com.github.dockerjava.api.command.ListTasksCmd;
import com.github.dockerjava.api.command.ListVolumesCmd;
+import com.github.dockerjava.api.command.LoadImageAsyncCmd;
import com.github.dockerjava.api.command.LoadImageCmd;
import com.github.dockerjava.api.command.LogContainerCmd;
import com.github.dockerjava.api.command.LogSwarmObjectCmd;
@@ -131,6 +132,8 @@ public interface DockerClient extends Closeable {
*/
LoadImageCmd loadImageCmd(@Nonnull InputStream imageStream);
+ LoadImageAsyncCmd loadImageAsyncCmd(@Nonnull InputStream imageStream);
+
SearchImagesCmd searchImagesCmd(@Nonnull String term);
RemoveImageCmd removeImageCmd(@Nonnull String imageId);
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/DockerClientDelegate.java b/docker-java-api/src/main/java/com/github/dockerjava/api/DockerClientDelegate.java
index 15f96df45f..5de64641fb 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/DockerClientDelegate.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/DockerClientDelegate.java
@@ -42,6 +42,7 @@
import com.github.dockerjava.api.command.ListSwarmNodesCmd;
import com.github.dockerjava.api.command.ListTasksCmd;
import com.github.dockerjava.api.command.ListVolumesCmd;
+import com.github.dockerjava.api.command.LoadImageAsyncCmd;
import com.github.dockerjava.api.command.LoadImageCmd;
import com.github.dockerjava.api.command.LogContainerCmd;
import com.github.dockerjava.api.command.LogSwarmObjectCmd;
@@ -153,6 +154,11 @@ public LoadImageCmd loadImageCmd(@Nonnull InputStream imageStream) {
return getDockerClient().loadImageCmd(imageStream);
}
+ @Override
+ public LoadImageAsyncCmd loadImageAsyncCmd(@Nonnull InputStream imageStream) {
+ return getDockerClient().loadImageAsyncCmd(imageStream);
+ }
+
@Override
public SearchImagesCmd searchImagesCmd(@Nonnull String term) {
return getDockerClient().searchImagesCmd(term);
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/DelegatingDockerCmdExecFactory.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/DelegatingDockerCmdExecFactory.java
index 37639a072b..161ff2c29a 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/command/DelegatingDockerCmdExecFactory.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/DelegatingDockerCmdExecFactory.java
@@ -75,6 +75,11 @@ public LoadImageCmd.Exec createLoadImageCmdExec() {
return getDockerCmdExecFactory().createLoadImageCmdExec();
}
+ @Override
+ public LoadImageAsyncCmd.Exec createLoadImageAsyncCmdExec() {
+ return getDockerCmdExecFactory().createLoadImageAsyncCmdExec();
+ }
+
@Override
public SearchImagesCmd.Exec createSearchImagesCmdExec() {
return getDockerCmdExecFactory().createSearchImagesCmdExec();
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/DockerCmdExecFactory.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/DockerCmdExecFactory.java
index d496066801..cedf6d40d2 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/command/DockerCmdExecFactory.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/DockerCmdExecFactory.java
@@ -27,6 +27,8 @@ public interface DockerCmdExecFactory extends Closeable {
LoadImageCmd.Exec createLoadImageCmdExec();
+ LoadImageAsyncCmd.Exec createLoadImageAsyncCmdExec();
+
SearchImagesCmd.Exec createSearchImagesCmdExec();
RemoveImageCmd.Exec createRemoveImageCmdExec();
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/LoadImageAsyncCmd.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/LoadImageAsyncCmd.java
new file mode 100644
index 0000000000..4f054db225
--- /dev/null
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/LoadImageAsyncCmd.java
@@ -0,0 +1,22 @@
+package com.github.dockerjava.api.command;
+
+import com.github.dockerjava.api.model.LoadResponseItem;
+
+import java.io.InputStream;
+
+public interface LoadImageAsyncCmd extends AsyncDockerCmd {
+ InputStream getImageStream();
+
+ /**
+ * @param imageStream the InputStream of the tar file
+ */
+ LoadImageAsyncCmd withImageStream(InputStream imageStream);
+
+ @Override
+ default LoadImageCallback start() {
+ return exec(new LoadImageCallback());
+ }
+
+ interface Exec extends DockerCmdAsyncExec {
+ }
+}
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/LoadImageCallback.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/LoadImageCallback.java
new file mode 100644
index 0000000000..7415984655
--- /dev/null
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/LoadImageCallback.java
@@ -0,0 +1,49 @@
+package com.github.dockerjava.api.command;
+
+import com.github.dockerjava.api.async.ResultCallbackTemplate;
+import com.github.dockerjava.api.exception.DockerClientException;
+import com.github.dockerjava.api.model.LoadResponseItem;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class LoadImageCallback extends ResultCallbackTemplate {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(LoadImageCallback.class);
+
+ private String message;
+
+ private String error;
+
+ @Override
+ public void onNext(LoadResponseItem item) {
+ if (item.isBuildSuccessIndicated()) {
+ this.message = item.getMessage();
+ } else if (item.isErrorIndicated()) {
+ this.error = item.getError();
+ }
+
+ LOGGER.debug(item.toString());
+ }
+
+ public String awaitMessage() {
+ try {
+ awaitCompletion();
+ } catch (InterruptedException e) {
+ throw new DockerClientException("", e);
+ }
+
+ return getMessage();
+ }
+
+ private String getMessage() {
+ if (this.message != null) {
+ return this.message;
+ }
+
+ if (this.error == null) {
+ throw new DockerClientException("Could not build image");
+ }
+
+ throw new DockerClientException("Could not build image: " + this.error);
+ }
+}
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/LoadResponseItem.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/LoadResponseItem.java
new file mode 100644
index 0000000000..bf90c69bf2
--- /dev/null
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/LoadResponseItem.java
@@ -0,0 +1,33 @@
+package com.github.dockerjava.api.model;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+
+public class LoadResponseItem extends ResponseItem {
+
+ private static final long serialVersionUID = 1L;
+
+ private static final String IMPORT_SUCCESS = "Loaded image:";
+
+ /**
+ * Returns whether the stream field indicates a successful build operation
+ */
+ @JsonIgnore
+ public boolean isBuildSuccessIndicated() {
+ if (isErrorIndicated() || getStream() == null) {
+ return false;
+ }
+
+ return getStream().contains(IMPORT_SUCCESS);
+ }
+
+ @JsonIgnore
+ public String getMessage() {
+ if (!isBuildSuccessIndicated()) {
+ return null;
+ } else if (getStream().contains(IMPORT_SUCCESS)) {
+ return getStream();
+ }
+
+ return null;
+ }
+}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/AbstractDockerCmdExecFactory.java b/docker-java-core/src/main/java/com/github/dockerjava/core/AbstractDockerCmdExecFactory.java
index 3e329911fb..4b49da035e 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/AbstractDockerCmdExecFactory.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/AbstractDockerCmdExecFactory.java
@@ -44,6 +44,7 @@
import com.github.dockerjava.api.command.ListSwarmNodesCmd;
import com.github.dockerjava.api.command.ListTasksCmd;
import com.github.dockerjava.api.command.ListVolumesCmd;
+import com.github.dockerjava.api.command.LoadImageAsyncCmd;
import com.github.dockerjava.api.command.LoadImageCmd;
import com.github.dockerjava.api.command.LogContainerCmd;
import com.github.dockerjava.api.command.LogSwarmObjectCmd;
@@ -101,6 +102,7 @@
import com.github.dockerjava.core.exec.ExecStartCmdExec;
import com.github.dockerjava.core.exec.InspectConfigCmdExec;
import com.github.dockerjava.core.exec.ListConfigsCmdExec;
+import com.github.dockerjava.core.exec.LoadImageAsyncCmdExec;
import com.github.dockerjava.core.exec.RemoveConfigCmdExec;
import com.github.dockerjava.core.exec.ResizeContainerCmdExec;
import com.github.dockerjava.core.exec.ResizeExecCmdExec;
@@ -255,6 +257,11 @@ public LoadImageCmd.Exec createLoadImageCmdExec() {
return new LoadImageCmdExec(getBaseResource(), getDockerClientConfig());
}
+ @Override
+ public LoadImageAsyncCmd.Exec createLoadImageAsyncCmdExec() {
+ return new LoadImageAsyncCmdExec(getBaseResource(), getDockerClientConfig());
+ }
+
@Override
public SearchImagesCmd.Exec createSearchImagesCmdExec() {
return new SearchImagesCmdExec(getBaseResource(), getDockerClientConfig());
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/DockerClientImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/DockerClientImpl.java
index c27a332600..8de9002797 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/DockerClientImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/DockerClientImpl.java
@@ -44,6 +44,7 @@
import com.github.dockerjava.api.command.ListSwarmNodesCmd;
import com.github.dockerjava.api.command.ListTasksCmd;
import com.github.dockerjava.api.command.ListVolumesCmd;
+import com.github.dockerjava.api.command.LoadImageAsyncCmd;
import com.github.dockerjava.api.command.LoadImageCmd;
import com.github.dockerjava.api.command.LogContainerCmd;
import com.github.dockerjava.api.command.LogSwarmObjectCmd;
@@ -127,6 +128,7 @@
import com.github.dockerjava.core.command.ListSwarmNodesCmdImpl;
import com.github.dockerjava.core.command.ListTasksCmdImpl;
import com.github.dockerjava.core.command.ListVolumesCmdImpl;
+import com.github.dockerjava.core.command.LoadImageAsyncCmdImpl;
import com.github.dockerjava.core.command.LoadImageCmdImpl;
import com.github.dockerjava.core.command.LogContainerCmdImpl;
import com.github.dockerjava.core.command.LogSwarmObjectImpl;
@@ -350,6 +352,11 @@ public LoadImageCmd loadImageCmd(@Nonnull InputStream imageStream) {
return new LoadImageCmdImpl(getDockerCmdExecFactory().createLoadImageCmdExec(), imageStream);
}
+ @Override
+ public LoadImageAsyncCmd loadImageAsyncCmd(@Nonnull InputStream imageStream) {
+ return new LoadImageAsyncCmdImpl(getDockerCmdExecFactory().createLoadImageAsyncCmdExec(), imageStream);
+ }
+
@Override
public SearchImagesCmd searchImagesCmd(String term) {
return new SearchImagesCmdImpl(getDockerCmdExecFactory().createSearchImagesCmdExec(), term);
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/LoadImageAsyncCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/LoadImageAsyncCmdImpl.java
new file mode 100644
index 0000000000..92311b4bf8
--- /dev/null
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/LoadImageAsyncCmdImpl.java
@@ -0,0 +1,42 @@
+package com.github.dockerjava.core.command;
+
+import com.github.dockerjava.api.command.LoadImageAsyncCmd;
+import com.github.dockerjava.api.model.LoadResponseItem;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+public class LoadImageAsyncCmdImpl extends AbstrAsyncDockerCmd implements LoadImageAsyncCmd {
+
+ private InputStream inputStream;
+
+ public LoadImageAsyncCmdImpl(LoadImageAsyncCmd.Exec exec, InputStream inputStream) {
+ super(exec);
+ this.inputStream = inputStream;
+ }
+
+ @Override
+ public InputStream getImageStream() {
+ return this.inputStream;
+ }
+
+ @Override
+ public LoadImageAsyncCmd withImageStream(InputStream imageStream) {
+ checkNotNull(imageStream, "imageStream was not specified");
+ this.inputStream = imageStream;
+ return this;
+ }
+
+ @Override
+ public void close() {
+ super.close();
+
+ try {
+ this.inputStream.close();
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/exec/LoadImageAsyncCmdExec.java b/docker-java-core/src/main/java/com/github/dockerjava/core/exec/LoadImageAsyncCmdExec.java
new file mode 100644
index 0000000000..47f1d52fcc
--- /dev/null
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/exec/LoadImageAsyncCmdExec.java
@@ -0,0 +1,30 @@
+package com.github.dockerjava.core.exec;
+
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.github.dockerjava.api.async.ResultCallback;
+import com.github.dockerjava.api.command.LoadImageAsyncCmd;
+import com.github.dockerjava.api.model.LoadResponseItem;
+import com.github.dockerjava.core.DockerClientConfig;
+import com.github.dockerjava.core.WebTarget;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class LoadImageAsyncCmdExec extends AbstrAsyncDockerCmdExec implements LoadImageAsyncCmd.Exec {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(LoadImageAsyncCmdExec.class);
+
+ public LoadImageAsyncCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) {
+ super(baseResource, dockerClientConfig);
+ }
+
+ @Override
+ protected Void execute0(LoadImageAsyncCmd command, ResultCallback resultCallback) {
+ WebTarget webTarget = getBaseResource().path("/images/load");
+
+ LOGGER.trace("POST: {}", webTarget);
+
+ webTarget.request().post(new TypeReference() { }, resultCallback, command.getImageStream());
+
+ return null;
+ }
+}
diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/LoadImageCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/LoadImageCmdIT.java
index 5734163f9a..5b87f17a69 100644
--- a/docker-java/src/test/java/com/github/dockerjava/cmd/LoadImageCmdIT.java
+++ b/docker-java/src/test/java/com/github/dockerjava/cmd/LoadImageCmdIT.java
@@ -1,5 +1,6 @@
package com.github.dockerjava.cmd;
+import com.github.dockerjava.api.command.LoadImageCallback;
import com.github.dockerjava.api.model.Image;
import com.github.dockerjava.utils.TestResources;
import net.jcip.annotations.NotThreadSafe;
@@ -53,6 +54,19 @@ public void loadImageFromTar() throws Exception {
asList(image.getRepoTags()), equalTo(singletonList("docker-java/load:1.0")));
}
+ @Test
+ public void loadImageFromTarAsync() throws Exception {
+ try (InputStream uploadStream = Files.newInputStream(TestResources.getApiImagesLoadTestTarball())) {
+ dockerRule.getClient().loadImageAsyncCmd(uploadStream).exec(new LoadImageCallback()).awaitMessage();
+ }
+
+ final Image image = findImageWithId(expectedImageId, dockerRule.getClient().listImagesCmd().exec());
+
+ assertThat("Can't find expected image after loading from a tar archive!", image, notNullValue());
+ assertThat("Image after loading from a tar archive has wrong tags!",
+ asList(image.getRepoTags()), equalTo(singletonList("docker-java/load:1.0")));
+ }
+
private Image findImageWithId(final String id, final List images) {
for (Image image : images) {
if (id.equals(image.getId())) {
From 079797ffb278a48ebc5db6d1032f36f0f1ec7243 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 8 Dec 2022 16:56:10 -0600
Subject: [PATCH 010/163] Bump junixsocket.version from 2.3.2 to 2.6.1 (#1988)
Bumps `junixsocket.version` from 2.3.2 to 2.6.1.
Updates `junixsocket-common` from 2.3.2 to 2.6.1
- [Release notes](https://github.com/kohlschutter/junixsocket/releases)
- [Commits](https://github.com/kohlschutter/junixsocket/compare/junixsocket-parent-2.3.2...junixsocket-2.6.1)
Updates `junixsocket-native-common` from 2.3.2 to 2.6.1
- [Release notes](https://github.com/kohlschutter/junixsocket/releases)
- [Commits](https://github.com/kohlschutter/junixsocket/compare/junixsocket-parent-2.3.2...junixsocket-2.6.1)
---
updated-dependencies:
- dependency-name: com.kohlschutter.junixsocket:junixsocket-common
dependency-type: direct:production
update-type: version-update:semver-minor
- dependency-name: com.kohlschutter.junixsocket:junixsocket-native-common
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 6976c5c74d..b2c2c876ac 100644
--- a/pom.xml
+++ b/pom.xml
@@ -68,7 +68,7 @@
1.7.301.64
- 2.3.2
+ 2.6.119.0
From 0867f5b43317f13353be7c48a8e3879aeeee13d6 Mon Sep 17 00:00:00 2001
From: belugabehr <12578579+belugabehr@users.noreply.github.com>
Date: Fri, 3 Feb 2023 12:30:19 -0500
Subject: [PATCH 011/163] Fix typo of certificate (#2053)
---
.../com/github/dockerjava/core/DefaultDockerClientConfig.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/DefaultDockerClientConfig.java b/docker-java-core/src/main/java/com/github/dockerjava/core/DefaultDockerClientConfig.java
index 7f17295f30..1fe22ceeb4 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/DefaultDockerClientConfig.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/DefaultDockerClientConfig.java
@@ -454,7 +454,7 @@ public DefaultDockerClientConfig build() {
private String checkDockerCertPath(String dockerCertPath) {
if (StringUtils.isEmpty(dockerCertPath)) {
throw new DockerClientException(
- "Enabled TLS verification (DOCKER_TLS_VERIFY=1) but certifate path (DOCKER_CERT_PATH) is not defined.");
+ "Enabled TLS verification (DOCKER_TLS_VERIFY=1) but certificate path (DOCKER_CERT_PATH) is not defined.");
}
File certPath = new File(dockerCertPath);
From db508d877ab9e573af43c0bcc90c735d024ddbed Mon Sep 17 00:00:00 2001
From: Harald Albers
Date: Sun, 5 Feb 2023 23:38:06 +0000
Subject: [PATCH 012/163] Add `Name` to `ContainerNetworkConfig` (#2052)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: Harald Albers
Co-authored-by: Eddú Meléndez Gonzales
---
.../java/com/github/dockerjava/api/model/Network.java | 10 ++++++++++
1 file changed, 10 insertions(+)
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 f6d989d3f9..7e5110ce6a 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
@@ -97,6 +97,12 @@ public Map getLabels() {
public static class ContainerNetworkConfig extends DockerObject implements Serializable {
private static final long serialVersionUID = 1L;
+ /**
+ * @since {@link RemoteApiVersion#VERSION_1_22}
+ */
+ @JsonProperty("Name")
+ private String name;
+
@JsonProperty("EndpointID")
private String endpointId;
@@ -109,6 +115,10 @@ public static class ContainerNetworkConfig extends DockerObject implements Seria
@JsonProperty("IPv6Address")
private String ipv6Address;
+ public String getName() {
+ return name;
+ }
+
public String getEndpointId() {
return endpointId;
}
From f8fd4924dbb0c4ef4d018a86b83da3d44767e5a8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Simon=20K=C3=A5gedal=20Reimer?=
Date: Tue, 7 Feb 2023 15:53:27 +0100
Subject: [PATCH 013/163] Support docker context (#2036)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Resolve Docker Client Config by reading `DOCKER_CONTEXT` env var or
`currentContext` from `~/.docker/config.json`.
Co-authored-by: Eddú Meléndez Gonzales
---
.../core/DefaultDockerClientConfig.java | 56 +++++++++++----
.../dockerjava/core/DockerConfigFile.java | 17 ++++-
.../core/DockerContextMetaFile.java | 66 +++++++++++++++++
.../core/DefaultDockerClientConfigTest.java | 72 +++++++++++++++----
.../core/DockerClientBuilderTest.java | 5 ++
.../dockerjava/core/DockerClientImplTest.java | 3 +-
.../dockerjava/core/DockerConfigFileTest.java | 8 +++
.../dockerContextHomeDir/.docker/config.json | 4 ++
.../meta.json | 12 ++++
.../meta.json | 12 ++++
.../resources/someHomeDir/.docker/config.json | 4 +-
.../config.json | 4 ++
12 files changed, 234 insertions(+), 29 deletions(-)
create mode 100644 docker-java-core/src/main/java/com/github/dockerjava/core/DockerContextMetaFile.java
create mode 100644 docker-java/src/test/resources/dockerContextHomeDir/.docker/config.json
create mode 100644 docker-java/src/test/resources/dockerContextHomeDir/.docker/contexts/meta/51699a7c75211315f1dbf6ecc40dfb0ffdd4ee11ecb2ce7853c9751aea1f9444/meta.json
create mode 100644 docker-java/src/test/resources/dockerContextHomeDir/.docker/contexts/meta/d090e08f0c9167acd72adef6d9fa07ec2de3a873cdd545dd8cb7fc7a10a1331a/meta.json
create mode 100644 docker-java/src/test/resources/testAuthConfigFile/validDockerConfigWithCurrentContext/config.json
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/DefaultDockerClientConfig.java b/docker-java-core/src/main/java/com/github/dockerjava/core/DefaultDockerClientConfig.java
index 1fe22ceeb4..88d9e49f0c 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/DefaultDockerClientConfig.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/DefaultDockerClientConfig.java
@@ -5,6 +5,7 @@
import com.github.dockerjava.api.model.AuthConfigurations;
import com.github.dockerjava.core.NameParser.HostnameReposName;
import com.github.dockerjava.core.NameParser.ReposTag;
+import java.util.Optional;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.SystemUtils;
import org.apache.commons.lang3.builder.EqualsBuilder;
@@ -37,6 +38,8 @@ public class DefaultDockerClientConfig implements Serializable, DockerClientConf
public static final String DOCKER_HOST = "DOCKER_HOST";
+ public static final String DOCKER_CONTEXT = "DOCKER_CONTEXT";
+
public static final String DOCKER_TLS_VERIFY = "DOCKER_TLS_VERIFY";
public static final String DOCKER_CONFIG = "DOCKER_CONFIG";
@@ -87,11 +90,13 @@ public class DefaultDockerClientConfig implements Serializable, DockerClientConf
private final RemoteApiVersion apiVersion;
- private DockerConfigFile dockerConfig = null;
+ private final DockerConfigFile dockerConfig;
- DefaultDockerClientConfig(URI dockerHost, String dockerConfigPath, String apiVersion, String registryUrl,
- String registryUsername, String registryPassword, String registryEmail, SSLConfig sslConfig) {
+ DefaultDockerClientConfig(URI dockerHost, DockerConfigFile dockerConfigFile, String dockerConfigPath, String apiVersion,
+ String registryUrl, String registryUsername, String registryPassword, String registryEmail,
+ SSLConfig sslConfig) {
this.dockerHost = checkDockerHostScheme(dockerHost);
+ this.dockerConfig = dockerConfigFile;
this.dockerConfigPath = dockerConfigPath;
this.apiVersion = RemoteApiVersion.parseConfigWithDefault(apiVersion);
this.sslConfig = sslConfig;
@@ -174,6 +179,13 @@ private static Properties overrideDockerPropertiesWithEnv(Properties properties,
}
}
+ if (env.containsKey(DOCKER_CONTEXT)) {
+ String value = env.get(DOCKER_CONTEXT);
+ if (value != null && value.trim().length() != 0) {
+ overriddenProperties.setProperty(DOCKER_CONTEXT, value);
+ }
+ }
+
for (Map.Entry envEntry : env.entrySet()) {
String envKey = envEntry.getKey();
if (CONFIG_KEYS.contains(envKey)) {
@@ -258,13 +270,6 @@ public String getDockerConfigPath() {
@Nonnull
public DockerConfigFile getDockerConfig() {
- if (dockerConfig == null) {
- try {
- dockerConfig = DockerConfigFile.loadConfig(getObjectMapper(), getDockerConfigPath());
- } catch (IOException e) {
- throw new DockerClientException("Failed to parse docker configuration file", e);
- }
- }
return dockerConfig;
}
@@ -325,7 +330,7 @@ public static class Builder {
private URI dockerHost;
private String apiVersion, registryUsername, registryPassword, registryEmail, registryUrl, dockerConfig,
- dockerCertPath;
+ dockerCertPath, dockerContext;
private Boolean dockerTlsVerify;
@@ -343,6 +348,7 @@ public Builder withProperties(Properties p) {
}
return withDockerTlsVerify(p.getProperty(DOCKER_TLS_VERIFY))
+ .withDockerContext(p.getProperty(DOCKER_CONTEXT))
.withDockerConfig(p.getProperty(DOCKER_CONFIG))
.withDockerCertPath(p.getProperty(DOCKER_CERT_PATH))
.withApiVersion(p.getProperty(API_VERSION))
@@ -401,6 +407,11 @@ public final Builder withDockerConfig(String dockerConfig) {
return this;
}
+ public final Builder withDockerContext(String dockerContext) {
+ this.dockerContext = dockerContext;
+ return this;
+ }
+
public final Builder withDockerTlsVerify(String dockerTlsVerify) {
if (dockerTlsVerify != null) {
String trimmed = dockerTlsVerify.trim();
@@ -443,14 +454,33 @@ public DefaultDockerClientConfig build() {
sslConfig = customSslConfig;
}
+ final DockerConfigFile dockerConfigFile = readDockerConfig();
+
+ final String context = (dockerContext != null) ? dockerContext : dockerConfigFile.getCurrentContext();
URI dockerHostUri = dockerHost != null
? dockerHost
- : URI.create(SystemUtils.IS_OS_WINDOWS ? WINDOWS_DEFAULT_DOCKER_HOST : DEFAULT_DOCKER_HOST);
+ : resolveDockerHost(context);
- return new DefaultDockerClientConfig(dockerHostUri, dockerConfig, apiVersion, registryUrl, registryUsername,
+ return new DefaultDockerClientConfig(dockerHostUri, dockerConfigFile, dockerConfig, apiVersion, registryUrl, registryUsername,
registryPassword, registryEmail, sslConfig);
}
+ private DockerConfigFile readDockerConfig() {
+ try {
+ return DockerConfigFile.loadConfig(DockerClientConfig.getDefaultObjectMapper(), dockerConfig);
+ } catch (IOException e) {
+ throw new DockerClientException("Failed to parse docker configuration file", e);
+ }
+ }
+
+ private URI resolveDockerHost(String dockerContext) {
+ return URI.create(Optional.ofNullable(dockerContext)
+ .flatMap(context -> DockerContextMetaFile.resolveContextMetaFile(
+ DockerClientConfig.getDefaultObjectMapper(), new File(dockerConfig), context))
+ .flatMap(DockerContextMetaFile::host)
+ .orElse(SystemUtils.IS_OS_WINDOWS ? WINDOWS_DEFAULT_DOCKER_HOST : DEFAULT_DOCKER_HOST));
+ }
+
private String checkDockerCertPath(String dockerCertPath) {
if (StringUtils.isEmpty(dockerCertPath)) {
throw new DockerClientException(
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/DockerConfigFile.java b/docker-java-core/src/main/java/com/github/dockerjava/core/DockerConfigFile.java
index eb5a94e2e4..825796a74f 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/DockerConfigFile.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/DockerConfigFile.java
@@ -5,6 +5,7 @@
import com.fasterxml.jackson.databind.ObjectMapper;
import com.github.dockerjava.api.model.AuthConfig;
import com.github.dockerjava.api.model.AuthConfigurations;
+import java.util.Objects;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
@@ -29,6 +30,9 @@ public class DockerConfigFile {
@JsonProperty
private final Map auths;
+ @JsonProperty
+ private String currentContext;
+
public DockerConfigFile() {
this(new HashMap<>());
}
@@ -46,6 +50,14 @@ void addAuthConfig(AuthConfig config) {
auths.put(config.getRegistryAddress(), config);
}
+ void setCurrentContext(String currentContext) {
+ this.currentContext = currentContext;
+ }
+
+ public String getCurrentContext() {
+ return currentContext;
+ }
+
@CheckForNull
public AuthConfig resolveAuthConfig(@CheckForNull String hostname) {
if (StringUtils.isEmpty(hostname) || AuthConfig.DEFAULT_SERVER_ADDRESS.equals(hostname)) {
@@ -104,6 +116,9 @@ public boolean equals(Object obj) {
return false;
} else if (!auths.equals(other.auths))
return false;
+ if (!Objects.equals(currentContext, other.currentContext)) {
+ return false;
+ }
return true;
}
@@ -111,7 +126,7 @@ public boolean equals(Object obj) {
@Override
public String toString() {
- return "DockerConfigFile [auths=" + auths + "]";
+ return "DockerConfigFile [auths=" + auths + ", currentContext='" + currentContext + "']";
}
@Nonnull
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/DockerContextMetaFile.java b/docker-java-core/src/main/java/com/github/dockerjava/core/DockerContextMetaFile.java
new file mode 100644
index 0000000000..a52304c8e8
--- /dev/null
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/DockerContextMetaFile.java
@@ -0,0 +1,66 @@
+package com.github.dockerjava.core;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.google.common.hash.HashFunction;
+import com.google.common.hash.Hashing;
+import java.io.File;
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.util.Optional;
+
+public class DockerContextMetaFile {
+ private static HashFunction metaHashFunction = Hashing.sha256();
+
+ @JsonProperty("Name")
+ String name;
+
+ @JsonProperty("Endpoints")
+ Endpoints endpoints;
+
+ public static class Endpoints {
+ @JsonProperty("docker")
+ Docker docker;
+
+ public static class Docker {
+ @JsonProperty("Host")
+ String host;
+
+ @JsonProperty("SkipTLSVerify")
+ boolean skipTLSVerify;
+ }
+ }
+
+ public Optional host() {
+ if (endpoints != null && endpoints.docker != null) {
+ return Optional.ofNullable(endpoints.docker.host);
+ }
+ return Optional.empty();
+ }
+
+ public static Optional resolveContextMetaFile(ObjectMapper objectMapper, File dockerConfigPath, String context) {
+ final File path = dockerConfigPath.toPath()
+ .resolve("contexts")
+ .resolve("meta")
+ .resolve(metaHashFunction.hashString(context, StandardCharsets.UTF_8).toString())
+ .resolve("meta.json")
+ .toFile();
+ return Optional.ofNullable(loadContextMetaFile(objectMapper, path));
+ }
+
+ public static DockerContextMetaFile loadContextMetaFile(ObjectMapper objectMapper, File dockerContextMetaFile) {
+ try {
+ return parseContextMetaFile(objectMapper, dockerContextMetaFile);
+ } catch (Exception exception) {
+ return null;
+ }
+ }
+
+ public static DockerContextMetaFile parseContextMetaFile(ObjectMapper objectMapper, File dockerContextMetaFile) throws IOException {
+ try {
+ return objectMapper.readValue(dockerContextMetaFile, DockerContextMetaFile.class);
+ } catch (IOException e) {
+ throw new IOException("Failed to parse docker context meta file " + dockerContextMetaFile, e);
+ }
+ }
+}
diff --git a/docker-java/src/test/java/com/github/dockerjava/core/DefaultDockerClientConfigTest.java b/docker-java/src/test/java/com/github/dockerjava/core/DefaultDockerClientConfigTest.java
index 02b7e34ae5..d5b751145a 100644
--- a/docker-java/src/test/java/com/github/dockerjava/core/DefaultDockerClientConfigTest.java
+++ b/docker-java/src/test/java/com/github/dockerjava/core/DefaultDockerClientConfigTest.java
@@ -1,9 +1,9 @@
package com.github.dockerjava.core;
-import com.github.dockerjava.api.exception.DockerClientException;
import com.github.dockerjava.api.model.AuthConfig;
import com.github.dockerjava.api.model.AuthConfigurations;
import com.google.common.io.Resources;
+import java.io.IOException;
import org.apache.commons.lang3.SerializationUtils;
import org.junit.Test;
@@ -27,13 +27,26 @@
public class DefaultDockerClientConfigTest {
public static final DefaultDockerClientConfig EXAMPLE_CONFIG = newExampleConfig();
+ public static final DefaultDockerClientConfig EXAMPLE_CONFIG_FULLY_LOADED = newExampleConfigFullyLoaded();
private static DefaultDockerClientConfig newExampleConfig() {
-
String dockerCertPath = dockerCertPath();
+ return new DefaultDockerClientConfig(URI.create("tcp://foo"), null, "dockerConfig", "apiVersion", "registryUrl",
+ "registryUsername", "registryPassword", "registryEmail",
+ new LocalDirectorySSLConfig(dockerCertPath));
+ }
- return new DefaultDockerClientConfig(URI.create("tcp://foo"), "dockerConfig", "apiVersion", "registryUrl", "registryUsername", "registryPassword", "registryEmail",
+ private static DefaultDockerClientConfig newExampleConfigFullyLoaded() {
+ try {
+ String dockerCertPath = dockerCertPath();
+ String dockerConfig = "dockerConfig";
+ DockerConfigFile loadedConfigFile = DockerConfigFile.loadConfig(DockerClientConfig.getDefaultObjectMapper(), dockerConfig);
+ return new DefaultDockerClientConfig(URI.create("tcp://foo"), loadedConfigFile, dockerConfig, "apiVersion", "registryUrl",
+ "registryUsername", "registryPassword", "registryEmail",
new LocalDirectorySSLConfig(dockerCertPath));
+ } catch (IOException exception) {
+ throw new RuntimeException(exception);
+ }
}
private static String homeDir() {
@@ -69,6 +82,37 @@ public void environmentDockerHost() throws Exception {
assertEquals(config.getDockerHost(), URI.create("tcp://baz:8768"));
}
+ @Test
+ public void dockerContextFromConfig() throws Exception {
+ // given home directory with docker contexts configured
+ Properties systemProperties = new Properties();
+ systemProperties.setProperty("user.home", "target/test-classes/dockerContextHomeDir");
+
+ // and an empty environment
+ Map env = new HashMap<>();
+
+ // when you build a config
+ DefaultDockerClientConfig config = buildConfig(env, systemProperties);
+
+ assertEquals(URI.create("unix:///configcontext.sock"), config.getDockerHost());
+ }
+
+ @Test
+ public void dockerContextFromEnvironmentVariable() throws Exception {
+ // given home directory with docker contexts
+ Properties systemProperties = new Properties();
+ systemProperties.setProperty("user.home", "target/test-classes/dockerContextHomeDir");
+
+ // and an environment variable that overrides docker context
+ Map env = new HashMap<>();
+ env.put(DefaultDockerClientConfig.DOCKER_CONTEXT, "envvarcontext");
+
+ // when you build a config
+ DefaultDockerClientConfig config = buildConfig(env, systemProperties);
+
+ assertEquals(URI.create("unix:///envvarcontext.sock"), config.getDockerHost());
+ }
+
@Test
public void environment() throws Exception {
@@ -88,7 +132,7 @@ public void environment() throws Exception {
DefaultDockerClientConfig config = buildConfig(env, new Properties());
// then we get the example object
- assertEquals(config, EXAMPLE_CONFIG);
+ assertEquals(EXAMPLE_CONFIG_FULLY_LOADED, config);
}
@Test
@@ -147,7 +191,7 @@ public void systemProperties() throws Exception {
DefaultDockerClientConfig config = buildConfig(Collections. emptyMap(), systemProperties);
// then it is the same as the example
- assertEquals(config, EXAMPLE_CONFIG);
+ assertEquals(EXAMPLE_CONFIG_FULLY_LOADED, config);
}
@@ -161,7 +205,7 @@ public void serializableTest() {
@Test()
public void testSslContextEmpty() throws Exception {
- new DefaultDockerClientConfig(URI.create("tcp://foo"), "dockerConfig", "apiVersion", "registryUrl", "registryUsername", "registryPassword", "registryEmail",
+ new DefaultDockerClientConfig(URI.create("tcp://foo"), new DockerConfigFile(), "dockerConfig", "apiVersion", "registryUrl", "registryUsername", "registryPassword", "registryEmail",
null);
}
@@ -169,14 +213,14 @@ public void testSslContextEmpty() throws Exception {
@Test()
public void testTlsVerifyAndCertPath() throws Exception {
- new DefaultDockerClientConfig(URI.create("tcp://foo"), "dockerConfig", "apiVersion", "registryUrl", "registryUsername", "registryPassword", "registryEmail",
+ new DefaultDockerClientConfig(URI.create("tcp://foo"), new DockerConfigFile(), "dockerConfig", "apiVersion", "registryUrl", "registryUsername", "registryPassword", "registryEmail",
new LocalDirectorySSLConfig(dockerCertPath()));
}
@Test()
public void testAnyHostScheme() throws Exception {
URI dockerHost = URI.create("a" + UUID.randomUUID().toString().replace("-", "") + "://foo");
- new DefaultDockerClientConfig(dockerHost, "dockerConfig", "apiVersion", "registryUrl", "registryUsername", "registryPassword", "registryEmail",
+ new DefaultDockerClientConfig(dockerHost, new DockerConfigFile(), "dockerConfig", "apiVersion", "registryUrl", "registryUsername", "registryPassword", "registryEmail",
null);
}
@@ -249,10 +293,12 @@ public void dockerHostSetExplicitlyIfSetToDefaultByUser() {
@Test
- public void testGetAuthConfigurationsFromDockerCfg() throws URISyntaxException {
+ public void testGetAuthConfigurationsFromDockerCfg() throws URISyntaxException, IOException {
File cfgFile = new File(Resources.getResource("com.github.dockerjava.core/registry.v1").toURI());
+ DockerConfigFile dockerConfigFile =
+ DockerConfigFile.loadConfig(DockerClientConfig.getDefaultObjectMapper(), cfgFile.getAbsolutePath());
DefaultDockerClientConfig clientConfig = new DefaultDockerClientConfig(URI.create(
- "unix://foo"), cfgFile.getAbsolutePath(), "apiVersion", "registryUrl", "registryUsername", "registryPassword",
+ "unix://foo"), dockerConfigFile, cfgFile.getAbsolutePath(), "apiVersion", "registryUrl", "registryUsername", "registryPassword",
"registryEmail", null);
AuthConfigurations authConfigurations = clientConfig.getAuthConfigurations();
@@ -265,10 +311,12 @@ public void testGetAuthConfigurationsFromDockerCfg() throws URISyntaxException {
}
@Test
- public void testGetAuthConfigurationsFromConfigJson() throws URISyntaxException {
+ public void testGetAuthConfigurationsFromConfigJson() throws URISyntaxException, IOException {
File cfgFile = new File(Resources.getResource("com.github.dockerjava.core/registry.v2").toURI());
+ DockerConfigFile dockerConfigFile =
+ DockerConfigFile.loadConfig(DockerClientConfig.getDefaultObjectMapper(), cfgFile.getAbsolutePath());
DefaultDockerClientConfig clientConfig = new DefaultDockerClientConfig(URI.create(
- "unix://foo"), cfgFile.getAbsolutePath(), "apiVersion", "registryUrl", "registryUsername", "registryPassword",
+ "unix://foo"), dockerConfigFile, cfgFile.getAbsolutePath(), "apiVersion", "registryUrl", "registryUsername", "registryPassword",
"registryEmail", null);
AuthConfigurations authConfigurations = clientConfig.getAuthConfigurations();
diff --git a/docker-java/src/test/java/com/github/dockerjava/core/DockerClientBuilderTest.java b/docker-java/src/test/java/com/github/dockerjava/core/DockerClientBuilderTest.java
index be0bfda8ab..43e700fd8d 100644
--- a/docker-java/src/test/java/com/github/dockerjava/core/DockerClientBuilderTest.java
+++ b/docker-java/src/test/java/com/github/dockerjava/core/DockerClientBuilderTest.java
@@ -1,7 +1,12 @@
package com.github.dockerjava.core;
+import com.github.dockerjava.api.DockerClient;
import com.github.dockerjava.api.command.DockerCmdExecFactory;
+import com.github.dockerjava.api.model.PushResponseItem;
+import com.github.dockerjava.httpclient5.ApacheDockerHttpClient;
+import com.github.dockerjava.transport.DockerHttpClient;
+import java.time.Duration;
import org.junit.Test;
import java.util.ArrayList;
diff --git a/docker-java/src/test/java/com/github/dockerjava/core/DockerClientImplTest.java b/docker-java/src/test/java/com/github/dockerjava/core/DockerClientImplTest.java
index 08f658d52a..8ff17857f4 100644
--- a/docker-java/src/test/java/com/github/dockerjava/core/DockerClientImplTest.java
+++ b/docker-java/src/test/java/com/github/dockerjava/core/DockerClientImplTest.java
@@ -12,7 +12,8 @@ public class DockerClientImplTest {
@Test
public void configuredInstanceAuthConfig() throws Exception {
// given a config with null serverAddress
- DefaultDockerClientConfig dockerClientConfig = new DefaultDockerClientConfig(URI.create("tcp://foo"), null, null, null, "", "", "", null);
+ DefaultDockerClientConfig dockerClientConfig = new DefaultDockerClientConfig(URI.create("tcp://foo"),
+ new DockerConfigFile(), null, null, null, "", "", "", null);
DockerClientImpl dockerClient = DockerClientImpl.getInstance(dockerClientConfig);
// when we get the auth config
diff --git a/docker-java/src/test/java/com/github/dockerjava/core/DockerConfigFileTest.java b/docker-java/src/test/java/com/github/dockerjava/core/DockerConfigFileTest.java
index 83bc124e91..ce1a59cc0e 100644
--- a/docker-java/src/test/java/com/github/dockerjava/core/DockerConfigFileTest.java
+++ b/docker-java/src/test/java/com/github/dockerjava/core/DockerConfigFileTest.java
@@ -150,6 +150,14 @@ public void validDockerConfig() throws IOException {
assertThat(runTest("validDockerConfig"), is(expected));
}
+ @Test
+ public void validDockerConfigWithCurrentContext() throws IOException {
+ DockerConfigFile expected = new DockerConfigFile();
+ expected.setCurrentContext("expectedContext");
+
+ assertThat(runTest("validDockerConfigWithCurrentContext"), is(expected));
+ }
+
@Test
public void nonExistent() throws IOException {
DockerConfigFile expected = new DockerConfigFile();
diff --git a/docker-java/src/test/resources/dockerContextHomeDir/.docker/config.json b/docker-java/src/test/resources/dockerContextHomeDir/.docker/config.json
new file mode 100644
index 0000000000..5bb2ebebe9
--- /dev/null
+++ b/docker-java/src/test/resources/dockerContextHomeDir/.docker/config.json
@@ -0,0 +1,4 @@
+{
+ "auths": {},
+ "currentContext": "configcontext"
+}
diff --git a/docker-java/src/test/resources/dockerContextHomeDir/.docker/contexts/meta/51699a7c75211315f1dbf6ecc40dfb0ffdd4ee11ecb2ce7853c9751aea1f9444/meta.json b/docker-java/src/test/resources/dockerContextHomeDir/.docker/contexts/meta/51699a7c75211315f1dbf6ecc40dfb0ffdd4ee11ecb2ce7853c9751aea1f9444/meta.json
new file mode 100644
index 0000000000..c6456d6b8f
--- /dev/null
+++ b/docker-java/src/test/resources/dockerContextHomeDir/.docker/contexts/meta/51699a7c75211315f1dbf6ecc40dfb0ffdd4ee11ecb2ce7853c9751aea1f9444/meta.json
@@ -0,0 +1,12 @@
+{
+ "Name": "envvarcontext",
+ "Metadata": {
+ "Description": "envvarcontext"
+ },
+ "Endpoints": {
+ "docker": {
+ "Host": "unix:///envvarcontext.sock",
+ "SkipTLSVerify": false
+ }
+ }
+}
diff --git a/docker-java/src/test/resources/dockerContextHomeDir/.docker/contexts/meta/d090e08f0c9167acd72adef6d9fa07ec2de3a873cdd545dd8cb7fc7a10a1331a/meta.json b/docker-java/src/test/resources/dockerContextHomeDir/.docker/contexts/meta/d090e08f0c9167acd72adef6d9fa07ec2de3a873cdd545dd8cb7fc7a10a1331a/meta.json
new file mode 100644
index 0000000000..adff3b1c9f
--- /dev/null
+++ b/docker-java/src/test/resources/dockerContextHomeDir/.docker/contexts/meta/d090e08f0c9167acd72adef6d9fa07ec2de3a873cdd545dd8cb7fc7a10a1331a/meta.json
@@ -0,0 +1,12 @@
+{
+ "Name": "configcontext",
+ "Metadata": {
+ "Description": "configcontext"
+ },
+ "Endpoints": {
+ "docker": {
+ "Host": "unix:///configcontext.sock",
+ "SkipTLSVerify": false
+ }
+ }
+}
diff --git a/docker-java/src/test/resources/someHomeDir/.docker/config.json b/docker-java/src/test/resources/someHomeDir/.docker/config.json
index 6303940392..02ed0cf7f2 100644
--- a/docker-java/src/test/resources/someHomeDir/.docker/config.json
+++ b/docker-java/src/test/resources/someHomeDir/.docker/config.json
@@ -1,9 +1,9 @@
{
"auths":{
"https://index.docker.io/v1/":{
- "auth":"XXXX=",
+ "auth":"dXNlcm5hbWU6cGFzc3dvcmQ=",
"email":"foo.bar@test.com"
}
}
-}
\ No newline at end of file
+}
diff --git a/docker-java/src/test/resources/testAuthConfigFile/validDockerConfigWithCurrentContext/config.json b/docker-java/src/test/resources/testAuthConfigFile/validDockerConfigWithCurrentContext/config.json
new file mode 100644
index 0000000000..8c5963f879
--- /dev/null
+++ b/docker-java/src/test/resources/testAuthConfigFile/validDockerConfigWithCurrentContext/config.json
@@ -0,0 +1,4 @@
+{
+ "auths": {},
+ "currentContext": "expectedContext"
+}
From 26cd13ced7aa9e605910b77a62200db2eded92c7 Mon Sep 17 00:00:00 2001
From: Harald Albers
Date: Thu, 9 Feb 2023 21:49:21 +0000
Subject: [PATCH 014/163] Fix parameter order in `assertEquals` (#2066)
Signed-off-by: Harald Albers
Fixes #1923
---
.../api/ModelsSerializableTest.java | 1 -
.../command/InspectContainerResponseTest.java | 28 ++++----
.../dockerjava/api/model/AccessModeTest.java | 6 +-
.../dockerjava/api/model/AuthConfigTest.java | 2 +-
.../dockerjava/api/model/CapabilityTest.java | 4 +-
.../dockerjava/api/model/DeviceTest.java | 2 +-
.../dockerjava/api/model/ExposedPortTest.java | 6 +-
.../api/model/ExposedPortsTest.java | 2 +-
.../dockerjava/api/model/HostConfigTest.java | 2 +-
.../dockerjava/api/model/IdentifierTest.java | 18 ++---
.../api/model/InternetProtocolTest.java | 8 +--
.../github/dockerjava/api/model/LinkTest.java | 10 +--
.../dockerjava/api/model/PortBindingTest.java | 10 +--
.../api/model/PortsAddBindingsTest.java | 12 ++--
.../api/model/PortsSerializingTest.java | 16 ++---
.../api/model/RestartPolicyParsingTest.java | 24 +++----
.../model/RestartPolicySerializingTest.java | 10 +--
.../api/model/RestartPolicyToStringTest.java | 4 +-
.../dockerjava/api/model/VolumeBindsTest.java | 6 +-
.../api/model/VolumeFromSerializingTest.java | 2 +-
.../dockerjava/api/model/VolumeTest.java | 2 +-
.../dockerjava/cmd/AttachContainerCmdIT.java | 5 +-
.../com/github/dockerjava/cmd/AuthCmdIT.java | 4 +-
.../dockerjava/cmd/BuildImageCmdIT.java | 14 ++--
.../cmd/CopyArchiveFromContainerCmdIT.java | 6 +-
.../cmd/CopyArchiveToContainerCmdIT.java | 2 +-
.../cmd/CopyFileFromContainerCmdIT.java | 4 +-
.../dockerjava/cmd/CreateContainerCmdIT.java | 1 -
.../dockerjava/cmd/CreateNetworkCmdIT.java | 4 +-
.../dockerjava/cmd/CustomCommandIT.java | 1 -
.../cmd/DisconnectFromNetworkCmdIT.java | 4 +-
.../dockerjava/cmd/InspectContainerCmdIT.java | 2 +-
.../dockerjava/cmd/InspectExecCmdIT.java | 2 +-
.../dockerjava/cmd/ListContainersCmdIT.java | 16 ++---
.../dockerjava/cmd/LogContainerCmdIT.java | 2 +-
.../github/dockerjava/cmd/PushImageCmdIT.java | 2 +-
.../cmd/RemoveContainerCmdImplIT.java | 2 +-
.../dockerjava/cmd/RemoveImageCmdIT.java | 4 +-
.../dockerjava/cmd/RenameContainerCmdIT.java | 2 +-
.../cmd/RestartContainerCmdImplIT.java | 2 +-
.../dockerjava/cmd/StartContainerCmdIT.java | 2 +-
.../github/dockerjava/cmd/TagImageCmdIT.java | 4 +-
.../dockerjava/cmd/UpdateContainerCmdIT.java | 2 +-
.../github/dockerjava/cmd/VersionCmdIT.java | 2 +-
.../dockerjava/cmd/WaitContainerCmdIT.java | 2 +-
.../cmd/swarm/CreateSecretCmdExecIT.java | 2 +-
.../cmd/swarm/CreateServiceCmdExecIT.java | 2 +-
.../cmd/swarm/InspectConfigCmdIT.java | 2 -
.../cmd/swarm/JoinSwarmCmdExecIT.java | 6 +-
.../cmd/swarm/ListServicesCmdExecIT.java | 2 +-
.../cmd/swarm/ListSwarmNodesCmdExecIT.java | 10 +--
.../dockerjava/cmd/swarm/SwarmCmdIT.java | 2 +-
.../cmd/swarm/UpdateSwarmNodeIT.java | 2 +-
.../cmd/swarm/UpdateSwarmServiceIT.java | 2 +-
.../core/DefaultDockerClientConfigTest.java | 32 ++++-----
.../core/DockerClientBuilderTest.java | 7 +-
.../dockerjava/core/DockerClientImplTest.java | 6 +-
.../dockerjava/core/GoLangFileMatchTest.java | 2 +-
.../dockerjava/core/NameParserTest.java | 66 +++++++++----------
.../core/command/FrameReaderTest.java | 6 +-
.../core/util/CompressArchiveUtilTest.java | 2 +-
.../NettyDockerCmdExecFactoryConfigTest.java | 8 +--
.../dockerjava/netty/NettyWebTargetTest.java | 14 ++--
.../FramedResponseStreamHandlerTest.java | 12 ++--
.../HttpResponseStreamHandlerTest.java | 8 +--
65 files changed, 223 insertions(+), 236 deletions(-)
diff --git a/docker-java/src/test/java/com/github/dockerjava/api/ModelsSerializableTest.java b/docker-java/src/test/java/com/github/dockerjava/api/ModelsSerializableTest.java
index 4dc87cafbf..1c7c1de6c8 100644
--- a/docker-java/src/test/java/com/github/dockerjava/api/ModelsSerializableTest.java
+++ b/docker-java/src/test/java/com/github/dockerjava/api/ModelsSerializableTest.java
@@ -9,7 +9,6 @@
import com.github.dockerjava.api.model.ResponseItem;
import com.google.common.reflect.ClassPath.ClassInfo;
import org.apache.commons.lang3.reflect.FieldUtils;
-import org.hamcrest.MatcherAssert;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/docker-java/src/test/java/com/github/dockerjava/api/command/InspectContainerResponseTest.java b/docker-java/src/test/java/com/github/dockerjava/api/command/InspectContainerResponseTest.java
index 0620883167..12105e8a14 100644
--- a/docker-java/src/test/java/com/github/dockerjava/api/command/InspectContainerResponseTest.java
+++ b/docker-java/src/test/java/com/github/dockerjava/api/command/InspectContainerResponseTest.java
@@ -56,11 +56,11 @@ public void roundTrip_full() throws IOException {
final InspectContainerResponse response = responses[0];
// Check volumes: https://github.com/docker-java/docker-java/issues/211
- assertEquals(response.getVolumes().length, 2);
- assertEquals(response.getVolumesRW().length, 2);
- assertEquals(response.getVolumes()[1].getContainerPath(), "/bar/foo/myvol2");
- assertEquals(response.getVolumes()[1].getHostPath(), "/path2");
- assertEquals(response.getVolumesRW()[1].getVolume().getPath(), "/bar/foo/myvol2");
+ assertEquals(2, response.getVolumes().length);
+ assertEquals(2, response.getVolumesRW().length);
+ assertEquals("/bar/foo/myvol2" ,response.getVolumes()[1].getContainerPath());
+ assertEquals("/path2", response.getVolumes()[1].getHostPath());
+ assertEquals("/bar/foo/myvol2", response.getVolumesRW()[1].getVolume().getPath());
assertFalse(response.getVolumesRW()[1].getAccessMode().toBoolean());
assertTrue(response.getVolumesRW()[0].getAccessMode().toBoolean());
assertThat(response.getLogPath(), is("/mnt/sda1/var/lib/docker/containers/469e5edd8d5b33e3c905a7ffc97360ec6ee211d6782815fbcd144568045819e1/469e5edd8d5b33e3c905a7ffc97360ec6ee211d6782815fbcd144568045819e1-json.log"));
@@ -76,11 +76,11 @@ public void roundTrip_full_healthcheck() throws IOException {
type
);
- assertEquals(response.getState().getHealth().getStatus(), "healthy");
- assertEquals(response.getState().getHealth().getFailingStreak(), new Integer(0));
- assertEquals(response.getState().getHealth().getLog().size(), 2);
- assertEquals(response.getState().getHealth().getLog().get(0).getOutput(), "Hello");
- assertEquals(response.getState().getHealth().getLog().get(1).getOutput(), "World");
+ assertEquals("healthy", response.getState().getHealth().getStatus());
+ assertEquals(new Integer(0), response.getState().getHealth().getFailingStreak());
+ assertEquals(2, response.getState().getHealth().getLog().size());
+ assertEquals("Hello", response.getState().getHealth().getLog().get(0).getOutput());
+ assertEquals("World", response.getState().getHealth().getLog().get(1).getOutput());
}
@Test
@@ -108,11 +108,11 @@ public void roundTrip_1_26a_full() throws IOException {
final InspectContainerResponse response = responses[0];
final List mounts = response.getMounts();
- assertEquals(mounts.size(), 1);
+ assertEquals(1, mounts.size());
final InspectContainerResponse.Mount mount = mounts.get(0);
final Volume volume = mount.getDestination();
- assertEquals(volume.getPath(), "/var/lib/postgresql/data");
+ assertEquals("/var/lib/postgresql/data", volume.getPath());
}
@Test
@@ -124,11 +124,11 @@ public void roundTrip_1_26b_full() throws IOException {
final InspectContainerResponse response = responses[0];
final List mounts = response.getMounts();
- assertEquals(mounts.size(), 1);
+ assertEquals(1, mounts.size());
final InspectContainerResponse.Mount mount = mounts.get(0);
final Volume volume = mount.getDestination();
- assertEquals(volume.getPath(), "/srv/test");
+ assertEquals("/srv/test", volume.getPath());
}
@Test
diff --git a/docker-java/src/test/java/com/github/dockerjava/api/model/AccessModeTest.java b/docker-java/src/test/java/com/github/dockerjava/api/model/AccessModeTest.java
index 9d08843dca..d5ff7044a2 100644
--- a/docker-java/src/test/java/com/github/dockerjava/api/model/AccessModeTest.java
+++ b/docker-java/src/test/java/com/github/dockerjava/api/model/AccessModeTest.java
@@ -15,17 +15,17 @@ public class AccessModeTest {
@Test
public void defaultAccessMode() {
- assertEquals(AccessMode.DEFAULT, rw);
+ assertEquals(rw, AccessMode.DEFAULT);
}
@Test
public void stringify() {
- assertEquals(AccessMode.rw.toString(), "rw");
+ assertEquals("rw", AccessMode.rw.toString());
}
@Test
public void fromString() {
- assertEquals(AccessMode.valueOf("rw"), rw);
+ assertEquals(rw, AccessMode.valueOf("rw"));
}
@Test
diff --git a/docker-java/src/test/java/com/github/dockerjava/api/model/AuthConfigTest.java b/docker-java/src/test/java/com/github/dockerjava/api/model/AuthConfigTest.java
index 86120733be..ae3e4a91bb 100644
--- a/docker-java/src/test/java/com/github/dockerjava/api/model/AuthConfigTest.java
+++ b/docker-java/src/test/java/com/github/dockerjava/api/model/AuthConfigTest.java
@@ -17,7 +17,7 @@
public class AuthConfigTest {
@Test
- public void defaultServerAddress() throws Exception {
+ public void defaultServerAddress() {
assertEquals(new AuthConfig().getRegistryAddress(), "https://index.docker.io/v1/");
}
diff --git a/docker-java/src/test/java/com/github/dockerjava/api/model/CapabilityTest.java b/docker-java/src/test/java/com/github/dockerjava/api/model/CapabilityTest.java
index e76d2437c5..aa6167b8cb 100644
--- a/docker-java/src/test/java/com/github/dockerjava/api/model/CapabilityTest.java
+++ b/docker-java/src/test/java/com/github/dockerjava/api/model/CapabilityTest.java
@@ -11,13 +11,13 @@ public class CapabilityTest {
@Test
public void serializeCapability() throws Exception {
String json = JSONTestHelper.getMapper().writeValueAsString(Capability.ALL);
- assertEquals(json, "\"ALL\"");
+ assertEquals("\"ALL\"", json);
}
@Test
public void deserializeCapability() throws Exception {
Capability capability = JSONTestHelper.getMapper().readValue("\"ALL\"", Capability.class);
- assertEquals(capability, Capability.ALL);
+ assertEquals(Capability.ALL, capability);
}
@Test(expected = JsonMappingException.class)
diff --git a/docker-java/src/test/java/com/github/dockerjava/api/model/DeviceTest.java b/docker-java/src/test/java/com/github/dockerjava/api/model/DeviceTest.java
index 18c6fbbc84..9d191fe523 100644
--- a/docker-java/src/test/java/com/github/dockerjava/api/model/DeviceTest.java
+++ b/docker-java/src/test/java/com/github/dockerjava/api/model/DeviceTest.java
@@ -54,7 +54,7 @@ public class DeviceTest {
}};
@Test
- public void testParse() throws Exception {
+ public void testParse() {
assertThat(Device.parse("/dev/sda:/dev/xvdc:r"),
equalTo(new Device("r", "/dev/xvdc", "/dev/sda")));
diff --git a/docker-java/src/test/java/com/github/dockerjava/api/model/ExposedPortTest.java b/docker-java/src/test/java/com/github/dockerjava/api/model/ExposedPortTest.java
index 20999a92f7..fce761380d 100644
--- a/docker-java/src/test/java/com/github/dockerjava/api/model/ExposedPortTest.java
+++ b/docker-java/src/test/java/com/github/dockerjava/api/model/ExposedPortTest.java
@@ -16,13 +16,13 @@ public class ExposedPortTest {
@Test
public void parsePortAndProtocol() {
ExposedPort exposedPort = ExposedPort.parse("80/tcp");
- assertEquals(exposedPort, new ExposedPort(80, TCP));
+ assertEquals(new ExposedPort(80, TCP), exposedPort);
}
@Test
public void parsePortOnly() {
ExposedPort exposedPort = ExposedPort.parse("80");
- assertEquals(exposedPort, new ExposedPort(80, DEFAULT));
+ assertEquals(new ExposedPort(80, DEFAULT), exposedPort);
}
@Test
@@ -43,7 +43,7 @@ public void parseNull() {
@Test
public void stringify() {
- assertEquals(ExposedPort.parse("80/tcp").toString(), "80/tcp");
+ assertEquals("80/tcp", ExposedPort.parse("80/tcp").toString());
}
}
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 456e65ca40..f46dddc68a 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
@@ -51,7 +51,7 @@ public void usesFromJson() throws Exception {
}
@Test
- public void usesFromJsonWithDuplicate() throws Exception {
+ public void usesFromJsonWithDuplicate() {
ExposedPorts ports = new ExposedPorts(
new ExposedPort(80, InternetProtocol.UDP),
new ExposedPort(80),
diff --git a/docker-java/src/test/java/com/github/dockerjava/api/model/HostConfigTest.java b/docker-java/src/test/java/com/github/dockerjava/api/model/HostConfigTest.java
index d69c31ba91..5e13103dd3 100644
--- a/docker-java/src/test/java/com/github/dockerjava/api/model/HostConfigTest.java
+++ b/docker-java/src/test/java/com/github/dockerjava/api/model/HostConfigTest.java
@@ -8,7 +8,7 @@
public class HostConfigTest {
@Test
- public void testNewObjectsEqual() throws Exception {
+ public void testNewObjectsEqual() {
assertThat(HostConfig.newHostConfig(),
equalTo(HostConfig.newHostConfig()));
}
diff --git a/docker-java/src/test/java/com/github/dockerjava/api/model/IdentifierTest.java b/docker-java/src/test/java/com/github/dockerjava/api/model/IdentifierTest.java
index c39706e517..3b8efa2c57 100644
--- a/docker-java/src/test/java/com/github/dockerjava/api/model/IdentifierTest.java
+++ b/docker-java/src/test/java/com/github/dockerjava/api/model/IdentifierTest.java
@@ -17,26 +17,26 @@ public void testFromCompoundString() throws Exception {
Identifier i3A = Identifier.fromCompoundString("10.0.0.1:123/jim:latest");
assertTrue(!i1.tag.isPresent());
- assertEquals(i1.repository.name, "10.0.0.1/jim");
+ assertEquals("10.0.0.1/jim", i1.repository.name);
assertTrue(i2.tag.isPresent());
- assertEquals(i2.tag.get(), "123");
- assertEquals(i2.repository.name, "10.0.0.1/jim");
+ assertEquals("123", i2.tag.get());
+ assertEquals("10.0.0.1/jim", i2.repository.name);
assertTrue(i3.tag.isPresent());
- assertEquals(i3.tag.get(), "124");
- assertEquals(i3.repository.name, "10.0.0.1:123/jim");
- assertEquals(i3.repository.getURL().getPort(), 123);
- assertEquals(i3A.tag.get(), "latest");
+ assertEquals("124", i3.tag.get());
+ assertEquals("10.0.0.1:123/jim", i3.repository.name);
+ assertEquals(123, i3.repository.getURL().getPort());
+ assertEquals("latest", i3A.tag.get());
Identifier i4 = Identifier.fromCompoundString("centos:latest");
assertTrue(i4.tag.isPresent());
- assertEquals(i4.tag.get(), "latest");
+ assertEquals("latest", i4.tag.get());
Identifier i5 = Identifier.fromCompoundString("busybox");
assertTrue(!i5.tag.isPresent());
Identifier i6 = Identifier.fromCompoundString("10.0.0.1:5000/my-test-image:1234");
- assertEquals(i6.repository.getPath(), "my-test-image");
+ assertEquals("my-test-image", i6.repository.getPath());
}
}
diff --git a/docker-java/src/test/java/com/github/dockerjava/api/model/InternetProtocolTest.java b/docker-java/src/test/java/com/github/dockerjava/api/model/InternetProtocolTest.java
index 5efb8d2c38..0421e14110 100644
--- a/docker-java/src/test/java/com/github/dockerjava/api/model/InternetProtocolTest.java
+++ b/docker-java/src/test/java/com/github/dockerjava/api/model/InternetProtocolTest.java
@@ -13,22 +13,22 @@ public class InternetProtocolTest {
@Test
public void defaultProtocol() {
- assertEquals(InternetProtocol.DEFAULT, TCP);
+ assertEquals(TCP, InternetProtocol.DEFAULT);
}
@Test
public void stringify() {
- assertEquals(TCP.toString(), "tcp");
+ assertEquals("tcp", TCP.toString());
}
@Test
public void parseUpperCase() {
- assertEquals(InternetProtocol.parse("TCP"), TCP);
+ assertEquals(TCP, InternetProtocol.parse("TCP"));
}
@Test
public void parseLowerCase() {
- assertEquals(InternetProtocol.parse("tcp"), TCP);
+ assertEquals(TCP, InternetProtocol.parse("tcp"));
}
@Test
diff --git a/docker-java/src/test/java/com/github/dockerjava/api/model/LinkTest.java b/docker-java/src/test/java/com/github/dockerjava/api/model/LinkTest.java
index 18363a9ee4..b780eb22fc 100644
--- a/docker-java/src/test/java/com/github/dockerjava/api/model/LinkTest.java
+++ b/docker-java/src/test/java/com/github/dockerjava/api/model/LinkTest.java
@@ -14,15 +14,15 @@ public class LinkTest {
@Test
public void parse() {
Link link = Link.parse("name:alias");
- assertEquals(link.getName(), "name");
- assertEquals(link.getAlias(), "alias");
+ assertEquals("name", link.getName());
+ assertEquals("alias", link.getAlias());
}
@Test
public void parseWithContainerNames() {
Link link = Link.parse("/name:/conatiner/alias");
- assertEquals(link.getName(), "name");
- assertEquals(link.getAlias(), "alias");
+ assertEquals("name", link.getName());
+ assertEquals("alias", link.getAlias());
}
@Test
@@ -43,7 +43,7 @@ public void parseNull() {
@Test
public void stringify() {
- assertEquals(Link.parse("name:alias").toString(), "name:alias");
+ assertEquals("name:alias", Link.parse("name:alias").toString());
}
}
diff --git a/docker-java/src/test/java/com/github/dockerjava/api/model/PortBindingTest.java b/docker-java/src/test/java/com/github/dockerjava/api/model/PortBindingTest.java
index 3849a60948..9190cfda44 100644
--- a/docker-java/src/test/java/com/github/dockerjava/api/model/PortBindingTest.java
+++ b/docker-java/src/test/java/com/github/dockerjava/api/model/PortBindingTest.java
@@ -23,27 +23,27 @@ public void fullDefinition() {
@Test
public void noProtocol() {
- assertEquals(PortBinding.parse("127.0.0.1:80:8080"), new PortBinding(Binding.bindIpAndPort("127.0.0.1", 80), TCP_8080));
+ assertEquals(new PortBinding(Binding.bindIpAndPort("127.0.0.1", 80), TCP_8080), PortBinding.parse("127.0.0.1:80:8080"));
}
@Test
public void noHostIp() {
- assertEquals(PortBinding.parse("80:8080/tcp"), new PortBinding(Binding.bindPort(80), TCP_8080));
+ assertEquals(new PortBinding(Binding.bindPort(80), TCP_8080), PortBinding.parse("80:8080/tcp"));
}
@Test
public void portsOnly() {
- assertEquals(PortBinding.parse("80:8080"), new PortBinding(Binding.bindPort(80), TCP_8080));
+ assertEquals(new PortBinding(Binding.bindPort(80), TCP_8080), PortBinding.parse("80:8080"));
}
@Test
public void exposedPortOnly() {
- assertEquals(PortBinding.parse("8080"), new PortBinding(Binding.empty(), TCP_8080));
+ assertEquals(new PortBinding(Binding.empty(), TCP_8080), PortBinding.parse("8080"));
}
@Test
public void dynamicHostPort() {
- assertEquals(PortBinding.parse("127.0.0.1::8080"), new PortBinding(Binding.bindIp("127.0.0.1"), TCP_8080));
+ assertEquals(new PortBinding(Binding.bindIp("127.0.0.1"), TCP_8080), PortBinding.parse("127.0.0.1::8080"));
}
@Test
diff --git a/docker-java/src/test/java/com/github/dockerjava/api/model/PortsAddBindingsTest.java b/docker-java/src/test/java/com/github/dockerjava/api/model/PortsAddBindingsTest.java
index 02b3047e78..484e5897f3 100644
--- a/docker-java/src/test/java/com/github/dockerjava/api/model/PortsAddBindingsTest.java
+++ b/docker-java/src/test/java/com/github/dockerjava/api/model/PortsAddBindingsTest.java
@@ -36,9 +36,9 @@ public void addTwoBindingsForDifferentExposedPorts() {
Map bindings = ports.getBindings();
// two keys with one value each
- assertEquals(bindings.size(), 2);
- assertArrayEquals(bindings.get(TCP_80), new Binding[] {BINDING_8080});
- assertArrayEquals(bindings.get(TCP_90), new Binding[] {BINDING_9090});
+ assertEquals(2, bindings.size());
+ assertArrayEquals(new Binding[] {BINDING_8080}, bindings.get(TCP_80));
+ assertArrayEquals(new Binding[] {BINDING_9090}, bindings.get(TCP_90));
}
@Test
@@ -47,8 +47,8 @@ public void addTwoBindingsForSameExposedPort() {
Map bindings = ports.getBindings();
// one key with two values
- assertEquals(bindings.size(), 1);
- assertArrayEquals(bindings.get(TCP_80), new Binding[] {BINDING_8080, BINDING_9090});
+ assertEquals(1, bindings.size());
+ assertArrayEquals(new Binding[] {BINDING_8080, BINDING_9090}, bindings.get(TCP_80));
}
@Test
@@ -56,7 +56,7 @@ public void addNullBindings() {
ports.add(new PortBinding(null, TCP_80));
Map bindings = ports.getBindings();
// one key with two values
- assertEquals(bindings.size(), 1);
+ assertEquals(1, bindings.size());
assertNull(bindings.get(TCP_80));
}
}
diff --git a/docker-java/src/test/java/com/github/dockerjava/api/model/PortsSerializingTest.java b/docker-java/src/test/java/com/github/dockerjava/api/model/PortsSerializingTest.java
index ecbdd9a49d..2f528556f8 100644
--- a/docker-java/src/test/java/com/github/dockerjava/api/model/PortsSerializingTest.java
+++ b/docker-java/src/test/java/com/github/dockerjava/api/model/PortsSerializingTest.java
@@ -19,12 +19,12 @@ public class PortsSerializingTest {
public void deserializingPortWithMultipleBindings() throws Exception {
Ports ports = JSONTestHelper.getMapper().readValue(jsonWithDoubleBindingForOnePort, Ports.class);
Map map = ports.getBindings();
- assertEquals(map.size(), 1);
+ assertEquals(1, map.size());
Binding[] bindings = map.get(ExposedPort.tcp(80));
- assertEquals(bindings.length, 2);
- assertEquals(bindings[0], new Binding("10.0.0.1", "80"));
- assertEquals(bindings[1], new Binding("10.0.0.2", "80"));
+ assertEquals(2, bindings.length);
+ assertEquals(new Binding("10.0.0.1", "80"), bindings[0]);
+ assertEquals(new Binding("10.0.0.2", "80"), bindings[1]);
}
@Test
@@ -32,20 +32,20 @@ public void serializingPortWithMultipleBindings() throws Exception {
Ports ports = new Ports();
ports.bind(ExposedPort.tcp(80), new Binding("10.0.0.1", "80"));
ports.bind(ExposedPort.tcp(80), new Binding("10.0.0.2", "80"));
- assertEquals(JSONTestHelper.getMapper().writeValueAsString(ports), jsonWithDoubleBindingForOnePort);
+ assertEquals(jsonWithDoubleBindingForOnePort, JSONTestHelper.getMapper().writeValueAsString(ports));
}
@Test
public void serializingEmptyBinding() throws Exception {
Ports ports = new Ports(ExposedPort.tcp(80), new Binding(null, null));
- assertEquals(JSONTestHelper.getMapper().writeValueAsString(ports), "{\"80/tcp\":[{\"HostIp\":\"\",\"HostPort\":\"\"}]}");
+ assertEquals("{\"80/tcp\":[{\"HostIp\":\"\",\"HostPort\":\"\"}]}", JSONTestHelper.getMapper().writeValueAsString(ports));
}
@Test
public void deserializingPortWithNullBindings() throws Exception {
Ports ports = JSONTestHelper.getMapper().readValue(jsonWithNullBindingForOnePort, Ports.class);
Map map = ports.getBindings();
- assertEquals(map.size(), 1);
+ assertEquals(1, map.size());
assertNull(map.get(ExposedPort.tcp(80)));
}
@@ -54,6 +54,6 @@ public void deserializingPortWithNullBindings() throws Exception {
public void serializingWithNullBindings() throws Exception {
Ports ports = new Ports();
ports.bind(ExposedPort.tcp(80), null);
- assertEquals(JSONTestHelper.getMapper().writeValueAsString(ports), jsonWithNullBindingForOnePort);
+ assertEquals(jsonWithNullBindingForOnePort, JSONTestHelper.getMapper().writeValueAsString(ports));
}
}
diff --git a/docker-java/src/test/java/com/github/dockerjava/api/model/RestartPolicyParsingTest.java b/docker-java/src/test/java/com/github/dockerjava/api/model/RestartPolicyParsingTest.java
index fb79c0ca91..57dbc1b9f1 100644
--- a/docker-java/src/test/java/com/github/dockerjava/api/model/RestartPolicyParsingTest.java
+++ b/docker-java/src/test/java/com/github/dockerjava/api/model/RestartPolicyParsingTest.java
@@ -13,32 +13,32 @@ public class RestartPolicyParsingTest {
@Test
- public void noRestart() throws Exception {
- assertEquals(RestartPolicy.parse("no"), RestartPolicy.noRestart());
+ public void noRestart() {
+ assertEquals(RestartPolicy.noRestart(), RestartPolicy.parse("no"));
}
@Test
- public void alwaysRestart() throws Exception {
- assertEquals(RestartPolicy.parse("always"), RestartPolicy.alwaysRestart());
+ public void alwaysRestart() {
+ assertEquals(RestartPolicy.alwaysRestart(), RestartPolicy.parse("always"));
}
@Test
- public void unlessStoppedRestart() throws Exception {
- assertEquals(RestartPolicy.parse("unless-stopped"), RestartPolicy.unlessStoppedRestart());
+ public void unlessStoppedRestart() {
+ assertEquals(RestartPolicy.unlessStoppedRestart(), RestartPolicy.parse("unless-stopped"));
}
@Test
- public void onFailureRestart() throws Exception {
- assertEquals(RestartPolicy.parse("on-failure"), RestartPolicy.onFailureRestart(0));
+ public void onFailureRestart() {
+ assertEquals(RestartPolicy.onFailureRestart(0), RestartPolicy.parse("on-failure"));
}
@Test
- public void onFailureRestartWithCount() throws Exception {
- assertEquals(RestartPolicy.parse("on-failure:2"), RestartPolicy.onFailureRestart(2));
+ public void onFailureRestartWithCount() {
+ assertEquals(RestartPolicy.onFailureRestart(2), RestartPolicy.parse("on-failure:2"));
}
@Test
- public void illegalSyntax() throws Exception {
+ public void illegalSyntax() {
expectedEx.expect(IllegalArgumentException.class);
expectedEx.expectMessage("Error parsing RestartPolicy 'nonsense'");
@@ -46,7 +46,7 @@ public void illegalSyntax() throws Exception {
}
@Test
- public void illegalRetryCount() throws Exception {
+ public void illegalRetryCount() {
expectedEx.expect(IllegalArgumentException.class);
expectedEx.expectMessage("Error parsing RestartPolicy 'on-failure:X'");
diff --git a/docker-java/src/test/java/com/github/dockerjava/api/model/RestartPolicySerializingTest.java b/docker-java/src/test/java/com/github/dockerjava/api/model/RestartPolicySerializingTest.java
index 6e4524fd5f..c9c6a897dc 100644
--- a/docker-java/src/test/java/com/github/dockerjava/api/model/RestartPolicySerializingTest.java
+++ b/docker-java/src/test/java/com/github/dockerjava/api/model/RestartPolicySerializingTest.java
@@ -15,35 +15,35 @@ public class RestartPolicySerializingTest {
// --restart no
public void noRestart() throws Exception {
String json = JSONTestHelper.getMapper().writeValueAsString(RestartPolicy.noRestart());
- assertEquals(json, "{\"MaximumRetryCount\":0,\"Name\":\"\"}");
+ assertEquals("{\"MaximumRetryCount\":0,\"Name\":\"\"}", json);
}
@Test
// --restart always
public void alwaysRestart() throws Exception {
String json = JSONTestHelper.getMapper().writeValueAsString(RestartPolicy.alwaysRestart());
- assertEquals(json, "{\"MaximumRetryCount\":0,\"Name\":\"always\"}");
+ assertEquals("{\"MaximumRetryCount\":0,\"Name\":\"always\"}", json);
}
@Test
// --restart unless-stopped
public void unlessStoppedRestart() throws Exception {
String json = JSONTestHelper.getMapper().writeValueAsString(RestartPolicy.unlessStoppedRestart());
- assertEquals(json, "{\"MaximumRetryCount\":0,\"Name\":\"unless-stopped\"}");
+ assertEquals("{\"MaximumRetryCount\":0,\"Name\":\"unless-stopped\"}", json);
}
@Test
// --restart on-failure
public void onFailureRestart() throws Exception {
String json = JSONTestHelper.getMapper().writeValueAsString(RestartPolicy.onFailureRestart(0));
- assertEquals(json, "{\"MaximumRetryCount\":0,\"Name\":\"on-failure\"}");
+ assertEquals("{\"MaximumRetryCount\":0,\"Name\":\"on-failure\"}", json);
}
@Test
// --restart on-failure:2
public void onFailureRestartWithCount() throws Exception {
String json = JSONTestHelper.getMapper().writeValueAsString(RestartPolicy.onFailureRestart(2));
- assertEquals(json, "{\"MaximumRetryCount\":2,\"Name\":\"on-failure\"}");
+ assertEquals("{\"MaximumRetryCount\":2,\"Name\":\"on-failure\"}", json);
}
}
diff --git a/docker-java/src/test/java/com/github/dockerjava/api/model/RestartPolicyToStringTest.java b/docker-java/src/test/java/com/github/dockerjava/api/model/RestartPolicyToStringTest.java
index 4d9fa8cbc2..e32f97341d 100644
--- a/docker-java/src/test/java/com/github/dockerjava/api/model/RestartPolicyToStringTest.java
+++ b/docker-java/src/test/java/com/github/dockerjava/api/model/RestartPolicyToStringTest.java
@@ -18,8 +18,8 @@ public static Object[][] restartPolicies() {
public String policy;
@Test
- public void serializationWithoutCount() throws Exception {
- assertEquals(RestartPolicy.parse(policy).toString(), policy);
+ public void serializationWithoutCount() {
+ assertEquals(policy, RestartPolicy.parse(policy).toString());
}
}
diff --git a/docker-java/src/test/java/com/github/dockerjava/api/model/VolumeBindsTest.java b/docker-java/src/test/java/com/github/dockerjava/api/model/VolumeBindsTest.java
index b413cf0296..7f38eb0f0c 100644
--- a/docker-java/src/test/java/com/github/dockerjava/api/model/VolumeBindsTest.java
+++ b/docker-java/src/test/java/com/github/dockerjava/api/model/VolumeBindsTest.java
@@ -28,9 +28,9 @@ public void t() throws IOException {
String s = "{\"/data\":\"/some/path\"}";
VolumeBinds volumeBinds = JSONTestHelper.getMapper().readValue(s, VolumeBinds.class);
VolumeBind[] binds = volumeBinds.getBinds();
- assertEquals(binds.length, 1);
- assertEquals(binds[0].getHostPath(), "/some/path");
- assertEquals(binds[0].getContainerPath(), "/data");
+ assertEquals(1, binds.length);
+ assertEquals("/some/path", binds[0].getHostPath());
+ assertEquals("/data", binds[0].getContainerPath());
}
@Test(expected = JsonMappingException.class)
diff --git a/docker-java/src/test/java/com/github/dockerjava/api/model/VolumeFromSerializingTest.java b/docker-java/src/test/java/com/github/dockerjava/api/model/VolumeFromSerializingTest.java
index ae343047c1..6155f88e35 100644
--- a/docker-java/src/test/java/com/github/dockerjava/api/model/VolumeFromSerializingTest.java
+++ b/docker-java/src/test/java/com/github/dockerjava/api/model/VolumeFromSerializingTest.java
@@ -18,7 +18,7 @@ public void deserializing() throws Exception {
@Test
public void serializing() throws Exception {
VolumesFrom volumeFrom = new VolumesFrom("container1", AccessMode.ro);
- assertEquals(JSONTestHelper.getMapper().writeValueAsString(volumeFrom), json);
+ assertEquals(json, JSONTestHelper.getMapper().writeValueAsString(volumeFrom));
}
}
diff --git a/docker-java/src/test/java/com/github/dockerjava/api/model/VolumeTest.java b/docker-java/src/test/java/com/github/dockerjava/api/model/VolumeTest.java
index cb1c4befde..20e28a55dc 100644
--- a/docker-java/src/test/java/com/github/dockerjava/api/model/VolumeTest.java
+++ b/docker-java/src/test/java/com/github/dockerjava/api/model/VolumeTest.java
@@ -7,6 +7,6 @@
public class VolumeTest {
@Test
public void getPath() {
- assertEquals(new Volume("/path").getPath(), "/path");
+ assertEquals("/path", new Volume("/path").getPath());
}
}
diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/AttachContainerCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/AttachContainerCmdIT.java
index 0e2df4cd49..dde47e2d81 100644
--- a/docker-java/src/test/java/com/github/dockerjava/cmd/AttachContainerCmdIT.java
+++ b/docker-java/src/test/java/com/github/dockerjava/cmd/AttachContainerCmdIT.java
@@ -5,16 +5,13 @@
import com.github.dockerjava.api.command.CreateContainerResponse;
import com.github.dockerjava.api.model.Frame;
import com.github.dockerjava.api.model.StreamType;
-import org.junit.Assume;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.io.ByteArrayInputStream;
import java.io.File;
-import java.io.InputStream;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;
import java.util.concurrent.CountDownLatch;
@@ -61,7 +58,7 @@ public void attachContainerWithStdin() throws Exception {
AttachContainerTestCallback callback = new AttachContainerTestCallback() {
@Override
public void onNext(Frame frame) {
- assertEquals(frame.getStreamType(), StreamType.STDOUT);
+ assertEquals(StreamType.STDOUT, frame.getStreamType());
super.onNext(frame);
}
};
diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/AuthCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/AuthCmdIT.java
index 887f973347..d37bea8192 100644
--- a/docker-java/src/test/java/com/github/dockerjava/cmd/AuthCmdIT.java
+++ b/docker-java/src/test/java/com/github/dockerjava/cmd/AuthCmdIT.java
@@ -19,7 +19,7 @@
public class AuthCmdIT extends CmdIT {
@Test
- public void testAuth() throws Exception {
+ public void testAuth() {
assumeThat("Fails on 1.22. Temporary disabled.", dockerRule, apiVersionGreater(VERSION_1_22));
AuthResponse response = dockerRule.getClient().authCmd().exec();
@@ -30,7 +30,7 @@ public void testAuth() throws Exception {
@Ignore("Disabled because of 500/InternalServerException")
@Test
- public void testAuthInvalid() throws Exception {
+ public void testAuthInvalid() {
assertThrows("Wrong login/password, please try again", UnauthorizedException.class, () -> {
DockerClientBuilder.getInstance(dockerRule.config("garbage"))
.build()
diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/BuildImageCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/BuildImageCmdIT.java
index cd9b1ef9c8..d514ed59c5 100644
--- a/docker-java/src/test/java/com/github/dockerjava/cmd/BuildImageCmdIT.java
+++ b/docker-java/src/test/java/com/github/dockerjava/cmd/BuildImageCmdIT.java
@@ -163,21 +163,21 @@ private String execBuild(BuildImageCmd buildImageCmd) throws Exception {
}
@Test(expected = DockerClientException.class)
- public void dockerignoreDockerfileIgnored() throws Exception {
+ public void dockerignoreDockerfileIgnored() {
File baseDir = fileFromBuildTestResource("dockerignore/DockerfileIgnored");
dockerRule.getClient().buildImageCmd(baseDir).withNoCache(true).start().awaitImageId();
}
@Test
- public void dockerignoreDockerfileNotIgnored() throws Exception {
+ public void dockerignoreDockerfileNotIgnored() {
File baseDir = fileFromBuildTestResource("dockerignore/DockerfileNotIgnored");
dockerRule.getClient().buildImageCmd(baseDir).withNoCache(true).start().awaitImageId();
}
@Test(expected = DockerClientException.class)
- public void dockerignoreInvalidDockerIgnorePattern() throws Exception {
+ public void dockerignoreInvalidDockerIgnorePattern() {
File baseDir = fileFromBuildTestResource("dockerignore/InvalidDockerignorePattern");
dockerRule.getClient().buildImageCmd(baseDir).withNoCache(true).start().awaitImageId();
@@ -241,7 +241,7 @@ public void fromPrivateRegistry() throws Exception {
}
@Test
- public void buildArgs() throws Exception {
+ public void buildArgs() {
File baseDir = fileFromBuildTestResource("buildArgs");
String imageId = dockerRule.getClient().buildImageCmd(baseDir).withNoCache(true).withBuildArg("testArg", "abc !@#$%^&*()_+")
@@ -256,7 +256,7 @@ public void buildArgs() throws Exception {
}
@Test
- public void labels() throws Exception {
+ public void labels() {
assumeThat("API version should be >= 1.23", dockerRule, isGreaterOrEqual(VERSION_1_23));
File baseDir = fileFromBuildTestResource("labels");
@@ -274,7 +274,7 @@ public void labels() throws Exception {
}
@Test
- public void multipleTags() throws Exception {
+ public void multipleTags() {
assumeThat("API version should be >= 1.23", dockerRule, isGreaterOrEqual(VERSION_1_21));
@@ -295,7 +295,7 @@ public void multipleTags() throws Exception {
}
@Test
- public void cacheFrom() throws Exception {
+ public void cacheFrom() {
assumeThat(dockerRule, isGreaterOrEqual(VERSION_1_27));
File baseDir1 = fileFromBuildTestResource("CacheFrom/test1");
diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/CopyArchiveFromContainerCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/CopyArchiveFromContainerCmdIT.java
index a0eb585ebc..c434c0cb48 100644
--- a/docker-java/src/test/java/com/github/dockerjava/cmd/CopyArchiveFromContainerCmdIT.java
+++ b/docker-java/src/test/java/com/github/dockerjava/cmd/CopyArchiveFromContainerCmdIT.java
@@ -30,7 +30,7 @@ public class CopyArchiveFromContainerCmdIT extends CmdIT {
public static final Logger LOG = LoggerFactory.getLogger(CopyArchiveFromContainerCmdIT.class);
@Test
- public void copyFromContainer() throws Exception {
+ public void copyFromContainer() {
// TODO extract this into a shared method
CreateContainerResponse container = dockerRule.getClient().createContainerCmd(DEFAULT_IMAGE)
.withName("copyFromContainer")
@@ -51,7 +51,7 @@ public void copyFromContainer() throws Exception {
}
@Test(expected = NotFoundException.class)
- public void copyFromNonExistingContainer() throws Exception {
+ public void copyFromNonExistingContainer() {
dockerRule.getClient().copyArchiveFromContainerCmd("non-existing", "/test").exec();
}
@@ -78,7 +78,7 @@ public void copyFromContainerBinaryFile() throws Exception {
try (TarArchiveInputStream tarInputStream = new TarArchiveInputStream(response)) {
TarArchiveEntry nextTarEntry = tarInputStream.getNextTarEntry();
- assertEquals(nextTarEntry.getName(), "binary.dat");
+ assertEquals("binary.dat", nextTarEntry.getName());
try (InputStream binaryFileInputStream = Files.newInputStream(binaryFile, StandardOpenOption.READ)) {
assertTrue(IOUtils.contentEquals(binaryFileInputStream, tarInputStream));
}
diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/CopyArchiveToContainerCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/CopyArchiveToContainerCmdIT.java
index d2a0a34062..f931061e53 100644
--- a/docker-java/src/test/java/com/github/dockerjava/cmd/CopyArchiveToContainerCmdIT.java
+++ b/docker-java/src/test/java/com/github/dockerjava/cmd/CopyArchiveToContainerCmdIT.java
@@ -82,7 +82,7 @@ private void assertFileCopied(CreateContainerResponse container) throws IOExcept
}
@Test(expected = NotFoundException.class)
- public void copyToNonExistingContainer() throws Exception {
+ public void copyToNonExistingContainer() {
dockerRule.getClient().copyArchiveToContainerCmd("non-existing").withHostResource("src/test/resources/testReadFile").exec();
}
diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/CopyFileFromContainerCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/CopyFileFromContainerCmdIT.java
index 74bbad671b..3864aa9e44 100644
--- a/docker-java/src/test/java/com/github/dockerjava/cmd/CopyFileFromContainerCmdIT.java
+++ b/docker-java/src/test/java/com/github/dockerjava/cmd/CopyFileFromContainerCmdIT.java
@@ -23,7 +23,7 @@ public class CopyFileFromContainerCmdIT extends CmdIT {
public static final Logger LOG = LoggerFactory.getLogger(CopyFileFromContainerCmdIT.class);
@Test
- public void copyFromContainer() throws Exception {
+ public void copyFromContainer() {
assumeThat("Doesn't work since 1.24", dockerRule, not(isGreaterOrEqual(VERSION_1_24)));
assumeNotSwarm("", dockerRule);
@@ -51,7 +51,7 @@ public void copyFromContainer() throws Exception {
}
@Test(expected = NotFoundException.class)
- public void copyFromNonExistingContainer() throws Exception {
+ public void copyFromNonExistingContainer() {
dockerRule.getClient().copyFileFromContainerCmd("non-existing", "/test").exec();
}
diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/CreateContainerCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/CreateContainerCmdIT.java
index 7bb26eaa07..de9f564e4f 100644
--- a/docker-java/src/test/java/com/github/dockerjava/cmd/CreateContainerCmdIT.java
+++ b/docker-java/src/test/java/com/github/dockerjava/cmd/CreateContainerCmdIT.java
@@ -23,7 +23,6 @@
import com.github.dockerjava.api.model.Link;
import com.github.dockerjava.api.model.LogConfig;
import com.github.dockerjava.api.model.Network;
-import com.github.dockerjava.api.model.PortBinding;
import com.github.dockerjava.api.model.Ports;
import com.github.dockerjava.api.model.Ports.Binding;
import com.github.dockerjava.api.model.RestartPolicy;
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 36363b0561..deb8a4718f 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
@@ -52,7 +52,7 @@ public void createNetworkWithIpamConfig() throws DockerException {
assertNotNull(createNetworkResponse.getId());
Network network = dockerRule.getClient().inspectNetworkCmd().withNetworkId(createNetworkResponse.getId()).exec();
- assertEquals(network.getName(), networkName);
+ assertEquals(networkName, network.getName());
assertEquals("bridge", network.getDriver());
assertEquals(subnet, network.getIpam().getConfig().iterator().next().getSubnet());
}
@@ -83,6 +83,6 @@ public void createNetworkWithLabel() throws DockerException {
CreateNetworkResponse createNetworkResponse = dockerRule.getClient().createNetworkCmd().withName(networkName).withLabels(labels).exec();
assertNotNull(createNetworkResponse.getId());
Network network = dockerRule.getClient().inspectNetworkCmd().withNetworkId(createNetworkResponse.getId()).exec();
- assertEquals(network.getLabels(), labels);
+ assertEquals(labels, network.getLabels());
}
}
diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/CustomCommandIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/CustomCommandIT.java
index b36002f102..bf273a98cf 100644
--- a/docker-java/src/test/java/com/github/dockerjava/cmd/CustomCommandIT.java
+++ b/docker-java/src/test/java/com/github/dockerjava/cmd/CustomCommandIT.java
@@ -1,6 +1,5 @@
package com.github.dockerjava.cmd;
-import com.github.dockerjava.core.DockerClientImpl;
import com.github.dockerjava.core.DockerRule;
import com.github.dockerjava.transport.DockerHttpClient;
import com.github.dockerjava.transport.DockerHttpClient.Request;
diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/DisconnectFromNetworkCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/DisconnectFromNetworkCmdIT.java
index 7d9591bfe1..2d932cc24f 100644
--- a/docker-java/src/test/java/com/github/dockerjava/cmd/DisconnectFromNetworkCmdIT.java
+++ b/docker-java/src/test/java/com/github/dockerjava/cmd/DisconnectFromNetworkCmdIT.java
@@ -13,7 +13,7 @@
public class DisconnectFromNetworkCmdIT extends CmdIT {
@Test
- public void disconnectFromNetwork() throws InterruptedException {
+ public void disconnectFromNetwork() {
assumeNotSwarm("no network in swarm", dockerRule);
CreateContainerResponse container = dockerRule.getClient().createContainerCmd("busybox").withCmd("sleep", "9999").exec();
@@ -35,7 +35,7 @@ public void disconnectFromNetwork() throws InterruptedException {
}
@Test
- public void forceDisconnectFromNetwork() throws InterruptedException {
+ public void forceDisconnectFromNetwork() {
assumeNotSwarm("no network in swarm", dockerRule);
CreateNetworkResponse network = dockerRule.getClient().createNetworkCmd().withName("testNetwork2").exec();
diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/InspectContainerCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/InspectContainerCmdIT.java
index 9e47cfd9fe..fed85df73c 100644
--- a/docker-java/src/test/java/com/github/dockerjava/cmd/InspectContainerCmdIT.java
+++ b/docker-java/src/test/java/com/github/dockerjava/cmd/InspectContainerCmdIT.java
@@ -45,7 +45,7 @@ public void inspectContainer() throws DockerException {
assertThat(container.getId(), not(is(emptyString())));
InspectContainerResponse containerInfo = dockerRule.getClient().inspectContainerCmd(container.getId()).exec();
- assertEquals(containerInfo.getId(), container.getId());
+ assertEquals(container.getId(), containerInfo.getId());
}
diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/InspectExecCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/InspectExecCmdIT.java
index 3f22fca33b..b256c6a7c8 100644
--- a/docker-java/src/test/java/com/github/dockerjava/cmd/InspectExecCmdIT.java
+++ b/docker-java/src/test/java/com/github/dockerjava/cmd/InspectExecCmdIT.java
@@ -79,7 +79,7 @@ public void inspectExec() throws Exception {
}
@Test
- public void inspectExecNetworkSettings() throws IOException {
+ public void inspectExecNetworkSettings() {
final RemoteApiVersion apiVersion = getVersion(dockerRule.getClient());
String containerName = "generated_" + new SecureRandom().nextInt();
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 9ada9d7adc..a94a02f82a 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
@@ -59,7 +59,7 @@ public void tearDown() {
}
@Test
- public void testListContainers() throws Exception {
+ public void testListContainers() {
List containers = dockerRule.getClient().listContainersCmd()
.withLabelFilter(testLabel)
.withShowAll(true)
@@ -106,7 +106,7 @@ public void testListContainers() throws Exception {
}
@Test
- public void testListContainersWithLabelsFilter() throws Exception {
+ public void testListContainersWithLabelsFilter() {
// list with filter by Map label
dockerRule.getClient().createContainerCmd(DEFAULT_IMAGE).withCmd("echo")
.withLabels(testLabel)
@@ -138,7 +138,7 @@ public void testListContainersWithLabelsFilter() throws Exception {
}
@Test
- public void testNameFilter() throws Exception {
+ public void testNameFilter() {
String testUUID = testLabel.get("test");
String id1, id2;
@@ -165,7 +165,7 @@ public void testNameFilter() throws Exception {
}
@Test
- public void testIdsFilter() throws Exception {
+ public void testIdsFilter() {
String id1, id2;
id1 = dockerRule.getClient().createContainerCmd(DEFAULT_IMAGE)
.withLabels(testLabel)
@@ -188,7 +188,7 @@ public void testIdsFilter() throws Exception {
}
@Test
- public void testStatusFilter() throws Exception {
+ public void testStatusFilter() {
String id1, id2;
id1 = dockerRule.getClient().createContainerCmd(DEFAULT_IMAGE)
.withCmd("sh", "-c", "sleep 99999")
@@ -247,7 +247,7 @@ public void testStatusFilter() throws Exception {
}
@Test
- public void testVolumeFilter() throws Exception {
+ public void testVolumeFilter() {
String id;
dockerRule.getClient().createVolumeCmd()
.withName("TestFilterVolume")
@@ -276,7 +276,7 @@ public void testVolumeFilter() throws Exception {
}
@Test
- public void testNetworkFilter() throws Exception {
+ public void testNetworkFilter() {
String id;
dockerRule.getClient().createNetworkCmd()
.withName("TestFilterNetwork")
@@ -337,7 +337,7 @@ public void testAncestorFilter() throws Exception {
}
@Test
- public void testExitedFilter() throws Exception {
+ public void testExitedFilter() {
dockerRule.getClient().createContainerCmd(DEFAULT_IMAGE)
.withLabels(testLabel)
.exec();
diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/LogContainerCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/LogContainerCmdIT.java
index 6ab68abff5..8593d6ccf7 100644
--- a/docker-java/src/test/java/com/github/dockerjava/cmd/LogContainerCmdIT.java
+++ b/docker-java/src/test/java/com/github/dockerjava/cmd/LogContainerCmdIT.java
@@ -66,7 +66,7 @@ public void asyncLogContainerWithTtyEnabled() throws Exception {
assertTrue(loggingCallback.toString().contains("hello"));
- assertEquals(loggingCallback.getCollectedFrames().get(0).getStreamType(), StreamType.RAW);
+ assertEquals(StreamType.RAW, loggingCallback.getCollectedFrames().get(0).getStreamType());
}
@Test
diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/PushImageCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/PushImageCmdIT.java
index f98d245634..00cd11d51a 100644
--- a/docker-java/src/test/java/com/github/dockerjava/cmd/PushImageCmdIT.java
+++ b/docker-java/src/test/java/com/github/dockerjava/cmd/PushImageCmdIT.java
@@ -36,7 +36,7 @@ public class PushImageCmdIT extends CmdIT {
private AuthConfig authConfig;
@Before
- public void beforeTest() throws Exception {
+ public void beforeTest() {
authConfig = REGISTRY.getAuthConfig();
}
diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/RemoveContainerCmdImplIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/RemoveContainerCmdImplIT.java
index 01dfd954cd..408098148d 100644
--- a/docker-java/src/test/java/com/github/dockerjava/cmd/RemoveContainerCmdImplIT.java
+++ b/docker-java/src/test/java/com/github/dockerjava/cmd/RemoveContainerCmdImplIT.java
@@ -23,7 +23,7 @@ public class RemoveContainerCmdImplIT extends CmdIT {
@Test
- public void removeContainer() throws Exception {
+ public void removeContainer() {
CreateContainerResponse container = dockerRule.getClient().createContainerCmd("busybox").withCmd("true").exec();
diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/RemoveImageCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/RemoveImageCmdIT.java
index c072eaf90c..00d2e6cc19 100644
--- a/docker-java/src/test/java/com/github/dockerjava/cmd/RemoveImageCmdIT.java
+++ b/docker-java/src/test/java/com/github/dockerjava/cmd/RemoveImageCmdIT.java
@@ -24,7 +24,7 @@ public class RemoveImageCmdIT extends CmdIT {
public static final Logger LOG = LoggerFactory.getLogger(RemoveImageCmdIT.class);
@Test
- public void removeImage() throws DockerException, InterruptedException {
+ public void removeImage() throws DockerException {
CreateContainerResponse container = dockerRule.getClient().createContainerCmd("busybox").withCmd("sleep", "9999").exec();
LOG.info("Created container: {}", container.toString());
@@ -47,7 +47,7 @@ public void removeImage() throws DockerException, InterruptedException {
}
@Test(expected = NotFoundException.class)
- public void removeNonExistingImage() throws DockerException, InterruptedException {
+ public void removeNonExistingImage() throws DockerException {
dockerRule.getClient().removeImageCmd("non-existing").exec();
}
diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/RenameContainerCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/RenameContainerCmdIT.java
index d6b91c2a4c..c50ebcf430 100644
--- a/docker-java/src/test/java/com/github/dockerjava/cmd/RenameContainerCmdIT.java
+++ b/docker-java/src/test/java/com/github/dockerjava/cmd/RenameContainerCmdIT.java
@@ -45,7 +45,7 @@ public void renameContainer() throws DockerException {
}
@Test(expected = NotFoundException.class)
- public void renameExistingContainer() throws DockerException, InterruptedException {
+ public void renameExistingContainer() throws DockerException {
dockerRule.getClient().renameContainerCmd("non-existing")
.withName("renameExistingContainer")
.exec();
diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/RestartContainerCmdImplIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/RestartContainerCmdImplIT.java
index cf2f43e92f..8017d229fd 100644
--- a/docker-java/src/test/java/com/github/dockerjava/cmd/RestartContainerCmdImplIT.java
+++ b/docker-java/src/test/java/com/github/dockerjava/cmd/RestartContainerCmdImplIT.java
@@ -45,7 +45,7 @@ public void restartContainer() throws DockerException {
}
@Test(expected = NotFoundException.class)
- public void restartNonExistingContainer() throws DockerException, InterruptedException {
+ public void restartNonExistingContainer() throws DockerException {
dockerRule.getClient().restartContainerCmd("non-existing").exec();
}
diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/StartContainerCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/StartContainerCmdIT.java
index b882a88bd4..5d41889ca7 100644
--- a/docker-java/src/test/java/com/github/dockerjava/cmd/StartContainerCmdIT.java
+++ b/docker-java/src/test/java/com/github/dockerjava/cmd/StartContainerCmdIT.java
@@ -44,7 +44,7 @@ public class StartContainerCmdIT extends CmdIT {
public static final Logger LOG = LoggerFactory.getLogger(StartContainerCmdIT.class);
@Test
- public void startContainerWithVolumes() throws Exception {
+ public void startContainerWithVolumes() {
// see http://docs.docker.io/use/working_with_volumes/
Volume volume1 = new Volume("/opt/webapp1");
diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/TagImageCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/TagImageCmdIT.java
index 8f33fcc1ed..fc58944552 100644
--- a/docker-java/src/test/java/com/github/dockerjava/cmd/TagImageCmdIT.java
+++ b/docker-java/src/test/java/com/github/dockerjava/cmd/TagImageCmdIT.java
@@ -11,7 +11,7 @@ public class TagImageCmdIT extends CmdIT {
public static final Logger LOG = LoggerFactory.getLogger(TagImageCmdIT.class);
@Test
- public void tagImage() throws Exception {
+ public void tagImage() {
String tag = "" + RandomUtils.nextInt(0, Integer.MAX_VALUE);
dockerRule.getClient().tagImageCmd("busybox:latest", "docker-java/busybox", tag).exec();
@@ -20,7 +20,7 @@ public void tagImage() throws Exception {
}
@Test(expected = NotFoundException.class)
- public void tagNonExistingImage() throws Exception {
+ public void tagNonExistingImage() {
String tag = "" + RandomUtils.nextInt(0, Integer.MAX_VALUE);
dockerRule.getClient().tagImageCmd("non-existing", "docker-java/busybox", tag).exec();
diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/UpdateContainerCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/UpdateContainerCmdIT.java
index b21bbb5339..e5bb554991 100644
--- a/docker-java/src/test/java/com/github/dockerjava/cmd/UpdateContainerCmdIT.java
+++ b/docker-java/src/test/java/com/github/dockerjava/cmd/UpdateContainerCmdIT.java
@@ -31,7 +31,7 @@ public class UpdateContainerCmdIT extends CmdIT {
@Test
- public void updateContainer() throws DockerException, IOException {
+ public void updateContainer() throws DockerException {
assumeThat("API version should be >= 1.22", dockerRule, isGreaterOrEqual(VERSION_1_22));
CreateContainerResponse response = dockerRule.getClient().createContainerCmd(DEFAULT_IMAGE)
diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/VersionCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/VersionCmdIT.java
index 08d27db030..90c7e534e9 100644
--- a/docker-java/src/test/java/com/github/dockerjava/cmd/VersionCmdIT.java
+++ b/docker-java/src/test/java/com/github/dockerjava/cmd/VersionCmdIT.java
@@ -22,7 +22,7 @@ public void version() throws DockerException {
assertTrue(version.getGoVersion().length() > 0);
assertTrue(version.getVersion().length() > 0);
- assertEquals(StringUtils.split(version.getVersion(), ".").length, 3);
+ assertEquals(3, StringUtils.split(version.getVersion(), ".").length);
}
diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/WaitContainerCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/WaitContainerCmdIT.java
index a8269c82f5..e2ad2a643e 100644
--- a/docker-java/src/test/java/com/github/dockerjava/cmd/WaitContainerCmdIT.java
+++ b/docker-java/src/test/java/com/github/dockerjava/cmd/WaitContainerCmdIT.java
@@ -84,7 +84,7 @@ public void testWaitContainerAbort() throws Exception {
}
@Test
- public void testWaitContainerTimeout() throws Exception {
+ public void testWaitContainerTimeout() {
CreateContainerResponse container = dockerRule.getClient().createContainerCmd("busybox").withCmd("sleep", "10").exec();
diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/swarm/CreateSecretCmdExecIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/swarm/CreateSecretCmdExecIT.java
index e1564ea918..4644a83308 100644
--- a/docker-java/src/test/java/com/github/dockerjava/cmd/swarm/CreateSecretCmdExecIT.java
+++ b/docker-java/src/test/java/com/github/dockerjava/cmd/swarm/CreateSecretCmdExecIT.java
@@ -21,7 +21,7 @@ public class CreateSecretCmdExecIT extends SwarmCmdIT {
public static final Logger LOG = LoggerFactory.getLogger(CreateSecretCmdExecIT.class);
@Test
- public void testCreateSecret() throws Exception {
+ public void testCreateSecret() {
DockerClient dockerClient = startSwarm();
int length = 10;
boolean useLetters = true;
diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/swarm/CreateServiceCmdExecIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/swarm/CreateServiceCmdExecIT.java
index e50f35dd38..e221d9cd3d 100644
--- a/docker-java/src/test/java/com/github/dockerjava/cmd/swarm/CreateServiceCmdExecIT.java
+++ b/docker-java/src/test/java/com/github/dockerjava/cmd/swarm/CreateServiceCmdExecIT.java
@@ -53,7 +53,7 @@ public class CreateServiceCmdExecIT extends SwarmCmdIT {
private DockerClient dockerClient;
@Before
- public final void setUpCreateServiceCmdExecIT() throws Exception {
+ public final void setUpCreateServiceCmdExecIT() {
authConfig = REGISTRY.getAuthConfig();
dockerClient = startSwarm();
}
diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/swarm/InspectConfigCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/swarm/InspectConfigCmdIT.java
index cd80ec118e..12c69c9966 100644
--- a/docker-java/src/test/java/com/github/dockerjava/cmd/swarm/InspectConfigCmdIT.java
+++ b/docker-java/src/test/java/com/github/dockerjava/cmd/swarm/InspectConfigCmdIT.java
@@ -9,8 +9,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.notNullValue;
import static org.junit.Assert.assertEquals;
public class InspectConfigCmdIT extends SwarmCmdIT {
diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/swarm/JoinSwarmCmdExecIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/swarm/JoinSwarmCmdExecIT.java
index 7d8838d5ae..16f1b09116 100644
--- a/docker-java/src/test/java/com/github/dockerjava/cmd/swarm/JoinSwarmCmdExecIT.java
+++ b/docker-java/src/test/java/com/github/dockerjava/cmd/swarm/JoinSwarmCmdExecIT.java
@@ -43,7 +43,7 @@ private SwarmJoinTokens initSwarmOnDocker(DockerClient docker) {
}
@Test
- public void joinSwarmAsWorker() throws Exception {
+ public void joinSwarmAsWorker() {
SwarmJoinTokens tokens = initSwarmOnDocker(docker1);
docker2.joinSwarmCmd()
@@ -58,7 +58,7 @@ public void joinSwarmAsWorker() throws Exception {
}
@Test
- public void joinSwarmAsManager() throws DockerException, InterruptedException {
+ public void joinSwarmAsManager() throws DockerException {
SwarmJoinTokens tokens = initSwarmOnDocker(docker1);
docker2.joinSwarmCmd()
@@ -73,7 +73,7 @@ public void joinSwarmAsManager() throws DockerException, InterruptedException {
}
@Test(expected = DockerException.class)
- public void joinSwarmIfAlreadyInSwarm() throws Exception {
+ public void joinSwarmIfAlreadyInSwarm() {
SwarmJoinTokens tokens = initSwarmOnDocker(docker1);
initSwarmOnDocker(docker2);
diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/swarm/ListServicesCmdExecIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/swarm/ListServicesCmdExecIT.java
index 432c7d4bd8..715ba60c82 100644
--- a/docker-java/src/test/java/com/github/dockerjava/cmd/swarm/ListServicesCmdExecIT.java
+++ b/docker-java/src/test/java/com/github/dockerjava/cmd/swarm/ListServicesCmdExecIT.java
@@ -27,7 +27,7 @@ public class ListServicesCmdExecIT extends SwarmCmdIT {
private static final String LABEL_VALUE = "test";
@Test
- public void testListServices() throws Exception {
+ public void testListServices() {
DockerClient dockerClient = startSwarm();
Map serviceLabels = Collections.singletonMap(LABEL_KEY, LABEL_VALUE);
CreateServiceResponse response = dockerClient.createServiceCmd(new ServiceSpec()
diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/swarm/ListSwarmNodesCmdExecIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/swarm/ListSwarmNodesCmdExecIT.java
index 1a4f94c1dc..853dc6c032 100644
--- a/docker-java/src/test/java/com/github/dockerjava/cmd/swarm/ListSwarmNodesCmdExecIT.java
+++ b/docker-java/src/test/java/com/github/dockerjava/cmd/swarm/ListSwarmNodesCmdExecIT.java
@@ -12,7 +12,7 @@
public class ListSwarmNodesCmdExecIT extends SwarmCmdIT {
@Test
- public void testListSwarmNodes() throws Exception {
+ public void testListSwarmNodes() {
DockerClient dockerClient = startSwarm();
List nodes = dockerClient.listSwarmNodesCmd().exec();
@@ -20,7 +20,7 @@ public void testListSwarmNodes() throws Exception {
}
@Test
- public void testListSwarmNodesWithIdFilter() throws Exception {
+ public void testListSwarmNodesWithIdFilter() {
DockerClient dockerClient = startSwarm();
List nodes = dockerClient.listSwarmNodesCmd().exec();
@@ -39,7 +39,7 @@ public void testListSwarmNodesWithIdFilter() throws Exception {
}
@Test
- public void testListSwarmNodesWithNameFilter() throws Exception {
+ public void testListSwarmNodesWithNameFilter() {
DockerClient dockerClient = startSwarm();
List nodes = dockerClient.listSwarmNodesCmd().exec();
@@ -58,7 +58,7 @@ public void testListSwarmNodesWithNameFilter() throws Exception {
}
@Test
- public void testListSwarmNodesWithMembershipFilter() throws Exception {
+ public void testListSwarmNodesWithMembershipFilter() {
DockerClient dockerClient = startSwarm();
List nodesWithAcceptedMembership = dockerClient.listSwarmNodesCmd()
@@ -73,7 +73,7 @@ public void testListSwarmNodesWithMembershipFilter() throws Exception {
}
@Test
- public void testListSwarmNodesWithRoleFilter() throws Exception {
+ public void testListSwarmNodesWithRoleFilter() {
DockerClient dockerClient = startSwarm();
List nodesWithManagerRole = dockerClient.listSwarmNodesCmd()
diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/swarm/SwarmCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/swarm/SwarmCmdIT.java
index 8e653b5641..87f35161cc 100644
--- a/docker-java/src/test/java/com/github/dockerjava/cmd/swarm/SwarmCmdIT.java
+++ b/docker-java/src/test/java/com/github/dockerjava/cmd/swarm/SwarmCmdIT.java
@@ -47,7 +47,7 @@ public abstract class SwarmCmdIT extends CmdIT {
private final Set startedContainerIds = new HashSet<>();
@Before
- public final void setUpMultiNodeSwarmCmdIT() throws Exception {
+ public final void setUpMultiNodeSwarmCmdIT() {
assumeThat(dockerRule, isGreaterOrEqual(VERSION_1_24));
}
diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/swarm/UpdateSwarmNodeIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/swarm/UpdateSwarmNodeIT.java
index e307f671ad..d26e051b18 100644
--- a/docker-java/src/test/java/com/github/dockerjava/cmd/swarm/UpdateSwarmNodeIT.java
+++ b/docker-java/src/test/java/com/github/dockerjava/cmd/swarm/UpdateSwarmNodeIT.java
@@ -14,7 +14,7 @@
public class UpdateSwarmNodeIT extends SwarmCmdIT {
@Test
- public void testUpdateSwarmNode() throws Exception {
+ public void testUpdateSwarmNode() {
DockerClient dockerClient = startSwarm();
List nodes = dockerClient.listSwarmNodesCmd().exec();
assertThat(1, is(nodes.size()));
diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/swarm/UpdateSwarmServiceIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/swarm/UpdateSwarmServiceIT.java
index deb9594751..c477320bfb 100644
--- a/docker-java/src/test/java/com/github/dockerjava/cmd/swarm/UpdateSwarmServiceIT.java
+++ b/docker-java/src/test/java/com/github/dockerjava/cmd/swarm/UpdateSwarmServiceIT.java
@@ -21,7 +21,7 @@
public class UpdateSwarmServiceIT extends SwarmCmdIT {
@Test
- public void testUpdateServiceReplicate() throws Exception {
+ public void testUpdateServiceReplicate() {
DockerClient dockerClient = startSwarm();
//create network
String networkId = dockerClient.createNetworkCmd().withName("networkname").withDriver("overlay")
diff --git a/docker-java/src/test/java/com/github/dockerjava/core/DefaultDockerClientConfigTest.java b/docker-java/src/test/java/com/github/dockerjava/core/DefaultDockerClientConfigTest.java
index d5b751145a..b1def24097 100644
--- a/docker-java/src/test/java/com/github/dockerjava/core/DefaultDockerClientConfigTest.java
+++ b/docker-java/src/test/java/com/github/dockerjava/core/DefaultDockerClientConfigTest.java
@@ -58,12 +58,12 @@ private static String dockerCertPath() {
}
@Test
- public void equals() throws Exception {
+ public void equals() {
assertEquals(EXAMPLE_CONFIG, newExampleConfig());
}
@Test
- public void environmentDockerHost() throws Exception {
+ public void environmentDockerHost() {
// given docker host in env
Map env = new HashMap<>();
@@ -79,11 +79,11 @@ public void environmentDockerHost() throws Exception {
// when you build a config
DefaultDockerClientConfig config = buildConfig(env, systemProperties);
- assertEquals(config.getDockerHost(), URI.create("tcp://baz:8768"));
+ assertEquals(URI.create("tcp://baz:8768"), config.getDockerHost());
}
@Test
- public void dockerContextFromConfig() throws Exception {
+ public void dockerContextFromConfig() {
// given home directory with docker contexts configured
Properties systemProperties = new Properties();
systemProperties.setProperty("user.home", "target/test-classes/dockerContextHomeDir");
@@ -98,7 +98,7 @@ public void dockerContextFromConfig() throws Exception {
}
@Test
- public void dockerContextFromEnvironmentVariable() throws Exception {
+ public void dockerContextFromEnvironmentVariable() {
// given home directory with docker contexts
Properties systemProperties = new Properties();
systemProperties.setProperty("user.home", "target/test-classes/dockerContextHomeDir");
@@ -114,7 +114,7 @@ public void dockerContextFromEnvironmentVariable() throws Exception {
}
@Test
- public void environment() throws Exception {
+ public void environment() {
// given a default config in env properties
Map env = new HashMap<>();
@@ -153,7 +153,7 @@ private DefaultDockerClientConfig buildConfig(Map env, Propertie
}
@Test
- public void defaults() throws Exception {
+ public void defaults() {
// given default cert path
Properties systemProperties = new Properties();
@@ -164,16 +164,16 @@ public void defaults() throws Exception {
DefaultDockerClientConfig config = buildConfig(Collections. emptyMap(), systemProperties);
// then the cert path is as expected
- assertEquals(config.getDockerHost(), URI.create("unix:///var/run/docker.sock"));
- assertEquals(config.getRegistryUsername(), "someUserName");
- assertEquals(config.getRegistryUrl(), AuthConfig.DEFAULT_SERVER_ADDRESS);
- assertEquals(config.getApiVersion(), RemoteApiVersion.unknown());
- assertEquals(config.getDockerConfigPath(), homeDir() + "/.docker");
+ assertEquals(URI.create("unix:///var/run/docker.sock"), config.getDockerHost());
+ assertEquals("someUserName", config.getRegistryUsername());
+ assertEquals(AuthConfig.DEFAULT_SERVER_ADDRESS, config.getRegistryUrl());
+ assertEquals(RemoteApiVersion.unknown(), config.getApiVersion());
+ assertEquals(homeDir() + "/.docker", config.getDockerConfigPath());
assertNull(config.getSSLConfig());
}
@Test
- public void systemProperties() throws Exception {
+ public void systemProperties() {
// given system properties based on the example
Properties systemProperties = new Properties();
@@ -204,7 +204,7 @@ public void serializableTest() {
}
@Test()
- public void testSslContextEmpty() throws Exception {
+ public void testSslContextEmpty() {
new DefaultDockerClientConfig(URI.create("tcp://foo"), new DockerConfigFile(), "dockerConfig", "apiVersion", "registryUrl", "registryUsername", "registryPassword", "registryEmail",
null);
}
@@ -212,13 +212,13 @@ public void testSslContextEmpty() throws Exception {
@Test()
- public void testTlsVerifyAndCertPath() throws Exception {
+ public void testTlsVerifyAndCertPath() {
new DefaultDockerClientConfig(URI.create("tcp://foo"), new DockerConfigFile(), "dockerConfig", "apiVersion", "registryUrl", "registryUsername", "registryPassword", "registryEmail",
new LocalDirectorySSLConfig(dockerCertPath()));
}
@Test()
- public void testAnyHostScheme() throws Exception {
+ public void testAnyHostScheme() {
URI dockerHost = URI.create("a" + UUID.randomUUID().toString().replace("-", "") + "://foo");
new DefaultDockerClientConfig(dockerHost, new DockerConfigFile(), "dockerConfig", "apiVersion", "registryUrl", "registryUsername", "registryPassword", "registryEmail",
null);
diff --git a/docker-java/src/test/java/com/github/dockerjava/core/DockerClientBuilderTest.java b/docker-java/src/test/java/com/github/dockerjava/core/DockerClientBuilderTest.java
index 43e700fd8d..d826a98cea 100644
--- a/docker-java/src/test/java/com/github/dockerjava/core/DockerClientBuilderTest.java
+++ b/docker-java/src/test/java/com/github/dockerjava/core/DockerClientBuilderTest.java
@@ -1,12 +1,7 @@
package com.github.dockerjava.core;
-import com.github.dockerjava.api.DockerClient;
import com.github.dockerjava.api.command.DockerCmdExecFactory;
-import com.github.dockerjava.api.model.PushResponseItem;
-import com.github.dockerjava.httpclient5.ApacheDockerHttpClient;
-import com.github.dockerjava.transport.DockerHttpClient;
-import java.time.Duration;
import org.junit.Test;
import java.util.ArrayList;
@@ -39,7 +34,7 @@ public void testConcurrentClientBuilding() throws Exception {
parallel(AMOUNT, runnable);
// set contains all required unique instances
- assertEquals(instances.size(), AMOUNT);
+ assertEquals(AMOUNT, instances.size());
}
public static void parallel(int threads, final Runnable task) throws Exception {
diff --git a/docker-java/src/test/java/com/github/dockerjava/core/DockerClientImplTest.java b/docker-java/src/test/java/com/github/dockerjava/core/DockerClientImplTest.java
index 8ff17857f4..6ae88ffd10 100644
--- a/docker-java/src/test/java/com/github/dockerjava/core/DockerClientImplTest.java
+++ b/docker-java/src/test/java/com/github/dockerjava/core/DockerClientImplTest.java
@@ -10,7 +10,7 @@
public class DockerClientImplTest {
@Test
- public void configuredInstanceAuthConfig() throws Exception {
+ public void configuredInstanceAuthConfig() {
// given a config with null serverAddress
DefaultDockerClientConfig dockerClientConfig = new DefaultDockerClientConfig(URI.create("tcp://foo"),
new DockerConfigFile(), null, null, null, "", "", "", null);
@@ -22,12 +22,12 @@ public void configuredInstanceAuthConfig() throws Exception {
throw new AssertionError();
} catch (NullPointerException e) {
// then we get a NPE with expected message
- assertEquals(e.getMessage(), "Configured serverAddress is null.");
+ assertEquals("Configured serverAddress is null.", e.getMessage());
}
}
@Test
- public void defaultInstanceAuthConfig() throws Exception {
+ public void defaultInstanceAuthConfig() {
System.setProperty("user.home", "target/test-classes/someHomeDir");
diff --git a/docker-java/src/test/java/com/github/dockerjava/core/GoLangFileMatchTest.java b/docker-java/src/test/java/com/github/dockerjava/core/GoLangFileMatchTest.java
index b6dde97f56..11ea90e575 100644
--- a/docker-java/src/test/java/com/github/dockerjava/core/GoLangFileMatchTest.java
+++ b/docker-java/src/test/java/com/github/dockerjava/core/GoLangFileMatchTest.java
@@ -85,7 +85,7 @@ public static Object[][] getTestData() {
public MatchTestCase testCase;
@Test
- public void testMatch() throws IOException {
+ public void testMatch() {
String pattern = testCase.pattern;
String s = testCase.s;
if (GoLangFileMatch.IS_WINDOWS) {
diff --git a/docker-java/src/test/java/com/github/dockerjava/core/NameParserTest.java b/docker-java/src/test/java/com/github/dockerjava/core/NameParserTest.java
index d828f3c7bd..c6332ba4b2 100644
--- a/docker-java/src/test/java/com/github/dockerjava/core/NameParserTest.java
+++ b/docker-java/src/test/java/com/github/dockerjava/core/NameParserTest.java
@@ -21,7 +21,7 @@
public class NameParserTest {
@Test
- public void testValidateRepoName() throws Exception {
+ public void testValidateRepoName() {
NameParser.validateRepoName("repository");
NameParser.validateRepoName("namespace/repository");
NameParser.validateRepoName("namespace-with-dashes/repository");
@@ -33,118 +33,118 @@ public void testValidateRepoName() throws Exception {
}
@Test(expected = InvalidRepositoryNameException.class)
- public void testValidateRepoNameEmpty() throws Exception {
+ public void testValidateRepoNameEmpty() {
NameParser.validateRepoName("");
}
@Test(expected = InvalidRepositoryNameException.class)
- public void testValidateRepoNameExceedsMaxLength() throws Exception {
+ public void testValidateRepoNameExceedsMaxLength() {
NameParser.validateRepoName(StringUtils.repeat("repository", 255));
}
@Test(expected = InvalidRepositoryNameException.class)
- public void testValidateRepoNameEndWithDash() throws Exception {
+ public void testValidateRepoNameEndWithDash() {
NameParser.validateRepoName("repository-");
}
@Test(expected = InvalidRepositoryNameException.class)
- public void testValidateRepoNameStartWithDash() throws Exception {
+ public void testValidateRepoNameStartWithDash() {
NameParser.validateRepoName("-repository");
}
@Test(expected = InvalidRepositoryNameException.class)
- public void testValidateRepoNameEndWithDot() throws Exception {
+ public void testValidateRepoNameEndWithDot() {
NameParser.validateRepoName("repository.");
}
@Test(expected = InvalidRepositoryNameException.class)
- public void testValidateRepoNameStartWithDot() throws Exception {
+ public void testValidateRepoNameStartWithDot() {
NameParser.validateRepoName(".repository");
}
@Test(expected = InvalidRepositoryNameException.class)
- public void testValidateRepoNameEndWithUnderscore() throws Exception {
+ public void testValidateRepoNameEndWithUnderscore() {
NameParser.validateRepoName("repository_");
}
@Test(expected = InvalidRepositoryNameException.class)
- public void testValidateRepoNameStartWithUnderscore() throws Exception {
+ public void testValidateRepoNameStartWithUnderscore() {
NameParser.validateRepoName("_repository");
}
@Test(expected = InvalidRepositoryNameException.class)
- public void testValidateRepoNameWithColon() throws Exception {
+ public void testValidateRepoNameWithColon() {
NameParser.validateRepoName("repository:with:colon");
}
@Test
- public void testResolveSimpleRepositoryName() throws Exception {
+ public void testResolveSimpleRepositoryName() {
HostnameReposName resolved = NameParser.resolveRepositoryName("repository");
- assertEquals(resolved, new HostnameReposName(AuthConfig.DEFAULT_SERVER_ADDRESS, "repository"));
+ assertEquals(new HostnameReposName(AuthConfig.DEFAULT_SERVER_ADDRESS, "repository"), resolved);
}
@Test
- public void testResolveRepositoryNameWithNamespace() throws Exception {
+ public void testResolveRepositoryNameWithNamespace() {
HostnameReposName resolved = NameParser.resolveRepositoryName("namespace/repository");
- assertEquals(resolved, new HostnameReposName(AuthConfig.DEFAULT_SERVER_ADDRESS, "namespace/repository"));
+ assertEquals(new HostnameReposName(AuthConfig.DEFAULT_SERVER_ADDRESS, "namespace/repository"), resolved);
}
@Test
- public void testResolveRepositoryNameWithNamespaceAndSHA256() throws Exception {
+ public void testResolveRepositoryNameWithNamespaceAndSHA256() {
HostnameReposName resolved = NameParser.resolveRepositoryName("namespace/repository@sha256:sha256");
- assertEquals(resolved, new HostnameReposName(AuthConfig.DEFAULT_SERVER_ADDRESS, "namespace/repository@sha256:sha256"));
+ assertEquals(new HostnameReposName(AuthConfig.DEFAULT_SERVER_ADDRESS, "namespace/repository@sha256:sha256"), resolved);
}
@Test
- public void testResolveRepositoryNameWithNamespaceAndHostname() throws Exception {
+ public void testResolveRepositoryNameWithNamespaceAndHostname() {
HostnameReposName resolved = NameParser.resolveRepositoryName("localhost:5000/namespace/repository");
- assertEquals(resolved, new HostnameReposName("localhost:5000", "namespace/repository"));
+ assertEquals(new HostnameReposName("localhost:5000", "namespace/repository"), resolved);
}
@Test
- public void testResolveRepositoryNameWithNamespaceAndHostnameAndSHA256() throws Exception {
+ public void testResolveRepositoryNameWithNamespaceAndHostnameAndSHA256() {
HostnameReposName resolved = NameParser.resolveRepositoryName("localhost:5000/namespace/repository@sha256:sha256");
- assertEquals(resolved, new HostnameReposName("localhost:5000", "namespace/repository"));
+ assertEquals(new HostnameReposName("localhost:5000", "namespace/repository"), resolved);
}
@Test(expected = InvalidRepositoryNameException.class)
- public void testResolveRepositoryNameWithIndex() throws Exception {
+ public void testResolveRepositoryNameWithIndex() {
NameParser.resolveRepositoryName("index.docker.io/repository");
}
@Test
- public void testResolveReposTagWithoutTagSimple() throws Exception {
+ public void testResolveReposTagWithoutTagSimple() {
ReposTag resolved = NameParser.parseRepositoryTag("repository");
- assertEquals(resolved, new ReposTag("repository", ""));
+ assertEquals(new ReposTag("repository", ""), resolved);
resolved = NameParser.parseRepositoryTag("namespace/repository");
- assertEquals(resolved, new ReposTag("namespace/repository", ""));
+ assertEquals(new ReposTag("namespace/repository", ""), resolved);
resolved = NameParser.parseRepositoryTag("localhost:5000/namespace/repository");
- assertEquals(resolved, new ReposTag("localhost:5000/namespace/repository", ""));
+ assertEquals(new ReposTag("localhost:5000/namespace/repository", ""), resolved);
}
@Test
- public void testResolveReposTagWithTag() throws Exception {
+ public void testResolveReposTagWithTag() {
ReposTag resolved = NameParser.parseRepositoryTag("repository:tag");
- assertEquals(resolved, new ReposTag("repository", "tag"));
+ assertEquals(new ReposTag("repository", "tag"), resolved);
resolved = NameParser.parseRepositoryTag("namespace/repository:tag");
- assertEquals(resolved, new ReposTag("namespace/repository", "tag"));
+ assertEquals(new ReposTag("namespace/repository", "tag"), resolved);
resolved = NameParser.parseRepositoryTag("localhost:5000/namespace/repository:tag");
- assertEquals(resolved, new ReposTag("localhost:5000/namespace/repository", "tag"));
+ assertEquals(new ReposTag("localhost:5000/namespace/repository", "tag"), resolved);
}
@Test
- public void testResolveReposTagWithSHA256() throws Exception {
+ public void testResolveReposTagWithSHA256() {
ReposTag resolved = NameParser.parseRepositoryTag("repository@sha256:sha256");
- assertEquals(resolved, new ReposTag("repository@sha256:sha256", ""));
+ assertEquals(new ReposTag("repository@sha256:sha256", ""), resolved);
resolved = NameParser.parseRepositoryTag("namespace/repository@sha256:sha256");
- assertEquals(resolved, new ReposTag("namespace/repository@sha256:sha256", ""));
+ assertEquals(new ReposTag("namespace/repository@sha256:sha256", ""), resolved);
resolved = NameParser.parseRepositoryTag("localhost:5000/namespace/repository@sha256:sha256");
- assertEquals(resolved, new ReposTag("localhost:5000/namespace/repository@sha256:sha256", ""));
+ assertEquals(new ReposTag("localhost:5000/namespace/repository@sha256:sha256", ""), resolved);
}
}
diff --git a/docker-java/src/test/java/com/github/dockerjava/core/command/FrameReaderTest.java b/docker-java/src/test/java/com/github/dockerjava/core/command/FrameReaderTest.java
index e8adff20bb..580e278f4c 100644
--- a/docker-java/src/test/java/com/github/dockerjava/core/command/FrameReaderTest.java
+++ b/docker-java/src/test/java/com/github/dockerjava/core/command/FrameReaderTest.java
@@ -34,7 +34,7 @@ public void endOfStreamReturnsNull() throws Exception {
@Test
public void stdInBytesFrameReturnsFrame() throws Exception {
- assertEquals(nextFrame(0, 0, 0, 0, 0, 0, 0, 0), new Frame(StreamType.STDIN, new byte[0]));
+ assertEquals(new Frame(StreamType.STDIN, new byte[0]), nextFrame(0, 0, 0, 0, 0, 0, 0, 0));
}
private Frame nextFrame(int... bytes) throws IOException {
@@ -44,12 +44,12 @@ private Frame nextFrame(int... bytes) throws IOException {
@Test
public void stdOutBytesFrameReturnsFrame() throws Exception {
- assertEquals(nextFrame(1, 0, 0, 0, 0, 0, 0, 0), new Frame(StreamType.STDOUT, new byte[0]));
+ assertEquals(new Frame(StreamType.STDOUT, new byte[0]), nextFrame(1, 0, 0, 0, 0, 0, 0, 0));
}
@Test
public void stdErrBytesFrameReturnsFrame() throws Exception {
- assertEquals(nextFrame(2, 0, 0, 0, 0, 0, 0, 0), new Frame(StreamType.STDERR, new byte[0]));
+ assertEquals(new Frame(StreamType.STDERR, new byte[0]), nextFrame(2, 0, 0, 0, 0, 0, 0, 0));
}
private void setBytes(int... bytes) {
diff --git a/docker-java/src/test/java/com/github/dockerjava/core/util/CompressArchiveUtilTest.java b/docker-java/src/test/java/com/github/dockerjava/core/util/CompressArchiveUtilTest.java
index 720441e208..f15085d1ce 100644
--- a/docker-java/src/test/java/com/github/dockerjava/core/util/CompressArchiveUtilTest.java
+++ b/docker-java/src/test/java/com/github/dockerjava/core/util/CompressArchiveUtilTest.java
@@ -241,7 +241,7 @@ private static void assertTarArchiveEntryIsExecutableFile(File archive, String f
TarArchiveEntry tarArchiveEntry = getTarArchiveEntry(archive, fileName);
assertNotNull(tarArchiveEntry);
assertTrue(tarArchiveEntry.isFile());
- assertEquals("should be executable", (tarArchiveEntry.getMode() & 0755), 0755);
+ assertEquals("should be executable", 0755, (tarArchiveEntry.getMode() & 0755));
}
private static void assertTarArchiveEntryIsSymlink(File archive, String fileName, String expectedTarget) throws IOException {
diff --git a/docker-java/src/test/java/com/github/dockerjava/netty/NettyDockerCmdExecFactoryConfigTest.java b/docker-java/src/test/java/com/github/dockerjava/netty/NettyDockerCmdExecFactoryConfigTest.java
index 7585a7534b..5f7d200bff 100644
--- a/docker-java/src/test/java/com/github/dockerjava/netty/NettyDockerCmdExecFactoryConfigTest.java
+++ b/docker-java/src/test/java/com/github/dockerjava/netty/NettyDockerCmdExecFactoryConfigTest.java
@@ -56,8 +56,8 @@ public void testNettyDockerCmdExecFactoryConfigWithApiVersion() throws Exception
List requests = server.getRequests();
- assertEquals(requests.size(), 1);
- assertEquals(requests.get(0).uri(), "/v1.23/version");
+ assertEquals(1, requests.size());
+ assertEquals("/v1.23/version", requests.get(0).uri());
} finally {
server.stop();
}
@@ -83,8 +83,8 @@ public void testNettyDockerCmdExecFactoryConfigWithoutApiVersion() throws Except
List requests = server.getRequests();
- assertEquals(requests.size(), 1);
- assertEquals(requests.get(0).uri(), "/version");
+ assertEquals(1, requests.size());
+ assertEquals("/version", requests.get(0).uri());
} finally {
server.stop();
}
diff --git a/docker-java/src/test/java/com/github/dockerjava/netty/NettyWebTargetTest.java b/docker-java/src/test/java/com/github/dockerjava/netty/NettyWebTargetTest.java
index adef3268fb..4e7bb1da2d 100644
--- a/docker-java/src/test/java/com/github/dockerjava/netty/NettyWebTargetTest.java
+++ b/docker-java/src/test/java/com/github/dockerjava/netty/NettyWebTargetTest.java
@@ -17,12 +17,12 @@ public class NettyWebTargetTest {
private ChannelProvider channelProvider;
@Before
- public void setUp() throws Exception {
+ public void setUp() {
MockitoAnnotations.initMocks(this);
}
@Test
- public void verifyImmutability() throws Exception {
+ public void verifyImmutability() {
NettyWebTarget emptyWebTarget = new NettyWebTarget(JSONTestHelper.getMapper(), channelProvider, "DUMMY");
NettyWebTarget initWebTarget = emptyWebTarget.path("/containers/{id}/attach").resolveTemplate("id", "d03da378b592")
@@ -31,12 +31,12 @@ public void verifyImmutability() throws Exception {
NettyWebTarget anotherWebTarget = emptyWebTarget.path("/containers/{id}/attach")
.resolveTemplate("id", "2cfada4e3c07").queryParam("stdin", "true");
- assertEquals(new NettyWebTarget(JSONTestHelper.getMapper(), channelProvider, "DUMMY"), emptyWebTarget);
+ assertEquals(emptyWebTarget, new NettyWebTarget(JSONTestHelper.getMapper(), channelProvider, "DUMMY"));
- assertEquals(new NettyWebTarget(JSONTestHelper.getMapper(), channelProvider, "DUMMY").path("/containers/d03da378b592/attach")
- .queryParam("logs", "true"), initWebTarget);
+ assertEquals(initWebTarget, new NettyWebTarget(JSONTestHelper.getMapper(), channelProvider, "DUMMY").path("/containers/d03da378b592/attach")
+ .queryParam("logs", "true"));
- assertEquals(new NettyWebTarget(JSONTestHelper.getMapper(), channelProvider, "DUMMY").path("/containers/2cfada4e3c07/attach")
- .queryParam("stdin", "true"), anotherWebTarget);
+ assertEquals(anotherWebTarget, new NettyWebTarget(JSONTestHelper.getMapper(), channelProvider, "DUMMY").path("/containers/2cfada4e3c07/attach")
+ .queryParam("stdin", "true"));
}
}
diff --git a/docker-java/src/test/java/com/github/dockerjava/netty/handler/FramedResponseStreamHandlerTest.java b/docker-java/src/test/java/com/github/dockerjava/netty/handler/FramedResponseStreamHandlerTest.java
index 98161b0729..ef903f9422 100644
--- a/docker-java/src/test/java/com/github/dockerjava/netty/handler/FramedResponseStreamHandlerTest.java
+++ b/docker-java/src/test/java/com/github/dockerjava/netty/handler/FramedResponseStreamHandlerTest.java
@@ -87,7 +87,7 @@ public void channelRead0rawStream() throws Exception {
objectUnderTest.channelRead0(Mockito.mock(ChannelHandlerContext.class), Unpooled.wrappedBuffer(msg));
// Assert result
- assertEquals(responseHandler.frames.get(0).toString(), "RAW: ");
+ assertEquals("RAW: ", responseHandler.frames.get(0).toString());
}
@Test
@@ -117,7 +117,7 @@ public void channelRead0stdIn() throws Exception {
objectUnderTest.channelRead0(Mockito.mock(ChannelHandlerContext.class), Unpooled.wrappedBuffer(msg));
// Assert result
- assertEquals(responseHandler.frames.get(0).toString(), "STDIN: ");
+ assertEquals("STDIN: ", responseHandler.frames.get(0).toString());
}
@Test
@@ -132,7 +132,7 @@ public void channelRead0stdOut() throws Exception {
objectUnderTest.channelRead0(Mockito.mock(ChannelHandlerContext.class), Unpooled.wrappedBuffer(msg));
// Assert result
- assertEquals(responseHandler.frames.get(0).toString(), "STDOUT: ");
+ assertEquals("STDOUT: ", responseHandler.frames.get(0).toString());
}
@Test
@@ -147,7 +147,7 @@ public void channelRead0stdErr() throws Exception {
objectUnderTest.channelRead0(Mockito.mock(ChannelHandlerContext.class), Unpooled.wrappedBuffer(msg));
// Assert result
- assertEquals(responseHandler.frames.get(0).toString(), "STDERR: ");
+ assertEquals("STDERR: ", responseHandler.frames.get(0).toString());
}
@Test
@@ -162,7 +162,7 @@ public void channelRead0largePayload() throws Exception {
objectUnderTest.channelRead0(Mockito.mock(ChannelHandlerContext.class), Unpooled.wrappedBuffer(msg));
// Assert result
- assertEquals(responseHandler.frames.get(0).toString(), "STDOUT: ");
+ assertEquals("STDOUT: ", responseHandler.frames.get(0).toString());
}
@Test
@@ -179,6 +179,6 @@ public void exceptionCaught() throws Exception {
objectUnderTest.exceptionCaught(Mockito.mock(ChannelHandlerContext.class), throwable);
// Assert result
- assertEquals(responseHandler.exceptions.get(0).getCause(), exception);
+ assertEquals(exception, responseHandler.exceptions.get(0).getCause());
}
}
diff --git a/docker-java/src/test/java/com/github/dockerjava/netty/handler/HttpResponseStreamHandlerTest.java b/docker-java/src/test/java/com/github/dockerjava/netty/handler/HttpResponseStreamHandlerTest.java
index 9433f97d6c..9a24920623 100644
--- a/docker-java/src/test/java/com/github/dockerjava/netty/handler/HttpResponseStreamHandlerTest.java
+++ b/docker-java/src/test/java/com/github/dockerjava/netty/handler/HttpResponseStreamHandlerTest.java
@@ -32,10 +32,10 @@ public void testNoBytesSkipped() throws Exception {
ChannelHandlerContext ctx = Mockito.mock(ChannelHandlerContext.class);
ByteBuf buffer = generateByteBuf();
ByteBuf readBuffer = buffer.copy();
- assertEquals(buffer.refCnt(), 1);
+ assertEquals(1, buffer.refCnt());
streamHandler.channelRead(ctx, buffer);
streamHandler.channelInactive(ctx);
- assertEquals(buffer.refCnt(), 0);
+ assertEquals(0, buffer.refCnt());
try (InputStream inputStream = callback.getInputStream()) {
assertTrue(IOUtils.contentEquals(inputStream, new ByteBufInputStream(readBuffer)));
}
@@ -49,10 +49,10 @@ public void testReadByteByByte() throws Exception {
ChannelHandlerContext ctx = Mockito.mock(ChannelHandlerContext.class);
ByteBuf buffer = generateByteBuf();
ByteBuf readBuffer = buffer.copy();
- assertEquals(buffer.refCnt(), 1);
+ assertEquals(1, buffer.refCnt());
streamHandler.channelRead(ctx, buffer);
streamHandler.channelInactive(ctx);
- assertEquals(buffer.refCnt(), 0);
+ assertEquals(0, buffer.refCnt());
try (InputStream inputStream = callback.getInputStream()) {
for (int i = 0; i < readBuffer.readableBytes(); i++) {
int b = inputStream.read();
From 59b2b8c0738e00a0df71f5515276c41a5df7edf5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Edd=C3=BA=20Mel=C3=A9ndez=20Gonzales?=
Date: Thu, 9 Feb 2023 17:21:47 -0600
Subject: [PATCH 015/163] Deprecate `JerseyDockerHttpClient` (#2067)
---
.../com/github/dockerjava/jaxrs/JerseyDockerHttpClient.java | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/JerseyDockerHttpClient.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/JerseyDockerHttpClient.java
index f15e977124..78a65cf636 100644
--- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/JerseyDockerHttpClient.java
+++ b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/JerseyDockerHttpClient.java
@@ -42,6 +42,10 @@
import java.util.Map;
import java.util.Objects;
+/**
+ * @deprecated use Apache HttpClient 5-based transport
+ */
+@Deprecated
public final class JerseyDockerHttpClient implements DockerHttpClient {
public static final class Builder {
From f306650d6d696b7abdf0f1c7cde423b2c1262993 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Edd=C3=BA=20Mel=C3=A9ndez=20Gonzales?=
Date: Thu, 9 Feb 2023 18:54:11 -0600
Subject: [PATCH 016/163] Rename default branch to main (#2070)
---
.github/workflows/ci.yml | 2 +-
.github/workflows/main.yml | 2 +-
.github/workflows/release.yml | 2 +-
CHANGELOG.md | 2 +-
README.md | 6 +++---
5 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 255ad5a431..b947ddbbb1 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -2,7 +2,7 @@ name: CI
on:
pull_request: {}
- push: { branches: [ master ] }
+ push: { branches: [ main ] }
jobs:
build:
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 2c30bcdb18..99cd01cfc5 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -4,7 +4,7 @@ on:
push:
# branches to consider in the event; optional, defaults to all
branches:
- - master
+ - main
jobs:
update_release_draft:
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 9f0acaa023..106c1d340e 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -17,7 +17,7 @@ jobs:
java-version: 8
- name: Set version
run: ./mvnw versions:set -DnewVersion="${{github.event.release.tag_name}}"
- # TODO check master's CI status
+ # TODO check main's CI status
- name: Deploy with Maven
env:
MAVEN_DEPLOYMENT_REPOSITORY: ${{ secrets.MAVEN_DEPLOYMENT_REPOSITORY }}
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0ca44ee2e6..5d344d93b9 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -301,7 +301,7 @@ v2.0.0
Release notes
* Some commands APIs has been changed to be callback-driven now to simplify the processing of the result streams for the client application. This affects namely the events, stats, log, attach, build, push and pull commands. Look at the Wiki how to [process events](https://github.com/docker-java/docker-java/wiki#handle-events) or how to [build an image](https://github.com/docker-java/docker-java/wiki#build-image-from-dockerfile) from dockerfile for example.
-* The `DockerClientConfig` API has changed to free it from implementation specific configuration options like `readTimeout`, `maxTotalConnections`, `maxPerRouteConnections` and `enableLoggingFilter`. Most options can be configured via `DockerCmdExecFactoryImpl` [programmatically](https://github.com/docker-java/docker-java/wiki#intialize-docker-client-advanced) now. Logging is configurable via [logback](https://github.com/docker-java/docker-java/blob/master/src/test/resources/logback.xml) configuration file in the classpath.
+* The `DockerClientConfig` API has changed to free it from implementation specific configuration options like `readTimeout`, `maxTotalConnections`, `maxPerRouteConnections` and `enableLoggingFilter`. Most options can be configured via `DockerCmdExecFactoryImpl` [programmatically](https://github.com/docker-java/docker-java/wiki#intialize-docker-client-advanced) now. Logging is configurable via [logback](https://github.com/docker-java/docker-java/blob/main/src/test/resources/logback.xml) configuration file in the classpath.
All changes
diff --git a/README.md b/README.md
index c60907548e..b1fa9c89eb 100644
--- a/README.md
+++ b/README.md
@@ -1,9 +1,9 @@
[](https://gitter.im/docker-java/docker-java?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[](https://mvnrepository.com/artifact/com.github.docker-java/docker-java)
-[](http://codecov.io/github/docker-java/docker-java?branch=master)
-[](https://github.com/docker-java/docker-java/blob/master/LICENSE)
+[](http://codecov.io/github/docker-java/docker-java?branch=master)
+[](https://github.com/docker-java/docker-java/blob/main/LICENSE)
# docker-java
Java API client for [Docker](http://docs.docker.io/ "Docker")
-# [Read the documentation here](docs/README.md)
\ No newline at end of file
+# [Read the documentation here](docs/README.md)
From fbc29d85733c6b23be151e06ae2eb9114c48457e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Edd=C3=BA=20Mel=C3=A9ndez=20Gonzales?=
Date: Wed, 1 Mar 2023 19:29:28 -0600
Subject: [PATCH 017/163] Update checkout and setup-java actions (#2083)
---
.github/workflows/ci.yml | 5 +++--
.github/workflows/release.yml | 5 +++--
2 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index b947ddbbb1..f616b6e53d 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -17,11 +17,12 @@ jobs:
- { name: "Docker 18.06.3", dockerVersion: "18.06.3~ce~3-0~ubuntu", javaVersion: 8 }
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
- name: Set up JDK
- uses: actions/setup-java@v1
+ uses: actions/setup-java@v3
with:
java-version: ${{matrix.javaVersion}}
+ distribution: temurin
- name: Configure Docker
env:
DOCKER_VERSION: ${{matrix.dockerVersion}}
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 106c1d340e..03a866caac 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -10,11 +10,12 @@ jobs:
build:
runs-on: ubuntu-18.04
steps:
- - uses: actions/checkout@v1
+ - uses: actions/checkout@v3
- name: Set up JDK 8
- uses: actions/setup-java@v1
+ uses: actions/setup-java@v3
with:
java-version: 8
+ distribution: temurin
- name: Set version
run: ./mvnw versions:set -DnewVersion="${{github.event.release.tag_name}}"
# TODO check main's CI status
From 1d5ec65550935bbc56f0794ab7219cca4f761991 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Edd=C3=BA=20Mel=C3=A9ndez=20Gonzales?=
Date: Mon, 6 Mar 2023 20:40:05 -0600
Subject: [PATCH 018/163] Update ubuntu version to 20.04 and 22.04 (#2058)
ubuntu-18.04 is deprecated.
---
.github/workflows/ci.yml | 4 ++--
.github/workflows/release.yml | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index f616b6e53d..4f1ef43dee 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -6,7 +6,7 @@ on:
jobs:
build:
- runs-on: ubuntu-18.04
+ runs-on: ubuntu-20.04
strategy:
fail-fast: false
matrix:
@@ -14,7 +14,7 @@ jobs:
- { name: "default", javaVersion: 8 }
- { name: "default", javaVersion: 17 }
- { name: "over TCP", dockerHost: "tcp://127.0.0.1:2375", javaVersion: 8 }
- - { name: "Docker 18.06.3", dockerVersion: "18.06.3~ce~3-0~ubuntu", javaVersion: 8 }
+ - { name: "Docker 19.03.9", dockerVersion: "5:19.03.9~3-0~ubuntu-focal", javaVersion: 8 }
steps:
- uses: actions/checkout@v3
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 03a866caac..7ee1288012 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -8,7 +8,7 @@ on:
jobs:
build:
- runs-on: ubuntu-18.04
+ runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
- name: Set up JDK 8
From 980e5d1b7bdc3ddf434edaaaac62306505d0b3d4 Mon Sep 17 00:00:00 2001
From: belugabehr <12578579+belugabehr@users.noreply.github.com>
Date: Wed, 8 Mar 2023 09:03:01 -0500
Subject: [PATCH 019/163] Remove reference to unused commons-codec (#2028)
---
pom.xml | 1 -
1 file changed, 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index b2c2c876ac..fe1e6d472a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -62,7 +62,6 @@
2.10.34.5.121.21
- 1.112.63.12.01.7.30
From f4cffbd6dd2df300d20c7ec0b35528f06ac26229 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Edd=C3=BA=20Mel=C3=A9ndez=20Gonzales?=
Date: Wed, 8 Mar 2023 17:08:59 -0600
Subject: [PATCH 020/163] Add CODEOWNERS (#2085)
---
.github/CODEOWNERS | 2 ++
1 file changed, 2 insertions(+)
create mode 100644 .github/CODEOWNERS
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
new file mode 100644
index 0000000000..e5a6b03769
--- /dev/null
+++ b/.github/CODEOWNERS
@@ -0,0 +1,2 @@
+* @docker-java/team
+
From 7ce35f42b813757ccb5bfe79f275abc38f020762 Mon Sep 17 00:00:00 2001
From: Matthias Wiedemann
Date: Thu, 9 Mar 2023 01:02:33 +0100
Subject: [PATCH 021/163] Load test resources from classpath (#1823)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Co-authored-by: Eddú Meléndez
---
.../cmd/CopyArchiveFromContainerCmdIT.java | 2 +-
.../cmd/CopyArchiveToContainerCmdIT.java | 16 ++++++++--------
.../github/dockerjava/utils/TestResources.java | 5 +++--
3 files changed, 12 insertions(+), 11 deletions(-)
diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/CopyArchiveFromContainerCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/CopyArchiveFromContainerCmdIT.java
index c434c0cb48..e0c2ca03e8 100644
--- a/docker-java/src/test/java/com/github/dockerjava/cmd/CopyArchiveFromContainerCmdIT.java
+++ b/docker-java/src/test/java/com/github/dockerjava/cmd/CopyArchiveFromContainerCmdIT.java
@@ -66,7 +66,7 @@ public void copyFromContainerBinaryFile() throws Exception {
assertThat(container.getId(), not(isEmptyOrNullString()));
Path temp = Files.createTempFile("", ".tar.gz");
- Path binaryFile = Paths.get("src/test/resources/testCopyFromArchive/binary.dat");
+ Path binaryFile = Paths.get(ClassLoader.getSystemResource("testCopyFromArchive/binary.dat").toURI());
CompressArchiveUtil.tar(binaryFile, temp, true, false);
try (InputStream uploadStream = Files.newInputStream(temp)) {
diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/CopyArchiveToContainerCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/CopyArchiveToContainerCmdIT.java
index f931061e53..bbd98932f7 100644
--- a/docker-java/src/test/java/com/github/dockerjava/cmd/CopyArchiveToContainerCmdIT.java
+++ b/docker-java/src/test/java/com/github/dockerjava/cmd/CopyArchiveToContainerCmdIT.java
@@ -33,7 +33,7 @@ public class CopyArchiveToContainerCmdIT extends CmdIT {
public void copyFileToContainer() throws Exception {
CreateContainerResponse container = prepareContainerForCopy("1");
Path temp = Files.createTempFile("", ".tar.gz");
- CompressArchiveUtil.tar(Paths.get("src/test/resources/testReadFile"), temp, true, false);
+ CompressArchiveUtil.tar(Paths.get(ClassLoader.getSystemResource("testReadFile").toURI()), temp, true, false);
try (InputStream uploadStream = Files.newInputStream(temp)) {
dockerRule.getClient()
.copyArchiveToContainerCmd(container.getId())
@@ -47,7 +47,7 @@ public void copyFileToContainer() throws Exception {
public void copyStreamToContainer() throws Exception {
CreateContainerResponse container = prepareContainerForCopy("2");
dockerRule.getClient().copyArchiveToContainerCmd(container.getId())
- .withHostResource("src/test/resources/testReadFile")
+ .withHostResource(Paths.get(ClassLoader.getSystemResource("testReadFile").toURI()).toString())
.exec();
assertFileCopied(container);
}
@@ -55,8 +55,8 @@ public void copyStreamToContainer() throws Exception {
@Test
public void copyStreamToContainerTwice() throws Exception {
CreateContainerResponse container = prepareContainerForCopy("rerun");
- CopyArchiveToContainerCmd copyArchiveToContainerCmd=dockerRule.getClient().copyArchiveToContainerCmd(container.getId())
- .withHostResource("src/test/resources/testReadFile");
+ CopyArchiveToContainerCmd copyArchiveToContainerCmd = dockerRule.getClient().copyArchiveToContainerCmd(container.getId())
+ .withHostResource(Paths.get(ClassLoader.getSystemResource("testReadFile").toURI()).toString());
copyArchiveToContainerCmd.exec();
assertFileCopied(container);
//run again to make sure no DockerClientException
@@ -82,9 +82,9 @@ private void assertFileCopied(CreateContainerResponse container) throws IOExcept
}
@Test(expected = NotFoundException.class)
- public void copyToNonExistingContainer() {
-
- dockerRule.getClient().copyArchiveToContainerCmd("non-existing").withHostResource("src/test/resources/testReadFile").exec();
+ public void copyToNonExistingContainer() throws Exception {
+ dockerRule.getClient().copyArchiveToContainerCmd("non-existing")
+ .withHostResource(Paths.get(ClassLoader.getSystemResource("testReadFile").toURI()).toString()).exec();
}
@Test
@@ -113,7 +113,7 @@ public void copyDirWithLastAddedTarEntryEmptyDir() throws Exception{
// cleanup dir
FileUtils.deleteDirectory(localDir.toFile());
}
-
+
@Test
public void copyFileWithExecutePermission() throws Exception {
// create script file, add permission to execute
diff --git a/docker-java/src/test/java/com/github/dockerjava/utils/TestResources.java b/docker-java/src/test/java/com/github/dockerjava/utils/TestResources.java
index 35ece680f7..2a56333f19 100644
--- a/docker-java/src/test/java/com/github/dockerjava/utils/TestResources.java
+++ b/docker-java/src/test/java/com/github/dockerjava/utils/TestResources.java
@@ -1,5 +1,6 @@
package com.github.dockerjava.utils;
+import java.net.URISyntaxException;
import java.nio.file.Path;
import java.nio.file.Paths;
@@ -8,7 +9,7 @@ public class TestResources {
private TestResources() {
}
- public static Path getApiImagesLoadTestTarball() {
- return Paths.get("src/test/resources/api/images/load/image.tar");
+ public static Path getApiImagesLoadTestTarball() throws URISyntaxException {
+ return Paths.get(ClassLoader.getSystemResource("api/images/load/image.tar").toURI());
}
}
From 97579e5e330e16ed26fef25ada4de472aa998c56 Mon Sep 17 00:00:00 2001
From: belugabehr <12578579+belugabehr@users.noreply.github.com>
Date: Thu, 30 Mar 2023 02:29:16 -0400
Subject: [PATCH 022/163] Use JDK Objects requireNonNull over Guava
checkNotNull (#1981)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Co-authored-by: Eddú Meléndez Gonzales
---
.../core/AbstractDockerCmdExecFactory.java | 9 ++-
.../core/DefaultDockerClientConfig.java | 4 +-
.../dockerjava/core/DockerClientImpl.java | 14 ++--
.../dockerjava/core/KeystoreSSLConfig.java | 10 ++-
.../core/LocalDirectorySSLConfig.java | 6 +-
.../core/command/AbstrAsyncDockerCmd.java | 5 +-
.../core/command/AbstrDockerCmd.java | 6 +-
.../core/command/AttachContainerCmdImpl.java | 8 +--
.../core/command/BuildImageCmdImpl.java | 21 +++---
.../core/command/CommitCmdImpl.java | 51 +++++----------
.../core/command/ContainerDiffCmdImpl.java | 6 +-
.../CopyArchiveFromContainerCmdImpl.java | 12 ++--
.../CopyArchiveToContainerCmdImpl.java | 15 ++---
.../command/CopyFileFromContainerCmdImpl.java | 12 ++--
.../core/command/CreateConfigCmdImpl.java | 11 ++--
.../core/command/CreateContainerCmdImpl.java | 64 +++++++++----------
.../core/command/CreateImageCmdImpl.java | 9 ++-
.../core/command/CreateNetworkCmdImpl.java | 5 +-
.../core/command/CreateSecretCmdImpl.java | 6 +-
.../core/command/CreateServiceCmdImpl.java | 8 +--
.../core/command/CreateVolumeCmdImpl.java | 11 ++--
.../core/command/EventsCmdImpl.java | 15 ++---
.../core/command/ExecCreateCmdImpl.java | 6 +-
.../core/command/ExecStartCmdImpl.java | 6 +-
.../core/command/InspectConfigCmdImpl.java | 7 +-
.../core/command/InspectContainerCmdImpl.java | 5 +-
.../core/command/InspectExecCmdImpl.java | 6 +-
.../core/command/InspectImageCmdImpl.java | 5 +-
.../core/command/InspectServiceCmdImpl.java | 7 +-
.../core/command/InspectSwarmNodeCmdImpl.java | 5 +-
.../core/command/InspectVolumeCmdImpl.java | 5 +-
.../core/command/KillContainerCmdImpl.java | 8 +--
.../core/command/ListConfigsCmdImpl.java | 6 +-
.../core/command/ListContainersCmdImpl.java | 18 +++---
.../core/command/ListImagesCmdImpl.java | 17 +++--
.../core/command/ListNetworksCmdImpl.java | 5 +-
.../core/command/ListSecretsCmdImpl.java | 9 ++-
.../core/command/ListServicesCmdImpl.java | 9 ++-
.../core/command/ListSwarmNodesCmdImpl.java | 11 ++--
.../core/command/ListVolumesCmdImpl.java | 7 +-
.../core/command/LoadImageAsyncCmdImpl.java | 5 +-
.../core/command/LoadImageCmdImpl.java | 6 +-
.../core/command/LogContainerCmdImpl.java | 5 +-
.../core/command/PauseContainerCmdImpl.java | 5 +-
.../dockerjava/core/command/PruneCmdImpl.java | 11 ++--
.../core/command/PullImageCmdImpl.java | 13 ++--
.../core/command/PushImageCmdImpl.java | 8 +--
.../core/command/RemoveConfigCmdImpl.java | 7 +-
.../core/command/RemoveContainerCmdImpl.java | 5 +-
.../core/command/RemoveImageCmdImpl.java | 5 +-
.../core/command/RemoveSecretCmdImpl.java | 5 +-
.../core/command/RemoveServiceCmdImpl.java | 5 +-
.../core/command/RemoveSwarmNodeCmdImpl.java | 7 +-
.../core/command/RemoveVolumeCmdImpl.java | 5 +-
.../core/command/RenameContainerCmdImpl.java | 8 +--
.../core/command/ResizeContainerCmdImpl.java | 5 +-
.../core/command/ResizeExecCmdImpl.java | 7 +-
.../core/command/RestartContainerCmdImpl.java | 7 +-
.../core/command/SaveImageCmdImpl.java | 9 +--
.../core/command/SaveImagesCmdImpl.java | 9 +--
.../core/command/SearchImagesCmdImpl.java | 5 +-
.../core/command/StartContainerCmdImpl.java | 5 +-
.../dockerjava/core/command/StatsCmdImpl.java | 5 +-
.../core/command/StopContainerCmdImpl.java | 8 +--
.../core/command/TagImageCmdImpl.java | 11 ++--
.../core/command/TopContainerCmdImpl.java | 8 +--
.../core/command/UnpauseContainerCmdImpl.java | 5 +-
.../core/command/UpdateSwarmCmdImpl.java | 7 +-
.../core/command/WaitContainerCmdImpl.java | 5 +-
.../core/exec/AbstrDockerCmdExec.java | 8 +--
.../netty/NettyDockerCmdExecFactory.java | 6 +-
71 files changed, 271 insertions(+), 389 deletions(-)
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/AbstractDockerCmdExecFactory.java b/docker-java-core/src/main/java/com/github/dockerjava/core/AbstractDockerCmdExecFactory.java
index 4b49da035e..e04ab8e3ef 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/AbstractDockerCmdExecFactory.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/AbstractDockerCmdExecFactory.java
@@ -1,5 +1,7 @@
package com.github.dockerjava.core;
+import java.util.Objects;
+
import com.github.dockerjava.api.command.AttachContainerCmd;
import com.github.dockerjava.api.command.AuthCmd;
import com.github.dockerjava.api.command.BuildImageCmd;
@@ -160,8 +162,6 @@
import com.github.dockerjava.core.exec.VersionCmdExec;
import com.github.dockerjava.core.exec.WaitContainerCmdExec;
-import static com.google.common.base.Preconditions.checkNotNull;
-
public abstract class AbstractDockerCmdExecFactory implements DockerCmdExecFactory, DockerClientConfigAware {
private DockerClientConfig dockerClientConfig;
@@ -170,15 +170,14 @@ public abstract class AbstractDockerCmdExecFactory implements DockerCmdExecFacto
protected Integer readTimeout;
protected DockerClientConfig getDockerClientConfig() {
- checkNotNull(dockerClientConfig,
+ Objects.requireNonNull(dockerClientConfig,
"Factor not initialized, dockerClientConfig not set. You probably forgot to call init()!");
return dockerClientConfig;
}
@Override
public void init(DockerClientConfig dockerClientConfig) {
- checkNotNull(dockerClientConfig, "config was not specified");
- this.dockerClientConfig = dockerClientConfig;
+ this.dockerClientConfig = Objects.requireNonNull(dockerClientConfig, "config was not specified");
}
@Override
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/DefaultDockerClientConfig.java b/docker-java-core/src/main/java/com/github/dockerjava/core/DefaultDockerClientConfig.java
index 88d9e49f0c..b4e1aa0a5c 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/DefaultDockerClientConfig.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/DefaultDockerClientConfig.java
@@ -23,10 +23,10 @@
import java.net.URI;
import java.util.HashSet;
import java.util.Map;
+import java.util.Objects;
import java.util.Properties;
import java.util.Set;
-import static com.google.common.base.Preconditions.checkNotNull;
import static org.apache.commons.lang3.BooleanUtils.isTrue;
/**
@@ -362,7 +362,7 @@ public Builder withProperties(Properties p) {
* configure DOCKER_HOST
*/
public final Builder withDockerHost(String dockerHost) {
- checkNotNull(dockerHost, "uri was not specified");
+ Objects.requireNonNull(dockerHost, "uri was not specified");
this.dockerHost = URI.create(dockerHost);
return this;
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/DockerClientImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/DockerClientImpl.java
index 8de9002797..55f5300570 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/DockerClientImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/DockerClientImpl.java
@@ -172,8 +172,7 @@
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
-
-import static com.google.common.base.Preconditions.checkNotNull;
+import java.util.Objects;
/**
* @author Konstantin Pelykh (kpelykh@gmail.com)
@@ -186,8 +185,7 @@ public class DockerClientImpl implements Closeable, DockerClient {
DockerCmdExecFactory dockerCmdExecFactory;
DockerClientImpl(DockerClientConfig dockerClientConfig) {
- checkNotNull(dockerClientConfig, "config was not specified");
- this.dockerClientConfig = dockerClientConfig;
+ this.dockerClientConfig = Objects.requireNonNull(dockerClientConfig, "config was not specified");
}
/**
@@ -248,7 +246,7 @@ public DockerHttpClient getHttpClient() {
*/
@Deprecated
public DockerClientImpl withDockerCmdExecFactory(DockerCmdExecFactory dockerCmdExecFactory) {
- checkNotNull(dockerCmdExecFactory, "dockerCmdExecFactory was not specified");
+ Objects.requireNonNull(dockerCmdExecFactory, "dockerCmdExecFactory was not specified");
this.dockerCmdExecFactory = dockerCmdExecFactory;
if (dockerCmdExecFactory instanceof DockerClientConfigAware) {
((DockerClientConfigAware) dockerCmdExecFactory).init(dockerClientConfig);
@@ -258,14 +256,14 @@ public DockerClientImpl withDockerCmdExecFactory(DockerCmdExecFactory dockerCmdE
@Deprecated
private DockerCmdExecFactory getDockerCmdExecFactory() {
- checkNotNull(dockerCmdExecFactory, "dockerCmdExecFactory was not specified");
+ Objects.requireNonNull(dockerCmdExecFactory, "dockerCmdExecFactory was not specified");
return dockerCmdExecFactory;
}
@Override
public AuthConfig authConfig() {
- checkNotNull(dockerClientConfig.getRegistryUsername(), "Configured username is null.");
- checkNotNull(dockerClientConfig.getRegistryUrl(), "Configured serverAddress is null.");
+ Objects.requireNonNull(dockerClientConfig.getRegistryUsername(), "Configured username is null.");
+ Objects.requireNonNull(dockerClientConfig.getRegistryUrl(), "Configured serverAddress is null.");
return new AuthConfig()
.withUsername(dockerClientConfig.getRegistryUsername())
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/KeystoreSSLConfig.java b/docker-java-core/src/main/java/com/github/dockerjava/core/KeystoreSSLConfig.java
index 43946a53b9..73491bb436 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/KeystoreSSLConfig.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/KeystoreSSLConfig.java
@@ -1,7 +1,5 @@
package com.github.dockerjava.core;
-import static com.google.common.base.Preconditions.checkNotNull;
-
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
@@ -14,6 +12,7 @@
import java.security.UnrecoverableKeyException;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
+import java.util.Objects;
import javax.net.ssl.KeyManagerFactory;
import javax.net.ssl.SSLContext;
@@ -37,8 +36,7 @@ public class KeystoreSSLConfig implements SSLConfig, Serializable {
*/
public KeystoreSSLConfig(KeyStore keystore, String keystorePassword) {
this.keystorePassword = keystorePassword;
- checkNotNull(keystore);
- this.keystore = keystore;
+ this.keystore = Objects.requireNonNull(keystore);
}
/**
@@ -54,8 +52,8 @@ public KeystoreSSLConfig(KeyStore keystore, String keystorePassword) {
*/
public KeystoreSSLConfig(File pfxFile, String password) throws KeyStoreException, IOException,
CertificateException, NoSuchAlgorithmException {
- checkNotNull(pfxFile);
- checkNotNull(password);
+ Objects.requireNonNull(pfxFile);
+ Objects.requireNonNull(password);
keystore = KeyStore.getInstance("pkcs12");
try (FileInputStream fs = new FileInputStream(pfxFile)) {
keystore.load(fs, password.toCharArray());
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 6e39f4f942..665f48f064 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
@@ -1,7 +1,5 @@
package com.github.dockerjava.core;
-import static com.google.common.base.Preconditions.checkNotNull;
-
import java.io.File;
import java.io.Serializable;
import java.nio.file.Files;
@@ -9,6 +7,7 @@
import java.security.AccessController;
import java.security.PrivilegedAction;
import java.security.Security;
+import java.util.Objects;
import javax.net.ssl.KeyManagerFactory;
import javax.net.ssl.SSLContext;
@@ -29,8 +28,7 @@ public class LocalDirectorySSLConfig implements SSLConfig, Serializable {
private final String dockerCertPath;
public LocalDirectorySSLConfig(String dockerCertPath) {
- checkNotNull(dockerCertPath);
- this.dockerCertPath = dockerCertPath;
+ this.dockerCertPath = Objects.requireNonNull(dockerCertPath);
}
public String getDockerCertPath() {
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/AbstrAsyncDockerCmd.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/AbstrAsyncDockerCmd.java
index b576d7a059..9f83c0b4fb 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/AbstrAsyncDockerCmd.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/AbstrAsyncDockerCmd.java
@@ -1,6 +1,6 @@
package com.github.dockerjava.core.command;
-import static com.google.common.base.Preconditions.checkNotNull;
+import java.util.Objects;
import com.github.dockerjava.api.async.ResultCallback;
import com.github.dockerjava.api.command.AsyncDockerCmd;
@@ -12,8 +12,7 @@ public abstract class AbstrAsyncDockerCmd execution;
public AbstrAsyncDockerCmd(DockerCmdAsyncExec execution) {
- checkNotNull(execution, "execution was not specified");
- this.execution = execution;
+ this.execution = Objects.requireNonNull(execution, "execution was not specified");
}
@Override
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/AbstrDockerCmd.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/AbstrDockerCmd.java
index 9fbeb0a755..17ff9a88ec 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/AbstrDockerCmd.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/AbstrDockerCmd.java
@@ -1,9 +1,8 @@
package com.github.dockerjava.core.command;
-import static com.google.common.base.Preconditions.checkNotNull;
-
import java.io.IOException;
import java.util.Base64;
+import java.util.Objects;
import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
@@ -24,8 +23,7 @@ public abstract class AbstrDockerCmd, RES_T> impl
protected transient DockerCmdSyncExec execution;
public AbstrDockerCmd(DockerCmdSyncExec execution) {
- checkNotNull(execution, "execution was not specified");
- this.execution = execution;
+ this.execution = Objects.requireNonNull(execution, "execution was not specified");
}
@Override
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/AttachContainerCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/AttachContainerCmdImpl.java
index 6c5103b27a..30a411dbab 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/AttachContainerCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/AttachContainerCmdImpl.java
@@ -1,8 +1,7 @@
package com.github.dockerjava.core.command;
-import static com.google.common.base.Preconditions.checkNotNull;
-
import java.io.InputStream;
+import java.util.Objects;
import com.github.dockerjava.api.command.AttachContainerCmd;
import com.github.dockerjava.api.model.Frame;
@@ -61,7 +60,7 @@ public InputStream getStdin() {
@Override
public AttachContainerCmd withContainerId(String containerId) {
- checkNotNull(containerId, "containerId was not specified");
+ Objects.requireNonNull(containerId, "containerId was not specified");
this.containerId = containerId;
return this;
}
@@ -92,8 +91,7 @@ public AttachContainerCmd withStdErr(Boolean stderr) {
@Override
public AttachContainerCmd withStdIn(InputStream stdin) {
- checkNotNull(stdin, "stdin was not specified");
- this.stdin = stdin;
+ this.stdin = Objects.requireNonNull(stdin, "stdin was not specified");
return this;
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/BuildImageCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/BuildImageCmdImpl.java
index 1bd1af576c..5d9e62909b 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/BuildImageCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/BuildImageCmdImpl.java
@@ -13,10 +13,9 @@
import java.net.URI;
import java.util.HashMap;
import java.util.Map;
+import java.util.Objects;
import java.util.Set;
-import static com.google.common.base.Preconditions.checkNotNull;
-
/**
* Build an image from Dockerfile.
*/
@@ -79,7 +78,7 @@ public BuildImageCmdImpl(BuildImageCmd.Exec exec) {
public BuildImageCmdImpl(BuildImageCmd.Exec exec, File dockerFileOrFolder) {
super(exec);
- checkNotNull(dockerFileOrFolder, "dockerFolder is null");
+ Objects.requireNonNull(dockerFileOrFolder, "dockerFolder is null");
if (dockerFileOrFolder.isDirectory()) {
withBaseDirectory(dockerFileOrFolder);
@@ -91,7 +90,7 @@ public BuildImageCmdImpl(BuildImageCmd.Exec exec, File dockerFileOrFolder) {
public BuildImageCmdImpl(BuildImageCmd.Exec exec, InputStream tarInputStream) {
super(exec);
- checkNotNull(tarInputStream, "tarInputStream is null");
+ Objects.requireNonNull(tarInputStream, "tarInputStream is null");
withTarInputStream(tarInputStream);
}
@@ -232,8 +231,7 @@ public Set getExtraHosts() {
@Deprecated
@Override
public BuildImageCmdImpl withTag(String tag) {
- checkNotNull(tag, "Tag is null");
- this.tag = tag;
+ this.tag = Objects.requireNonNull(tag, "Tag is null");
return this;
}
@@ -328,7 +326,7 @@ public BuildImageCmd withBaseDirectory(File baseDirectory) {
@Override
public BuildImageCmdImpl withDockerfile(File dockerfile) {
- checkNotNull(dockerfile);
+ Objects.requireNonNull(dockerfile);
if (!dockerfile.exists()) {
throw new IllegalArgumentException("Dockerfile does not exist");
}
@@ -353,22 +351,19 @@ public BuildImageCmdImpl withDockerfile(File dockerfile) {
@Override
public BuildImageCmd withDockerfilePath(String dockerfilePath) {
- checkNotNull(dockerfilePath, "dockerfilePath is null");
- this.dockerFilePath = dockerfilePath;
+ this.dockerFilePath = Objects.requireNonNull(dockerfilePath, "dockerfilePath is null");
return this;
}
@Override
public BuildImageCmdImpl withTarInputStream(InputStream tarInputStream) {
- checkNotNull(tarInputStream, "tarInputStream is null");
- this.tarInputStream = tarInputStream;
+ this.tarInputStream = Objects.requireNonNull(tarInputStream, "tarInputStream is null");
return this;
}
@Override
public BuildImageCmd withBuildAuthConfigs(AuthConfigurations authConfigs) {
- checkNotNull(authConfigs, "authConfig is null");
- this.buildAuthConfigs = authConfigs;
+ this.buildAuthConfigs = Objects.requireNonNull(authConfigs, "authConfig is null");
return this;
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/CommitCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/CommitCmdImpl.java
index 1c8ad26a46..8458c7f7ef 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/CommitCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/CommitCmdImpl.java
@@ -1,8 +1,7 @@
package com.github.dockerjava.core.command;
-import static com.google.common.base.Preconditions.checkNotNull;
-
import java.util.Map;
+import java.util.Objects;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.github.dockerjava.api.command.CommitCmd;
@@ -90,8 +89,7 @@ public String getContainerId() {
@Override
public CommitCmdImpl withContainerId(String containerId) {
- checkNotNull(containerId, "containerId was not specified");
- this.containerId = containerId;
+ this.containerId = Objects.requireNonNull(containerId, "containerId was not specified");
return this;
}
@@ -140,8 +138,7 @@ public CommitCmdImpl withAttachStdout(Boolean attachStdout) {
@Override
public CommitCmdImpl withCmd(String... cmd) {
- checkNotNull(cmd, "cmd was not specified");
- this.cmd = cmd;
+ this.cmd = Objects.requireNonNull(cmd, "cmd was not specified");
return this;
}
@@ -153,29 +150,25 @@ public CommitCmdImpl withDisableNetwork(Boolean disableNetwork) {
@Override
public CommitCmdImpl withAuthor(String author) {
- checkNotNull(author, "author was not specified");
- this.author = author;
+ this.author = Objects.requireNonNull(author, "author was not specified");
return this;
}
@Override
public CommitCmdImpl withMessage(String message) {
- checkNotNull(message, "message was not specified");
- this.message = message;
+ this.message = Objects.requireNonNull(message, "message was not specified");
return this;
}
@Override
public CommitCmdImpl withTag(String tag) {
- checkNotNull(tag, "tag was not specified");
- this.tag = tag;
+ this.tag = Objects.requireNonNull(tag, "tag was not specified");
return this;
}
@Override
public CommitCmdImpl withRepository(String repository) {
- checkNotNull(repository, "repository was not specified");
- this.repository = repository;
+ this.repository = Objects.requireNonNull(repository, "repository was not specified");
return this;
}
@@ -192,8 +185,7 @@ public String[] getEnv() {
@Override
public CommitCmdImpl withEnv(String... env) {
- checkNotNull(env, "env was not specified");
- this.env = env;
+ this.env = Objects.requireNonNull(env, "env was not specified");
return this;
}
@@ -215,8 +207,7 @@ public ExposedPorts getExposedPorts() {
@Override
public CommitCmdImpl withExposedPorts(ExposedPorts exposedPorts) {
- checkNotNull(exposedPorts, "exposedPorts was not specified");
- this.exposedPorts = exposedPorts;
+ this.exposedPorts = Objects.requireNonNull(exposedPorts, "exposedPorts was not specified");
return this;
}
@@ -227,8 +218,7 @@ public String getHostname() {
@Override
public CommitCmdImpl withHostname(String hostname) {
- checkNotNull(hostname, "hostname was not specified");
- this.hostname = hostname;
+ this.hostname = Objects.requireNonNull(hostname, "hostname was not specified");
return this;
}
@@ -239,8 +229,7 @@ public Integer getMemory() {
@Override
public CommitCmdImpl withMemory(Integer memory) {
- checkNotNull(memory, "memory was not specified");
- this.memory = memory;
+ this.memory = Objects.requireNonNull(memory, "memory was not specified");
return this;
}
@@ -251,8 +240,7 @@ public Integer getMemorySwap() {
@Override
public CommitCmdImpl withMemorySwap(Integer memorySwap) {
- checkNotNull(memorySwap, "memorySwap was not specified");
- this.memorySwap = memorySwap;
+ this.memorySwap = Objects.requireNonNull(memorySwap, "memorySwap was not specified");
return this;
}
@@ -263,8 +251,7 @@ public Boolean isOpenStdin() {
@Override
public CommitCmdImpl withOpenStdin(Boolean openStdin) {
- checkNotNull(openStdin, "openStdin was not specified");
- this.openStdin = openStdin;
+ this.openStdin = Objects.requireNonNull(openStdin, "openStdin was not specified");
return this;
}
@@ -275,8 +262,7 @@ public String[] getPortSpecs() {
@Override
public CommitCmdImpl withPortSpecs(String... portSpecs) {
- checkNotNull(portSpecs, "portSpecs was not specified");
- this.portSpecs = portSpecs;
+ this.portSpecs = Objects.requireNonNull(portSpecs, "portSpecs was not specified");
return this;
}
@@ -309,8 +295,7 @@ public String getUser() {
@Override
public CommitCmdImpl withUser(String user) {
- checkNotNull(user, "user was not specified");
- this.user = user;
+ this.user = Objects.requireNonNull(user, "user was not specified");
return this;
}
@@ -321,8 +306,7 @@ public Volumes getVolumes() {
@Override
public CommitCmdImpl withVolumes(Volumes volumes) {
- checkNotNull(volumes, "volumes was not specified");
- this.volumes = volumes;
+ this.volumes = Objects.requireNonNull(volumes, "volumes was not specified");
return this;
}
@@ -333,8 +317,7 @@ public String getWorkingDir() {
@Override
public CommitCmdImpl withWorkingDir(String workingDir) {
- checkNotNull(workingDir, "workingDir was not specified");
- this.workingDir = workingDir;
+ this.workingDir = Objects.requireNonNull(workingDir, "workingDir was not specified");
return this;
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/ContainerDiffCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/ContainerDiffCmdImpl.java
index eb6baa5abb..14fc683cef 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/ContainerDiffCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/ContainerDiffCmdImpl.java
@@ -1,8 +1,7 @@
package com.github.dockerjava.core.command;
-import static com.google.common.base.Preconditions.checkNotNull;
-
import java.util.List;
+import java.util.Objects;
import com.github.dockerjava.api.command.ContainerDiffCmd;
import com.github.dockerjava.api.exception.DockerException;
@@ -33,8 +32,7 @@ public String getContainerId() {
@Override
public ContainerDiffCmdImpl withContainerId(String containerId) {
- checkNotNull(containerId, "containerId was not specified");
- this.containerId = containerId;
+ this.containerId = Objects.requireNonNull(containerId, "containerId was not specified");
return this;
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/CopyArchiveFromContainerCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/CopyArchiveFromContainerCmdImpl.java
index 8ca3056165..e827b37c87 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/CopyArchiveFromContainerCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/CopyArchiveFromContainerCmdImpl.java
@@ -1,8 +1,7 @@
package com.github.dockerjava.core.command;
-import static com.google.common.base.Preconditions.checkNotNull;
-
import java.io.InputStream;
+import java.util.Objects;
import com.github.dockerjava.api.command.CopyArchiveFromContainerCmd;
import com.github.dockerjava.api.exception.NotFoundException;
@@ -37,15 +36,13 @@ public String getResource() {
@Override
public CopyArchiveFromContainerCmdImpl withContainerId(String containerId) {
- checkNotNull(containerId, "containerId was not specified");
- this.containerId = containerId;
+ this.containerId = Objects.requireNonNull(containerId, "containerId was not specified");
return this;
}
@Override
public CopyArchiveFromContainerCmdImpl withResource(String resource) {
- checkNotNull(resource, "resource was not specified");
- this.resource = resource;
+ this.resource = Objects.requireNonNull(resource, "resource was not specified");
return this;
}
@@ -56,8 +53,7 @@ public String getHostPath() {
@Override
public CopyArchiveFromContainerCmdImpl withHostPath(String hostPath) {
- checkNotNull(hostPath, "hostPath was not specified");
- this.hostPath = hostPath;
+ this.hostPath = Objects.requireNonNull(hostPath, "hostPath was not specified");
return this;
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/CopyArchiveToContainerCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/CopyArchiveToContainerCmdImpl.java
index a915a3b020..a9b42e9217 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/CopyArchiveToContainerCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/CopyArchiveToContainerCmdImpl.java
@@ -1,12 +1,11 @@
package com.github.dockerjava.core.command;
-import static com.google.common.base.Preconditions.checkNotNull;
-
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
+import java.util.Objects;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.builder.ToStringBuilder;
@@ -40,15 +39,13 @@ public CopyArchiveToContainerCmdImpl(CopyArchiveToContainerCmd.Exec exec, String
@Override
public CopyArchiveToContainerCmd withContainerId(String containerId) {
- checkNotNull(containerId, "containerId was not specified");
- this.containerId = containerId;
+ this.containerId = Objects.requireNonNull(containerId, "containerId was not specified");
return this;
}
@Override
public CopyArchiveToContainerCmd withHostResource(String hostResource) {
- checkNotNull(hostResource, "hostResource was not specified");
- this.hostResource = hostResource;
+ this.hostResource = Objects.requireNonNull(hostResource, "hostResource was not specified");
return this;
}
@@ -66,15 +63,13 @@ public CopyArchiveToContainerCmd withCopyUIDGID(boolean copyUIDGID) {
@Override
public CopyArchiveToContainerCmd withRemotePath(String remotePath) {
- checkNotNull(remotePath, "remotePath was not specified");
- this.remotePath = remotePath;
+ this.remotePath = Objects.requireNonNull(remotePath, "remotePath was not specified");
return this;
}
@Override
public CopyArchiveToContainerCmd withTarInputStream(InputStream tarInputStream) {
- checkNotNull(tarInputStream, "tarInputStream was not specified");
- this.tarInputStream = tarInputStream;
+ this.tarInputStream = Objects.requireNonNull(tarInputStream, "tarInputStream was not specified");
return this;
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/CopyFileFromContainerCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/CopyFileFromContainerCmdImpl.java
index 3976834a45..4c8b3447de 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/CopyFileFromContainerCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/CopyFileFromContainerCmdImpl.java
@@ -1,8 +1,7 @@
package com.github.dockerjava.core.command;
-import static com.google.common.base.Preconditions.checkNotNull;
-
import java.io.InputStream;
+import java.util.Objects;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.github.dockerjava.api.command.CopyFileFromContainerCmd;
@@ -42,15 +41,13 @@ public String getResource() {
@Override
public CopyFileFromContainerCmdImpl withContainerId(String containerId) {
- checkNotNull(containerId, "containerId was not specified");
- this.containerId = containerId;
+ this.containerId = Objects.requireNonNull(containerId, "containerId was not specified");
return this;
}
@Override
public CopyFileFromContainerCmdImpl withResource(String resource) {
- checkNotNull(resource, "resource was not specified");
- this.resource = resource;
+ this.resource = Objects.requireNonNull(resource, "resource was not specified");
return this;
}
@@ -61,8 +58,7 @@ public String getHostPath() {
@Override
public CopyFileFromContainerCmdImpl withHostPath(String hostPath) {
- checkNotNull(hostPath, "hostPath was not specified");
- this.hostPath = hostPath;
+ this.hostPath = Objects.requireNonNull(hostPath, "hostPath was not specified");
return this;
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/CreateConfigCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/CreateConfigCmdImpl.java
index 6c21e39c9a..3a4f1cf017 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/CreateConfigCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/CreateConfigCmdImpl.java
@@ -6,8 +6,7 @@
import java.util.Base64;
import java.util.Map;
-
-import static com.google.common.base.Preconditions.checkNotNull;
+import java.util.Objects;
/**
* Creates a new config
@@ -44,22 +43,20 @@ public CreateConfigCmdImpl(CreateConfigCmd.Exec exec) {
@Override
public CreateConfigCmd withName(String name) {
- checkNotNull(name, "name was not specified");
- this.name = name;
+ this.name = Objects.requireNonNull(name, "name was not specified");
return this;
}
@Override
public CreateConfigCmd withData(byte[] data) {
- checkNotNull(data, "data was not specified");
+ Objects.requireNonNull(data, "data was not specified");
this.data = Base64.getEncoder().encodeToString(data);
return this;
}
@Override
public CreateConfigCmd withLabels(Map labels) {
- checkNotNull(labels, "labels was not specified");
- this.labels = labels;
+ this.labels = Objects.requireNonNull(labels, "labels was not specified");
return this;
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/CreateContainerCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/CreateContainerCmdImpl.java
index fd46535597..9b7f8a8fe8 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/CreateContainerCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/CreateContainerCmdImpl.java
@@ -22,8 +22,8 @@
import java.util.Arrays;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
-import static com.google.common.base.Preconditions.checkNotNull;
import static java.util.Collections.singletonMap;
/**
@@ -167,7 +167,7 @@ public CreateContainerCmd withAliases(String... aliases) {
@Override
public CreateContainerCmd withAliases(List aliases) {
- checkNotNull(aliases, "aliases was not specified");
+ Objects.requireNonNull(aliases, "aliases was not specified");
this.aliases = aliases;
return this;
}
@@ -180,14 +180,14 @@ public String[] getCmd() {
@Override
public CreateContainerCmd withCmd(String... cmd) {
- checkNotNull(cmd, "cmd was not specified");
+ Objects.requireNonNull(cmd, "cmd was not specified");
this.cmd = cmd;
return this;
}
@Override
public CreateContainerCmd withCmd(List cmd) {
- checkNotNull(cmd, "cmd was not specified");
+ Objects.requireNonNull(cmd, "cmd was not specified");
return withCmd(cmd.toArray(new String[0]));
}
@@ -217,7 +217,7 @@ public String getDomainName() {
@Override
public CreateContainerCmd withDomainName(String domainName) {
- checkNotNull(domainName, "no domainName was specified");
+ Objects.requireNonNull(domainName, "no domainName was specified");
this.domainName = domainName;
return this;
}
@@ -229,14 +229,14 @@ public String[] getEntrypoint() {
@Override
public CreateContainerCmd withEntrypoint(String... entrypoint) {
- checkNotNull(entrypoint, "entrypoint was not specified");
+ Objects.requireNonNull(entrypoint, "entrypoint was not specified");
this.entrypoint = entrypoint;
return this;
}
@Override
public CreateContainerCmd withEntrypoint(List entrypoint) {
- checkNotNull(entrypoint, "entrypoint was not specified");
+ Objects.requireNonNull(entrypoint, "entrypoint was not specified");
return withEntrypoint(entrypoint.toArray(new String[0]));
}
@@ -247,14 +247,14 @@ public String[] getEnv() {
@Override
public CreateContainerCmd withEnv(String... env) {
- checkNotNull(env, "env was not specified");
+ Objects.requireNonNull(env, "env was not specified");
this.env = env;
return this;
}
@Override
public CreateContainerCmd withEnv(List env) {
- checkNotNull(env, "env was not specified");
+ Objects.requireNonNull(env, "env was not specified");
return withEnv(env.toArray(new String[0]));
}
@@ -265,14 +265,14 @@ public ExposedPort[] getExposedPorts() {
@Override
public CreateContainerCmd withExposedPorts(ExposedPort... exposedPorts) {
- checkNotNull(exposedPorts, "exposedPorts was not specified");
+ Objects.requireNonNull(exposedPorts, "exposedPorts was not specified");
this.exposedPorts = new ExposedPorts(exposedPorts);
return this;
}
@Override
public CreateContainerCmd withExposedPorts(List exposedPorts) {
- checkNotNull(exposedPorts, "exposedPorts was not specified");
+ Objects.requireNonNull(exposedPorts, "exposedPorts was not specified");
return withExposedPorts(exposedPorts.toArray(new ExposedPort[0]));
}
@@ -286,7 +286,7 @@ public String getStopSignal() {
@Override
public CreateContainerCmd withStopSignal(String stopSignal) {
- checkNotNull(stopSignal, "stopSignal wasn't specified.");
+ Objects.requireNonNull(stopSignal, "stopSignal wasn't specified.");
this.stopSignal = stopSignal;
return this;
}
@@ -309,7 +309,7 @@ public String getHostName() {
@Override
public CreateContainerCmd withHostName(String hostName) {
- checkNotNull(hostName, "no hostName was specified");
+ Objects.requireNonNull(hostName, "no hostName was specified");
this.hostName = hostName;
return this;
}
@@ -321,7 +321,7 @@ public String getImage() {
@Override
public CreateContainerCmd withImage(String image) {
- checkNotNull(image, "no image was specified");
+ Objects.requireNonNull(image, "no image was specified");
this.image = image;
return this;
}
@@ -333,7 +333,7 @@ public Map getLabels() {
@Override
public CreateContainerCmd withLabels(Map labels) {
- checkNotNull(labels, "labels was not specified");
+ Objects.requireNonNull(labels, "labels was not specified");
this.labels = labels;
return this;
}
@@ -345,7 +345,7 @@ public String getMacAddress() {
@Override
public CreateContainerCmd withMacAddress(String macAddress) {
- checkNotNull(macAddress, "macAddress was not specified");
+ Objects.requireNonNull(macAddress, "macAddress was not specified");
this.macAddress = macAddress;
return this;
}
@@ -358,7 +358,7 @@ public String getName() {
@Override
public CreateContainerCmd withName(String name) {
- checkNotNull(name, "name was not specified");
+ Objects.requireNonNull(name, "name was not specified");
this.name = name;
return this;
}
@@ -370,14 +370,14 @@ public String[] getPortSpecs() {
@Override
public CreateContainerCmd withPortSpecs(String... portSpecs) {
- checkNotNull(portSpecs, "portSpecs was not specified");
+ Objects.requireNonNull(portSpecs, "portSpecs was not specified");
this.portSpecs = portSpecs;
return this;
}
@Override
public CreateContainerCmd withPortSpecs(List portSpecs) {
- checkNotNull(portSpecs, "portSpecs was not specified");
+ Objects.requireNonNull(portSpecs, "portSpecs was not specified");
return withPortSpecs(portSpecs.toArray(new String[0]));
}
@@ -388,7 +388,7 @@ public String getUser() {
@Override
public CreateContainerCmd withUser(String user) {
- checkNotNull(user, "user was not specified");
+ Objects.requireNonNull(user, "user was not specified");
this.user = user;
return this;
}
@@ -400,7 +400,7 @@ public Boolean isAttachStderr() {
@Override
public CreateContainerCmd withAttachStderr(Boolean attachStderr) {
- checkNotNull(attachStderr, "attachStderr was not specified");
+ Objects.requireNonNull(attachStderr, "attachStderr was not specified");
this.attachStderr = attachStderr;
return this;
}
@@ -412,7 +412,7 @@ public Boolean isAttachStdin() {
@Override
public CreateContainerCmd withAttachStdin(Boolean attachStdin) {
- checkNotNull(attachStdin, "attachStdin was not specified");
+ Objects.requireNonNull(attachStdin, "attachStdin was not specified");
this.attachStdin = attachStdin;
return this;
}
@@ -424,7 +424,7 @@ public Boolean isAttachStdout() {
@Override
public CreateContainerCmd withAttachStdout(Boolean attachStdout) {
- checkNotNull(attachStdout, "attachStdout was not specified");
+ Objects.requireNonNull(attachStdout, "attachStdout was not specified");
this.attachStdout = attachStdout;
return this;
}
@@ -436,14 +436,14 @@ public Volume[] getVolumes() {
@Override
public CreateContainerCmd withVolumes(Volume... volumes) {
- checkNotNull(volumes, "volumes was not specified");
+ Objects.requireNonNull(volumes, "volumes was not specified");
this.volumes = new Volumes(volumes);
return this;
}
@Override
public CreateContainerCmd withVolumes(List volumes) {
- checkNotNull(volumes, "volumes was not specified");
+ Objects.requireNonNull(volumes, "volumes was not specified");
return withVolumes(volumes.toArray(new Volume[0]));
}
@@ -454,7 +454,7 @@ public String getWorkingDir() {
@Override
public CreateContainerCmd withWorkingDir(String workingDir) {
- checkNotNull(workingDir, "workingDir was not specified");
+ Objects.requireNonNull(workingDir, "workingDir was not specified");
this.workingDir = workingDir;
return this;
}
@@ -466,7 +466,7 @@ public Boolean isNetworkDisabled() {
@Override
public CreateContainerCmd withNetworkDisabled(Boolean disableNetwork) {
- checkNotNull(disableNetwork, "disableNetwork was not specified");
+ Objects.requireNonNull(disableNetwork, "disableNetwork was not specified");
this.networkDisabled = disableNetwork;
return this;
}
@@ -479,7 +479,7 @@ public Boolean isStdInOnce() {
@Override
public CreateContainerCmd withStdInOnce(Boolean stdInOnce) {
- checkNotNull(stdInOnce, "no stdInOnce was specified");
+ Objects.requireNonNull(stdInOnce, "no stdInOnce was specified");
this.stdInOnce = stdInOnce;
return this;
}
@@ -491,7 +491,7 @@ public Boolean isStdinOpen() {
@Override
public CreateContainerCmd withStdinOpen(Boolean stdinOpen) {
- checkNotNull(stdinOpen, "no stdinOpen was specified");
+ Objects.requireNonNull(stdinOpen, "no stdinOpen was specified");
this.stdinOpen = stdinOpen;
return this;
}
@@ -504,7 +504,7 @@ public Boolean isTty() {
@Override
public CreateContainerCmd withTty(Boolean tty) {
- checkNotNull(tty, "no tty was specified");
+ Objects.requireNonNull(tty, "no tty was specified");
this.tty = tty;
return this;
}
@@ -527,7 +527,7 @@ public String getIpv4Address() {
@Override
public CreateContainerCmd withIpv4Address(String ipv4Address) {
- checkNotNull(ipv4Address, "no ipv4Address was specified");
+ Objects.requireNonNull(ipv4Address, "no ipv4Address was specified");
this.ipv4Address = ipv4Address;
return this;
}
@@ -539,7 +539,7 @@ public String getIpv6Address() {
@Override
public CreateContainerCmd withIpv6Address(String ipv6Address) {
- checkNotNull(ipv6Address, "no ipv6Address was specified");
+ Objects.requireNonNull(ipv6Address, "no ipv6Address was specified");
this.ipv6Address = ipv6Address;
return this;
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/CreateImageCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/CreateImageCmdImpl.java
index 9ecf844306..cab9607d04 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/CreateImageCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/CreateImageCmdImpl.java
@@ -1,8 +1,7 @@
package com.github.dockerjava.core.command;
-import static com.google.common.base.Preconditions.checkNotNull;
-
import java.io.InputStream;
+import java.util.Objects;
import com.github.dockerjava.api.command.CreateImageCmd;
import com.github.dockerjava.api.command.CreateImageResponse;
@@ -54,7 +53,7 @@ public InputStream getImageStream() {
*/
@Override
public CreateImageCmdImpl withRepository(String repository) {
- checkNotNull(repository, "repository was not specified");
+ Objects.requireNonNull(repository, "repository was not specified");
this.repository = repository;
return this;
}
@@ -65,7 +64,7 @@ public CreateImageCmdImpl withRepository(String repository) {
*/
@Override
public CreateImageCmdImpl withImageStream(InputStream imageStream) {
- checkNotNull(imageStream, "imageStream was not specified");
+ Objects.requireNonNull(imageStream, "imageStream was not specified");
this.imageStream = imageStream;
return this;
}
@@ -76,7 +75,7 @@ public CreateImageCmdImpl withImageStream(InputStream imageStream) {
*/
@Override
public CreateImageCmdImpl withTag(String tag) {
- checkNotNull(tag, "tag was not specified");
+ Objects.requireNonNull(tag, "tag was not specified");
this.tag = tag;
return this;
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/CreateNetworkCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/CreateNetworkCmdImpl.java
index e6cff4c094..db27667968 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/CreateNetworkCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/CreateNetworkCmdImpl.java
@@ -2,6 +2,7 @@
import java.util.HashMap;
import java.util.Map;
+import java.util.Objects;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.github.dockerjava.api.command.CreateNetworkCmd;
@@ -10,8 +11,6 @@
import com.github.dockerjava.api.model.Network;
import com.github.dockerjava.api.model.Network.Ipam;
-import static com.google.common.base.Preconditions.checkNotNull;
-
public class CreateNetworkCmdImpl extends AbstrDockerCmd
implements CreateNetworkCmd {
@@ -147,7 +146,7 @@ public Map getLabels() {
*/
@Override
public CreateNetworkCmd withLabels(Map labels) {
- checkNotNull(labels, "labels was not specified");
+ Objects.requireNonNull(labels, "labels was not specified");
this.labels = labels;
return this;
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/CreateSecretCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/CreateSecretCmdImpl.java
index d86b048550..19891325a4 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/CreateSecretCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/CreateSecretCmdImpl.java
@@ -4,7 +4,7 @@
import com.github.dockerjava.api.command.CreateSecretResponse;
import com.github.dockerjava.api.model.SecretSpec;
-import static com.google.common.base.Preconditions.checkNotNull;
+import java.util.Objects;
/**
* Creates a new secret
@@ -16,7 +16,7 @@ public class CreateSecretCmdImpl extends AbstrDockerCmd getDriverOpts() {
@Override
public CreateVolumeCmdImpl withName(String name) {
- checkNotNull(name, "name was not specified");
+ Objects.requireNonNull(name, "name was not specified");
this.name = name;
return this;
}
@Override
public CreateVolumeCmdImpl withLabels(Map labels) {
- checkNotNull(labels, "labels was not specified");
+ Objects.requireNonNull(labels, "labels was not specified");
this.labels = labels;
return this;
}
@Override
public CreateVolumeCmdImpl withDriver(String driver) {
- checkNotNull(driver, "driver was not specified");
+ Objects.requireNonNull(driver, "driver was not specified");
this.driver = driver;
return this;
}
@Override
public CreateVolumeCmd withDriverOpts(Map driverOpts) {
- checkNotNull(driverOpts, "driverOpts was not specified");
+ Objects.requireNonNull(driverOpts, "driverOpts was not specified");
this.driverOpts = driverOpts;
return this;
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/EventsCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/EventsCmdImpl.java
index d6cca6899a..f578b3a194 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/EventsCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/EventsCmdImpl.java
@@ -1,9 +1,8 @@
package com.github.dockerjava.core.command;
-import static com.google.common.base.Preconditions.checkNotNull;
-
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import com.github.dockerjava.api.command.EventsCmd;
import com.github.dockerjava.api.model.Event;
@@ -38,42 +37,42 @@ public EventsCmd withUntil(String until) {
@Override
public EventsCmd withContainerFilter(String... container) {
- checkNotNull(container, "container have not been specified");
+ Objects.requireNonNull(container, "container have not been specified");
this.filters.withContainers(container);
return this;
}
@Override
public EventsCmd withImageFilter(String... image) {
- checkNotNull(image, "image have not been specified");
+ Objects.requireNonNull(image, "image have not been specified");
this.filters.withImages(image);
return this;
}
@Override
public EventsCmd withEventFilter(String... event) {
- checkNotNull(event, "event have not been specified");
+ Objects.requireNonNull(event, "event have not been specified");
this.filters.withFilter("event", event);
return this;
}
@Override
public EventsCmd withEventTypeFilter(String... eventTypes) {
- checkNotNull(eventTypes, "event types have not been specified");
+ Objects.requireNonNull(eventTypes, "event types have not been specified");
this.filters.withEventTypes(eventTypes);
return this;
}
@Override
public EventsCmd withLabelFilter(String... label) {
- checkNotNull(label, "label have not been specified");
+ Objects.requireNonNull(label, "label have not been specified");
this.filters.withLabels(label);
return this;
}
@Override
public EventsCmd withLabelFilter(Map labels) {
- checkNotNull(labels, "labels have not been specified");
+ Objects.requireNonNull(labels, "labels have not been specified");
this.filters.withLabels(labels);
return this;
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/ExecCreateCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/ExecCreateCmdImpl.java
index dc410f78bf..8ea6e275fe 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/ExecCreateCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/ExecCreateCmdImpl.java
@@ -1,8 +1,7 @@
package com.github.dockerjava.core.command;
-import static com.google.common.base.Preconditions.checkNotNull;
-
import java.util.List;
+import java.util.Objects;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.github.dockerjava.api.command.ExecCreateCmd;
@@ -59,8 +58,7 @@ public ExecCreateCmdImpl(ExecCreateCmd.Exec exec, String containerId) {
@Override
public ExecCreateCmd withContainerId(String containerId) {
- checkNotNull(containerId, "containerId was not specified");
- this.containerId = containerId;
+ this.containerId = Objects.requireNonNull(containerId, "containerId was not specified");
return this;
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/ExecStartCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/ExecStartCmdImpl.java
index 9ab3bfb8ea..d5990ef80a 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/ExecStartCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/ExecStartCmdImpl.java
@@ -1,8 +1,7 @@
package com.github.dockerjava.core.command;
-import static com.google.common.base.Preconditions.checkNotNull;
-
import java.io.InputStream;
+import java.util.Objects;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
@@ -37,8 +36,7 @@ public String getExecId() {
@Override
public ExecStartCmd withExecId(String execId) {
- checkNotNull(execId, "execId was not specified");
- this.execId = execId;
+ this.execId = Objects.requireNonNull(execId, "execId was not specified");
return this;
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/InspectConfigCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/InspectConfigCmdImpl.java
index 0fdef4a715..eff4170cb7 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/InspectConfigCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/InspectConfigCmdImpl.java
@@ -1,11 +1,11 @@
package com.github.dockerjava.core.command;
+import java.util.Objects;
+
import com.github.dockerjava.api.command.InspectConfigCmd;
import com.github.dockerjava.api.exception.NotFoundException;
import com.github.dockerjava.api.model.Config;
-import static com.google.common.base.Preconditions.checkNotNull;
-
/**
* Inspect the details of a config.
*/
@@ -25,8 +25,7 @@ public String getConfigId() {
@Override
public InspectConfigCmd withConfigId(String configId) {
- checkNotNull(configId, "configId was not specified");
- this.configId = configId;
+ this.configId = Objects.requireNonNull(configId, "configId was not specified");
return this;
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/InspectContainerCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/InspectContainerCmdImpl.java
index ed3c01b00e..ab8c2989a8 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/InspectContainerCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/InspectContainerCmdImpl.java
@@ -1,6 +1,6 @@
package com.github.dockerjava.core.command;
-import static com.google.common.base.Preconditions.checkNotNull;
+import java.util.Objects;
import com.github.dockerjava.api.command.InspectContainerCmd;
import com.github.dockerjava.api.command.InspectContainerResponse;
@@ -27,8 +27,7 @@ public String getContainerId() {
@Override
public InspectContainerCmd withContainerId(String containerId) {
- checkNotNull(containerId, "containerId was not specified");
- this.containerId = containerId;
+ this.containerId = Objects.requireNonNull(containerId, "containerId was not specified");
return this;
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/InspectExecCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/InspectExecCmdImpl.java
index 22d6d70f43..36ad73e282 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/InspectExecCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/InspectExecCmdImpl.java
@@ -1,9 +1,10 @@
package com.github.dockerjava.core.command;
+import java.util.Objects;
+
import com.github.dockerjava.api.command.InspectExecCmd;
import com.github.dockerjava.api.command.InspectExecResponse;
import com.github.dockerjava.api.exception.NotFoundException;
-import com.google.common.base.Preconditions;
public class InspectExecCmdImpl extends AbstrDockerCmd implements InspectExecCmd {
private String execId;
@@ -20,8 +21,7 @@ public String getExecId() {
@Override
public InspectExecCmd withExecId(String execId) {
- Preconditions.checkNotNull(execId, "execId was not specified");
- this.execId = execId;
+ this.execId = Objects.requireNonNull(execId, "execId was not specified");
return this;
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/InspectImageCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/InspectImageCmdImpl.java
index 48dd30757e..5ffa7c5d7a 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/InspectImageCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/InspectImageCmdImpl.java
@@ -1,6 +1,6 @@
package com.github.dockerjava.core.command;
-import static com.google.common.base.Preconditions.checkNotNull;
+import java.util.Objects;
import com.github.dockerjava.api.command.InspectImageCmd;
import com.github.dockerjava.api.command.InspectImageResponse;
@@ -26,8 +26,7 @@ public String getImageId() {
@Override
public InspectImageCmd withImageId(String imageId) {
- checkNotNull(imageId, "imageId was not specified");
- this.imageId = imageId;
+ this.imageId = Objects.requireNonNull(imageId, "imageId was not specified");
return this;
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/InspectServiceCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/InspectServiceCmdImpl.java
index 5b7dcd8950..804710ce1a 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/InspectServiceCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/InspectServiceCmdImpl.java
@@ -1,11 +1,11 @@
package com.github.dockerjava.core.command;
+import java.util.Objects;
+
import com.github.dockerjava.api.command.InspectServiceCmd;
import com.github.dockerjava.api.exception.NotFoundException;
import com.github.dockerjava.api.model.Service;
-import static com.google.common.base.Preconditions.checkNotNull;
-
/**
* Inspect the details of a container.
*/
@@ -26,8 +26,7 @@ public String getServiceId() {
@Override
public InspectServiceCmd withServiceId(String serviceId) {
- checkNotNull(serviceId, "serviceId was not specified");
- this.serviceId = serviceId;
+ this.serviceId = Objects.requireNonNull(serviceId, "serviceId was not specified");
return this;
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/InspectSwarmNodeCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/InspectSwarmNodeCmdImpl.java
index bf5e5164fb..9289878d11 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/InspectSwarmNodeCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/InspectSwarmNodeCmdImpl.java
@@ -6,7 +6,7 @@
import javax.annotation.CheckForNull;
-import static com.google.common.base.Preconditions.checkNotNull;
+import java.util.Objects;
/**
* Inspect the details of a swarmNode.
@@ -29,8 +29,7 @@ public String getSwarmNodeId() {
@Override
public InspectSwarmNodeCmd withSwarmNodeId(String swarmNodeId) {
- checkNotNull(swarmNodeId, "swarmNodeId was not specified");
- this.swarmNodeId = swarmNodeId;
+ this.swarmNodeId = Objects.requireNonNull(swarmNodeId, "swarmNodeId was not specified");
return this;
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/InspectVolumeCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/InspectVolumeCmdImpl.java
index c789d91c95..5b76310dbe 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/InspectVolumeCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/InspectVolumeCmdImpl.java
@@ -1,6 +1,6 @@
package com.github.dockerjava.core.command;
-import static com.google.common.base.Preconditions.checkNotNull;
+import java.util.Objects;
import com.github.dockerjava.api.command.InspectVolumeCmd;
import com.github.dockerjava.api.command.InspectVolumeResponse;
@@ -26,8 +26,7 @@ public String getName() {
@Override
public InspectVolumeCmd withName(String name) {
- checkNotNull(name, "name was not specified");
- this.name = name;
+ this.name = Objects.requireNonNull(name, "name was not specified");
return this;
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/KillContainerCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/KillContainerCmdImpl.java
index a23d0caa53..bc72078294 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/KillContainerCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/KillContainerCmdImpl.java
@@ -1,6 +1,6 @@
package com.github.dockerjava.core.command;
-import static com.google.common.base.Preconditions.checkNotNull;
+import java.util.Objects;
import com.github.dockerjava.api.command.KillContainerCmd;
import com.github.dockerjava.api.exception.NotFoundException;
@@ -29,15 +29,13 @@ public String getSignal() {
@Override
public KillContainerCmd withContainerId(String containerId) {
- checkNotNull(containerId, "containerId was not specified");
- this.containerId = containerId;
+ this.containerId = Objects.requireNonNull(containerId, "containerId was not specified");
return this;
}
@Override
public KillContainerCmd withSignal(String signal) {
- checkNotNull(signal, "signal was not specified");
- this.signal = signal;
+ this.signal = Objects.requireNonNull(signal, "signal was not specified");
return this;
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/ListConfigsCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/ListConfigsCmdImpl.java
index 9cd48e9a76..f67dd30b88 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/ListConfigsCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/ListConfigsCmdImpl.java
@@ -6,8 +6,7 @@
import java.util.Collections;
import java.util.List;
import java.util.Map;
-
-import static com.google.common.base.Preconditions.checkNotNull;
+import java.util.Objects;
/**
* List configs.
@@ -26,8 +25,7 @@ public Map> getFilters() {
}
public ListConfigsCmd withFilters(Map> filters) {
- checkNotNull(filters, "filters was not specified");
- this.filters = filters;
+ this.filters = Objects.requireNonNull(filters, "filters was not specified");
return this;
}
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/ListContainersCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/ListContainersCmdImpl.java
index 0d0323a65e..94de5daff7 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/ListContainersCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/ListContainersCmdImpl.java
@@ -7,9 +7,9 @@
import java.util.Collection;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import static com.google.common.base.Preconditions.checkArgument;
-import static com.google.common.base.Preconditions.checkNotNull;
/**
* List containers.
@@ -73,7 +73,7 @@ public ListContainersCmd withShowSize(Boolean showSize) {
@Override
public ListContainersCmd withLimit(Integer limit) {
- checkNotNull(limit, "limit was not specified");
+ Objects.requireNonNull(limit, "limit was not specified");
checkArgument(limit > 0, "limit must be greater 0");
this.limit = limit;
return this;
@@ -81,15 +81,13 @@ public ListContainersCmd withLimit(Integer limit) {
@Override
public ListContainersCmd withSince(String since) {
- checkNotNull(since, "since was not specified");
- this.sinceId = since;
+ this.sinceId = Objects.requireNonNull(since, "since was not specified");
return this;
}
@Override
public ListContainersCmd withBefore(String before) {
- checkNotNull(before, "before was not specified");
- this.beforeId = before;
+ this.beforeId = Objects.requireNonNull(before, "before was not specified");
return this;
}
@@ -125,28 +123,28 @@ public ListContainersCmd withLabelFilter(Collection labels) {
@Override
public ListContainersCmd withLabelFilter(Map labels) {
- checkNotNull(labels, "labels was not specified");
+ Objects.requireNonNull(labels, "labels was not specified");
this.filters.withLabels(labels);
return this;
}
@Override
public ListContainersCmd withExitedFilter(Integer exited) {
- checkNotNull(exited, "exited was not specified");
+ Objects.requireNonNull(exited, "exited was not specified");
this.filters.withFilter("exited", exited.toString());
return this;
}
@Override
public ListContainersCmd withFilter(String filterName, Collection filterValues) {
- checkNotNull(filterValues, filterName + " was not specified");
+ Objects.requireNonNull(filterValues, filterName + " was not specified");
this.filters.withFilter(filterName, filterValues);
return this;
}
@Override
public ListContainersCmd withStatusFilter(Collection status) {
- checkNotNull(status, "status was not specified");
+ Objects.requireNonNull(status, "status was not specified");
this.filters.withFilter("status", status);
return this;
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/ListImagesCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/ListImagesCmdImpl.java
index b4fb1e0d9e..40d378c8c7 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/ListImagesCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/ListImagesCmdImpl.java
@@ -1,11 +1,10 @@
package com.github.dockerjava.core.command;
-import static com.google.common.base.Preconditions.checkNotNull;
-
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
@@ -47,43 +46,43 @@ public ListImagesCmd withShowAll(Boolean showAll) {
@Override
public ListImagesCmd withDanglingFilter(Boolean dangling) {
- checkNotNull(dangling, "dangling have not been specified");
+ Objects.requireNonNull(dangling, "dangling have not been specified");
withFilter("dangling", Collections.singletonList(dangling.toString()));
return this;
}
@Override
public ListImagesCmd withLabelFilter(String... labels) {
- checkNotNull(labels, "labels have not been specified");
+ Objects.requireNonNull(labels, "labels have not been specified");
filters.withLabels(labels);
return this;
}
@Override
public ListImagesCmd withLabelFilter(Map labels) {
- checkNotNull(labels, "labels have not been specified");
+ Objects.requireNonNull(labels, "labels have not been specified");
filters.withLabels(labels);
return this;
}
@Override
public ListImagesCmd withImageNameFilter(String imageNameFilter) {
- checkNotNull(imageNameFilter, "image name filter not specified");
+ Objects.requireNonNull(imageNameFilter, "image name filter not specified");
this.imageNameFilter = imageNameFilter;
return this;
}
@Override
public ListImagesCmd withReferenceFilter(String reference) {
- checkNotNull(reference, "reference filter not specified");
+ Objects.requireNonNull(reference, "reference filter not specified");
withFilter("reference", Collections.singletonList(reference));
return this;
}
@Override
public ListImagesCmd withFilter(String key, Collection values) {
- checkNotNull(key, "key not specified");
- checkNotNull(values, "values not specified");
+ Objects.requireNonNull(key, "key not specified");
+ Objects.requireNonNull(values, "values not specified");
filters.withFilter(key, values);
return this;
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/ListNetworksCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/ListNetworksCmdImpl.java
index 65c13e255a..b3be94b8e6 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/ListNetworksCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/ListNetworksCmdImpl.java
@@ -7,8 +7,7 @@
import java.util.Collection;
import java.util.List;
import java.util.Map;
-
-import static com.google.common.base.Preconditions.checkNotNull;
+import java.util.Objects;
public class ListNetworksCmdImpl extends AbstrDockerCmd> implements ListNetworksCmd {
@@ -37,7 +36,7 @@ public ListNetworksCmd withNameFilter(String... networkName) {
@Override
public ListNetworksCmd withFilter(String filterName, Collection filterValues) {
- checkNotNull(filterValues, filterName + " was not specified");
+ Objects.requireNonNull(filterValues, filterName + " was not specified");
this.filtersBuilder.withFilter(filterName, filterValues);
return this;
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/ListSecretsCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/ListSecretsCmdImpl.java
index 5c11a7a19f..bed3f9e514 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/ListSecretsCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/ListSecretsCmdImpl.java
@@ -6,8 +6,7 @@
import java.util.List;
import java.util.Map;
-
-import static com.google.common.base.Preconditions.checkNotNull;
+import java.util.Objects;
/**
* List services.
@@ -28,21 +27,21 @@ public Map> getFilters() {
@Override
public ListSecretsCmd withIdFilter(List ids) {
- checkNotNull(ids, "ids was not specified");
+ Objects.requireNonNull(ids, "ids was not specified");
this.filters.withFilter("id", ids);
return this;
}
@Override
public ListSecretsCmd withNameFilter(List names) {
- checkNotNull(names, "names was not specified");
+ Objects.requireNonNull(names, "names was not specified");
this.filters.withFilter("name", names);
return this;
}
@Override
public ListSecretsCmd withLabelFilter(Map labels) {
- checkNotNull(labels, "labels was not specified");
+ Objects.requireNonNull(labels, "labels was not specified");
this.filters.withLabels(labels);
return this;
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/ListServicesCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/ListServicesCmdImpl.java
index c68a0f6d71..1245d14b34 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/ListServicesCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/ListServicesCmdImpl.java
@@ -6,8 +6,7 @@
import java.util.List;
import java.util.Map;
-
-import static com.google.common.base.Preconditions.checkNotNull;
+import java.util.Objects;
/**
* List services.
@@ -28,21 +27,21 @@ public Map> getFilters() {
@Override
public ListServicesCmd withIdFilter(List ids) {
- checkNotNull(ids, "ids was not specified");
+ Objects.requireNonNull(ids, "ids was not specified");
this.filters.withFilter("id", ids);
return this;
}
@Override
public ListServicesCmd withNameFilter(List names) {
- checkNotNull(names, "names was not specified");
+ Objects.requireNonNull(names, "names was not specified");
this.filters.withFilter("name", names);
return this;
}
@Override
public ListServicesCmd withLabelFilter(Map labels) {
- checkNotNull(labels, "labels was not specified");
+ Objects.requireNonNull(labels, "labels was not specified");
this.filters.withLabels(labels);
return this;
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/ListSwarmNodesCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/ListSwarmNodesCmdImpl.java
index 88a06ae043..a35751627d 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/ListSwarmNodesCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/ListSwarmNodesCmdImpl.java
@@ -7,8 +7,7 @@
import java.util.List;
import java.util.Map;
-
-import static com.google.common.base.Preconditions.checkNotNull;
+import java.util.Objects;
/**
* List SwarmNodes
@@ -29,28 +28,28 @@ public Map> getFilters() {
@Override
public ListSwarmNodesCmd withIdFilter(List ids) {
- checkNotNull(ids, "ids was not specified");
+ Objects.requireNonNull(ids, "ids was not specified");
this.filters.withIds(ids);
return this;
}
@Override
public ListSwarmNodesCmd withNameFilter(List names) {
- checkNotNull(names, "names was not specified");
+ Objects.requireNonNull(names, "names was not specified");
this.filters.withNames(names);
return this;
}
@Override
public ListSwarmNodesCmd withMembershipFilter(List memberships) {
- checkNotNull(memberships, "memberships was not specified");
+ Objects.requireNonNull(memberships, "memberships was not specified");
this.filters.withMemberships(memberships);
return this;
}
@Override
public ListSwarmNodesCmd withRoleFilter(List roles) {
- checkNotNull(roles, "roles was not specified");
+ Objects.requireNonNull(roles, "roles was not specified");
this.filters.withRoles(roles);
return this;
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/ListVolumesCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/ListVolumesCmdImpl.java
index b3a18d7764..78d39c2c78 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/ListVolumesCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/ListVolumesCmdImpl.java
@@ -1,10 +1,9 @@
package com.github.dockerjava.core.command;
-import static com.google.common.base.Preconditions.checkNotNull;
-
import java.util.Collection;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import com.github.dockerjava.api.command.ListVolumesCmd;
import com.github.dockerjava.api.command.ListVolumesResponse;
@@ -30,14 +29,14 @@ public Map> getFilters() {
@Override
public ListVolumesCmd withDanglingFilter(Boolean dangling) {
- checkNotNull(dangling, "dangling have not been specified");
+ Objects.requireNonNull(dangling, "dangling have not been specified");
this.filters.withFilter("dangling", dangling.toString());
return this;
}
@Override
public ListVolumesCmd withFilter(String filterName, Collection filterValues) {
- checkNotNull(filterValues, filterName + " was not specified");
+ Objects.requireNonNull(filterValues, filterName + " was not specified");
this.filters.withFilter(filterName, filterValues);
return this;
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/LoadImageAsyncCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/LoadImageAsyncCmdImpl.java
index 92311b4bf8..3de1dfa4d4 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/LoadImageAsyncCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/LoadImageAsyncCmdImpl.java
@@ -5,8 +5,7 @@
import java.io.IOException;
import java.io.InputStream;
-
-import static com.google.common.base.Preconditions.checkNotNull;
+import java.util.Objects;
public class LoadImageAsyncCmdImpl extends AbstrAsyncDockerCmd implements LoadImageAsyncCmd {
@@ -24,7 +23,7 @@ public InputStream getImageStream() {
@Override
public LoadImageAsyncCmd withImageStream(InputStream imageStream) {
- checkNotNull(imageStream, "imageStream was not specified");
+ Objects.requireNonNull(imageStream, "imageStream was not specified");
this.inputStream = imageStream;
return this;
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/LoadImageCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/LoadImageCmdImpl.java
index 496ea31768..0b8cbea94b 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/LoadImageCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/LoadImageCmdImpl.java
@@ -1,8 +1,7 @@
package com.github.dockerjava.core.command;
-import static com.google.common.base.Preconditions.checkNotNull;
-
import java.io.InputStream;
+import java.util.Objects;
import com.github.dockerjava.api.command.LoadImageCmd;
@@ -32,8 +31,7 @@ public InputStream getImageStream() {
*/
@Override
public LoadImageCmdImpl withImageStream(@Nonnull InputStream imageStream) {
- checkNotNull(imageStream, "imageStream was not specified");
- this.imageStream = imageStream;
+ this.imageStream = Objects.requireNonNull(imageStream, "imageStream was not specified");
return this;
}
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/LogContainerCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/LogContainerCmdImpl.java
index d820ab1b9a..65321a318f 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/LogContainerCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/LogContainerCmdImpl.java
@@ -1,6 +1,6 @@
package com.github.dockerjava.core.command;
-import static com.google.common.base.Preconditions.checkNotNull;
+import java.util.Objects;
import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
@@ -82,8 +82,7 @@ public Integer getUntil() {
@Override
public LogContainerCmd withContainerId(String containerId) {
- checkNotNull(containerId, "containerId was not specified");
- this.containerId = containerId;
+ this.containerId = Objects.requireNonNull(containerId, "containerId was not specified");
return this;
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/PauseContainerCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/PauseContainerCmdImpl.java
index a8caf3091c..f646e8cedf 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/PauseContainerCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/PauseContainerCmdImpl.java
@@ -1,6 +1,6 @@
package com.github.dockerjava.core.command;
-import static com.google.common.base.Preconditions.checkNotNull;
+import java.util.Objects;
import com.github.dockerjava.api.command.PauseContainerCmd;
import com.github.dockerjava.api.exception.NotFoundException;
@@ -28,8 +28,7 @@ public String getContainerId() {
@Override
public PauseContainerCmd withContainerId(String containerId) {
- checkNotNull(containerId, "containerId was not specified");
- this.containerId = containerId;
+ this.containerId = Objects.requireNonNull(containerId, "containerId was not specified");
return this;
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/PruneCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/PruneCmdImpl.java
index a191099ed9..e08f64b02e 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/PruneCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/PruneCmdImpl.java
@@ -9,8 +9,7 @@
import javax.annotation.Nonnull;
import java.util.List;
import java.util.Map;
-
-import static com.google.common.base.Preconditions.checkNotNull;
+import java.util.Objects;
/**
* Delete unused content (containers, images, volumes, networks, build relicts)
@@ -69,28 +68,28 @@ public Map> getFilters() {
@Override
public PruneCmd withPruneType(final PruneType pruneType) {
- checkNotNull(pruneType, "pruneType has not been specified");
+ Objects.requireNonNull(pruneType, "pruneType has not been specified");
this.pruneType = pruneType;
return this;
}
@Override
public PruneCmd withDangling(Boolean dangling) {
- checkNotNull(dangling, "dangling has not been specified");
+ Objects.requireNonNull(dangling, "dangling has not been specified");
filters.withFilter("dangling", dangling ? "1" : "0");
return this;
}
@Override
public PruneCmd withUntilFilter(final String until) {
- checkNotNull(until, "until has not been specified");
+ Objects.requireNonNull(until, "until has not been specified");
filters.withUntil(until);
return this;
}
@Override
public PruneCmd withLabelFilter(final String... labels) {
- checkNotNull(labels, "labels have not been specified");
+ Objects.requireNonNull(labels, "labels have not been specified");
filters.withLabels(labels);
return this;
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/PullImageCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/PullImageCmdImpl.java
index a3395c21be..7f70ac3b73 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/PullImageCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/PullImageCmdImpl.java
@@ -1,11 +1,11 @@
package com.github.dockerjava.core.command;
+import java.util.Objects;
+
import com.github.dockerjava.api.command.PullImageCmd;
import com.github.dockerjava.api.model.AuthConfig;
import com.github.dockerjava.api.model.PullResponseItem;
-import static com.google.common.base.Preconditions.checkNotNull;
-
/**
*
* Pull image from repository.
@@ -54,15 +54,13 @@ public String getRegistry() {
@Override
public PullImageCmd withRepository(String repository) {
- checkNotNull(repository, "repository was not specified");
- this.repository = repository;
+ this.repository = Objects.requireNonNull(repository, "repository was not specified");
return this;
}
@Override
public PullImageCmd withTag(String tag) {
- checkNotNull(tag, "tag was not specified");
- this.tag = tag;
+ this.tag = Objects.requireNonNull(tag, "tag was not specified");
return this;
}
@@ -74,8 +72,7 @@ public PullImageCmd withPlatform(String platform) {
@Override
public PullImageCmd withRegistry(String registry) {
- checkNotNull(registry, "registry was not specified");
- this.registry = registry;
+ this.registry = Objects.requireNonNull(registry, "registry was not specified");
return this;
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/PushImageCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/PushImageCmdImpl.java
index b3026c8418..8e1fa5cecc 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/PushImageCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/PushImageCmdImpl.java
@@ -1,6 +1,6 @@
package com.github.dockerjava.core.command;
-import static com.google.common.base.Preconditions.checkNotNull;
+import java.util.Objects;
import com.github.dockerjava.api.command.PushImageCmd;
import com.github.dockerjava.api.model.AuthConfig;
@@ -42,8 +42,7 @@ public String getTag() {
*/
@Override
public PushImageCmd withName(String name) {
- checkNotNull(name, "name was not specified");
- this.name = name;
+ this.name = Objects.requireNonNull(name, "name was not specified");
return this;
}
@@ -53,8 +52,7 @@ public PushImageCmd withName(String name) {
*/
@Override
public PushImageCmd withTag(String tag) {
- checkNotNull(tag, "tag was not specified");
- this.tag = tag;
+ this.tag = Objects.requireNonNull(tag, "tag was not specified");
return this;
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/RemoveConfigCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/RemoveConfigCmdImpl.java
index 32203cfe28..e2e7d06fdb 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/RemoveConfigCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/RemoveConfigCmdImpl.java
@@ -1,10 +1,10 @@
package com.github.dockerjava.core.command;
+import java.util.Objects;
+
import com.github.dockerjava.api.command.RemoveConfigCmd;
import com.github.dockerjava.api.exception.NotFoundException;
-import static com.google.common.base.Preconditions.checkNotNull;
-
/**
* Remove a config.
*/
@@ -24,8 +24,7 @@ public String getConfigId() {
@Override
public RemoveConfigCmd withConfigId(String configId) {
- checkNotNull(configId, "configId was not specified");
- this.configId = configId;
+ this.configId = Objects.requireNonNull(configId, "configId was not specified");
return this;
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/RemoveContainerCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/RemoveContainerCmdImpl.java
index 0fc2ab6262..cd8f4a9f32 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/RemoveContainerCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/RemoveContainerCmdImpl.java
@@ -1,6 +1,6 @@
package com.github.dockerjava.core.command;
-import static com.google.common.base.Preconditions.checkNotNull;
+import java.util.Objects;
import com.github.dockerjava.api.command.RemoveContainerCmd;
import com.github.dockerjava.api.exception.NotFoundException;
@@ -41,8 +41,7 @@ public Boolean hasForceEnabled() {
@Override
public RemoveContainerCmd withContainerId(String containerId) {
- checkNotNull(containerId, "containerId was not specified");
- this.containerId = containerId;
+ this.containerId = Objects.requireNonNull(containerId, "containerId was not specified");
return this;
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/RemoveImageCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/RemoveImageCmdImpl.java
index 038a27f2df..a77357b592 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/RemoveImageCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/RemoveImageCmdImpl.java
@@ -1,6 +1,6 @@
package com.github.dockerjava.core.command;
-import static com.google.common.base.Preconditions.checkNotNull;
+import java.util.Objects;
import com.github.dockerjava.api.command.RemoveImageCmd;
import com.github.dockerjava.api.exception.NotFoundException;
@@ -38,8 +38,7 @@ public Boolean hasNoPruneEnabled() {
@Override
public RemoveImageCmd withImageId(String imageId) {
- checkNotNull(imageId, "imageId was not specified");
- this.imageId = imageId;
+ this.imageId = Objects.requireNonNull(imageId, "imageId was not specified");
return this;
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/RemoveSecretCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/RemoveSecretCmdImpl.java
index 6841d79bdf..5c8d0e0751 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/RemoveSecretCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/RemoveSecretCmdImpl.java
@@ -3,7 +3,7 @@
import com.github.dockerjava.api.command.RemoveSecretCmd;
import com.github.dockerjava.api.exception.NotFoundException;
-import static com.google.common.base.Preconditions.checkNotNull;
+import java.util.Objects;
/**
* Remove a secret.
@@ -24,8 +24,7 @@ public String getSecretId() {
@Override
public RemoveSecretCmd withSecretId(String secretId) {
- checkNotNull(secretId, "secretId was not specified");
- this.secretId = secretId;
+ this.secretId = Objects.requireNonNull(secretId, "secretId was not specified");
return this;
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/RemoveServiceCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/RemoveServiceCmdImpl.java
index 9da85847a4..6fed721c70 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/RemoveServiceCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/RemoveServiceCmdImpl.java
@@ -3,7 +3,7 @@
import com.github.dockerjava.api.command.RemoveServiceCmd;
import com.github.dockerjava.api.exception.NotFoundException;
-import static com.google.common.base.Preconditions.checkNotNull;
+import java.util.Objects;
/**
* Remove a service.
@@ -24,8 +24,7 @@ public String getServiceId() {
@Override
public RemoveServiceCmd withServiceId(String serviceId) {
- checkNotNull(serviceId, "serviceId was not specified");
- this.serviceId = serviceId;
+ this.serviceId = Objects.requireNonNull(serviceId, "serviceId was not specified");
return this;
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/RemoveSwarmNodeCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/RemoveSwarmNodeCmdImpl.java
index e3efea9380..ef8a869434 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/RemoveSwarmNodeCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/RemoveSwarmNodeCmdImpl.java
@@ -3,11 +3,11 @@
import com.github.dockerjava.api.command.RemoveSwarmNodeCmd;
import com.github.dockerjava.api.exception.NotFoundException;
+import java.util.Objects;
+
import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;
-import static com.google.common.base.Preconditions.checkNotNull;
-
/**
* Remove a container.
*/
@@ -36,8 +36,7 @@ public Boolean hasForceEnabled() {
@Override
public RemoveSwarmNodeCmd withSwarmNodeId(@Nonnull String swarmNodeId) {
- checkNotNull(swarmNodeId, "swarmNodeId was not specified");
- this.swarmNodeId = swarmNodeId;
+ this.swarmNodeId = Objects.requireNonNull(swarmNodeId, "swarmNodeId was not specified");
return this;
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/RemoveVolumeCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/RemoveVolumeCmdImpl.java
index ee294a1304..c62316842a 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/RemoveVolumeCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/RemoveVolumeCmdImpl.java
@@ -1,6 +1,6 @@
package com.github.dockerjava.core.command;
-import static com.google.common.base.Preconditions.checkNotNull;
+import java.util.Objects;
import com.github.dockerjava.api.command.RemoveVolumeCmd;
import com.github.dockerjava.api.exception.NotFoundException;
@@ -26,8 +26,7 @@ public String getName() {
@Override
public RemoveVolumeCmd withName(String name) {
- checkNotNull(name, "name was not specified");
- this.name = name;
+ this.name = Objects.requireNonNull(name, "name was not specified");
return this;
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/RenameContainerCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/RenameContainerCmdImpl.java
index ebf3ebabfc..b146382f38 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/RenameContainerCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/RenameContainerCmdImpl.java
@@ -5,7 +5,7 @@
import javax.annotation.Nonnull;
-import static com.google.common.base.Preconditions.checkNotNull;
+import java.util.Objects;
public class RenameContainerCmdImpl extends AbstrDockerCmd implements RenameContainerCmd {
@@ -30,15 +30,13 @@ public String getName() {
@Override
public RenameContainerCmd withContainerId(@Nonnull String containerId) {
- checkNotNull(containerId, "containerId was not specified");
- this.containerId = containerId;
+ this.containerId = Objects.requireNonNull(containerId, "containerId was not specified");
return this;
}
@Override
public RenameContainerCmd withName(@Nonnull String name) {
- checkNotNull(name, "name was not specified");
- this.name = name;
+ this.name = Objects.requireNonNull(name, "name was not specified");
return this;
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/ResizeContainerCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/ResizeContainerCmdImpl.java
index de1b6ac207..188802a41f 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/ResizeContainerCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/ResizeContainerCmdImpl.java
@@ -3,7 +3,7 @@
import com.github.dockerjava.api.command.ResizeContainerCmd;
import com.github.dockerjava.api.exception.NotFoundException;
-import static com.google.common.base.Preconditions.checkNotNull;
+import java.util.Objects;
public class ResizeContainerCmdImpl extends AbstrDockerCmd implements ResizeContainerCmd {
@@ -35,8 +35,7 @@ public Integer getWidth() {
@Override
public ResizeContainerCmd withContainerId(String containerId) {
- checkNotNull(containerId, "containerId was not specified");
- this.containerId = containerId;
+ this.containerId = Objects.requireNonNull(containerId, "containerId was not specified");
return this;
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/ResizeExecCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/ResizeExecCmdImpl.java
index 80b1fef881..3aa02c7e93 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/ResizeExecCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/ResizeExecCmdImpl.java
@@ -1,10 +1,10 @@
package com.github.dockerjava.core.command;
+import java.util.Objects;
+
import com.github.dockerjava.api.command.ResizeExecCmd;
import com.github.dockerjava.api.exception.NotFoundException;
-import static com.google.common.base.Preconditions.checkNotNull;
-
public class ResizeExecCmdImpl extends AbstrDockerCmd implements ResizeExecCmd {
private String execId;
@@ -35,8 +35,7 @@ public Integer getWidth() {
@Override
public ResizeExecCmd withExecId(String execId) {
- checkNotNull(execId, "execId was not specified");
- this.execId = execId;
+ this.execId = Objects.requireNonNull(execId, "execId was not specified");
return this;
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/RestartContainerCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/RestartContainerCmdImpl.java
index 7d0bf413e7..03454d6a86 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/RestartContainerCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/RestartContainerCmdImpl.java
@@ -1,7 +1,8 @@
package com.github.dockerjava.core.command;
import static com.google.common.base.Preconditions.checkArgument;
-import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.util.Objects;
import com.github.dockerjava.api.command.RestartContainerCmd;
import com.github.dockerjava.api.exception.NotFoundException;
@@ -36,14 +37,14 @@ public Integer getTimeout() {
@Override
public RestartContainerCmd withContainerId(String containerId) {
- checkNotNull(containerId, "containerId was not specified");
+ Objects.requireNonNull(containerId, "containerId was not specified");
this.containerId = containerId;
return this;
}
@Override
public RestartContainerCmd withTimeout(Integer timeout) {
- checkNotNull(timeout, "timeout was not specified");
+ Objects.requireNonNull(timeout, "timeout was not specified");
checkArgument(timeout >= 0, "timeout must be greater or equal 0");
this.timeout = timeout;
return this;
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/SaveImageCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/SaveImageCmdImpl.java
index 333e32df70..0ec72bcc57 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/SaveImageCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/SaveImageCmdImpl.java
@@ -1,8 +1,7 @@
package com.github.dockerjava.core.command;
-import static com.google.common.base.Preconditions.checkNotNull;
-
import java.io.InputStream;
+import java.util.Objects;
import com.github.dockerjava.api.command.SaveImageCmd;
import com.github.dockerjava.api.exception.NotFoundException;
@@ -33,8 +32,7 @@ public String getTag() {
*/
@Override
public SaveImageCmd withName(String name) {
- checkNotNull(name, "name was not specified");
- this.name = name;
+ this.name = Objects.requireNonNull(name, "name was not specified");
return this;
}
@@ -44,8 +42,7 @@ public SaveImageCmd withName(String name) {
*/
@Override
public SaveImageCmd withTag(String tag) {
- checkNotNull(tag, "tag was not specified");
- this.tag = tag;
+ this.tag = Objects.requireNonNull(tag, "tag was not specified");
return this;
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/SaveImagesCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/SaveImagesCmdImpl.java
index 0563e16fec..43e11f6097 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/SaveImagesCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/SaveImagesCmdImpl.java
@@ -7,8 +7,7 @@
import javax.annotation.Nonnull;
import java.io.InputStream;
import java.util.List;
-
-import static com.google.common.base.Preconditions.checkNotNull;
+import java.util.Objects;
public class SaveImagesCmdImpl extends AbstrDockerCmd implements SaveImagesCmd {
@@ -17,10 +16,8 @@ private static class TaggedImageImpl implements TaggedImage {
private final String tag;
private TaggedImageImpl(String name, String tag) {
- checkNotNull(name, "image name was not specified");
- checkNotNull(tag, "image tag was not specified");
- this.name = name;
- this.tag = tag;
+ this.name = Objects.requireNonNull(name, "image name was not specified");
+ this.tag = Objects.requireNonNull(tag, "image tag was not specified");
}
@Override
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/SearchImagesCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/SearchImagesCmdImpl.java
index dab946b1c2..41b8cc844e 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/SearchImagesCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/SearchImagesCmdImpl.java
@@ -1,9 +1,9 @@
package com.github.dockerjava.core.command;
import static com.google.common.base.Preconditions.checkArgument;
-import static com.google.common.base.Preconditions.checkNotNull;
import java.util.List;
+import java.util.Objects;
import com.github.dockerjava.api.command.SearchImagesCmd;
import com.github.dockerjava.api.model.SearchItem;
@@ -37,8 +37,7 @@ public String getTerm() {
@Override
public SearchImagesCmd withTerm(String term) {
- checkNotNull(term, "term was not specified");
- this.term = term;
+ this.term = Objects.requireNonNull(term, "term was not specified");
return this;
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/StartContainerCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/StartContainerCmdImpl.java
index c159c920ee..2c0e2c2b82 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/StartContainerCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/StartContainerCmdImpl.java
@@ -1,6 +1,6 @@
package com.github.dockerjava.core.command;
-import static com.google.common.base.Preconditions.checkNotNull;
+import java.util.Objects;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.github.dockerjava.api.command.StartContainerCmd;
@@ -22,8 +22,7 @@ public StartContainerCmdImpl(StartContainerCmd.Exec exec, String containerId) {
@Override
public StartContainerCmd withContainerId(String containerId) {
- checkNotNull(containerId, "containerId was not specified");
- this.containerId = containerId;
+ this.containerId = Objects.requireNonNull(containerId, "containerId was not specified");
return this;
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/StatsCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/StatsCmdImpl.java
index e1cc86e687..3e24bd5afc 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/StatsCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/StatsCmdImpl.java
@@ -1,6 +1,6 @@
package com.github.dockerjava.core.command;
-import static com.google.common.base.Preconditions.checkNotNull;
+import java.util.Objects;
import com.github.dockerjava.api.command.StatsCmd;
import com.github.dockerjava.api.model.Statistics;
@@ -21,8 +21,7 @@ public StatsCmdImpl(StatsCmd.Exec exec, String containerId) {
@Override
public StatsCmd withContainerId(String containerId) {
- checkNotNull(containerId, "containerId was not specified");
- this.containerId = containerId;
+ this.containerId = Objects.requireNonNull(containerId, "containerId was not specified");
return this;
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/StopContainerCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/StopContainerCmdImpl.java
index 7b1e165f5f..2cf5e37ae1 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/StopContainerCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/StopContainerCmdImpl.java
@@ -1,7 +1,8 @@
package com.github.dockerjava.core.command;
import static com.google.common.base.Preconditions.checkArgument;
-import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.util.Objects;
import com.github.dockerjava.api.command.StopContainerCmd;
import com.github.dockerjava.api.exception.NotFoundException;
@@ -39,14 +40,13 @@ public Integer getTimeout() {
@Override
public StopContainerCmd withContainerId(String containerId) {
- checkNotNull(containerId, "containerId was not specified");
- this.containerId = containerId;
+ this.containerId = Objects.requireNonNull(containerId, "containerId was not specified");
return this;
}
@Override
public StopContainerCmd withTimeout(Integer timeout) {
- checkNotNull(timeout, "timeout was not specified");
+ Objects.requireNonNull(timeout, "timeout was not specified");
checkArgument(timeout >= 0, "timeout must be greater or equal 0");
this.timeout = timeout;
return this;
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/TagImageCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/TagImageCmdImpl.java
index c1337112d2..f7eebb8a43 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/TagImageCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/TagImageCmdImpl.java
@@ -1,6 +1,6 @@
package com.github.dockerjava.core.command;
-import static com.google.common.base.Preconditions.checkNotNull;
+import java.util.Objects;
import com.github.dockerjava.api.command.TagImageCmd;
@@ -50,22 +50,19 @@ public Boolean hasForceEnabled() {
@Override
public TagImageCmd withImageId(String imageId) {
- checkNotNull(imageId, "imageId was not specified");
- this.imageId = imageId;
+ this.imageId = Objects.requireNonNull(imageId, "imageId was not specified");
return this;
}
@Override
public TagImageCmd withRepository(String repository) {
- checkNotNull(repository, "repository was not specified");
- this.repository = repository;
+ this.repository = Objects.requireNonNull(repository, "repository was not specified");
return this;
}
@Override
public TagImageCmd withTag(String tag) {
- checkNotNull(tag, "tag was not specified");
- this.tag = tag;
+ this.tag = Objects.requireNonNull(tag, "tag was not specified");
return this;
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/TopContainerCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/TopContainerCmdImpl.java
index 19faed3f29..5f5eee8d03 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/TopContainerCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/TopContainerCmdImpl.java
@@ -1,6 +1,6 @@
package com.github.dockerjava.core.command;
-import static com.google.common.base.Preconditions.checkNotNull;
+import java.util.Objects;
import com.github.dockerjava.api.command.TopContainerCmd;
import com.github.dockerjava.api.command.TopContainerResponse;
@@ -33,15 +33,13 @@ public String getPsArgs() {
@Override
public TopContainerCmd withContainerId(String containerId) {
- checkNotNull(containerId, "containerId was not specified");
- this.containerId = containerId;
+ this.containerId = Objects.requireNonNull(containerId, "containerId was not specified");
return this;
}
@Override
public TopContainerCmd withPsArgs(String psArgs) {
- checkNotNull(psArgs, "psArgs was not specified");
- this.psArgs = psArgs;
+ this.psArgs = Objects.requireNonNull(psArgs, "psArgs was not specified");
return this;
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/UnpauseContainerCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/UnpauseContainerCmdImpl.java
index 26e9992b0a..ef94c19795 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/UnpauseContainerCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/UnpauseContainerCmdImpl.java
@@ -1,6 +1,6 @@
package com.github.dockerjava.core.command;
-import static com.google.common.base.Preconditions.checkNotNull;
+import java.util.Objects;
import com.github.dockerjava.api.command.UnpauseContainerCmd;
import com.github.dockerjava.api.exception.NotFoundException;
@@ -28,8 +28,7 @@ public String getContainerId() {
@Override
public UnpauseContainerCmd withContainerId(String containerId) {
- checkNotNull(containerId, "containerId was not specified");
- this.containerId = containerId;
+ this.containerId = Objects.requireNonNull(containerId, "containerId was not specified");
return this;
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/UpdateSwarmCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/UpdateSwarmCmdImpl.java
index d1eefcae25..372cd34ce9 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/UpdateSwarmCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/UpdateSwarmCmdImpl.java
@@ -1,11 +1,11 @@
package com.github.dockerjava.core.command;
+import java.util.Objects;
+
import com.github.dockerjava.api.command.UpdateSwarmCmd;
import com.github.dockerjava.api.model.SwarmSpec;
-import static com.google.common.base.Preconditions.checkNotNull;
-
/**
* Update a swarm.
*/
@@ -62,8 +62,7 @@ public SwarmSpec getSwarmSpec() {
@Override
public UpdateSwarmCmd withSwarmSpec(SwarmSpec swarmSpec) {
- checkNotNull(swarmSpec, "swarmSpec was not specified");
- this.swarmSpec = swarmSpec;
+ this.swarmSpec = Objects.requireNonNull(swarmSpec, "swarmSpec was not specified");
return this;
}
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/WaitContainerCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/WaitContainerCmdImpl.java
index eeb05ff603..91b2255bca 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/WaitContainerCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/WaitContainerCmdImpl.java
@@ -1,6 +1,6 @@
package com.github.dockerjava.core.command;
-import static com.google.common.base.Preconditions.checkNotNull;
+import java.util.Objects;
import com.github.dockerjava.api.command.WaitContainerCmd;
import com.github.dockerjava.api.model.WaitResponse;
@@ -27,8 +27,7 @@ public String getContainerId() {
@Override
public WaitContainerCmd withContainerId(String containerId) {
- checkNotNull(containerId, "containerId was not specified");
- this.containerId = containerId;
+ this.containerId = Objects.requireNonNull(containerId, "containerId was not specified");
return this;
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/exec/AbstrDockerCmdExec.java b/docker-java-core/src/main/java/com/github/dockerjava/core/exec/AbstrDockerCmdExec.java
index d1d2adc3eb..ad7f285f4a 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/exec/AbstrDockerCmdExec.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/exec/AbstrDockerCmdExec.java
@@ -13,10 +13,10 @@
import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;
import java.io.IOException;
+import java.util.Objects;
import static com.github.dockerjava.core.RemoteApiVersion.UNKNOWN_VERSION;
import static com.github.dockerjava.core.RemoteApiVersion.VERSION_1_19;
-import static com.google.common.base.Preconditions.checkNotNull;
public abstract class AbstrDockerCmdExec {
@@ -25,10 +25,8 @@ public abstract class AbstrDockerCmdExec {
private final transient WebTarget baseResource;
public AbstrDockerCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) {
- checkNotNull(baseResource, "baseResource was not specified");
- checkNotNull(dockerClientConfig, "dockerClientConfig was not specified");
- this.baseResource = baseResource;
- this.dockerClientConfig = dockerClientConfig;
+ this.baseResource = Objects.requireNonNull(baseResource, "baseResource was not specified");
+ this.dockerClientConfig = Objects.requireNonNull(dockerClientConfig, "dockerClientConfig was not specified");
}
protected WebTarget getBaseResource() {
diff --git a/docker-java-transport-netty/src/main/java/com/github/dockerjava/netty/NettyDockerCmdExecFactory.java b/docker-java-transport-netty/src/main/java/com/github/dockerjava/netty/NettyDockerCmdExecFactory.java
index cd122b3bc6..ed66a6db82 100644
--- a/docker-java-transport-netty/src/main/java/com/github/dockerjava/netty/NettyDockerCmdExecFactory.java
+++ b/docker-java-transport-netty/src/main/java/com/github/dockerjava/netty/NettyDockerCmdExecFactory.java
@@ -1,6 +1,5 @@
package com.github.dockerjava.netty;
-import static com.google.common.base.Preconditions.checkNotNull;
import static java.util.Objects.nonNull;
import java.io.IOException;
@@ -9,6 +8,7 @@
import java.net.SocketAddress;
import java.net.SocketTimeoutException;
import java.security.Security;
+import java.util.Objects;
import java.util.concurrent.TimeUnit;
import javax.net.ssl.SSLEngine;
@@ -284,7 +284,7 @@ public SSLParameters enableHostNameVerification(SSLParameters sslParameters) {
@Override
public void close() throws IOException {
- checkNotNull(eventLoopGroup, "Factory not initialized. You probably forgot to call init()!");
+ Objects.requireNonNull(eventLoopGroup, "Factory not initialized. You probably forgot to call init()!");
eventLoopGroup.shutdownGracefully();
}
@@ -331,7 +331,7 @@ protected synchronized void channelIdle(ChannelHandlerContext ctx, IdleStateEven
}
protected WebTarget getBaseResource() {
- checkNotNull(baseResource, "Factory not initialized, baseResource not set. You probably forgot to call init()!");
+ Objects.requireNonNull(baseResource, "Factory not initialized, baseResource not set. You probably forgot to call init()!");
return baseResource;
}
}
From dddd439ceb3fd95e1bde7fd65fcdbd6424670627 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Piotr=20Wielgo=C5=82aski?=
Date: Mon, 29 May 2023 20:50:47 +0200
Subject: [PATCH 023/163] Support TLS configuration from docker context (#2105)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Co-authored-by: Eddú Meléndez
---
.../core/DefaultDockerClientConfig.java | 39 +++++++++++++------
.../core/DockerContextMetaFile.java | 14 ++++---
.../core/DefaultDockerClientConfigTest.java | 20 ++++++++++
.../meta.json | 15 +++++++
4 files changed, 71 insertions(+), 17 deletions(-)
create mode 100644 docker-java/src/test/resources/dockerContextHomeDir/.docker/contexts/meta/b71199ebd070b36beab7317920c2c2f1d777df8d05e5527d8458fda57cb17a7a/meta.json
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/DefaultDockerClientConfig.java b/docker-java-core/src/main/java/com/github/dockerjava/core/DefaultDockerClientConfig.java
index b4e1aa0a5c..8a1f6193ad 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/DefaultDockerClientConfig.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/DefaultDockerClientConfig.java
@@ -441,7 +441,33 @@ public final Builder withCustomSslConfig(SSLConfig customSslConfig) {
return this;
}
+ private void applyContextConfiguration(final String context) {
+ final Optional dockerContextMetaFile =
+ Optional.ofNullable(context)
+ .flatMap(ctx -> DockerContextMetaFile.resolveContextMetaFile(DockerClientConfig.getDefaultObjectMapper(),
+ new File(this.dockerConfig), ctx));
+
+ if (dockerContextMetaFile.isPresent()) {
+ final Optional dockerEndpoint =
+ dockerContextMetaFile.map(metaFile -> metaFile.endpoints).map(endpoint -> endpoint.docker);
+ if (this.dockerHost == null) {
+ this.dockerHost = dockerEndpoint.map(endpoint -> endpoint.host).map(URI::create).orElse(null);
+ }
+ if (this.dockerCertPath == null) {
+ this.dockerCertPath = dockerContextMetaFile.map(metaFile -> metaFile.storage)
+ .map(storage -> storage.tlsPath)
+ .filter(file -> new File(file).exists()).orElse(null);
+ if (this.dockerCertPath != null) {
+ this.dockerTlsVerify = dockerEndpoint.map(endpoint -> !endpoint.skipTLSVerify).orElse(true);
+ }
+ }
+ }
+ }
+
public DefaultDockerClientConfig build() {
+ final DockerConfigFile dockerConfigFile = readDockerConfig();
+ final String context = (dockerContext != null) ? dockerContext : dockerConfigFile.getCurrentContext();
+ applyContextConfiguration(context);
SSLConfig sslConfig = null;
@@ -454,12 +480,9 @@ public DefaultDockerClientConfig build() {
sslConfig = customSslConfig;
}
- final DockerConfigFile dockerConfigFile = readDockerConfig();
-
- final String context = (dockerContext != null) ? dockerContext : dockerConfigFile.getCurrentContext();
URI dockerHostUri = dockerHost != null
? dockerHost
- : resolveDockerHost(context);
+ : URI.create(SystemUtils.IS_OS_WINDOWS ? WINDOWS_DEFAULT_DOCKER_HOST : DEFAULT_DOCKER_HOST);
return new DefaultDockerClientConfig(dockerHostUri, dockerConfigFile, dockerConfig, apiVersion, registryUrl, registryUsername,
registryPassword, registryEmail, sslConfig);
@@ -473,14 +496,6 @@ private DockerConfigFile readDockerConfig() {
}
}
- private URI resolveDockerHost(String dockerContext) {
- return URI.create(Optional.ofNullable(dockerContext)
- .flatMap(context -> DockerContextMetaFile.resolveContextMetaFile(
- DockerClientConfig.getDefaultObjectMapper(), new File(dockerConfig), context))
- .flatMap(DockerContextMetaFile::host)
- .orElse(SystemUtils.IS_OS_WINDOWS ? WINDOWS_DEFAULT_DOCKER_HOST : DEFAULT_DOCKER_HOST));
- }
-
private String checkDockerCertPath(String dockerCertPath) {
if (StringUtils.isEmpty(dockerCertPath)) {
throw new DockerClientException(
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/DockerContextMetaFile.java b/docker-java-core/src/main/java/com/github/dockerjava/core/DockerContextMetaFile.java
index a52304c8e8..d74c4949f2 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/DockerContextMetaFile.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/DockerContextMetaFile.java
@@ -18,6 +18,9 @@ public class DockerContextMetaFile {
@JsonProperty("Endpoints")
Endpoints endpoints;
+ @JsonProperty("Storage")
+ Storage storage;
+
public static class Endpoints {
@JsonProperty("docker")
Docker docker;
@@ -31,11 +34,12 @@ public static class Docker {
}
}
- public Optional host() {
- if (endpoints != null && endpoints.docker != null) {
- return Optional.ofNullable(endpoints.docker.host);
- }
- return Optional.empty();
+ public static class Storage {
+
+ @JsonProperty("TLSPath")
+ String tlsPath;
+ @JsonProperty("MetadataPath")
+ String metadataPath;
}
public static Optional resolveContextMetaFile(ObjectMapper objectMapper, File dockerConfigPath, String context) {
diff --git a/docker-java/src/test/java/com/github/dockerjava/core/DefaultDockerClientConfigTest.java b/docker-java/src/test/java/com/github/dockerjava/core/DefaultDockerClientConfigTest.java
index b1def24097..7e03a91596 100644
--- a/docker-java/src/test/java/com/github/dockerjava/core/DefaultDockerClientConfigTest.java
+++ b/docker-java/src/test/java/com/github/dockerjava/core/DefaultDockerClientConfigTest.java
@@ -23,6 +23,7 @@
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
public class DefaultDockerClientConfigTest {
@@ -113,6 +114,25 @@ public void dockerContextFromEnvironmentVariable() {
assertEquals(URI.create("unix:///envvarcontext.sock"), config.getDockerHost());
}
+ @Test
+ public void dockerContextWithDockerHostAndTLS() {
+ // given home directory with docker contexts
+ Properties systemProperties = new Properties();
+ systemProperties.setProperty("user.home", "target/test-classes/dockerContextHomeDir");
+
+ // and an environment variable that overrides docker context
+ Map env = new HashMap<>();
+ env.put(DefaultDockerClientConfig.DOCKER_CONTEXT, "remote");
+
+ // when you build a config
+ DefaultDockerClientConfig config = buildConfig(env, systemProperties);
+
+ assertEquals(URI.create("tcp://remote:2376"), config.getDockerHost());
+ assertTrue("SSL config is set", config.getSSLConfig() instanceof LocalDirectorySSLConfig);
+ assertEquals("target/test-classes/com/github/dockerjava/core/util/CertificateUtilsTest/allFilesExist",
+ ((LocalDirectorySSLConfig)config.getSSLConfig()).getDockerCertPath());
+ }
+
@Test
public void environment() {
diff --git a/docker-java/src/test/resources/dockerContextHomeDir/.docker/contexts/meta/b71199ebd070b36beab7317920c2c2f1d777df8d05e5527d8458fda57cb17a7a/meta.json b/docker-java/src/test/resources/dockerContextHomeDir/.docker/contexts/meta/b71199ebd070b36beab7317920c2c2f1d777df8d05e5527d8458fda57cb17a7a/meta.json
new file mode 100644
index 0000000000..a4ff5b4609
--- /dev/null
+++ b/docker-java/src/test/resources/dockerContextHomeDir/.docker/contexts/meta/b71199ebd070b36beab7317920c2c2f1d777df8d05e5527d8458fda57cb17a7a/meta.json
@@ -0,0 +1,15 @@
+{
+ "Name": "remote",
+ "Metadata": {
+ "Description": "remote"
+ },
+ "Endpoints": {
+ "docker": {
+ "Host": "tcp://remote:2376",
+ "SkipTLSVerify": false
+ }
+ },
+ "Storage": {
+ "TLSPath": "target/test-classes/com/github/dockerjava/core/util/CertificateUtilsTest/allFilesExist"
+ }
+}
From a1243d6493ed6c367c232edff23d9ea68e56ae40 Mon Sep 17 00:00:00 2001
From: belugabehr <12578579+belugabehr@users.noreply.github.com>
Date: Mon, 19 Jun 2023 10:49:44 -0400
Subject: [PATCH 024/163] Use anchor instead of building toString() for debug
logging (#2035)
---
.../github/dockerjava/api/command/BuildImageResultCallback.java | 2 +-
.../com/github/dockerjava/api/command/LoadImageCallback.java | 2 +-
.../github/dockerjava/api/command/PullImageResultCallback.java | 2 +-
.../dockerjava/api/command/WaitContainerResultCallback.java | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/BuildImageResultCallback.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/BuildImageResultCallback.java
index 0bb0f0884c..331f69509e 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/command/BuildImageResultCallback.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/BuildImageResultCallback.java
@@ -31,7 +31,7 @@ public void onNext(BuildResponseItem item) {
} else if (item.isErrorIndicated()) {
this.error = item.getError();
}
- LOGGER.debug(item.toString());
+ LOGGER.debug("{}", item);
}
/**
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/LoadImageCallback.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/LoadImageCallback.java
index 7415984655..80cca18dee 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/command/LoadImageCallback.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/LoadImageCallback.java
@@ -22,7 +22,7 @@ public void onNext(LoadResponseItem item) {
this.error = item.getError();
}
- LOGGER.debug(item.toString());
+ LOGGER.debug("{}", item);
}
public String awaitMessage() {
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/PullImageResultCallback.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/PullImageResultCallback.java
index a4e9e9f9be..5980ce3dff 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/command/PullImageResultCallback.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/PullImageResultCallback.java
@@ -41,7 +41,7 @@ public void onNext(PullResponseItem item) {
handleDockerClientResponse(item);
}
- LOGGER.debug(item.toString());
+ LOGGER.debug("{}", item);
}
private void checkForDockerSwarmResponse(PullResponseItem item) {
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/WaitContainerResultCallback.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/WaitContainerResultCallback.java
index b4a6d3cc6e..6cb1601511 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/command/WaitContainerResultCallback.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/WaitContainerResultCallback.java
@@ -27,7 +27,7 @@ public class WaitContainerResultCallback extends ResultCallbackTemplate
Date: Mon, 19 Jun 2023 11:18:07 -0400
Subject: [PATCH 025/163] Handle repoNames with tags (#2128)
Fixes #2127
---
.../github/dockerjava/core/NameParser.java | 12 ++++++
.../dockerjava/core/NameParserTest.java | 43 ++++++++++++++++++-
2 files changed, 54 insertions(+), 1 deletion(-)
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/NameParser.java b/docker-java-core/src/main/java/com/github/dockerjava/core/NameParser.java
index ae39029edd..f06adb6d8e 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/NameParser.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/NameParser.java
@@ -22,6 +22,7 @@ private NameParser() {
private static final int RepositoryNameTotalLengthMax = 255;
private static final String SHA256_SEPARATOR = "@sha256:";
+ private static final String COLON_SEPARATOR = ":";
private static final Pattern RepositoryNameComponentRegexp = Pattern.compile("[a-z0-9]+(?:[._-][a-z0-9]+)*");
@@ -106,6 +107,13 @@ public static HostnameReposName resolveRepositoryName(String reposName) {
String[] nameParts = reposName.split("/", 2);
if (nameParts.length == 1
|| (!nameParts[0].contains(".") && !nameParts[0].contains(":") && !nameParts[0].equals("localhost"))) {
+ if (StringUtils.containsIgnoreCase(reposName, SHA256_SEPARATOR)) {
+ reposName = StringUtils.substringBeforeLast(reposName, SHA256_SEPARATOR);
+ }
+
+ if (StringUtils.contains(reposName, COLON_SEPARATOR)) {
+ reposName = StringUtils.substringBeforeLast(reposName, COLON_SEPARATOR);
+ }
return new HostnameReposName(AuthConfig.DEFAULT_SERVER_ADDRESS, reposName);
}
@@ -119,6 +127,10 @@ public static HostnameReposName resolveRepositoryName(String reposName) {
reposName = StringUtils.substringBeforeLast(reposName, SHA256_SEPARATOR);
}
+ if (StringUtils.contains(reposName, COLON_SEPARATOR)) {
+ reposName = StringUtils.substringBeforeLast(reposName, COLON_SEPARATOR);
+ }
+
validateRepoName(reposName);
return new HostnameReposName(hostname, reposName);
}
diff --git a/docker-java/src/test/java/com/github/dockerjava/core/NameParserTest.java b/docker-java/src/test/java/com/github/dockerjava/core/NameParserTest.java
index c6332ba4b2..89ad131f6c 100644
--- a/docker-java/src/test/java/com/github/dockerjava/core/NameParserTest.java
+++ b/docker-java/src/test/java/com/github/dockerjava/core/NameParserTest.java
@@ -83,6 +83,24 @@ public void testResolveSimpleRepositoryName() {
assertEquals(new HostnameReposName(AuthConfig.DEFAULT_SERVER_ADDRESS, "repository"), resolved);
}
+ @Test
+ public void testResolveRepositoryNameWithTag() {
+ HostnameReposName resolved = NameParser.resolveRepositoryName("repository:tag");
+ assertEquals(new HostnameReposName(AuthConfig.DEFAULT_SERVER_ADDRESS, "repository"), resolved);
+ }
+
+ @Test
+ public void testResolveRepositoryNameWithSHA256() {
+ HostnameReposName resolved = NameParser.resolveRepositoryName("repository@sha256:sha256");
+ assertEquals(new HostnameReposName(AuthConfig.DEFAULT_SERVER_ADDRESS, "repository"), resolved);
+ }
+
+ @Test
+ public void testResolveRepositoryNameWithTagAndSHA256() {
+ HostnameReposName resolved = NameParser.resolveRepositoryName("repository:tag@sha256:sha256");
+ assertEquals(new HostnameReposName(AuthConfig.DEFAULT_SERVER_ADDRESS, "repository"), resolved);
+ }
+
@Test
public void testResolveRepositoryNameWithNamespace() {
HostnameReposName resolved = NameParser.resolveRepositoryName("namespace/repository");
@@ -92,7 +110,7 @@ public void testResolveRepositoryNameWithNamespace() {
@Test
public void testResolveRepositoryNameWithNamespaceAndSHA256() {
HostnameReposName resolved = NameParser.resolveRepositoryName("namespace/repository@sha256:sha256");
- assertEquals(new HostnameReposName(AuthConfig.DEFAULT_SERVER_ADDRESS, "namespace/repository@sha256:sha256"), resolved);
+ assertEquals(new HostnameReposName(AuthConfig.DEFAULT_SERVER_ADDRESS, "namespace/repository"), resolved);
}
@Test
@@ -107,6 +125,17 @@ public void testResolveRepositoryNameWithNamespaceAndHostnameAndSHA256() {
assertEquals(new HostnameReposName("localhost:5000", "namespace/repository"), resolved);
}
+ @Test
+ public void testResolveRepositoryNameWithNamespaceAndHostnameAndTag() {
+ HostnameReposName resolved = NameParser.resolveRepositoryName("localhost:5000/namespace/repository:tag");
+ assertEquals(new HostnameReposName("localhost:5000", "namespace/repository"), resolved);
+ }
+ @Test
+ public void testResolveRepositoryNameWithNamespaceAndHostnameAndTagAndSHA256() {
+ HostnameReposName resolved = NameParser.resolveRepositoryName("localhost:5000/namespace/repository:tag@sha256:sha256");
+ assertEquals(new HostnameReposName("localhost:5000", "namespace/repository"), resolved);
+ }
+
@Test(expected = InvalidRepositoryNameException.class)
public void testResolveRepositoryNameWithIndex() {
NameParser.resolveRepositoryName("index.docker.io/repository");
@@ -147,4 +176,16 @@ public void testResolveReposTagWithSHA256() {
resolved = NameParser.parseRepositoryTag("localhost:5000/namespace/repository@sha256:sha256");
assertEquals(new ReposTag("localhost:5000/namespace/repository@sha256:sha256", ""), resolved);
}
+
+ @Test
+ public void testResolveReposTagWithTagAndSHA256() {
+ ReposTag resolved = NameParser.parseRepositoryTag("repository:tag@sha256:sha256");
+ assertEquals(new ReposTag("repository:tag@sha256:sha256", ""), resolved);
+
+ resolved = NameParser.parseRepositoryTag("namespace/repository:tag@sha256:sha256");
+ assertEquals(new ReposTag("namespace/repository:tag@sha256:sha256", ""), resolved);
+
+ resolved = NameParser.parseRepositoryTag("localhost:5000/namespace/repository:tag@sha256:sha256");
+ assertEquals(new ReposTag("localhost:5000/namespace/repository:tag@sha256:sha256", ""), resolved);
+ }
}
From 95f65e2a7a6feefa2704c3c39cccbaf8841dfc88 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Piotr=20Wielgo=C5=82aski?=
Date: Fri, 7 Jul 2023 01:50:18 +0200
Subject: [PATCH 026/163] Fix support TLS configuration from docker context
(#2130)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Co-authored-by: Eddú Meléndez
---
.../core/DefaultDockerClientConfig.java | 15 +++++++--------
.../core/DockerContextMetaFile.java | 19 ++++++++++---------
.../core/DefaultDockerClientConfigTest.java | 3 +--
.../docker/ca.pem | 0
.../docker/cert.pem | 0
.../docker/key.pem | 0
6 files changed, 18 insertions(+), 19 deletions(-)
create mode 100644 docker-java/src/test/resources/dockerContextHomeDir/.docker/contexts/tls/b71199ebd070b36beab7317920c2c2f1d777df8d05e5527d8458fda57cb17a7a/docker/ca.pem
create mode 100644 docker-java/src/test/resources/dockerContextHomeDir/.docker/contexts/tls/b71199ebd070b36beab7317920c2c2f1d777df8d05e5527d8458fda57cb17a7a/docker/cert.pem
create mode 100644 docker-java/src/test/resources/dockerContextHomeDir/.docker/contexts/tls/b71199ebd070b36beab7317920c2c2f1d777df8d05e5527d8458fda57cb17a7a/docker/key.pem
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/DefaultDockerClientConfig.java b/docker-java-core/src/main/java/com/github/dockerjava/core/DefaultDockerClientConfig.java
index 8a1f6193ad..8011a2a5e2 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/DefaultDockerClientConfig.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/DefaultDockerClientConfig.java
@@ -446,6 +446,9 @@ private void applyContextConfiguration(final String context) {
Optional.ofNullable(context)
.flatMap(ctx -> DockerContextMetaFile.resolveContextMetaFile(DockerClientConfig.getDefaultObjectMapper(),
new File(this.dockerConfig), ctx));
+ final Optional dockerContextTLSFile =
+ Optional.ofNullable(context)
+ .flatMap(ctx -> DockerContextMetaFile.resolveContextTLSFile(new File(this.dockerConfig), ctx));
if (dockerContextMetaFile.isPresent()) {
final Optional dockerEndpoint =
@@ -453,14 +456,10 @@ private void applyContextConfiguration(final String context) {
if (this.dockerHost == null) {
this.dockerHost = dockerEndpoint.map(endpoint -> endpoint.host).map(URI::create).orElse(null);
}
- if (this.dockerCertPath == null) {
- this.dockerCertPath = dockerContextMetaFile.map(metaFile -> metaFile.storage)
- .map(storage -> storage.tlsPath)
- .filter(file -> new File(file).exists()).orElse(null);
- if (this.dockerCertPath != null) {
- this.dockerTlsVerify = dockerEndpoint.map(endpoint -> !endpoint.skipTLSVerify).orElse(true);
- }
- }
+ }
+ if (dockerContextTLSFile.isPresent() && this.dockerCertPath == null) {
+ this.dockerCertPath = dockerContextTLSFile.get().getAbsolutePath();
+ this.dockerTlsVerify = true;
}
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/DockerContextMetaFile.java b/docker-java-core/src/main/java/com/github/dockerjava/core/DockerContextMetaFile.java
index d74c4949f2..e10db44986 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/DockerContextMetaFile.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/DockerContextMetaFile.java
@@ -18,8 +18,6 @@ public class DockerContextMetaFile {
@JsonProperty("Endpoints")
Endpoints endpoints;
- @JsonProperty("Storage")
- Storage storage;
public static class Endpoints {
@JsonProperty("docker")
@@ -34,13 +32,6 @@ public static class Docker {
}
}
- public static class Storage {
-
- @JsonProperty("TLSPath")
- String tlsPath;
- @JsonProperty("MetadataPath")
- String metadataPath;
- }
public static Optional resolveContextMetaFile(ObjectMapper objectMapper, File dockerConfigPath, String context) {
final File path = dockerConfigPath.toPath()
@@ -52,6 +43,16 @@ public static Optional resolveContextMetaFile(ObjectMappe
return Optional.ofNullable(loadContextMetaFile(objectMapper, path));
}
+ public static Optional resolveContextTLSFile(File dockerConfigPath, String context) {
+ final File path = dockerConfigPath.toPath()
+ .resolve("contexts")
+ .resolve("tls")
+ .resolve(metaHashFunction.hashString(context, StandardCharsets.UTF_8).toString())
+ .resolve("docker")
+ .toFile();
+ return Optional.ofNullable(path).filter(File::exists);
+ }
+
public static DockerContextMetaFile loadContextMetaFile(ObjectMapper objectMapper, File dockerContextMetaFile) {
try {
return parseContextMetaFile(objectMapper, dockerContextMetaFile);
diff --git a/docker-java/src/test/java/com/github/dockerjava/core/DefaultDockerClientConfigTest.java b/docker-java/src/test/java/com/github/dockerjava/core/DefaultDockerClientConfigTest.java
index 7e03a91596..6c7787caf0 100644
--- a/docker-java/src/test/java/com/github/dockerjava/core/DefaultDockerClientConfigTest.java
+++ b/docker-java/src/test/java/com/github/dockerjava/core/DefaultDockerClientConfigTest.java
@@ -129,8 +129,7 @@ public void dockerContextWithDockerHostAndTLS() {
assertEquals(URI.create("tcp://remote:2376"), config.getDockerHost());
assertTrue("SSL config is set", config.getSSLConfig() instanceof LocalDirectorySSLConfig);
- assertEquals("target/test-classes/com/github/dockerjava/core/util/CertificateUtilsTest/allFilesExist",
- ((LocalDirectorySSLConfig)config.getSSLConfig()).getDockerCertPath());
+ assertTrue("SSL directory is set", ((LocalDirectorySSLConfig)config.getSSLConfig()).getDockerCertPath().endsWith("dockerContextHomeDir/.docker/contexts/tls/b71199ebd070b36beab7317920c2c2f1d777df8d05e5527d8458fda57cb17a7a/docker"));
}
@Test
diff --git a/docker-java/src/test/resources/dockerContextHomeDir/.docker/contexts/tls/b71199ebd070b36beab7317920c2c2f1d777df8d05e5527d8458fda57cb17a7a/docker/ca.pem b/docker-java/src/test/resources/dockerContextHomeDir/.docker/contexts/tls/b71199ebd070b36beab7317920c2c2f1d777df8d05e5527d8458fda57cb17a7a/docker/ca.pem
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/docker-java/src/test/resources/dockerContextHomeDir/.docker/contexts/tls/b71199ebd070b36beab7317920c2c2f1d777df8d05e5527d8458fda57cb17a7a/docker/cert.pem b/docker-java/src/test/resources/dockerContextHomeDir/.docker/contexts/tls/b71199ebd070b36beab7317920c2c2f1d777df8d05e5527d8458fda57cb17a7a/docker/cert.pem
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/docker-java/src/test/resources/dockerContextHomeDir/.docker/contexts/tls/b71199ebd070b36beab7317920c2c2f1d777df8d05e5527d8458fda57cb17a7a/docker/key.pem b/docker-java/src/test/resources/dockerContextHomeDir/.docker/contexts/tls/b71199ebd070b36beab7317920c2c2f1d777df8d05e5527d8458fda57cb17a7a/docker/key.pem
new file mode 100644
index 0000000000..e69de29bb2
From 33f510ac95785aeef1e3a9ffbd013c36bd2ea37a Mon Sep 17 00:00:00 2001
From: Julian <33688601+cmdjulian@users.noreply.github.com>
Date: Fri, 7 Jul 2023 03:04:39 +0200
Subject: [PATCH 027/163] Update bouncy castle to bcpkix-jdk18on:1.75 (#2135)
---
docker-java-core/pom.xml | 2 +-
pom.xml | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/docker-java-core/pom.xml b/docker-java-core/pom.xml
index cec97d25d0..b8369fa372 100644
--- a/docker-java-core/pom.xml
+++ b/docker-java-core/pom.xml
@@ -69,7 +69,7 @@
org.bouncycastle
- bcpkix-jdk15on
+ bcpkix-jdk18on${bouncycastle.version}
diff --git a/pom.xml b/pom.xml
index fe1e6d472a..532ea0c4ae 100644
--- a/pom.xml
+++ b/pom.xml
@@ -66,7 +66,7 @@
3.12.01.7.30
- 1.64
+ 1.752.6.119.0
From 78472c912cd0a239ea48a971fd9ef0a25cb4d55e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Edd=C3=BA=20Mel=C3=A9ndez=20Gonzales?=
Date: Fri, 7 Jul 2023 23:33:21 -0600
Subject: [PATCH 028/163] Ad ddependency-submission action (#2139)
---
.github/workflows/dependency-submission.yml | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
create mode 100644 .github/workflows/dependency-submission.yml
diff --git a/.github/workflows/dependency-submission.yml b/.github/workflows/dependency-submission.yml
new file mode 100644
index 0000000000..ac365b973d
--- /dev/null
+++ b/.github/workflows/dependency-submission.yml
@@ -0,0 +1,19 @@
+name: Dependency Submission
+
+on:
+ push:
+ branches:
+ - main
+
+jobs:
+ dependency_submission:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ - name: Set up JDK
+ uses: actions/setup-java@v3
+ with:
+ java-version: 8
+ distribution: temurin
+ - name: Submit Dependency Snapshot
+ uses: advanced-security/maven-dependency-submission-action@v3
From ca8b8598297df5b62feb02f88e748abf02fb3610 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Edd=C3=BA=20Mel=C3=A9ndez?=
Date: Fri, 7 Jul 2023 23:35:42 -0600
Subject: [PATCH 029/163] Revert "Ad ddependency-submission action (#2139)"
This reverts commit 78472c912cd0a239ea48a971fd9ef0a25cb4d55e.
---
.github/workflows/dependency-submission.yml | 19 -------------------
1 file changed, 19 deletions(-)
delete mode 100644 .github/workflows/dependency-submission.yml
diff --git a/.github/workflows/dependency-submission.yml b/.github/workflows/dependency-submission.yml
deleted file mode 100644
index ac365b973d..0000000000
--- a/.github/workflows/dependency-submission.yml
+++ /dev/null
@@ -1,19 +0,0 @@
-name: Dependency Submission
-
-on:
- push:
- branches:
- - main
-
-jobs:
- dependency_submission:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v2
- - name: Set up JDK
- uses: actions/setup-java@v3
- with:
- java-version: 8
- distribution: temurin
- - name: Submit Dependency Snapshot
- uses: advanced-security/maven-dependency-submission-action@v3
From e92c30e403da5d9a1f9be7f9c1250f609d36c82c Mon Sep 17 00:00:00 2001
From: chunweilim <117911826+chunweilim@users.noreply.github.com>
Date: Mon, 31 Jul 2023 09:26:49 +1000
Subject: [PATCH 030/163] Prevent auths field in config.json to be null (#2142)
Fixes #2138
---
.../com/github/dockerjava/core/DockerConfigFile.java | 8 +++++++-
.../com/github/dockerjava/core/DockerConfigFileTest.java | 6 ++++++
.../testAuthConfigFile/validJsonAuthsNull/config.json | 9 +++++++++
3 files changed, 22 insertions(+), 1 deletion(-)
create mode 100644 docker-java/src/test/resources/testAuthConfigFile/validJsonAuthsNull/config.json
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/DockerConfigFile.java b/docker-java-core/src/main/java/com/github/dockerjava/core/DockerConfigFile.java
index 825796a74f..39ef15271e 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/DockerConfigFile.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/DockerConfigFile.java
@@ -1,6 +1,7 @@
package com.github.dockerjava.core;
import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonSetter;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.github.dockerjava.api.model.AuthConfig;
@@ -28,7 +29,7 @@ public class DockerConfigFile {
};
@JsonProperty
- private final Map auths;
+ private Map auths;
@JsonProperty
private String currentContext;
@@ -46,6 +47,11 @@ public Map getAuths() {
return auths;
}
+ @JsonSetter
+ public void setAuths(Map authConfigMap) {
+ auths = (authConfigMap == null || authConfigMap.size() == 0) ? new HashMap<>() : authConfigMap;
+ }
+
void addAuthConfig(AuthConfig config) {
auths.put(config.getRegistryAddress(), config);
}
diff --git a/docker-java/src/test/java/com/github/dockerjava/core/DockerConfigFileTest.java b/docker-java/src/test/java/com/github/dockerjava/core/DockerConfigFileTest.java
index ce1a59cc0e..76211fc55d 100644
--- a/docker-java/src/test/java/com/github/dockerjava/core/DockerConfigFileTest.java
+++ b/docker-java/src/test/java/com/github/dockerjava/core/DockerConfigFileTest.java
@@ -164,6 +164,12 @@ public void nonExistent() throws IOException {
assertThat(runTest("idontexist"), is(expected));
}
+ @Test
+ public void validJsonAuthsNull() throws IOException {
+ DockerConfigFile expected = new DockerConfigFile();
+ assertThat(runTest("validJsonAuthsNull"), is(expected));
+ }
+
private DockerConfigFile runTest(String testFileName) throws IOException {
return DockerConfigFile.loadConfig(JSONTestHelper.getMapper(), new File(FILESROOT, testFileName).getAbsolutePath());
}
diff --git a/docker-java/src/test/resources/testAuthConfigFile/validJsonAuthsNull/config.json b/docker-java/src/test/resources/testAuthConfigFile/validJsonAuthsNull/config.json
new file mode 100644
index 0000000000..d104c357ca
--- /dev/null
+++ b/docker-java/src/test/resources/testAuthConfigFile/validJsonAuthsNull/config.json
@@ -0,0 +1,9 @@
+{
+ "auths": null,
+ "credsStore": "desktop",
+ "plugins": {
+ "-x-cli-hints": {
+ "enabled": "true"
+ }
+ }
+}
From aa13c7fdcc9804ad039a582a456d69488f616ba2 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 31 Aug 2023 16:08:35 -0600
Subject: [PATCH 031/163] Bump org.bouncycastle:bcpkix-jdk18on from 1.75 to
1.76 (#2169)
Bumps [org.bouncycastle:bcpkix-jdk18on](https://github.com/bcgit/bc-java) from 1.75 to 1.76.
- [Changelog](https://github.com/bcgit/bc-java/blob/main/docs/releasenotes.html)
- [Commits](https://github.com/bcgit/bc-java/commits)
---
updated-dependencies:
- dependency-name: org.bouncycastle:bcpkix-jdk18on
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 532ea0c4ae..536f069b7a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -66,7 +66,7 @@
3.12.01.7.30
- 1.75
+ 1.762.6.119.0
From f5455eaf5bd3c2e58842d5459a74efa675954896 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 31 Aug 2023 16:08:47 -0600
Subject: [PATCH 032/163] Bump org.junit.jupiter:junit-jupiter from 5.7.2 to
5.10.0 (#2163)
Bumps [org.junit.jupiter:junit-jupiter](https://github.com/junit-team/junit5) from 5.7.2 to 5.10.0.
- [Release notes](https://github.com/junit-team/junit5/releases)
- [Commits](https://github.com/junit-team/junit5/compare/r5.7.2...r5.10.0)
---
updated-dependencies:
- dependency-name: org.junit.jupiter:junit-jupiter
dependency-type: direct:development
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
docker-java-api/pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docker-java-api/pom.xml b/docker-java-api/pom.xml
index dca404bc18..f49e7723f2 100644
--- a/docker-java-api/pom.xml
+++ b/docker-java-api/pom.xml
@@ -50,7 +50,7 @@
org.junit.jupiterjunit-jupiter
- 5.7.2
+ 5.10.0test
From 5d03c4c8f060fb1d05eca20593ed93dfa696e384 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 31 Aug 2023 16:10:26 -0600
Subject: [PATCH 033/163] Bump commons-io from 2.6 to 2.13.0 (#2153)
Bumps commons-io from 2.6 to 2.13.0.
---
updated-dependencies:
- dependency-name: commons-io:commons-io
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 536f069b7a..1538bb3a5c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -62,7 +62,7 @@
2.10.34.5.121.21
- 2.6
+ 2.13.03.12.01.7.30
From 2babed862d9820921962e66dad14e5dab8741901 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 31 Aug 2023 16:11:57 -0600
Subject: [PATCH 034/163] Bump jna from 5.12.1 to 5.13.0 (#2047)
Bumps [jna](https://github.com/java-native-access/jna) from 5.12.1 to 5.13.0.
- [Release notes](https://github.com/java-native-access/jna/releases)
- [Changelog](https://github.com/java-native-access/jna/blob/master/CHANGES.md)
- [Commits](https://github.com/java-native-access/jna/compare/5.12.1...5.13.0)
---
updated-dependencies:
- dependency-name: net.java.dev.jna:jna
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
docker-java-transport-httpclient5/pom.xml | 2 +-
docker-java-transport-okhttp/pom.xml | 2 +-
docker-java-transport/pom.xml | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/docker-java-transport-httpclient5/pom.xml b/docker-java-transport-httpclient5/pom.xml
index 5800fb9947..4eb9f41df2 100644
--- a/docker-java-transport-httpclient5/pom.xml
+++ b/docker-java-transport-httpclient5/pom.xml
@@ -41,7 +41,7 @@
net.java.dev.jnajna
- 5.12.1
+ 5.13.0
diff --git a/docker-java-transport-okhttp/pom.xml b/docker-java-transport-okhttp/pom.xml
index 351005461d..df14ad0777 100644
--- a/docker-java-transport-okhttp/pom.xml
+++ b/docker-java-transport-okhttp/pom.xml
@@ -35,7 +35,7 @@
net.java.dev.jnajna
- 5.12.1
+ 5.13.0
diff --git a/docker-java-transport/pom.xml b/docker-java-transport/pom.xml
index 633053c397..2ca377dd66 100644
--- a/docker-java-transport/pom.xml
+++ b/docker-java-transport/pom.xml
@@ -37,7 +37,7 @@
net.java.dev.jnajna
- 5.12.1
+ 5.13.0provided
From 12ecc2bcbf0b6fbfe64cc658101ebccd6a1d06d6 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 31 Aug 2023 16:12:14 -0600
Subject: [PATCH 035/163] Bump assertj-core from 3.22.0 to 3.24.2 (#2051)
Bumps assertj-core from 3.22.0 to 3.24.2.
---
updated-dependencies:
- dependency-name: org.assertj:assertj-core
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
docker-java-transport-tck/pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docker-java-transport-tck/pom.xml b/docker-java-transport-tck/pom.xml
index 9ad692c1fe..491b42bc90 100644
--- a/docker-java-transport-tck/pom.xml
+++ b/docker-java-transport-tck/pom.xml
@@ -34,7 +34,7 @@
org.assertjassertj-core
- 3.22.0
+ 3.24.2
From 1da9515043f1ca290c6779a65a21a74f11fad2ea Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Edd=C3=BA=20Mel=C3=A9ndez=20Gonzales?=
Date: Thu, 26 Oct 2023 11:56:02 -0600
Subject: [PATCH 036/163] Disable
CopyArchiveToContainerCmdIT#copyFileWithUIDGID (#2228)
See https://github.com/moby/moby/issues/46388
---
.../com/github/dockerjava/cmd/CopyArchiveToContainerCmdIT.java | 2 ++
1 file changed, 2 insertions(+)
diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/CopyArchiveToContainerCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/CopyArchiveToContainerCmdIT.java
index bbd98932f7..efce65c299 100644
--- a/docker-java/src/test/java/com/github/dockerjava/cmd/CopyArchiveToContainerCmdIT.java
+++ b/docker-java/src/test/java/com/github/dockerjava/cmd/CopyArchiveToContainerCmdIT.java
@@ -6,6 +6,7 @@
import com.github.dockerjava.core.util.CompressArchiveUtil;
import com.github.dockerjava.utils.LogContainerTestCallback;
import org.apache.commons.io.FileUtils;
+import org.junit.Ignore;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -148,6 +149,7 @@ public void copyFileWithExecutePermission() throws Exception {
assertThat(exitCode, equalTo(0));
}
+ @Ignore("Docker issue https://github.com/moby/moby/issues/46388")
@Test
public void copyFileWithUIDGID() throws Exception {
Path with = Files.createFile(Files.createTempDirectory("copyFileWithUIDGID").resolve("uidgid.with"));
From ede20db9870476fe51a8b376a36921d99177d3bf Mon Sep 17 00:00:00 2001
From: Maksim Dimukhametov
Date: Thu, 26 Oct 2023 22:11:01 +0200
Subject: [PATCH 037/163] Fixing flaky test
`ListContainersCmdIT.testStatusFilter` (#2188)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Co-authored-by: Eddú Meléndez Gonzales
---
.../dockerjava/cmd/ListContainersCmdIT.java | 62 ++++++++++++-------
1 file changed, 40 insertions(+), 22 deletions(-)
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 a94a02f82a..c03df2a557 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
@@ -17,6 +17,7 @@
import java.util.List;
import java.util.Map;
import java.util.UUID;
+import java.util.concurrent.TimeUnit;
import static ch.lambdaj.Lambda.filter;
import static com.github.dockerjava.api.model.HostConfig.newHostConfig;
@@ -188,16 +189,8 @@ public void testIdsFilter() {
}
@Test
- public void testStatusFilter() {
- String id1, id2;
- id1 = dockerRule.getClient().createContainerCmd(DEFAULT_IMAGE)
- .withCmd("sh", "-c", "sleep 99999")
- .withLabels(testLabel)
- .exec()
- .getId();
-
- id2 = dockerRule.getClient().createContainerCmd(DEFAULT_IMAGE)
- .withCmd("sh", "-c", "sleep 99999")
+ public void shouldFilterByCreatedStatus() {
+ String containerId = dockerRule.getClient().createContainerCmd(DEFAULT_IMAGE)
.withLabels(testLabel)
.exec()
.getId();
@@ -208,42 +201,67 @@ public void testStatusFilter() {
.withStatusFilter(singletonList("created"))
.exec();
- assertThat(filteredContainers.size(), is(2));
- assertThat(filteredContainers.get(1).getId(), isOneOf(id1, id2));
+ assertThat(filteredContainers.size(), is(1));
+ assertThat(filteredContainers.get(0).getId(), is(containerId));
+ }
- dockerRule.getClient().startContainerCmd(id1).exec();
+ @Test
+ public void shouldFilterByRunningStatus() {
+ String containerId = dockerRule.getClient().createContainerCmd(DEFAULT_IMAGE)
+ .withLabels(testLabel)
+ .exec()
+ .getId();
+ dockerRule.getClient().startContainerCmd(containerId).exec();
- filteredContainers = dockerRule.getClient().listContainersCmd()
+ List filteredContainers = dockerRule.getClient().listContainersCmd()
.withShowAll(true)
.withLabelFilter(testLabel)
.withStatusFilter(singletonList("running"))
.exec();
assertThat(filteredContainers.size(), is(1));
- assertThat(filteredContainers.get(0).getId(), is(id1));
+ assertThat(filteredContainers.get(0).getId(), is(containerId));
+ }
- dockerRule.getClient().pauseContainerCmd(id1).exec();
+ @Test
+ public void shouldFilterByPausedStatus() {
+ String containerId = dockerRule.getClient().createContainerCmd(DEFAULT_IMAGE)
+ .withCmd("sh", "-c", "sleep 99999")
+ .withLabels(testLabel)
+ .exec()
+ .getId();
+ dockerRule.getClient().startContainerCmd(containerId).exec();
+ dockerRule.getClient().pauseContainerCmd(containerId).exec();
- filteredContainers = dockerRule.getClient().listContainersCmd()
+ List filteredContainers = dockerRule.getClient().listContainersCmd()
.withShowAll(true)
.withLabelFilter(testLabel)
.withStatusFilter(singletonList("paused"))
.exec();
assertThat(filteredContainers.size(), is(1));
- assertThat(filteredContainers.get(0).getId(), is(id1));
+ assertThat(filteredContainers.get(0).getId(), is(containerId));
+ }
- dockerRule.getClient().unpauseContainerCmd(id1).exec();
- dockerRule.getClient().stopContainerCmd(id1).exec();
+ @Test
+ public void shouldFilterByExitedStatus() throws InterruptedException {
+ String containerId = dockerRule.getClient().createContainerCmd(DEFAULT_IMAGE)
+ .withCmd("sh", "-c", "sleep 99999")
+ .withLabels(testLabel)
+ .exec()
+ .getId();
+ dockerRule.getClient().startContainerCmd(containerId).exec();
+ dockerRule.getClient().stopContainerCmd(containerId).exec();
+ dockerRule.getClient().waitContainerCmd(containerId).start().awaitCompletion(15, TimeUnit.SECONDS);
- filteredContainers = dockerRule.getClient().listContainersCmd()
+ List filteredContainers = dockerRule.getClient().listContainersCmd()
.withShowAll(true)
.withLabelFilter(testLabel)
.withStatusFilter(singletonList("exited"))
.exec();
assertThat(filteredContainers.size(), is(1));
- assertThat(filteredContainers.get(0).getId(), is(id1));
+ assertThat(filteredContainers.get(0).getId(), is(containerId));
}
@Test
From d138d51999cde27ff89fbe5b070045a37203192f Mon Sep 17 00:00:00 2001
From: Sietse Ludger Geertsema
Date: Thu, 26 Oct 2023 22:25:06 +0200
Subject: [PATCH 038/163] Add units (nanoseconds) to HealthCheck (#2187)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Co-authored-by: Eddú Meléndez Gonzales
---
.../com/github/dockerjava/api/model/HealthCheck.java | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/HealthCheck.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/HealthCheck.java
index 24873a74f7..6c8d425e11 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/HealthCheck.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/HealthCheck.java
@@ -63,11 +63,19 @@ public Long getTimeout() {
return timeout;
}
+ /**
+ * Set interval in nanoseconds
+ * @return this {@link HealthCheck} instance
+ */
public HealthCheck withInterval(Long interval) {
this.interval = interval;
return this;
}
+ /**
+ * Set timeout in nanoseconds
+ * @return this {@link HealthCheck} instance
+ */
public HealthCheck withTimeout(Long timeout) {
this.timeout = timeout;
return this;
@@ -95,6 +103,10 @@ public Long getStartPeriod() {
return startPeriod;
}
+ /**
+ * Set startPeriod in nanoseconds
+ * @return this {@link HealthCheck} instance
+ */
public HealthCheck withStartPeriod(Long startPeriod) {
this.startPeriod = startPeriod;
return this;
From fea93ec68ac29e8befeab3c85922283406ea15e2 Mon Sep 17 00:00:00 2001
From: Lars <60571459+LarsSven@users.noreply.github.com>
Date: Thu, 26 Oct 2023 22:30:49 +0200
Subject: [PATCH 039/163] Implemented the `SizeRw` field in the
`InspectContainerResponse` class. (#2216)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Co-authored-by: Eddú Meléndez Gonzales
---
.../dockerjava/api/command/InspectContainerResponse.java | 7 +++++++
.../com/github/dockerjava/cmd/InspectContainerCmdIT.java | 2 ++
.../api/command/inspectContainerResponse_full_1_26a.json | 1 +
.../resources/samples/1.22/containers/json/filter1.json | 1 +
4 files changed, 11 insertions(+)
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/InspectContainerResponse.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/InspectContainerResponse.java
index 05492c51ff..94207fd2ca 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/command/InspectContainerResponse.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/InspectContainerResponse.java
@@ -63,6 +63,9 @@ public class InspectContainerResponse extends DockerObject {
@JsonProperty("SizeRootFs")
private Integer sizeRootFs;
+ @JsonProperty("SizeRw")
+ private Integer sizeRw;
+
@JsonProperty("Image")
private String imageId;
@@ -125,6 +128,10 @@ public Integer getSizeRootFs() {
return sizeRootFs;
}
+ public Integer getSizeRw() {
+ return sizeRw;
+ }
+
public String getCreated() {
return created;
}
diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/InspectContainerCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/InspectContainerCmdIT.java
index fed85df73c..54d900db8b 100644
--- a/docker-java/src/test/java/com/github/dockerjava/cmd/InspectContainerCmdIT.java
+++ b/docker-java/src/test/java/com/github/dockerjava/cmd/InspectContainerCmdIT.java
@@ -101,6 +101,8 @@ public void inspectContainerWithSize() throws DockerException {
if (isNotSwarm(dockerRule.getClient())) {
assertNotNull(containerInfo.getSizeRootFs());
assertTrue(containerInfo.getSizeRootFs().intValue() > 0);
+ assertNotNull(containerInfo.getSizeRw());
+ assertTrue(containerInfo.getSizeRw().intValue() == 0);
}
}
diff --git a/docker-java/src/test/resources/com/github/dockerjava/api/command/inspectContainerResponse_full_1_26a.json b/docker-java/src/test/resources/com/github/dockerjava/api/command/inspectContainerResponse_full_1_26a.json
index 2f3428d7ac..688ea2689a 100644
--- a/docker-java/src/test/resources/com/github/dockerjava/api/command/inspectContainerResponse_full_1_26a.json
+++ b/docker-java/src/test/resources/com/github/dockerjava/api/command/inspectContainerResponse_full_1_26a.json
@@ -6,6 +6,7 @@
"postgres"
],
"SizeRootFs" : null,
+ "SizeRw" : null,
"HostConfig" : {
"KernelMemory" : 0,
"MemorySwappiness" : -1,
diff --git a/docker-java/src/test/resources/samples/1.22/containers/json/filter1.json b/docker-java/src/test/resources/samples/1.22/containers/json/filter1.json
index 159e62da69..51329bb631 100644
--- a/docker-java/src/test/resources/samples/1.22/containers/json/filter1.json
+++ b/docker-java/src/test/resources/samples/1.22/containers/json/filter1.json
@@ -10,6 +10,7 @@
"Created": 1455662451,
"Ports": [],
"SizeRootFs": 1113554,
+ "SizeRw": 0,
"Labels": {},
"Status": "Up Less than a second",
"HostConfig": {
From a437d0e0670069c40518ea9fe730f709c121f031 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 26 Oct 2023 19:24:38 -0600
Subject: [PATCH 040/163] Bump com.github.siom79.japicmp:japicmp-maven-plugin
(#2226)
Bumps [com.github.siom79.japicmp:japicmp-maven-plugin](https://github.com/siom79/japicmp) from 0.15.4 to 0.18.2.
- [Release notes](https://github.com/siom79/japicmp/releases)
- [Changelog](https://github.com/siom79/japicmp/blob/master/release.py)
- [Commits](https://github.com/siom79/japicmp/compare/japicmp-base-0.15.4...japicmp-base-0.18.2)
---
updated-dependencies:
- dependency-name: com.github.siom79.japicmp:japicmp-maven-plugin
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 1538bb3a5c..3276120455 100644
--- a/pom.xml
+++ b/pom.xml
@@ -243,7 +243,7 @@
com.github.siom79.japicmpjapicmp-maven-plugin
- 0.15.4
+ 0.18.2
From 8a840511ad9417d71e8293ba04310fb92d5e87eb Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 26 Oct 2023 19:24:54 -0600
Subject: [PATCH 041/163] Bump org.testcontainers:testcontainers from 1.16.3 to
1.19.1 (#2218)
Bumps [org.testcontainers:testcontainers](https://github.com/testcontainers/testcontainers-java) from 1.16.3 to 1.19.1.
- [Release notes](https://github.com/testcontainers/testcontainers-java/releases)
- [Changelog](https://github.com/testcontainers/testcontainers-java/blob/main/CHANGELOG.md)
- [Commits](https://github.com/testcontainers/testcontainers-java/compare/1.16.3...1.19.1)
---
updated-dependencies:
- dependency-name: org.testcontainers:testcontainers
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
docker-java-transport-tck/pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docker-java-transport-tck/pom.xml b/docker-java-transport-tck/pom.xml
index 491b42bc90..2e4bd79ce0 100644
--- a/docker-java-transport-tck/pom.xml
+++ b/docker-java-transport-tck/pom.xml
@@ -46,7 +46,7 @@
org.testcontainerstestcontainers
- 1.16.3
+ 1.19.1
From 278a3ac6428ae88b652d7e2dab2db12354af4f3f Mon Sep 17 00:00:00 2001
From: Clayton Walker
Date: Fri, 27 Oct 2023 12:58:03 -0600
Subject: [PATCH 042/163] Replace deprecated match methods (#2189)
---
.../dockerjava/cmd/ListContainersCmdIT.java | 19 ++++++++++---------
1 file changed, 10 insertions(+), 9 deletions(-)
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 c03df2a557..30667671f6 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
@@ -26,11 +26,12 @@
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.hasItem;
+import static org.hamcrest.Matchers.hasSize;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.emptyString;
-import static org.hamcrest.Matchers.isOneOf;
import static org.hamcrest.Matchers.not;
import static org.hamcrest.Matchers.notNullValue;
+import static org.hamcrest.Matchers.oneOf;
import static org.hamcrest.Matchers.startsWith;
import static org.junit.Assert.assertEquals;
import static org.testinfected.hamcrest.jpa.PersistenceMatchers.hasField;
@@ -161,8 +162,8 @@ public void testNameFilter() {
.exec();
assertThat(filteredContainers.size(), is(2));
- assertThat(filteredContainers.get(0).getId(), isOneOf(id1, id2));
- assertThat(filteredContainers.get(1).getId(), isOneOf(id1, id2));
+ assertThat(filteredContainers.get(0).getId(), is(oneOf(id1, id2)));
+ assertThat(filteredContainers.get(1).getId(), is(oneOf(id1, id2)));
}
@Test
@@ -184,8 +185,8 @@ public void testIdsFilter() {
.exec();
assertThat(filteredContainers.size(), is(2));
- assertThat(filteredContainers.get(0).getId(), isOneOf(id1, id2));
- assertThat(filteredContainers.get(1).getId(), isOneOf(id1, id2));
+ assertThat(filteredContainers.get(0).getId(), is(oneOf(id1, id2)));
+ assertThat(filteredContainers.get(1).getId(), is(oneOf(id1, id2)));
}
@Test
@@ -219,7 +220,7 @@ public void shouldFilterByRunningStatus() {
.withStatusFilter(singletonList("running"))
.exec();
- assertThat(filteredContainers.size(), is(1));
+ assertThat(filteredContainers, hasSize(1));
assertThat(filteredContainers.get(0).getId(), is(containerId));
}
@@ -239,7 +240,7 @@ public void shouldFilterByPausedStatus() {
.withStatusFilter(singletonList("paused"))
.exec();
- assertThat(filteredContainers.size(), is(1));
+ assertThat(filteredContainers, hasSize(1));
assertThat(filteredContainers.get(0).getId(), is(containerId));
}
@@ -260,7 +261,7 @@ public void shouldFilterByExitedStatus() throws InterruptedException {
.withStatusFilter(singletonList("exited"))
.exec();
- assertThat(filteredContainers.size(), is(1));
+ assertThat(filteredContainers, hasSize(1));
assertThat(filteredContainers.get(0).getId(), is(containerId));
}
@@ -289,7 +290,7 @@ public void testVolumeFilter() {
.withVolumeFilter(singletonList("TestFilterVolume"))
.exec();
- assertThat(filteredContainers.size(), is(1));
+ assertThat(filteredContainers, hasSize(1));
assertThat(filteredContainers.get(0).getId(), is(id));
}
From fd5da167a4cd437e51b7fcda1a6ab63a31c59185 Mon Sep 17 00:00:00 2001
From: Maksim Dimukhametov
Date: Fri, 27 Oct 2023 23:49:35 +0200
Subject: [PATCH 043/163] Add signal query argument for Restart Container
command (#2186)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Co-authored-by: Eddú Meléndez Gonzales
---
.../api/command/RestartContainerCmd.java | 16 ++++---
.../dockerjava/core/RemoteApiVersion.java | 2 +
.../core/command/RestartContainerCmdImpl.java | 28 +++++++++---
.../core/exec/RestartContainerCmdExec.java | 4 ++
.../cmd/RestartContainerCmdImplIT.java | 43 ++++++++++++++++++-
5 files changed, 82 insertions(+), 11 deletions(-)
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/RestartContainerCmd.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/RestartContainerCmd.java
index 5f60f11259..3724568139 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/command/RestartContainerCmd.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/RestartContainerCmd.java
@@ -8,9 +8,8 @@
/**
* Restart a running container.
*
- * @param timeout
- * - Timeout in seconds before killing the container. Defaults to 10 seconds.
- *
+ * @param signal - Signal to send to the container as an integer or string (e.g. SIGINT).
+ * @param timeout - Timeout in seconds before killing the container. Defaults to 10 seconds.
*/
public interface RestartContainerCmd extends SyncDockerCmd {
@@ -20,6 +19,12 @@ public interface RestartContainerCmd extends SyncDockerCmd {
@CheckForNull
Integer getTimeout();
+ /**
+ * @since {@link com.github.dockerjava.core.RemoteApiVersion#VERSION_1_42}
+ */
+ @CheckForNull
+ String getSignal();
+
RestartContainerCmd withContainerId(@Nonnull String containerId);
/**
@@ -32,9 +37,10 @@ default RestartContainerCmd withtTimeout(Integer timeout) {
RestartContainerCmd withTimeout(Integer timeout);
+ RestartContainerCmd withSignal(String signal);
+
/**
- * @throws NotFoundException
- * No such container
+ * @throws NotFoundException No such container
*/
@Override
Void exec() throws NotFoundException;
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/RemoteApiVersion.java b/docker-java-core/src/main/java/com/github/dockerjava/core/RemoteApiVersion.java
index a38930cb3d..57b15b240f 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/RemoteApiVersion.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/RemoteApiVersion.java
@@ -91,6 +91,8 @@ public class RemoteApiVersion implements Serializable {
public static final RemoteApiVersion VERSION_1_37 = RemoteApiVersion.create(1, 37);
public static final RemoteApiVersion VERSION_1_38 = RemoteApiVersion.create(1, 38);
public static final RemoteApiVersion VERSION_1_40 = RemoteApiVersion.create(1, 40);
+ public static final RemoteApiVersion VERSION_1_41 = RemoteApiVersion.create(1, 41);
+ public static final RemoteApiVersion VERSION_1_42 = RemoteApiVersion.create(1, 42);
/**
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/RestartContainerCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/RestartContainerCmdImpl.java
index 03454d6a86..3b1df465b9 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/RestartContainerCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/RestartContainerCmdImpl.java
@@ -7,12 +7,13 @@
import com.github.dockerjava.api.command.RestartContainerCmd;
import com.github.dockerjava.api.exception.NotFoundException;
+import javax.annotation.CheckForNull;
+
/**
* Restart a running container.
*
- * @param timeout
- * - Timeout in seconds before killing the container. Defaults to 10 seconds.
- *
+ * @param signal - Signal to send to the container as an integer or string (e.g. SIGINT).
+ * @param timeout - Timeout in seconds before killing the container. Defaults to 10 seconds.
*/
public class RestartContainerCmdImpl extends AbstrDockerCmd implements RestartContainerCmd {
@@ -20,6 +21,8 @@ public class RestartContainerCmdImpl extends AbstrDockerCmd= 1.42", dockerRule, isGreaterOrEqual(RemoteApiVersion.VERSION_1_42));
+
+ DefaultDockerClientConfig dockerClientConfig = DefaultDockerClientConfig.createDefaultConfigBuilder()
+ .withApiVersion(RemoteApiVersion.VERSION_1_42)
+ .withRegistryUrl("https://index.docker.io/v1/")
+ .build();
+ try (DockerClient dockerClient = createDockerClient(dockerClientConfig)) {
+ String expectedUserSignal = "10";
+ String initialCommandWithTrap = "trap 'echo \"exit trapped\"' %s; sleep 9999;";
+ final String containerId = dockerClient
+ .createContainerCmd(DEFAULT_IMAGE)
+ .withCmd(
+ "/bin/sh",
+ "-c",
+ String.format(initialCommandWithTrap, expectedUserSignal))
+ .exec()
+ .getId();
+ assertThat(containerId, not(is(emptyString())));
+ dockerClient.startContainerCmd(containerId).exec();
+
+ // Restart container without signal
+ dockerClient.restartContainerCmd(containerId).exec();
+ String log = dockerRule.containerLog(containerId);
+ assertThat(log.trim(), emptyString());
+
+ dockerClient.restartContainerCmd(containerId).withSignal(expectedUserSignal).exec();
+ log = dockerRule.containerLog(containerId);
+ assertThat(log.trim(), is("exit trapped"));
+
+ dockerClient.removeContainerCmd(containerId).withForce(true).withRemoveVolumes(true).exec();
+ }
+ }
+
@Test(expected = NotFoundException.class)
public void restartNonExistingContainer() throws DockerException {
From 84d7750d7f290c66f0ae18c88ab92a3cde2c804d Mon Sep 17 00:00:00 2001
From: Lars <60571459+LarsSven@users.noreply.github.com>
Date: Tue, 19 Dec 2023 23:57:02 +0100
Subject: [PATCH 044/163] Use long rather than int for sizeRw and sizeRootFs
(#2230)
Fixes #2237
---
.../dockerjava/api/command/InspectContainerResponse.java | 8 ++++----
.../com/github/dockerjava/cmd/InspectContainerCmdIT.java | 4 ++--
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/InspectContainerResponse.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/InspectContainerResponse.java
index 94207fd2ca..f06bd4ed94 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/command/InspectContainerResponse.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/InspectContainerResponse.java
@@ -61,10 +61,10 @@ public class InspectContainerResponse extends DockerObject {
private String id;
@JsonProperty("SizeRootFs")
- private Integer sizeRootFs;
+ private Long sizeRootFs;
@JsonProperty("SizeRw")
- private Integer sizeRw;
+ private Long sizeRw;
@JsonProperty("Image")
private String imageId;
@@ -124,11 +124,11 @@ public String getId() {
return id;
}
- public Integer getSizeRootFs() {
+ public Long getSizeRootFs() {
return sizeRootFs;
}
- public Integer getSizeRw() {
+ public Long getSizeRw() {
return sizeRw;
}
diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/InspectContainerCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/InspectContainerCmdIT.java
index 54d900db8b..22ccd577bf 100644
--- a/docker-java/src/test/java/com/github/dockerjava/cmd/InspectContainerCmdIT.java
+++ b/docker-java/src/test/java/com/github/dockerjava/cmd/InspectContainerCmdIT.java
@@ -100,9 +100,9 @@ public void inspectContainerWithSize() throws DockerException {
// TODO check swarm
if (isNotSwarm(dockerRule.getClient())) {
assertNotNull(containerInfo.getSizeRootFs());
- assertTrue(containerInfo.getSizeRootFs().intValue() > 0);
+ assertTrue(containerInfo.getSizeRootFs().longValue() > 0L);
assertNotNull(containerInfo.getSizeRw());
- assertTrue(containerInfo.getSizeRw().intValue() == 0);
+ assertTrue(containerInfo.getSizeRw().longValue() == 0L);
}
}
From b56497a01b50aaacb73cb34aa8de9f2d2fb0f780 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Edd=C3=BA=20Mel=C3=A9ndez=20Gonzales?=
Date: Thu, 1 Feb 2024 19:02:17 -0500
Subject: [PATCH 045/163] Ignore LogSwarmObjectIT#testLogsCmd (#2280)
---
.../java/com/github/dockerjava/cmd/swarm/LogSwarmObjectIT.java | 3 +++
1 file changed, 3 insertions(+)
diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/swarm/LogSwarmObjectIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/swarm/LogSwarmObjectIT.java
index ddaf86fb64..11606dce0a 100644
--- a/docker-java/src/test/java/com/github/dockerjava/cmd/swarm/LogSwarmObjectIT.java
+++ b/docker-java/src/test/java/com/github/dockerjava/cmd/swarm/LogSwarmObjectIT.java
@@ -12,6 +12,7 @@
import com.github.dockerjava.api.model.TaskSpec;
import com.github.dockerjava.api.model.TaskState;
import com.github.dockerjava.utils.LogContainerTestCallback;
+import org.junit.Ignore;
import org.junit.Test;
import java.io.IOException;
@@ -25,6 +26,8 @@
import static org.hamcrest.core.Is.is;
public class LogSwarmObjectIT extends SwarmCmdIT {
+
+ @Ignore
@Test
public void testLogsCmd() throws InterruptedException, IOException {
DockerClient dockerClient = startSwarm();
From 1c6fcdbce655bc60c5fe291465809934b1b4ac76 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Edd=C3=BA=20Mel=C3=A9ndez=20Gonzales?=
Date: Thu, 1 Feb 2024 19:11:34 -0500
Subject: [PATCH 046/163] Enable japicmp in docker-java-api module (#2279)
* Enable japicmp in docker-java-api
* Revert "Use long rather than int for sizeRw and sizeRootFs (#2230)"
This reverts commit 84d7750d7f290c66f0ae18c88ab92a3cde2c804d.
---
docker-java-api/pom.xml | 4 ++++
.../dockerjava/api/command/InspectContainerResponse.java | 8 ++++----
.../com/github/dockerjava/cmd/InspectContainerCmdIT.java | 4 ++--
pom.xml | 4 ++--
4 files changed, 12 insertions(+), 8 deletions(-)
diff --git a/docker-java-api/pom.xml b/docker-java-api/pom.xml
index f49e7723f2..da19bba477 100644
--- a/docker-java-api/pom.xml
+++ b/docker-java-api/pom.xml
@@ -81,6 +81,10 @@
+
+ com.github.siom79.japicmp
+ japicmp-maven-plugin
+
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/InspectContainerResponse.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/InspectContainerResponse.java
index f06bd4ed94..94207fd2ca 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/command/InspectContainerResponse.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/InspectContainerResponse.java
@@ -61,10 +61,10 @@ public class InspectContainerResponse extends DockerObject {
private String id;
@JsonProperty("SizeRootFs")
- private Long sizeRootFs;
+ private Integer sizeRootFs;
@JsonProperty("SizeRw")
- private Long sizeRw;
+ private Integer sizeRw;
@JsonProperty("Image")
private String imageId;
@@ -124,11 +124,11 @@ public String getId() {
return id;
}
- public Long getSizeRootFs() {
+ public Integer getSizeRootFs() {
return sizeRootFs;
}
- public Long getSizeRw() {
+ public Integer getSizeRw() {
return sizeRw;
}
diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/InspectContainerCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/InspectContainerCmdIT.java
index 22ccd577bf..54d900db8b 100644
--- a/docker-java/src/test/java/com/github/dockerjava/cmd/InspectContainerCmdIT.java
+++ b/docker-java/src/test/java/com/github/dockerjava/cmd/InspectContainerCmdIT.java
@@ -100,9 +100,9 @@ public void inspectContainerWithSize() throws DockerException {
// TODO check swarm
if (isNotSwarm(dockerRule.getClient())) {
assertNotNull(containerInfo.getSizeRootFs());
- assertTrue(containerInfo.getSizeRootFs().longValue() > 0L);
+ assertTrue(containerInfo.getSizeRootFs().intValue() > 0);
assertNotNull(containerInfo.getSizeRw());
- assertTrue(containerInfo.getSizeRw().longValue() == 0L);
+ assertTrue(containerInfo.getSizeRw().intValue() == 0);
}
}
diff --git a/pom.xml b/pom.xml
index 3276120455..3ada795550 100644
--- a/pom.xml
+++ b/pom.xml
@@ -243,13 +243,13 @@
com.github.siom79.japicmpjapicmp-maven-plugin
- 0.18.2
+ 0.18.3com.github.docker-java${project.artifactId}
- 3.2.0
+ 3.3.4jar
From 7957a142809184817483aaebd2eb03398f0e6394 Mon Sep 17 00:00:00 2001
From: Henri Tremblay
Date: Thu, 1 Feb 2024 19:12:11 -0500
Subject: [PATCH 047/163] Add StartInterval to health check since it will be
supported by the 1.44 docker API (#2244)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Co-authored-by: Eddú Meléndez
---
.gitignore | 1 +
.../dockerjava/api/model/HealthCheck.java | 19 ++++
.../dockerjava/core/RemoteApiVersion.java | 2 +
.../github/dockerjava/cmd/HealthCmdIT.java | 88 +++++++++++++++++++
4 files changed, 110 insertions(+)
create mode 100644 docker-java/src/test/java/com/github/dockerjava/cmd/HealthCmdIT.java
diff --git a/.gitignore b/.gitignore
index 201acaa5fc..006641e8c1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -10,6 +10,7 @@
# Ignore all build/dist directories
target
+dependency-reduced-pom.xml
# Ignore InteliJ Idea project files
.idea/
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/HealthCheck.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/HealthCheck.java
index 6c8d425e11..0e41b873f0 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/HealthCheck.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/HealthCheck.java
@@ -55,6 +55,12 @@ public class HealthCheck extends DockerObject implements Serializable {
@JsonProperty("StartPeriod")
private Long startPeriod;
+ /**
+ * @since 1.44
+ */
+ @JsonProperty("StartInterval")
+ private Long startInterval;
+
public Long getInterval() {
return interval;
}
@@ -111,4 +117,17 @@ public HealthCheck withStartPeriod(Long startPeriod) {
this.startPeriod = startPeriod;
return this;
}
+
+ public Long getStartInterval() {
+ return startInterval;
+ }
+
+ /**
+ * Set startInterval in nanoseconds
+ * @return this {@link HealthCheck} instance
+ */
+ public HealthCheck withStartInterval(Long startInterval) {
+ this.startInterval = startInterval;
+ return this;
+ }
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/RemoteApiVersion.java b/docker-java-core/src/main/java/com/github/dockerjava/core/RemoteApiVersion.java
index 57b15b240f..373a673322 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/RemoteApiVersion.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/RemoteApiVersion.java
@@ -93,6 +93,8 @@ public class RemoteApiVersion implements Serializable {
public static final RemoteApiVersion VERSION_1_40 = RemoteApiVersion.create(1, 40);
public static final RemoteApiVersion VERSION_1_41 = RemoteApiVersion.create(1, 41);
public static final RemoteApiVersion VERSION_1_42 = RemoteApiVersion.create(1, 42);
+ public static final RemoteApiVersion VERSION_1_43 = RemoteApiVersion.create(1, 43);
+ public static final RemoteApiVersion VERSION_1_44 = RemoteApiVersion.create(1, 44);
/**
diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/HealthCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/HealthCmdIT.java
new file mode 100644
index 0000000000..bdca275723
--- /dev/null
+++ b/docker-java/src/test/java/com/github/dockerjava/cmd/HealthCmdIT.java
@@ -0,0 +1,88 @@
+package com.github.dockerjava.cmd;
+
+import com.github.dockerjava.api.command.CreateContainerResponse;
+import com.github.dockerjava.api.command.HealthStateLog;
+import com.github.dockerjava.api.command.InspectContainerResponse;
+import com.github.dockerjava.api.model.HealthCheck;
+import com.github.dockerjava.core.RemoteApiVersion;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.time.ZonedDateTime;
+import java.time.temporal.ChronoUnit;
+import java.util.Arrays;
+import java.util.List;
+import java.util.concurrent.TimeUnit;
+
+import static com.github.dockerjava.junit.DockerMatchers.isGreaterOrEqual;
+import static org.awaitility.Awaitility.await;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.emptyString;
+import static org.hamcrest.Matchers.equalTo;
+import static org.hamcrest.Matchers.greaterThanOrEqualTo;
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.not;
+import static org.junit.Assume.assumeThat;
+
+public class HealthCmdIT extends CmdIT {
+ private final Logger LOG = LoggerFactory.getLogger(HealthCmdIT.class);
+
+ @Test
+ public void healthiness() {
+ CreateContainerResponse container = dockerRule.getClient().createContainerCmd("busybox")
+ .withCmd("nc", "-l", "-p", "8080")
+ .withHealthcheck(new HealthCheck()
+ .withTest(Arrays.asList("CMD", "sh", "-c", "netstat -ltn | grep 8080"))
+ .withInterval(TimeUnit.SECONDS.toNanos(1))
+ .withTimeout(TimeUnit.MINUTES.toNanos(1))
+ .withStartPeriod(TimeUnit.SECONDS.toNanos(30))
+ .withRetries(10))
+ .exec();
+
+ LOG.info("Created container: {}", container.toString());
+ assertThat(container.getId(), not(is(emptyString())));
+ dockerRule.getClient().startContainerCmd(container.getId()).exec();
+
+ await().atMost(60L, TimeUnit.SECONDS).untilAsserted(
+ () -> {
+ InspectContainerResponse inspectContainerResponse = dockerRule.getClient().inspectContainerCmd(container.getId()).exec();
+ assertThat(inspectContainerResponse.getState().getHealth().getStatus(), is(equalTo("healthy")));
+ }
+ );
+ }
+
+ @Test
+ public void healthiness_startInterval() {
+ assumeThat("API version should be >= 1.44", dockerRule, isGreaterOrEqual(RemoteApiVersion.VERSION_1_44));
+
+ CreateContainerResponse container = dockerRule.getClient().createContainerCmd("busybox")
+ .withCmd("nc", "-l", "-p", "8080")
+ .withHealthcheck(new HealthCheck()
+ .withTest(Arrays.asList("CMD", "sh", "-c", "netstat -ltn | grep 8080"))
+ .withInterval(TimeUnit.SECONDS.toNanos(5))
+ .withTimeout(TimeUnit.MINUTES.toNanos(1))
+ .withStartPeriod(TimeUnit.SECONDS.toNanos(2))
+ .withStartInterval(TimeUnit.SECONDS.toNanos(1))
+ .withRetries(10))
+ .exec();
+
+ LOG.info("Created container: {}", container.toString());
+ assertThat(container.getId(), not(is(emptyString())));
+ dockerRule.getClient().startContainerCmd(container.getId()).exec();
+
+ await().atMost(60L, TimeUnit.SECONDS).untilAsserted(
+ () -> {
+ InspectContainerResponse inspectContainerResponse = dockerRule.getClient().inspectContainerCmd(container.getId()).exec();
+ List healthStateLogs = inspectContainerResponse.getState().getHealth().getLog();
+ assertThat(healthStateLogs.size(), is(greaterThanOrEqualTo(2)));
+ healthStateLogs.forEach(log -> LOG.info("Health log: {}", log.getStart()));
+ HealthStateLog log1 = healthStateLogs.get(healthStateLogs.size() - 1);
+ HealthStateLog log2 = healthStateLogs.get(healthStateLogs.size() - 2);
+ long diff = ChronoUnit.NANOS.between(ZonedDateTime.parse(log2.getStart()), ZonedDateTime.parse(log1.getStart()));
+ assertThat(diff, is(greaterThanOrEqualTo(inspectContainerResponse.getConfig().getHealthcheck().getInterval())));
+ }
+ );
+ }
+
+}
From 1bac81fa0afdae18d30bd62b1ba666375ee20147 Mon Sep 17 00:00:00 2001
From: Sylvere Richard
Date: Fri, 2 Feb 2024 01:12:57 +0100
Subject: [PATCH 048/163] Add missing states in ServiceUpdateState (#2292)
---
.../github/dockerjava/api/model/ServiceUpdateState.java | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ServiceUpdateState.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ServiceUpdateState.java
index e748bbd4a3..d22f8999e8 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ServiceUpdateState.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ServiceUpdateState.java
@@ -6,6 +6,9 @@
* @since {@link RemoteApiVersion#VERSION_1_24}
*/
public enum ServiceUpdateState {
+ @JsonProperty("unknown")
+ UNKNOWN,
+
@JsonProperty("updating")
UPDATING,
@@ -15,6 +18,12 @@ public enum ServiceUpdateState {
@JsonProperty("completed")
COMPLETED,
+ @JsonProperty("rollback_started")
+ ROLLBACK_STARTED,
+
+ @JsonProperty("rollback_paused")
+ ROLLBACK_PAUSED,
+
@JsonProperty("rollback_completed")
ROLLBACK_COMPLETED
}
From 129f7868a0463bad09f74dcfb26391b224be6784 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Edd=C3=BA=20Mel=C3=A9ndez=20Gonzales?=
Date: Mon, 19 Feb 2024 12:54:35 -0500
Subject: [PATCH 049/163] Update actions/checkout and actions/setup-java
version to v4 (#2309)
---
.github/workflows/ci.yml | 4 ++--
.github/workflows/release.yml | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 4f1ef43dee..dcfa853f29 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -17,9 +17,9 @@ jobs:
- { name: "Docker 19.03.9", dockerVersion: "5:19.03.9~3-0~ubuntu-focal", javaVersion: 8 }
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Set up JDK
- uses: actions/setup-java@v3
+ uses: actions/setup-java@v4
with:
java-version: ${{matrix.javaVersion}}
distribution: temurin
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 7ee1288012..ec59b2603e 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -10,9 +10,9 @@ jobs:
build:
runs-on: ubuntu-22.04
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Set up JDK 8
- uses: actions/setup-java@v3
+ uses: actions/setup-java@v4
with:
java-version: 8
distribution: temurin
From 4d8c436d6cbe312be22b157c3ebdb6eb973140ae Mon Sep 17 00:00:00 2001
From: Colin Alworth
Date: Mon, 26 Feb 2024 12:19:07 -0600
Subject: [PATCH 050/163] If BuildImage fails but logs something about success,
don't succeed (#2305)
This patch ensures that if the docker build commands result in logging
the string "Successfully built", the callback from that build will still
fail if there was an error in building.
Fixes #2184
---
.../api/command/BuildImageResultCallback.java | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/BuildImageResultCallback.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/BuildImageResultCallback.java
index 331f69509e..9db21a6c41 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/command/BuildImageResultCallback.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/BuildImageResultCallback.java
@@ -67,14 +67,14 @@ public String awaitImageId(long timeout, TimeUnit timeUnit) {
}
private String getImageId() {
- if (imageId != null) {
- return imageId;
+ if (error != null) {
+ throw new DockerClientException("Could not build image: " + error);
}
- if (error == null) {
- throw new DockerClientException("Could not build image");
+ if (imageId != null) {
+ return imageId;
}
- throw new DockerClientException("Could not build image: " + error);
+ throw new DockerClientException("Could not build image");
}
}
From 3514b3ba9c6d938e2a0435ad8d84905cb1cdfed1 Mon Sep 17 00:00:00 2001
From: Clayton Walker
Date: Mon, 26 Feb 2024 12:08:02 -0700
Subject: [PATCH 051/163] Remove exclusion and fix httpclient5 compatibility
(#2294)
Fixes #2290
---
docker-java-transport-httpclient5/pom.xml | 6 ------
.../ApacheDockerHttpClientImpl.java | 19 +++++++++++++++++--
2 files changed, 17 insertions(+), 8 deletions(-)
diff --git a/docker-java-transport-httpclient5/pom.xml b/docker-java-transport-httpclient5/pom.xml
index 4eb9f41df2..48b751d567 100644
--- a/docker-java-transport-httpclient5/pom.xml
+++ b/docker-java-transport-httpclient5/pom.xml
@@ -30,12 +30,6 @@
org.apache.httpcomponents.client5httpclient55.0.3
-
-
- org.apache.httpcomponents.core5
- httpcore5-h2
-
-
diff --git a/docker-java-transport-httpclient5/src/main/java/com/github/dockerjava/httpclient5/ApacheDockerHttpClientImpl.java b/docker-java-transport-httpclient5/src/main/java/com/github/dockerjava/httpclient5/ApacheDockerHttpClientImpl.java
index 93677bd366..4820c65e50 100644
--- a/docker-java-transport-httpclient5/src/main/java/com/github/dockerjava/httpclient5/ApacheDockerHttpClientImpl.java
+++ b/docker-java-transport-httpclient5/src/main/java/com/github/dockerjava/httpclient5/ApacheDockerHttpClientImpl.java
@@ -38,6 +38,7 @@
import javax.net.ssl.SSLContext;
import java.io.IOException;
import java.io.InputStream;
+import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.URI;
import java.time.Duration;
@@ -147,17 +148,31 @@ private Registry createConnectionSocketFactoryRegistry(
return socketFactoryRegistryBuilder
.register("tcp", PlainConnectionSocketFactory.INSTANCE)
.register("http", PlainConnectionSocketFactory.INSTANCE)
- .register("unix", new PlainConnectionSocketFactory() {
+ .register("unix", new ConnectionSocketFactory() {
@Override
public Socket createSocket(HttpContext context) throws IOException {
return UnixSocket.get(dockerHost.getPath());
}
+
+ @Override
+ public Socket connectSocket(TimeValue timeValue, Socket socket, HttpHost httpHost, InetSocketAddress inetSocketAddress,
+ InetSocketAddress inetSocketAddress1, HttpContext httpContext) throws IOException {
+ return PlainConnectionSocketFactory.INSTANCE.connectSocket(timeValue, socket, httpHost, inetSocketAddress,
+ inetSocketAddress1, httpContext);
+ }
})
- .register("npipe", new PlainConnectionSocketFactory() {
+ .register("npipe", new ConnectionSocketFactory() {
@Override
public Socket createSocket(HttpContext context) {
return new NamedPipeSocket(dockerHost.getPath());
}
+
+ @Override
+ public Socket connectSocket(TimeValue timeValue, Socket socket, HttpHost httpHost, InetSocketAddress inetSocketAddress,
+ InetSocketAddress inetSocketAddress1, HttpContext httpContext) throws IOException {
+ return PlainConnectionSocketFactory.INSTANCE.connectSocket(timeValue, socket, httpHost, inetSocketAddress,
+ inetSocketAddress1, httpContext);
+ }
})
.build();
}
From 4f6c5937983ff4ae7cc82bead44afe3afee4d0ed Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Edd=C3=BA=20Mel=C3=A9ndez=20Gonzales?=
Date: Mon, 26 Feb 2024 14:11:30 -0500
Subject: [PATCH 052/163] Test against Java 21 (#2304)
---
.github/workflows/ci.yml | 1 +
docker-java-api/pom.xml | 2 +-
docker-java/pom.xml | 2 +-
3 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index dcfa853f29..0335a352e6 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -13,6 +13,7 @@ jobs:
include:
- { name: "default", javaVersion: 8 }
- { name: "default", javaVersion: 17 }
+ - { name: "default", javaVersion: 21 }
- { name: "over TCP", dockerHost: "tcp://127.0.0.1:2375", javaVersion: 8 }
- { name: "Docker 19.03.9", dockerVersion: "5:19.03.9~3-0~ubuntu-focal", javaVersion: 8 }
diff --git a/docker-java-api/pom.xml b/docker-java-api/pom.xml
index da19bba477..82d176e38f 100644
--- a/docker-java-api/pom.xml
+++ b/docker-java-api/pom.xml
@@ -42,7 +42,7 @@
org.projectlomboklombok
- 1.18.22
+ 1.18.30provided
diff --git a/docker-java/pom.xml b/docker-java/pom.xml
index 39e1b1b65b..e3c3690f13 100644
--- a/docker-java/pom.xml
+++ b/docker-java/pom.xml
@@ -141,7 +141,7 @@
org.projectlomboklombok
- 1.18.22
+ 1.18.30provided
From b29527510d9f7c16b30b138ae4a2f6703d88bb01 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Edd=C3=BA=20Mel=C3=A9ndez=20Gonzales?=
Date: Mon, 26 Feb 2024 18:30:42 -0500
Subject: [PATCH 053/163] Add `Runtimes` to `Info` response (#2311)
---
.../com/github/dockerjava/api/model/Info.java | 10 ++++++++
.../dockerjava/api/model/RuntimeInfo.java | 23 +++++++++++++++++++
.../com/github/dockerjava/cmd/InfoCmdIT.java | 1 +
3 files changed, 34 insertions(+)
create mode 100644 docker-java-api/src/main/java/com/github/dockerjava/api/model/RuntimeInfo.java
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Info.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Info.java
index 0752778e3d..c436e73918 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Info.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Info.java
@@ -235,6 +235,9 @@ public class Info extends DockerObject implements Serializable {
@JsonProperty("SecurityOptions")
private List securityOptions;
+ @JsonProperty("Runtimes")
+ private Map runtimes;
+
/**
* @see #architecture
*/
@@ -1070,4 +1073,11 @@ public Info withIsolation(String isolation) {
public List getSecurityOptions() {
return securityOptions;
}
+
+ /**
+ * @see #runtimes
+ */
+ public Map getRuntimes() {
+ return runtimes;
+ }
}
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/RuntimeInfo.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/RuntimeInfo.java
new file mode 100644
index 0000000000..c64511cda1
--- /dev/null
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/RuntimeInfo.java
@@ -0,0 +1,23 @@
+package com.github.dockerjava.api.model;
+
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+
+import java.io.Serializable;
+
+@EqualsAndHashCode
+@ToString
+public class RuntimeInfo extends DockerObject implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ private String path;
+
+ public String getPath() {
+ return path;
+ }
+
+ public void setPath(String path) {
+ this.path = path;
+ }
+
+}
diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/InfoCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/InfoCmdIT.java
index d7917326b3..74fc2cbdaf 100644
--- a/docker-java/src/test/java/com/github/dockerjava/cmd/InfoCmdIT.java
+++ b/docker-java/src/test/java/com/github/dockerjava/cmd/InfoCmdIT.java
@@ -48,6 +48,7 @@ public void infoTest() throws DockerException {
assertThat(dockerInfo.getImages(), notNullValue());
assertThat(dockerInfo.getImages(), greaterThan(0));
assertThat(dockerInfo.getDebug(), notNullValue());
+ assertThat(dockerInfo.getRuntimes(), notNullValue());
if (isNotSwarm(dockerClient)) {
assertThat(dockerInfo.getNFd(), greaterThan(0));
From f146f9696db7b4d4180d95677a879f8597d34ed8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Edd=C3=BA=20Mel=C3=A9ndez=20Gonzales?=
Date: Tue, 9 Jul 2024 11:39:37 -0600
Subject: [PATCH 054/163] Update images (#2346)
---
.../java/com/github/dockerjava/cmd/ListContainersCmdIT.java | 4 ++--
.../test/java/com/github/dockerjava/cmd/PullImageCmdIT.java | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
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 30667671f6..3490924c75 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 539a2b6066..3b8dde3ff2 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);
From b28b0dc267bc3ab9feb5645957311e5fa42ce94e Mon Sep 17 00:00:00 2001
From: Niklas Gehlen
Date: Tue, 9 Jul 2024 22:05:48 +0200
Subject: [PATCH 055/163] Consider already existing images as successful pull
(#2335)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Co-authored-by: Eddú Meléndez Gonzales
---
.../com/github/dockerjava/api/model/PullResponseItem.java | 5 ++++-
.../github/dockerjava/api/model/PullResponseItemTest.java | 8 ++++++++
.../dockerjava/api/model/PullResponseJSONSamples.java | 4 +++-
.../api/model/pullImageResponse_alreadyExists.json | 1 +
4 files changed, 16 insertions(+), 2 deletions(-)
create mode 100644 docker-java/src/test/resources/com/github/dockerjava/api/model/pullImageResponse_alreadyExists.json
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 66a5599341..1d3f33c8e2 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/src/test/java/com/github/dockerjava/api/model/PullResponseItemTest.java b/docker-java/src/test/java/com/github/dockerjava/api/model/PullResponseItemTest.java
index 486badd553..f730368649 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 31cdf0f3b5..4997a390ab 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/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 0000000000..ae318e29d1
--- /dev/null
+++ b/docker-java/src/test/resources/com/github/dockerjava/api/model/pullImageResponse_alreadyExists.json
@@ -0,0 +1 @@
+{"status":"Already exists"}
From 242c76ae01aea5c965ee5f1037ba84bafb84015c Mon Sep 17 00:00:00 2001
From: Juan Manuel Olle
Date: Tue, 9 Jul 2024 17:16:04 -0300
Subject: [PATCH 056/163] Add Network create attribute (#2344)
---
.../java/com/github/dockerjava/api/model/Network.java | 8 ++++++++
.../com/github/dockerjava/cmd/CreateNetworkCmdIT.java | 3 +++
.../com/github/dockerjava/cmd/InspectNetworkCmdIT.java | 2 ++
3 files changed, 13 insertions(+)
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 7e5110ce6a..7e9d3b2fd5 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/src/test/java/com/github/dockerjava/cmd/CreateNetworkCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/CreateNetworkCmdIT.java
index deb8a4718f..d60425a2aa 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 eca86497df..035d3d7673 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));
}
}
From f14cff90924f7aa5bf570ab49e6e91532ba8a362 Mon Sep 17 00:00:00 2001
From: Holger Stolzenberg
Date: Wed, 10 Jul 2024 19:26:49 +0200
Subject: [PATCH 057/163] Add -parameters option for compilation of project
(#2317)
Fixes #2316
---
docker-java-core/pom.xml | 1 +
pom.xml | 1 +
2 files changed, 2 insertions(+)
diff --git a/docker-java-core/pom.xml b/docker-java-core/pom.xml
index b8369fa372..290a1fed94 100644
--- a/docker-java-core/pom.xml
+++ b/docker-java-core/pom.xml
@@ -99,6 +99,7 @@
88
+ true
diff --git a/pom.xml b/pom.xml
index 3ada795550..f58a3d448a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -148,6 +148,7 @@
${jdk.target}${jdk.debug}${jdk.optimize}
+ true
From a1393bf2e1265ba1e6eca4240af55396852f8a7c Mon Sep 17 00:00:00 2001
From: Torsten Krah
Date: Thu, 11 Jul 2024 19:03:02 +0200
Subject: [PATCH 058/163] Enable protocol configuration of SSLContext (#2337)
Fixes #2332
---
.../com/github/dockerjava/core/LocalDirectorySSLConfig.java | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
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 665f48f064..0f50f561db 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;
From 818eedb754375e6705d9f2ec124f5b2ccdefa059 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Edd=C3=BA=20Mel=C3=A9ndez?=
Date: Tue, 10 Dec 2024 15:56:16 -0600
Subject: [PATCH 059/163] Rename main workflow to release-drafter
---
.github/workflows/{main.yml => release-drafter.yml} | 0
1 file changed, 0 insertions(+), 0 deletions(-)
rename .github/workflows/{main.yml => release-drafter.yml} (100%)
diff --git a/.github/workflows/main.yml b/.github/workflows/release-drafter.yml
similarity index 100%
rename from .github/workflows/main.yml
rename to .github/workflows/release-drafter.yml
From 996f206602bae64d9e2e3f31caf4c0d9ad656776 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Edd=C3=BA=20Mel=C3=A9ndez?=
Date: Tue, 10 Dec 2024 15:56:33 -0600
Subject: [PATCH 060/163] Allow to start workflow manually
---
.github/workflows/ci.yml | 1 +
1 file changed, 1 insertion(+)
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 0335a352e6..03cc0034df 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -3,6 +3,7 @@ name: CI
on:
pull_request: {}
push: { branches: [ main ] }
+ workflow_dispatch:
jobs:
build:
From fc505c1f0f1de7c180e5ec9532ebf2b8585afe3b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Edd=C3=BA=20Mel=C3=A9ndez=20Gonzales?=
Date: Tue, 10 Dec 2024 19:21:05 -0500
Subject: [PATCH 061/163] Fix restart test (#2375)
---
.../com/github/dockerjava/cmd/RestartContainerCmdImplIT.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/RestartContainerCmdImplIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/RestartContainerCmdImplIT.java
index ac24152815..bdf309dc21 100644
--- a/docker-java/src/test/java/com/github/dockerjava/cmd/RestartContainerCmdImplIT.java
+++ b/docker-java/src/test/java/com/github/dockerjava/cmd/RestartContainerCmdImplIT.java
@@ -60,7 +60,7 @@ public void restartContainerWithSignal() throws Exception {
.build();
try (DockerClient dockerClient = createDockerClient(dockerClientConfig)) {
String expectedUserSignal = "10";
- String initialCommandWithTrap = "trap 'echo \"exit trapped\"' %s; sleep 9999;";
+ String initialCommandWithTrap = "trap 'echo \"exit trapped\"' %s; while :; do sleep 1; done";
final String containerId = dockerClient
.createContainerCmd(DEFAULT_IMAGE)
.withCmd(
From 61dc04260a67e134aa76777d7db5988e7647893f Mon Sep 17 00:00:00 2001
From: Lars <60571459+LarsSven@users.noreply.github.com>
Date: Wed, 11 Dec 2024 01:30:51 +0100
Subject: [PATCH 062/163] Add support for CgroupVersion and CgroupDriver
(#2360)
---
.../com/github/dockerjava/api/model/Info.java | 38 +++++++++++++++++++
1 file changed, 38 insertions(+)
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Info.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Info.java
index c436e73918..75afefd2b5 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Info.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Info.java
@@ -97,6 +97,12 @@ public class Info extends DockerObject implements Serializable {
@JsonProperty("LoggingDriver")
private String loggingDriver;
+ @JsonProperty("CgroupDriver")
+ private String cGroupDriver;
+
+ @JsonProperty("CgroupVersion")
+ private String cGroupVersion;
+
/**
* @since {@link com.github.dockerjava.core.RemoteApiVersion#VERSION_1_20}
*/
@@ -486,6 +492,22 @@ public String getLoggingDriver() {
return loggingDriver;
}
+ /**
+ * @see #cGroupDriver
+ */
+ @CheckForNull
+ public String getCGroupDriver() {
+ return cGroupDriver;
+ }
+
+ /**
+ * @see #cGroupVersion
+ */
+ @CheckForNull
+ public String getCGroupVersion() {
+ return cGroupVersion;
+ }
+
/**
* @see #loggingDriver
*/
@@ -494,6 +516,22 @@ public Info withLoggingDriver(String loggingDriver) {
return this;
}
+ /**
+ * @see #cGroupDriver
+ */
+ public Info withCGroupDriver(String cGroupDriver) {
+ this.cGroupDriver = cGroupDriver;
+ return this;
+ }
+
+ /**
+ * @see #cGroupVersion
+ */
+ public Info withCGroupVersion(String cGroupVersion) {
+ this.cGroupVersion = cGroupVersion;
+ return this;
+ }
+
/**
* @see #experimentalBuild
*/
From 721f09f4bf723de9d97ddc8d4a107928ceda50c6 Mon Sep 17 00:00:00 2001
From: Clayton Walker
Date: Wed, 11 Dec 2024 12:02:20 -0700
Subject: [PATCH 063/163] Don't swallow IOException caused by opening socket
(#2041)
Add additional context to socket exception
---
.../com/github/dockerjava/okhttp/UnixSocketFactory.java | 2 +-
.../java/com/github/dockerjava/transport/UnixSocket.java | 7 +++++--
2 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/docker-java-transport-okhttp/src/main/java/com/github/dockerjava/okhttp/UnixSocketFactory.java b/docker-java-transport-okhttp/src/main/java/com/github/dockerjava/okhttp/UnixSocketFactory.java
index dc19b13518..d25bcb3d33 100644
--- a/docker-java-transport-okhttp/src/main/java/com/github/dockerjava/okhttp/UnixSocketFactory.java
+++ b/docker-java-transport-okhttp/src/main/java/com/github/dockerjava/okhttp/UnixSocketFactory.java
@@ -20,7 +20,7 @@ public Socket createSocket() {
try {
return UnixSocket.get(socketPath);
} catch (IOException e) {
- throw new RuntimeException(e);
+ throw new RuntimeException("Failed create socket with path " + socketPath, e);
}
}
diff --git a/docker-java-transport/src/main/java/com/github/dockerjava/transport/UnixSocket.java b/docker-java-transport/src/main/java/com/github/dockerjava/transport/UnixSocket.java
index de447db61a..eb7a49b51a 100644
--- a/docker-java-transport/src/main/java/com/github/dockerjava/transport/UnixSocket.java
+++ b/docker-java-transport/src/main/java/com/github/dockerjava/transport/UnixSocket.java
@@ -3,6 +3,7 @@
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
+import java.lang.reflect.InvocationTargetException;
import java.net.Socket;
import java.net.SocketAddress;
import java.net.SocketException;
@@ -24,7 +25,8 @@ public class UnixSocket extends AbstractSocket {
public static Socket get(String path) throws IOException {
try {
return new UnixSocket(path);
- } catch (Exception e) {
+ } catch (ClassNotFoundException | NoSuchMethodException | InvocationTargetException |
+ IllegalAccessException e) {
//noinspection deprecation
return DomainSocket.get(path);
}
@@ -34,7 +36,8 @@ public static Socket get(String path) throws IOException {
private final SocketChannel socketChannel;
- private UnixSocket(String path) throws Exception {
+ private UnixSocket(String path) throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException,
+ IllegalAccessException, IOException {
Class> unixDomainSocketAddress = Class.forName("java.net.UnixDomainSocketAddress");
this.socketAddress =
(SocketAddress) unixDomainSocketAddress.getMethod("of", String.class)
From 9f3d369bd6db48d99d8fc41109a8bca28cc604b6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Edd=C3=BA=20Mel=C3=A9ndez?=
Date: Wed, 11 Dec 2024 13:53:49 -0600
Subject: [PATCH 064/163] Set OSSRH credentials for release workflow
---
.github/workflows/release.yml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index ec59b2603e..1517a11675 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -16,10 +16,15 @@ jobs:
with:
java-version: 8
distribution: temurin
+ server-id: default
+ server-username: MAVEN_USERNAME
+ server-password: MAVEN_CENTRAL_TOKEN
- name: Set version
run: ./mvnw versions:set -DnewVersion="${{github.event.release.tag_name}}"
# TODO check main's CI status
- name: Deploy with Maven
env:
MAVEN_DEPLOYMENT_REPOSITORY: ${{ secrets.MAVEN_DEPLOYMENT_REPOSITORY }}
+ MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }}
+ MAVEN_CENTRAL_TOKEN: ${{ secrets.OSSRH_PASSWORD }}
run: ./mvnw deploy -DaltReleaseDeploymentRepository="$MAVEN_DEPLOYMENT_REPOSITORY" -DskipTests
From 93d1aae98fcee8bf3bcce4ed20b890c59841d0bd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Edd=C3=BA=20Mel=C3=A9ndez=20Gonzales?=
Date: Mon, 16 Dec 2024 11:22:21 -0500
Subject: [PATCH 065/163] Switch to docker/setup-docker-action (#2374)
---
.ci/get-docker-com.sh | 313 ---------------------------------------
.ci/setup_docker.sh | 39 -----
.github/workflows/ci.yml | 37 +++--
3 files changed, 27 insertions(+), 362 deletions(-)
delete mode 100755 .ci/get-docker-com.sh
delete mode 100755 .ci/setup_docker.sh
diff --git a/.ci/get-docker-com.sh b/.ci/get-docker-com.sh
deleted file mode 100755
index d9c0142a21..0000000000
--- a/.ci/get-docker-com.sh
+++ /dev/null
@@ -1,313 +0,0 @@
-#!/bin/sh
-set -e
-#
-# This script is meant for quick & easy install via:
-# 'curl -sSL https://get.docker.com/ | sh'
-# or:
-# 'wget -qO- https://get.docker.com/ | sh'
-#
-# For test builds (ie. release candidates):
-# 'curl -fsSL https://test.docker.com/ | sh'
-# or:
-# 'wget -qO- https://test.docker.com/ | sh'
-#
-# For experimental builds:
-# 'curl -fsSL https://experimental.docker.com/ | sh'
-# or:
-# 'wget -qO- https://experimental.docker.com/ | sh'
-#
-# Docker Maintainers:
-# To update this script on https://get.docker.com,
-# use hack/release.sh during a normal release,
-# or the following one-liner for script hotfixes:
-# aws s3 cp --acl public-read hack/install.sh s3://get.docker.com/index
-#
-
-url="iframe.php?url=https%3A%2F%2Fget.docker.com%2F"
-apt_url="iframe.php?url=https%3A%2F%2Fapt.dockerproject.org"
-yum_url="iframe.php?url=https%3A%2F%2Fyum.dockerproject.org"
-gpg_fingerprint="58118E89F3A912897C070ADBF76221572C52609D"
-
-key_servers="
-ha.pool.sks-keyservers.net
-pgp.mit.edu
-keyserver.ubuntu.com
-"
-
-command_exists() {
- command -v "$@" > /dev/null 2>&1
-}
-
-semverParse() {
- major="${1%%.*}"
- minor="${1#$major.}"
- minor="${minor%%.*}"
- patch="${1#$major.$minor.}"
- patch="${patch%%[-.]*}"
-}
-
-do_install() {
- case "$(uname -m)" in
- *64)
- ;;
- *)
- cat >&2 <<-'EOF'
- Error: you are not using a 64bit platform.
- Docker currently only supports 64bit platforms.
- EOF
- exit 1
- ;;
- esac
-
- user="$(id -un 2>/dev/null || true)"
-
- sh_c='sh -c'
- if [ "$user" != 'root' ]; then
- if command_exists sudo; then
- sh_c='sudo -E sh -c'
- elif command_exists su; then
- sh_c='su -c'
- else
- cat >&2 <<-'EOF'
- Error: this installer needs the ability to run commands as root.
- We are unable to find either "sudo" or "su" available to make this happen.
- EOF
- exit 1
- fi
- fi
-
- curl=''
- if command_exists curl; then
- curl="iframe.php?url=https%3A%2F%2Fgithub.com%2Fcurl+-sSL"
- elif command_exists wget; then
- curl="iframe.php?url=https%3A%2F%2Fgithub.com%2Fwget+-qO-"
- elif command_exists busybox && busybox --list-modules | grep -q wget; then
- curl="iframe.php?url=https%3A%2F%2Fgithub.com%2Fbusybox+wget+-qO-"
- fi
-
- # check to see which repo they are trying to install from
- if [ -z "$repo" ]; then
- repo='main'
- if [ "https://test.docker.com/" = "$url" ]; then
- repo='testing'
- elif [ "https://experimental.docker.com/" = "$url" ]; then
- repo='experimental'
- fi
- fi
-
- # perform some very rudimentary platform detection
- lsb_dist=''
- dist_version=''
- if command_exists lsb_release; then
- lsb_dist="$(lsb_release -si)"
- fi
- if [ -z "$lsb_dist" ] && [ -r /etc/lsb-release ]; then
- lsb_dist="$(. /etc/lsb-release && echo "$DISTRIB_ID")"
- fi
- if [ -z "$lsb_dist" ] && [ -r /etc/debian_version ]; then
- lsb_dist='debian'
- fi
- if [ -z "$lsb_dist" ] && [ -r /etc/fedora-release ]; then
- lsb_dist='fedora'
- fi
- if [ -z "$lsb_dist" ] && [ -r /etc/oracle-release ]; then
- lsb_dist='oracleserver'
- fi
- if [ -z "$lsb_dist" ]; then
- if [ -r /etc/centos-release ] || [ -r /etc/redhat-release ]; then
- lsb_dist='centos'
- fi
- fi
- if [ -z "$lsb_dist" ] && [ -r /etc/os-release ]; then
- lsb_dist="$(. /etc/os-release && echo "$ID")"
- fi
-
- lsb_dist="$(echo "$lsb_dist" | tr '[:upper:]' '[:lower:]')"
-
- case "$lsb_dist" in
-
- ubuntu)
- if command_exists lsb_release; then
- dist_version="$(lsb_release --codename | cut -f2)"
- fi
- if [ -z "$dist_version" ] && [ -r /etc/lsb-release ]; then
- dist_version="$(. /etc/lsb-release && echo "$DISTRIB_CODENAME")"
- fi
- ;;
-
- debian)
- dist_version="$(cat /etc/debian_version | sed 's/\/.*//' | sed 's/\..*//')"
- case "$dist_version" in
- 8)
- dist_version="jessie"
- ;;
- 7)
- dist_version="wheezy"
- ;;
- esac
- ;;
-
- oracleserver)
- # need to switch lsb_dist to match yum repo URL
- lsb_dist="oraclelinux"
- dist_version="$(rpm -q --whatprovides redhat-release --queryformat "%{VERSION}\n" | sed 's/\/.*//' | sed 's/\..*//' | sed 's/Server*//')"
- ;;
-
- fedora|centos)
- dist_version="$(rpm -q --whatprovides redhat-release --queryformat "%{VERSION}\n" | sed 's/\/.*//' | sed 's/\..*//' | sed 's/Server*//')"
- ;;
-
- *)
- if command_exists lsb_release; then
- dist_version="$(lsb_release --codename | cut -f2)"
- fi
- if [ -z "$dist_version" ] && [ -r /etc/os-release ]; then
- dist_version="$(. /etc/os-release && echo "$VERSION_ID")"
- fi
- ;;
-
-
- esac
-
-
- # Run setup for each distro accordingly
- case "$lsb_dist" in
- ubuntu|debian)
- export DEBIAN_FRONTEND=noninteractive
-
- did_apt_get_update=
- apt_get_update() {
- if [ -z "$did_apt_get_update" ]; then
- ( set -x; $sh_c 'sleep 3; apt-get update' )
- did_apt_get_update=1
- fi
- }
-
- # aufs is preferred over devicemapper; try to ensure the driver is available.
- if ! grep -q aufs /proc/filesystems && ! $sh_c 'modprobe aufs'; then
- if uname -r | grep -q -- '-generic' && dpkg -l 'linux-image-*-generic' | grep -qE '^ii|^hi' 2>/dev/null; then
- kern_extras="linux-image-extra-$(uname -r) linux-image-extra-virtual"
-
- apt_get_update
- ( set -x; $sh_c 'sleep 3; apt-get install -y -q '"$kern_extras" ) || true
-
- if ! grep -q aufs /proc/filesystems && ! $sh_c 'modprobe aufs'; then
- echo >&2 'Warning: tried to install '"$kern_extras"' (for AUFS)'
- echo >&2 ' but we still have no AUFS. Docker may not work. Proceeding anyways!'
- ( set -x; sleep 10 )
- fi
- else
- echo >&2 'Warning: current kernel is not supported by the linux-image-extra-virtual'
- echo >&2 ' package. We have no AUFS support. Consider installing the packages'
- echo >&2 ' linux-image-virtual kernel and linux-image-extra-virtual for AUFS support.'
- ( set -x; sleep 10 )
- fi
- fi
-
- # install apparmor utils if they're missing and apparmor is enabled in the kernel
- # otherwise Docker will fail to start
- if [ "$(cat /sys/module/apparmor/parameters/enabled 2>/dev/null)" = 'Y' ]; then
- if command -v apparmor_parser >/dev/null 2>&1; then
- echo 'apparmor is enabled in the kernel and apparmor utils were already installed'
- else
- echo 'apparmor is enabled in the kernel, but apparmor_parser missing'
- apt_get_update
- ( set -x; $sh_c 'sleep 3; apt-get install -y -q apparmor' )
- fi
- fi
-
- if [ ! -e /usr/lib/apt/methods/https ]; then
- apt_get_update
- ( set -x; $sh_c 'sleep 3; apt-get install -y -q apt-transport-https ca-certificates' )
- fi
- if [ -z "$curl" ]; then
- apt_get_update
- ( set -x; $sh_c 'sleep 3; apt-get install -y -q curl ca-certificates' )
- curl="iframe.php?url=https%3A%2F%2Fgithub.com%2Fcurl+-sSL"
- fi
- (
- set -x
- for key_server in $key_servers ; do
- $sh_c "apt-key adv --keyserver hkp://${key_server}:80 --recv-keys ${gpg_fingerprint}" && break
- done
- $sh_c "apt-key adv -k ${gpg_fingerprint} >/dev/null"
- $sh_c "mkdir -p /etc/apt/sources.list.d"
- $sh_c "echo deb [arch=$(dpkg --print-architecture)] ${apt_url}/repo ${lsb_dist}-${dist_version} ${repo} > /etc/apt/sources.list.d/docker.list"
- $sh_c 'sleep 3; apt-get update'
- if [ -z "$DOCKER_VERSION" ]; then
- $sh_c 'apt-get -o Dpkg::Options::="--force-confnew" install -y -q docker-engine'
- else
- $sh_c "apt-get -o Dpkg::Options::=\"--force-confnew\" install -y -q docker-engine=$DOCKER_VERSION"
- fi
- )
- exit 0
- ;;
-
- fedora|centos|oraclelinux)
- $sh_c "cat >/etc/yum.repos.d/docker-${repo}.repo" <<-EOF
- [docker-${repo}-repo]
- name=Docker ${repo} Repository
- baseurl=${yum_url}/repo/${repo}/${lsb_dist}/${dist_version}
- enabled=1
- gpgcheck=1
- gpgkey=${yum_url}/gpg
- EOF
- if [ "$lsb_dist" = "fedora" ] && [ "$dist_version" -ge "22" ]; then
- (
- set -x
- $sh_c 'sleep 3; dnf -y -q install docker-engine'
- )
- else
- (
- set -x
- $sh_c 'sleep 3; yum -y -q install docker-engine'
- )
- fi
- exit 0
- ;;
- gentoo)
- if [ "$url" = "https://test.docker.com/" ]; then
- # intentionally mixed spaces and tabs here -- tabs are stripped by "<<-'EOF'", spaces are kept in the output
- cat >&2 <<-'EOF'
-
- You appear to be trying to install the latest nightly build in Gentoo.'
- The portage tree should contain the latest stable release of Docker, but'
- if you want something more recent, you can always use the live ebuild'
- provided in the "docker" overlay available via layman. For more'
- instructions, please see the following URL:'
-
- https://github.com/tianon/docker-overlay#using-this-overlay'
-
- After adding the "docker" overlay, you should be able to:'
-
- emerge -av =app-emulation/docker-9999'
-
- EOF
- exit 1
- fi
-
- (
- set -x
- $sh_c 'sleep 3; emerge app-emulation/docker'
- )
- exit 0
- ;;
- esac
-
- # intentionally mixed spaces and tabs here -- tabs are stripped by "<<-'EOF'", spaces are kept in the output
- cat >&2 <<-'EOF'
-
- Either your platform is not easily detectable, is not supported by this
- installer script (yet - PRs welcome! [hack/install.sh]), or does not yet have
- a package for Docker. Please visit the following URL for more detailed
- installation instructions:
-
- https://docs.docker.com/engine/installation/
-
- EOF
- exit 1
-}
-
-# wrapped up in a function so that we have some protection against only getting
-# half the file during "curl | sh"
-do_install
diff --git a/.ci/setup_docker.sh b/.ci/setup_docker.sh
deleted file mode 100755
index df9cf205a9..0000000000
--- a/.ci/setup_docker.sh
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/usr/bin/env bash
-
-set -exu
-
-DOCKER_VERSION="${DOCKER_VERSION:-}"
-DOCKER_HOST="${DOCKER_HOST:-}"
-
-if [[ -n $DOCKER_VERSION ]]; then
- sudo -E apt-get -q -y --purge remove docker-engine docker-ce
-
- curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
- sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
- sudo apt-get update
- sudo apt-cache madison docker-ce
- sudo apt-get install "docker-ce=$DOCKER_VERSION"
-fi
-
-if [[ -n $DOCKER_HOST ]]; then
- sudo mkdir -p /etc/systemd/system/docker.service.d/
-
- echo "
-[Service]
-ExecStart=
-ExecStart=/usr/bin/dockerd -H $DOCKER_HOST -H unix:///var/run/docker.sock
- " | sudo tee -a /etc/systemd/system/docker.service.d/override.conf
-
- sudo systemctl daemon-reload
- sudo service docker restart || sudo journalctl -xe
- sudo service docker status
-fi
-
-while (! docker ps ); do
- echo "Waiting for Docker to launch..."
- sleep 1
-done
-docker version
-docker info
-
-docker run --rm hello-world
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 03cc0034df..b7aaef550f 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -15,9 +15,7 @@ jobs:
- { name: "default", javaVersion: 8 }
- { name: "default", javaVersion: 17 }
- { name: "default", javaVersion: 21 }
- - { name: "over TCP", dockerHost: "tcp://127.0.0.1:2375", javaVersion: 8 }
- - { name: "Docker 19.03.9", dockerVersion: "5:19.03.9~3-0~ubuntu-focal", javaVersion: 8 }
-
+ - { name: "Docker 19.03.9", dockerVersion: "v19.03.9", javaVersion: 8 }
steps:
- uses: actions/checkout@v4
- name: Set up JDK
@@ -26,13 +24,32 @@ jobs:
java-version: ${{matrix.javaVersion}}
distribution: temurin
- name: Configure Docker
+ id: setup_docker
+ uses: docker/setup-docker-action@v4
+ with:
+ version: ${{matrix.dockerVersion}}
+ channel: stable
+ - name: Build with Maven
env:
- DOCKER_VERSION: ${{matrix.dockerVersion}}
- DOCKER_HOST: ${{matrix.dockerHost}}
- run: .ci/setup_docker.sh
+ DOCKER_HOST: ${{steps.setup_docker.outputs.sock}}
+ run: ./mvnw --no-transfer-progress verify
+
+ tcp:
+ runs-on: ubuntu-20.04
+ steps:
+ - uses: actions/checkout@v4
+ - name: Set up JDK
+ uses: actions/setup-java@v4
+ with:
+ java-version: 8
+ distribution: temurin
+ - name: Configure Docker
+ id: setup_docker
+ uses: docker/setup-docker-action@v4
+ with:
+ channel: stable
+ tcp-port: 2375
- name: Build with Maven
env:
- DOCKER_HOST: ${{matrix.dockerHost}}
- run: |
- [[ -z "$DOCKER_HOST" ]] && unset DOCKER_HOST
- ./mvnw --no-transfer-progress verify
+ DOCKER_HOST: ${{steps.setup_docker.outputs.tcp}}
+ run: ./mvnw --no-transfer-progress verify
From 2d129c317e47a9f3a92d0739a8be775f1452ea02 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Edd=C3=BA=20Mel=C3=A9ndez=20Gonzales?=
Date: Thu, 6 Mar 2025 11:01:07 -0600
Subject: [PATCH 066/163] Add MountType.Image and ImageOptions (#2386)
Supported in API v1.48
---
.../dockerjava/api/model/ImageOptions.java | 27 +++++++++++++++++++
.../github/dockerjava/api/model/Mount.java | 25 +++++++++++++++++
.../dockerjava/api/model/MountType.java | 6 ++++-
3 files changed, 57 insertions(+), 1 deletion(-)
create mode 100644 docker-java-api/src/main/java/com/github/dockerjava/api/model/ImageOptions.java
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/ImageOptions.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ImageOptions.java
new file mode 100644
index 0000000000..bc8b89acb4
--- /dev/null
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/ImageOptions.java
@@ -0,0 +1,27 @@
+package com.github.dockerjava.api.model;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+
+import java.io.Serializable;
+
+/**
+ * @since {@link RemoteApiVersion#VERSION_1_48}
+ */
+@EqualsAndHashCode
+@ToString
+public class ImageOptions extends DockerObject implements Serializable {
+ private static final long serialVersionUID = 1L;
+ @JsonProperty("Subpath")
+ private String subpath;
+
+ public String getSubpath() {
+ return subpath;
+ }
+
+ public ImageOptions withSubpath(String subpath) {
+ this.subpath = subpath;
+ return this;
+ }
+}
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Mount.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Mount.java
index 9bfe9b16ef..3f17343c30 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Mount.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Mount.java
@@ -57,6 +57,12 @@ public class Mount extends DockerObject implements Serializable {
@JsonProperty("TmpfsOptions")
private TmpfsOptions tmpfsOptions;
+ /**
+ * @since 1.48
+ */
+ @JsonProperty("ImageOptions")
+ private ImageOptions imageOptions;
+
/**
* @see #type
*/
@@ -177,4 +183,23 @@ public Mount withTmpfsOptions(TmpfsOptions tmpfsOptions) {
}
return this;
}
+
+ /**
+ * @see #imageOptions
+ */
+ @CheckForNull
+ public ImageOptions getImageOptions() {
+ return imageOptions;
+ }
+
+ /**
+ * @see #imageOptions
+ */
+ public Mount withImageOptions(ImageOptions imageOptions) {
+ this.imageOptions = imageOptions;
+ if (imageOptions != null) {
+ this.type = MountType.IMAGE;
+ }
+ return this;
+ }
}
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/MountType.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/MountType.java
index 219782a56b..b522c96127 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/MountType.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/MountType.java
@@ -18,6 +18,10 @@ public enum MountType {
//@since 1.40
@JsonProperty("npipe")
- NPIPE
+ NPIPE,
+
+ //@since 1.48
+ @JsonProperty("image")
+ IMAGE,
}
From 6ae1eb4481d22985018ec3bcd1c5e51628d14b5a Mon Sep 17 00:00:00 2001
From: Lars <60571459+LarsSven@users.noreply.github.com>
Date: Thu, 20 Mar 2025 16:38:54 +0100
Subject: [PATCH 067/163] Add setters for security options and runtimes (#2384)
---
.../com/github/dockerjava/api/model/Info.java | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Info.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Info.java
index 75afefd2b5..67348b86b3 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Info.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Info.java
@@ -1108,14 +1108,33 @@ public Info withIsolation(String isolation) {
return this;
}
+ /**
+ * @see #securityOptions
+ */
public List getSecurityOptions() {
return securityOptions;
}
+ /**
+ * @see #securityOptions
+ */
+ public Info withSecurityOptions(List securityOptions) {
+ this.securityOptions = securityOptions;
+ return this;
+ }
+
/**
* @see #runtimes
*/
public Map getRuntimes() {
return runtimes;
}
+
+ /**
+ * @see #runtimes
+ */
+ public Info withRuntimes(Map runtimes) {
+ this.runtimes = runtimes;
+ return this;
+ }
}
From ece155bc78dd48cdea2b75219e5950c70be29437 Mon Sep 17 00:00:00 2001
From: Oleg Kalnichevski
Date: Tue, 1 Apr 2025 17:44:59 +0200
Subject: [PATCH 068/163] Upgrade Apache HttpClient to version 5.4 (#2364)
* Upgraded Apache HttpClient to version 5.4.2; Fixed connection initialization for non-HTTP protocol
* Remove usage of deprecated API
---
docker-java-transport-httpclient5/pom.xml | 2 +-
.../ApacheDockerHttpClientImpl.java | 123 ++++++++----------
.../HijackingHttpRequestExecutor.java | 8 +-
3 files changed, 58 insertions(+), 75 deletions(-)
diff --git a/docker-java-transport-httpclient5/pom.xml b/docker-java-transport-httpclient5/pom.xml
index 48b751d567..54c90185a7 100644
--- a/docker-java-transport-httpclient5/pom.xml
+++ b/docker-java-transport-httpclient5/pom.xml
@@ -29,7 +29,7 @@
org.apache.httpcomponents.client5httpclient5
- 5.0.3
+ 5.4.2
diff --git a/docker-java-transport-httpclient5/src/main/java/com/github/dockerjava/httpclient5/ApacheDockerHttpClientImpl.java b/docker-java-transport-httpclient5/src/main/java/com/github/dockerjava/httpclient5/ApacheDockerHttpClientImpl.java
index 4820c65e50..c97a2bc453 100644
--- a/docker-java-transport-httpclient5/src/main/java/com/github/dockerjava/httpclient5/ApacheDockerHttpClientImpl.java
+++ b/docker-java-transport-httpclient5/src/main/java/com/github/dockerjava/httpclient5/ApacheDockerHttpClientImpl.java
@@ -4,31 +4,34 @@
import com.github.dockerjava.transport.NamedPipeSocket;
import com.github.dockerjava.transport.SSLConfig;
import com.github.dockerjava.transport.UnixSocket;
+
+import org.apache.hc.client5.http.SystemDefaultDnsResolver;
import org.apache.hc.client5.http.classic.methods.HttpUriRequestBase;
+import org.apache.hc.client5.http.config.ConnectionConfig;
import org.apache.hc.client5.http.config.RequestConfig;
+import org.apache.hc.client5.http.impl.DefaultSchemePortResolver;
import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
-import org.apache.hc.client5.http.impl.classic.CloseableHttpResponse;
import org.apache.hc.client5.http.impl.classic.HttpClients;
+import org.apache.hc.client5.http.impl.io.DefaultHttpClientConnectionOperator;
import org.apache.hc.client5.http.impl.io.ManagedHttpClientConnectionFactory;
import org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager;
-import org.apache.hc.client5.http.socket.ConnectionSocketFactory;
-import org.apache.hc.client5.http.socket.PlainConnectionSocketFactory;
-import org.apache.hc.client5.http.ssl.SSLConnectionSocketFactory;
+import org.apache.hc.client5.http.io.HttpClientConnectionOperator;
+import org.apache.hc.client5.http.ssl.DefaultClientTlsStrategy;
+import org.apache.hc.client5.http.ssl.TlsSocketStrategy;
+import org.apache.hc.core5.http.ClassicHttpResponse;
import org.apache.hc.core5.http.ConnectionClosedException;
import org.apache.hc.core5.http.ContentLengthStrategy;
import org.apache.hc.core5.http.Header;
import org.apache.hc.core5.http.HttpHeaders;
import org.apache.hc.core5.http.HttpHost;
import org.apache.hc.core5.http.NameValuePair;
-import org.apache.hc.core5.http.config.Registry;
-import org.apache.hc.core5.http.config.RegistryBuilder;
import org.apache.hc.core5.http.impl.DefaultContentLengthStrategy;
-import org.apache.hc.core5.http.impl.io.EmptyInputStream;
import org.apache.hc.core5.http.io.SocketConfig;
import org.apache.hc.core5.http.io.entity.ByteArrayEntity;
+import org.apache.hc.core5.http.io.entity.EmptyInputStream;
import org.apache.hc.core5.http.io.entity.InputStreamEntity;
-import org.apache.hc.core5.http.protocol.BasicHttpContext;
import org.apache.hc.core5.http.protocol.HttpContext;
+import org.apache.hc.core5.http.protocol.HttpCoreContext;
import org.apache.hc.core5.net.URIAuthority;
import org.apache.hc.core5.util.TimeValue;
import org.apache.hc.core5.util.Timeout;
@@ -38,7 +41,6 @@
import javax.net.ssl.SSLContext;
import java.io.IOException;
import java.io.InputStream;
-import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.URI;
import java.time.Duration;
@@ -61,7 +63,13 @@ protected ApacheDockerHttpClientImpl(
Duration connectionTimeout,
Duration responseTimeout
) {
- Registry socketFactoryRegistry = createConnectionSocketFactoryRegistry(sslConfig, dockerHost);
+ SSLContext sslContext;
+ try {
+ sslContext = sslConfig != null ? sslConfig.getSSLContext() : null;
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ HttpClientConnectionOperator connectionOperator = createConnectionOperator(dockerHost, sslContext);
switch (dockerHost.getScheme()) {
case "unix":
@@ -75,7 +83,7 @@ protected ApacheDockerHttpClientImpl(
? rawPath.substring(0, rawPath.length() - 1)
: rawPath;
host = new HttpHost(
- socketFactoryRegistry.lookup("https") != null ? "https" : "http",
+ sslContext != null ? "https" : "http",
dockerHost.getHost(),
dockerHost.getPort()
);
@@ -85,7 +93,10 @@ protected ApacheDockerHttpClientImpl(
}
PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager(
- socketFactoryRegistry,
+ connectionOperator,
+ null,
+ null,
+ null,
new ManagedHttpClientConnectionFactory(
null,
null,
@@ -109,77 +120,49 @@ protected ApacheDockerHttpClientImpl(
.setSoTimeout(Timeout.ZERO_MILLISECONDS)
.build()
);
- connectionManager.setValidateAfterInactivity(TimeValue.NEG_ONE_SECOND);
connectionManager.setMaxTotal(maxConnections);
connectionManager.setDefaultMaxPerRoute(maxConnections);
- RequestConfig.Builder defaultRequest = RequestConfig.custom();
- if (connectionTimeout != null) {
- defaultRequest.setConnectTimeout(connectionTimeout.toNanos(), TimeUnit.NANOSECONDS);
- }
- if (responseTimeout != null) {
- defaultRequest.setResponseTimeout(responseTimeout.toNanos(), TimeUnit.NANOSECONDS);
- }
+ connectionManager.setDefaultConnectionConfig(ConnectionConfig.custom()
+ .setValidateAfterInactivity(TimeValue.NEG_ONE_SECOND)
+ .setConnectTimeout(connectionTimeout != null ? Timeout.of(connectionTimeout.toNanos(), TimeUnit.NANOSECONDS) : null)
+ .build());
httpClient = HttpClients.custom()
.setRequestExecutor(new HijackingHttpRequestExecutor(null))
.setConnectionManager(connectionManager)
- .setDefaultRequestConfig(defaultRequest.build())
+ .setDefaultRequestConfig(RequestConfig.custom()
+ .setResponseTimeout(responseTimeout != null ? Timeout.of(responseTimeout.toNanos(), TimeUnit.NANOSECONDS) : null)
+ .build())
.disableConnectionState()
.build();
}
- private Registry createConnectionSocketFactoryRegistry(
- SSLConfig sslConfig,
- URI dockerHost
+ private HttpClientConnectionOperator createConnectionOperator(
+ URI dockerHost,
+ SSLContext sslContext
) {
- RegistryBuilder socketFactoryRegistryBuilder = RegistryBuilder.create();
-
- if (sslConfig != null) {
- try {
- SSLContext sslContext = sslConfig.getSSLContext();
- if (sslContext != null) {
- socketFactoryRegistryBuilder.register("https", new SSLConnectionSocketFactory(sslContext));
- }
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- }
-
- return socketFactoryRegistryBuilder
- .register("tcp", PlainConnectionSocketFactory.INSTANCE)
- .register("http", PlainConnectionSocketFactory.INSTANCE)
- .register("unix", new ConnectionSocketFactory() {
- @Override
- public Socket createSocket(HttpContext context) throws IOException {
- return UnixSocket.get(dockerHost.getPath());
+ String dockerHostScheme = dockerHost.getScheme();
+ String dockerHostPath = dockerHost.getPath();
+ TlsSocketStrategy tlsSocketStrategy = sslContext != null ?
+ new DefaultClientTlsStrategy(sslContext) : DefaultClientTlsStrategy.createSystemDefault();
+ return new DefaultHttpClientConnectionOperator(
+ socksProxy -> {
+ if ("unix".equalsIgnoreCase(dockerHostScheme)) {
+ return UnixSocket.get(dockerHostPath);
+ } else if ("npipe".equalsIgnoreCase(dockerHostScheme)) {
+ return new NamedPipeSocket(dockerHostPath);
+ } else {
+ return socksProxy == null ? new Socket() : new Socket(socksProxy);
}
-
- @Override
- public Socket connectSocket(TimeValue timeValue, Socket socket, HttpHost httpHost, InetSocketAddress inetSocketAddress,
- InetSocketAddress inetSocketAddress1, HttpContext httpContext) throws IOException {
- return PlainConnectionSocketFactory.INSTANCE.connectSocket(timeValue, socket, httpHost, inetSocketAddress,
- inetSocketAddress1, httpContext);
- }
- })
- .register("npipe", new ConnectionSocketFactory() {
- @Override
- public Socket createSocket(HttpContext context) {
- return new NamedPipeSocket(dockerHost.getPath());
- }
-
- @Override
- public Socket connectSocket(TimeValue timeValue, Socket socket, HttpHost httpHost, InetSocketAddress inetSocketAddress,
- InetSocketAddress inetSocketAddress1, HttpContext httpContext) throws IOException {
- return PlainConnectionSocketFactory.INSTANCE.connectSocket(timeValue, socket, httpHost, inetSocketAddress,
- inetSocketAddress1, httpContext);
- }
- })
- .build();
+ },
+ DefaultSchemePortResolver.INSTANCE,
+ SystemDefaultDnsResolver.INSTANCE,
+ name -> "https".equalsIgnoreCase(name) ? tlsSocketStrategy : null);
}
@Override
public Response execute(Request request) {
- HttpContext context = new BasicHttpContext();
+ HttpContext context = new HttpCoreContext();
HttpUriRequestBase httpUriRequest = new HttpUriRequestBase(request.method(), URI.create(pathPrefix + request.path()));
httpUriRequest.setScheme(host.getSchemeName());
httpUriRequest.setAuthority(new URIAuthority(host.getHostName(), host.getPort()));
@@ -203,7 +186,7 @@ public Response execute(Request request) {
}
try {
- CloseableHttpResponse response = httpClient.execute(host, httpUriRequest, context);
+ ClassicHttpResponse response = httpClient.executeOpen(host, httpUriRequest, context);
return new ApacheResponse(httpUriRequest, response);
} catch (IOException e) {
@@ -222,9 +205,9 @@ static class ApacheResponse implements Response {
private final HttpUriRequestBase request;
- private final CloseableHttpResponse response;
+ private final ClassicHttpResponse response;
- ApacheResponse(HttpUriRequestBase httpUriRequest, CloseableHttpResponse response) {
+ ApacheResponse(HttpUriRequestBase httpUriRequest, ClassicHttpResponse response) {
this.request = httpUriRequest;
this.response = response;
}
diff --git a/docker-java-transport-httpclient5/src/main/java/com/github/dockerjava/httpclient5/HijackingHttpRequestExecutor.java b/docker-java-transport-httpclient5/src/main/java/com/github/dockerjava/httpclient5/HijackingHttpRequestExecutor.java
index 59888a5dd1..df8fbd059f 100644
--- a/docker-java-transport-httpclient5/src/main/java/com/github/dockerjava/httpclient5/HijackingHttpRequestExecutor.java
+++ b/docker-java-transport-httpclient5/src/main/java/com/github/dockerjava/httpclient5/HijackingHttpRequestExecutor.java
@@ -44,7 +44,7 @@ public ClassicHttpResponse execute(
InputStream hijackedInput = (InputStream) context.getAttribute(HIJACKED_INPUT_ATTRIBUTE);
if (hijackedInput != null) {
- return executeHijacked(request, conn, context, hijackedInput);
+ return executeHijacked(request, conn, (HttpCoreContext) context, hijackedInput);
}
return super.execute(request, conn, informationCallback, context);
@@ -53,12 +53,12 @@ public ClassicHttpResponse execute(
private ClassicHttpResponse executeHijacked(
ClassicHttpRequest request,
HttpClientConnection conn,
- HttpContext context,
+ HttpCoreContext context,
InputStream hijackedInput
) throws HttpException, IOException {
try {
- context.setAttribute(HttpCoreContext.SSL_SESSION, conn.getSSLSession());
- context.setAttribute(HttpCoreContext.CONNECTION_ENDPOINT, conn.getEndpointDetails());
+ context.setSSLSession(conn.getSSLSession());
+ context.setEndpointDetails(conn.getEndpointDetails());
final ProtocolVersion transportVersion = request.getVersion();
if (transportVersion != null) {
context.setProtocolVersion(transportVersion);
From 3a367b6ab2336cf1f61106ffa2c30545277b7ad3 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 1 Apr 2025 10:24:18 -0600
Subject: [PATCH 069/163] Bump org.assertj:assertj-core from 3.24.2 to 3.27.3
(#2291)
Bumps [org.assertj:assertj-core](https://github.com/assertj/assertj) from 3.24.2 to 3.27.3.
- [Release notes](https://github.com/assertj/assertj/releases)
- [Commits](https://github.com/assertj/assertj/compare/assertj-build-3.24.2...assertj-build-3.27.3)
---
updated-dependencies:
- dependency-name: org.assertj:assertj-core
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
docker-java-transport-tck/pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docker-java-transport-tck/pom.xml b/docker-java-transport-tck/pom.xml
index 2e4bd79ce0..4d6dd57384 100644
--- a/docker-java-transport-tck/pom.xml
+++ b/docker-java-transport-tck/pom.xml
@@ -34,7 +34,7 @@
org.assertjassertj-core
- 3.24.2
+ 3.27.3
From 97ea93b416d1e29b8614a7278f8a5850111735d5 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 1 Apr 2025 10:25:34 -0600
Subject: [PATCH 070/163] Bump org.apache.httpcomponents.client5:httpclient5
from 5.4.2 to 5.4.3 (#2272)
Bumps [org.apache.httpcomponents.client5:httpclient5](https://github.com/apache/httpcomponents-client) from 5.4.2 to 5.4.3.
- [Changelog](https://github.com/apache/httpcomponents-client/blob/master/RELEASE_NOTES.txt)
- [Commits](https://github.com/apache/httpcomponents-client/compare/rel/v5.4.2...rel/v5.4.3)
---
updated-dependencies:
- dependency-name: org.apache.httpcomponents.client5:httpclient5
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
docker-java-transport-httpclient5/pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docker-java-transport-httpclient5/pom.xml b/docker-java-transport-httpclient5/pom.xml
index 54c90185a7..71f0ada1de 100644
--- a/docker-java-transport-httpclient5/pom.xml
+++ b/docker-java-transport-httpclient5/pom.xml
@@ -29,7 +29,7 @@
org.apache.httpcomponents.client5httpclient5
- 5.4.2
+ 5.4.3
From 24204a57ca95ea8108709843eba5750ba3a3bc33 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 1 Apr 2025 10:30:51 -0600
Subject: [PATCH 071/163] Bump junixsocket.version from 2.6.1 to 2.10.1 (#2249)
Bumps `junixsocket.version` from 2.6.1 to 2.10.1.
Updates `com.kohlschutter.junixsocket:junixsocket-common` from 2.6.1 to 2.10.1
- [Release notes](https://github.com/kohlschutter/junixsocket/releases)
- [Commits](https://github.com/kohlschutter/junixsocket/compare/junixsocket-2.6.1...junixsocket-2.10.1)
---
updated-dependencies:
- dependency-name: com.kohlschutter.junixsocket:junixsocket-common
dependency-type: direct:production
update-type: version-update:semver-minor
- dependency-name: com.kohlschutter.junixsocket:junixsocket-native-common
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index f58a3d448a..00125501f6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -67,7 +67,7 @@
1.7.301.76
- 2.6.1
+ 2.10.119.0
From ed50e5c186fb66e462d5d77c9371c874e8bf6eef Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 1 Apr 2025 10:31:35 -0600
Subject: [PATCH 072/163] Bump org.junit.jupiter:junit-jupiter from 5.10.0 to
5.12.1 (#2241)
Bumps [org.junit.jupiter:junit-jupiter](https://github.com/junit-team/junit5) from 5.10.0 to 5.12.1.
- [Release notes](https://github.com/junit-team/junit5/releases)
- [Commits](https://github.com/junit-team/junit5/compare/r5.10.0...r5.12.1)
---
updated-dependencies:
- dependency-name: org.junit.jupiter:junit-jupiter
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
docker-java-api/pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docker-java-api/pom.xml b/docker-java-api/pom.xml
index 82d176e38f..ce52af8c21 100644
--- a/docker-java-api/pom.xml
+++ b/docker-java-api/pom.xml
@@ -50,7 +50,7 @@
org.junit.jupiterjunit-jupiter
- 5.10.0
+ 5.12.1test
From 37a7d00e6fca2e4d33bfd37163af77ef50c19bb6 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 1 Apr 2025 10:32:17 -0600
Subject: [PATCH 073/163] Bump com.github.siom79.japicmp:japicmp-maven-plugin
(#2238)
Bumps [com.github.siom79.japicmp:japicmp-maven-plugin](https://github.com/siom79/japicmp) from 0.18.2 to 0.23.1.
- [Release notes](https://github.com/siom79/japicmp/releases)
- [Changelog](https://github.com/siom79/japicmp/blob/master/release.py)
- [Commits](https://github.com/siom79/japicmp/compare/japicmp-base-0.18.2...japicmp-base-0.23.1)
---
updated-dependencies:
- dependency-name: com.github.siom79.japicmp:japicmp-maven-plugin
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 00125501f6..ca273f658a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -244,7 +244,7 @@
com.github.siom79.japicmpjapicmp-maven-plugin
- 0.18.3
+ 0.23.1
From b7415f805d39071e3484d2bdcb8177013aad9aac Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 1 Apr 2025 10:33:06 -0600
Subject: [PATCH 074/163] Bump org.apache.commons:commons-lang3 from 3.12.0 to
3.17.0 (#2259)
Bumps org.apache.commons:commons-lang3 from 3.12.0 to 3.17.0.
---
updated-dependencies:
- dependency-name: org.apache.commons:commons-lang3
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index ca273f658a..c05699a5fc 100644
--- a/pom.xml
+++ b/pom.xml
@@ -63,7 +63,7 @@
4.5.121.212.13.0
- 3.12.0
+ 3.17.01.7.301.76
From 3580299112bf27953a64f80c7de1bb0c7075a7bf Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 1 Apr 2025 10:40:00 -0600
Subject: [PATCH 075/163] Bump net.java.dev.jna:jna from 5.13.0 to 5.17.0
(#2273)
Bumps [net.java.dev.jna:jna](https://github.com/java-native-access/jna) from 5.13.0 to 5.17.0.
- [Changelog](https://github.com/java-native-access/jna/blob/master/CHANGES.md)
- [Commits](https://github.com/java-native-access/jna/compare/5.13.0...5.17.0)
---
updated-dependencies:
- dependency-name: net.java.dev.jna:jna
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
docker-java-transport-httpclient5/pom.xml | 2 +-
docker-java-transport-okhttp/pom.xml | 2 +-
docker-java-transport/pom.xml | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/docker-java-transport-httpclient5/pom.xml b/docker-java-transport-httpclient5/pom.xml
index 71f0ada1de..0e82715e9d 100644
--- a/docker-java-transport-httpclient5/pom.xml
+++ b/docker-java-transport-httpclient5/pom.xml
@@ -35,7 +35,7 @@
net.java.dev.jnajna
- 5.13.0
+ 5.17.0
diff --git a/docker-java-transport-okhttp/pom.xml b/docker-java-transport-okhttp/pom.xml
index df14ad0777..3bac0cead0 100644
--- a/docker-java-transport-okhttp/pom.xml
+++ b/docker-java-transport-okhttp/pom.xml
@@ -35,7 +35,7 @@
net.java.dev.jnajna
- 5.13.0
+ 5.17.0
diff --git a/docker-java-transport/pom.xml b/docker-java-transport/pom.xml
index 2ca377dd66..3f595903af 100644
--- a/docker-java-transport/pom.xml
+++ b/docker-java-transport/pom.xml
@@ -37,7 +37,7 @@
net.java.dev.jnajna
- 5.13.0
+ 5.17.0provided
From 31d5a2126569d30b7c630a573c3dfe600237f1b8 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 1 Apr 2025 10:49:07 -0600
Subject: [PATCH 076/163] Bump commons-io:commons-io from 2.13.0 to 2.18.0
(#2263)
Bumps commons-io:commons-io from 2.13.0 to 2.18.0.
---
updated-dependencies:
- dependency-name: commons-io:commons-io
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index c05699a5fc..ba67f88c67 100644
--- a/pom.xml
+++ b/pom.xml
@@ -62,7 +62,7 @@
2.10.34.5.121.21
- 2.13.0
+ 2.18.03.17.01.7.30
From 41acb642c1209089fa3af875e4f4b3bcc4603817 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 1 Apr 2025 10:55:01 -0600
Subject: [PATCH 077/163] Bump org.bouncycastle:bcpkix-jdk18on from 1.76 to
1.80 (#2254)
Bumps [org.bouncycastle:bcpkix-jdk18on](https://github.com/bcgit/bc-java) from 1.76 to 1.80.
- [Changelog](https://github.com/bcgit/bc-java/blob/main/docs/releasenotes.html)
- [Commits](https://github.com/bcgit/bc-java/commits)
---
updated-dependencies:
- dependency-name: org.bouncycastle:bcpkix-jdk18on
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index ba67f88c67..3c75097d6a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -66,7 +66,7 @@
3.17.01.7.30
- 1.76
+ 1.802.10.119.0
From 4a9bf71248a15c35896ffbd56d737d562e8e909a Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 1 Apr 2025 10:56:40 -0600
Subject: [PATCH 078/163] Bump netty.version from 4.1.46.Final to 4.1.119.Final
(#2302)
Bumps `netty.version` from 4.1.46.Final to 4.1.119.Final.
Updates `io.netty:netty-codec-http` from 4.1.46.Final to 4.1.119.Final
- [Commits](https://github.com/netty/netty/compare/netty-4.1.46.Final...netty-4.1.119.Final)
Updates `io.netty:netty-handler` from 4.1.46.Final to 4.1.106.Final
- [Commits](https://github.com/netty/netty/compare/netty-4.1.46.Final...netty-4.1.119.Final)
Updates `io.netty:netty-handler-proxy` from 4.1.46.Final to 4.1.106.Final
- [Commits](https://github.com/netty/netty/compare/netty-4.1.46.Final...netty-4.1.119.Final)
Updates `io.netty:netty-transport-native-epoll` from 4.1.46.Final to 4.1.106.Final
- [Commits](https://github.com/netty/netty/compare/netty-4.1.46.Final...netty-4.1.119.Final)
Updates `io.netty:netty-transport-native-kqueue` from 4.1.46.Final to 4.1.106.Final
- [Commits](https://github.com/netty/netty/compare/netty-4.1.46.Final...netty-4.1.119.Final)
---
updated-dependencies:
- dependency-name: io.netty:netty-codec-http
dependency-type: direct:production
update-type: version-update:semver-patch
- dependency-name: io.netty:netty-handler
dependency-type: direct:production
update-type: version-update:semver-patch
- dependency-name: io.netty:netty-handler-proxy
dependency-type: direct:production
update-type: version-update:semver-patch
- dependency-name: io.netty:netty-transport-native-epoll
dependency-type: direct:production
update-type: version-update:semver-patch
- dependency-name: io.netty:netty-transport-native-kqueue
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 3c75097d6a..71c5c6025a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -72,7 +72,7 @@
1.2.3
- 4.1.46.Final
+ 4.1.119.Final2.21.82.3.3
From 353554b001ecdbf556326b83e7d56d0b56b9dd1f Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 1 Apr 2025 11:19:35 -0600
Subject: [PATCH 079/163] Bump jackson.version from 2.8.8 to 2.18.3 (#2283)
Bumps `jackson.version` from 2.8.8 to 2.18.3.
Updates `com.fasterxml.jackson.core:jackson-annotations` from 2.8.8 to 2.18.3
- [Commits](https://github.com/FasterXML/jackson/commits)
Updates `com.fasterxml.jackson.core:jackson-databind` from 2.8.8 to 2.18.3
- [Commits](https://github.com/FasterXML/jackson/commits)
---
updated-dependencies:
- dependency-name: com.fasterxml.jackson.core:jackson-annotations
dependency-type: direct:development
update-type: version-update:semver-minor
- dependency-name: com.fasterxml.jackson.core:jackson-databind
dependency-type: direct:development
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
docker-java/pom.xml | 8 ++++----
pom.xml | 2 +-
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/docker-java/pom.xml b/docker-java/pom.xml
index e3c3690f13..a80e7eeefb 100644
--- a/docker-java/pom.xml
+++ b/docker-java/pom.xml
@@ -125,16 +125,16 @@
com.fasterxml.jackson.corejackson-databind
-
- 2.8.8
+
+ 2.18.3testcom.fasterxml.jackson.corejackson-annotations
-
- 2.8.8
+
+ 2.18.3test
diff --git a/pom.xml b/pom.xml
index 71c5c6025a..63d09355cb 100644
--- a/pom.xml
+++ b/pom.xml
@@ -58,7 +58,7 @@
1.82.30.1
- 2.10.3
+ 2.18.32.10.34.5.121.21
From 4fe0ae49268e873eb358b994fdd277718e287402 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 1 Apr 2025 11:31:36 -0600
Subject: [PATCH 080/163] Bump
com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider (#2281)
Bumps com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider from 2.10.3 to 2.18.3.
---
updated-dependencies:
- dependency-name: com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 63d09355cb..05585d331f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -59,7 +59,7 @@
2.30.12.18.3
- 2.10.3
+ 2.18.34.5.121.212.18.0
From 4bfb74f88485a36dd0c09ae093edbcaa66d93722 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 1 Apr 2025 11:38:22 -0600
Subject: [PATCH 081/163] Bump org.projectlombok:lombok from 1.18.22 to 1.18.38
(#2210)
Bumps [org.projectlombok:lombok](https://github.com/projectlombok/lombok) from 1.18.22 to 1.18.38.
- [Changelog](https://github.com/projectlombok/lombok/blob/master/doc/changelog.markdown)
- [Commits](https://github.com/projectlombok/lombok/compare/v1.18.22...v1.18.38)
---
updated-dependencies:
- dependency-name: org.projectlombok:lombok
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
docker-java-api/pom.xml | 2 +-
docker-java/pom.xml | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/docker-java-api/pom.xml b/docker-java-api/pom.xml
index ce52af8c21..839d6ccb2b 100644
--- a/docker-java-api/pom.xml
+++ b/docker-java-api/pom.xml
@@ -42,7 +42,7 @@
org.projectlomboklombok
- 1.18.30
+ 1.18.38provided
diff --git a/docker-java/pom.xml b/docker-java/pom.xml
index a80e7eeefb..de8cb9c885 100644
--- a/docker-java/pom.xml
+++ b/docker-java/pom.xml
@@ -141,7 +141,7 @@
org.projectlomboklombok
- 1.18.30
+ 1.18.38provided
From a349b48b20b51c35129c6bbbb9535d226d9c1c36 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 1 Apr 2025 12:04:25 -0600
Subject: [PATCH 082/163] Bump org.apache.commons:commons-compress from 1.21 to
1.27.1 (#2256)
Bumps org.apache.commons:commons-compress from 1.21 to 1.27.1.
---
updated-dependencies:
- dependency-name: org.apache.commons:commons-compress
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 05585d331f..8ec664b111 100644
--- a/pom.xml
+++ b/pom.xml
@@ -61,7 +61,7 @@
2.18.32.18.34.5.12
- 1.21
+ 1.27.12.18.03.17.01.7.30
From 77766d0081468ccc2595b92bf2c6ef8ec4ebc455 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 1 Apr 2025 12:18:08 -0600
Subject: [PATCH 083/163] Bump org.immutables:value from 2.8.2 to 2.10.1
(#2220)
Bumps [org.immutables:value](https://github.com/immutables/immutables) from 2.8.2 to 2.10.1.
- [Release notes](https://github.com/immutables/immutables/releases)
- [Commits](https://github.com/immutables/immutables/compare/2.8.2...2.10.1)
---
updated-dependencies:
- dependency-name: org.immutables:value
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
docker-java-transport/pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docker-java-transport/pom.xml b/docker-java-transport/pom.xml
index 3f595903af..96f1f850ab 100644
--- a/docker-java-transport/pom.xml
+++ b/docker-java-transport/pom.xml
@@ -30,7 +30,7 @@
org.immutablesvalue
- 2.8.2
+ 2.10.1provided
From a404bd1aa4ad692da58c10b5a75e8774468216de Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Edd=C3=BA=20Mel=C3=A9ndez=20Gonzales?=
Date: Tue, 1 Apr 2025 12:36:28 -0600
Subject: [PATCH 084/163] Fix InspectContainerResponse data types to be able to
hold an int64 (#2392)
* Fix data types to be able to hold an int64
* Add japicmp exclusions in docker-java-api
Fixes #2321
---------
Co-authored-by: Torsten Krah
---
docker-java-api/pom.xml | 9 +++++++++
.../dockerjava/api/command/InspectContainerResponse.java | 8 ++++----
.../com/github/dockerjava/cmd/InspectContainerCmdIT.java | 4 ++--
3 files changed, 15 insertions(+), 6 deletions(-)
diff --git a/docker-java-api/pom.xml b/docker-java-api/pom.xml
index 839d6ccb2b..1138a27f79 100644
--- a/docker-java-api/pom.xml
+++ b/docker-java-api/pom.xml
@@ -84,6 +84,15 @@
com.github.siom79.japicmpjapicmp-maven-plugin
+
+
+
+
+ com.github.dockerjava.api.command.InspectContainerResponse#getSizeRootFs()
+ com.github.dockerjava.api.command.InspectContainerResponse#getSizeRw()
+
+
+
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/InspectContainerResponse.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/InspectContainerResponse.java
index 94207fd2ca..f06bd4ed94 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/command/InspectContainerResponse.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/InspectContainerResponse.java
@@ -61,10 +61,10 @@ public class InspectContainerResponse extends DockerObject {
private String id;
@JsonProperty("SizeRootFs")
- private Integer sizeRootFs;
+ private Long sizeRootFs;
@JsonProperty("SizeRw")
- private Integer sizeRw;
+ private Long sizeRw;
@JsonProperty("Image")
private String imageId;
@@ -124,11 +124,11 @@ public String getId() {
return id;
}
- public Integer getSizeRootFs() {
+ public Long getSizeRootFs() {
return sizeRootFs;
}
- public Integer getSizeRw() {
+ public Long getSizeRw() {
return sizeRw;
}
diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/InspectContainerCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/InspectContainerCmdIT.java
index 54d900db8b..cc1468f7ff 100644
--- a/docker-java/src/test/java/com/github/dockerjava/cmd/InspectContainerCmdIT.java
+++ b/docker-java/src/test/java/com/github/dockerjava/cmd/InspectContainerCmdIT.java
@@ -100,9 +100,9 @@ public void inspectContainerWithSize() throws DockerException {
// TODO check swarm
if (isNotSwarm(dockerRule.getClient())) {
assertNotNull(containerInfo.getSizeRootFs());
- assertTrue(containerInfo.getSizeRootFs().intValue() > 0);
+ assertTrue(containerInfo.getSizeRootFs() > 0L);
assertNotNull(containerInfo.getSizeRw());
- assertTrue(containerInfo.getSizeRw().intValue() == 0);
+ assertEquals(0L, containerInfo.getSizeRw().longValue());
}
}
From cb72675f16ce0f5c3561a9c6cf8925bc048d1034 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Edd=C3=BA=20Mel=C3=A9ndez?=
Date: Tue, 1 Apr 2025 12:41:44 -0600
Subject: [PATCH 085/163] Run dependabot on Tuesday
---
.github/dependabot.yml | 1 +
1 file changed, 1 insertion(+)
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index 7dec19aef0..d301147bee 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -4,5 +4,6 @@ updates:
directory: "/"
schedule:
interval: weekly
+ day: tuesday
open-pull-requests-limit: 99
rebase-strategy: disabled
From 1d6c3445c7877e0511e1fcb55708568b254831f6 Mon Sep 17 00:00:00 2001
From: Nikita Nikolenko
Date: Tue, 1 Apr 2025 20:46:49 +0200
Subject: [PATCH 086/163] Add some missed options to UpdateContainerCmd (#2389)
* Add some missed options to UpdateContainerCmd
* Delete old cpuPeriod and cpuQuota functions
* Add update container response tests
---
docker-java-api/pom.xml | 5 +-
.../api/command/UpdateContainerCmd.java | 97 +++++-
.../core/command/UpdateContainerCmdImpl.java | 293 +++++++++++++++++-
.../api/command/CommandJSONSamples.java | 4 +-
.../command/UpdateContainerResponseTest.java | 33 ++
.../dockerjava/cmd/UpdateContainerCmdIT.java | 4 +-
.../updateContainerResponse_empty.json | 1 +
.../updateContainerResponse_warnings.json | 5 +
8 files changed, 420 insertions(+), 22 deletions(-)
create mode 100644 docker-java/src/test/java/com/github/dockerjava/api/command/UpdateContainerResponseTest.java
create mode 100644 docker-java/src/test/resources/com/github/dockerjava/api/command/updateContainerResponse_empty.json
create mode 100644 docker-java/src/test/resources/com/github/dockerjava/api/command/updateContainerResponse_warnings.json
diff --git a/docker-java-api/pom.xml b/docker-java-api/pom.xml
index 1138a27f79..8bfd9e8d49 100644
--- a/docker-java-api/pom.xml
+++ b/docker-java-api/pom.xml
@@ -87,7 +87,10 @@
-
+ com.github.dockerjava.api.command.UpdateContainerCmd#getCpuPeriod()
+ com.github.dockerjava.api.command.UpdateContainerCmd#withCpuPeriod(java.lang.Integer)
+ com.github.dockerjava.api.command.UpdateContainerCmd#getCpuQuota()
+ com.github.dockerjava.api.command.UpdateContainerCmd#withCpuQuota(java.lang.Integer)com.github.dockerjava.api.command.InspectContainerResponse#getSizeRootFs()com.github.dockerjava.api.command.InspectContainerResponse#getSizeRw()
diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/command/UpdateContainerCmd.java b/docker-java-api/src/main/java/com/github/dockerjava/api/command/UpdateContainerCmd.java
index 82fbca5f86..d53bcdcdfc 100644
--- a/docker-java-api/src/main/java/com/github/dockerjava/api/command/UpdateContainerCmd.java
+++ b/docker-java-api/src/main/java/com/github/dockerjava/api/command/UpdateContainerCmd.java
@@ -1,9 +1,16 @@
package com.github.dockerjava.api.command;
+import com.github.dockerjava.api.model.BlkioRateDevice;
+import com.github.dockerjava.api.model.BlkioWeightDevice;
+import com.github.dockerjava.api.model.Device;
+import com.github.dockerjava.api.model.DeviceRequest;
+import com.github.dockerjava.api.model.RestartPolicy;
+import com.github.dockerjava.api.model.Ulimit;
import com.github.dockerjava.api.model.UpdateContainerResponse;
import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;
+import java.util.List;
/**
* @author Kanstantsin Shautsou
@@ -13,22 +20,47 @@ public interface UpdateContainerCmd extends SyncDockerCmd getBlkioWeightDevice();
+
+ UpdateContainerCmd withBlkioWeightDevice(List blkioWeightDevice);
@CheckForNull
- Integer getCpuPeriod();
+ List getBlkioDeviceReadBps();
- UpdateContainerCmd withCpuPeriod(Integer cpuPeriod);
+ UpdateContainerCmd withBlkioDeviceReadBps(List blkioDeviceReadBps);
@CheckForNull
- Integer getCpuQuota();
+ List getBlkioDeviceWriteBps();
- UpdateContainerCmd withCpuQuota(Integer cpuQuota);
+ UpdateContainerCmd withBlkioDeviceWriteBps(List blkioDeviceWriteBps);
+
+ @CheckForNull
+ List getBlkioDeviceReadIOps();
+
+ UpdateContainerCmd withBlkioDeviceReadIOps(List blkioDeviceReadIOps);
+
+ @CheckForNull
+ List getBlkioDeviceWriteIOps();
+
+ UpdateContainerCmd withBlkioDeviceWriteIOps(List blkioDeviceWriteIOps);
+
+ @CheckForNull
+ Long getCpuPeriod();
+
+ UpdateContainerCmd withCpuPeriod(Long cpuPeriod);
+
+ @CheckForNull
+ Long getCpuQuota();
+
+ UpdateContainerCmd withCpuQuota(Long cpuQuota);
@CheckForNull
String getCpusetCpus();
@@ -45,6 +77,31 @@ public interface UpdateContainerCmd extends SyncDockerCmd getDevices();
+
+ UpdateContainerCmd withDevices(List devices);
+
+ @CheckForNull
+ List getDeviceCgroupRules();
+
+ UpdateContainerCmd withDeviceCgroupRules(List deviceCgroupRules);
+
+ @CheckForNull
+ List getDeviceRequests();
+
+ UpdateContainerCmd withDeviceRequests(List deviceRequests);
+
@CheckForNull
Long getKernelMemory();
@@ -65,6 +122,36 @@ public interface UpdateContainerCmd extends SyncDockerCmd getUlimits();
+
+ UpdateContainerCmd withUlimits(List ulimits);
+
+ @CheckForNull
+ RestartPolicy getRestartPolicy();
+
+ UpdateContainerCmd withRestartPolicy(RestartPolicy restartPolicy);
+
interface Exec extends DockerCmdSyncExec {
}
}
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/command/UpdateContainerCmdImpl.java b/docker-java-core/src/main/java/com/github/dockerjava/core/command/UpdateContainerCmdImpl.java
index 14357ba08a..47ab710eb5 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/command/UpdateContainerCmdImpl.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/command/UpdateContainerCmdImpl.java
@@ -4,6 +4,12 @@
import com.fasterxml.jackson.annotation.JsonProperty;
import com.github.dockerjava.api.command.UpdateContainerCmd;
import com.github.dockerjava.api.exception.NotFoundException;
+import com.github.dockerjava.api.model.BlkioRateDevice;
+import com.github.dockerjava.api.model.BlkioWeightDevice;
+import com.github.dockerjava.api.model.Device;
+import com.github.dockerjava.api.model.DeviceRequest;
+import com.github.dockerjava.api.model.RestartPolicy;
+import com.github.dockerjava.api.model.Ulimit;
import com.github.dockerjava.api.model.UpdateContainerResponse;
import com.github.dockerjava.core.RemoteApiVersion;
import org.apache.commons.lang3.builder.EqualsBuilder;
@@ -12,6 +18,7 @@
import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;
+import java.util.List;
/**
* @author Kanstantsin Shautsou
@@ -28,14 +35,38 @@ public class UpdateContainerCmdImpl extends AbstrDockerCmd blkioWeightDevice;
+
+ @JsonProperty("BlkioDeviceReadBps")
+ private List blkioDeviceReadBps;
+
+ @JsonProperty("BlkioDeviceWriteBps")
+ private List blkioDeviceWriteBps;
+
+ @JsonProperty("BlkioDeviceReadIOps")
+ private List blkioDeviceReadIOps;
+
+ @JsonProperty("BlkioDeviceWriteIOps")
+ private List blkioDeviceWriteIOps;
+
@JsonProperty("CpuShares")
private Integer cpuShares;
@JsonProperty("CpuPeriod")
- private Integer cpuPeriod;
+ private Long cpuPeriod;
@JsonProperty("CpuQuota")
- private Integer cpuQuota;
+ private Long cpuQuota;
+
+ @JsonProperty("CpuRealtimePeriod")
+ private Long cpuRealtimePeriod;
+
+ @JsonProperty("CpuRealtimeRuntime")
+ private Long cpuRealtimeRuntime;
+
+ @JsonProperty("NanoCpus")
+ private Long nanoCPUs;
@JsonProperty("CpusetCpus")
private String cpusetCpus;
@@ -43,6 +74,18 @@ public class UpdateContainerCmdImpl extends AbstrDockerCmd devices;
+
+ @JsonProperty("DeviceCgroupRules")
+ private List deviceCgroupRules;
+
+ /**
+ * @since {@link com.github.dockerjava.core.RemoteApiVersion#VERSION_1_40}
+ */
+ @JsonProperty("DeviceRequests")
+ private List deviceRequests;
+
@JsonProperty("Memory")
private Long memory;
@@ -55,11 +98,43 @@ public class UpdateContainerCmdImpl extends AbstrDockerCmd ulimits;
+
+ @JsonProperty("RestartPolicy")
+ private RestartPolicy restartPolicy;
+
public UpdateContainerCmdImpl(UpdateContainerCmd.Exec exec, String containerId) {
super(exec);
withContainerId(containerId);
}
+ /**
+ * @see #containerId
+ */
+ @CheckForNull
+ @JsonIgnore
+ public String getContainerId() {
+ return containerId;
+ }
+
+ /**
+ * @see #containerId
+ */
+ public UpdateContainerCmd withContainerId(@Nonnull String containerId) {
+ this.containerId = containerId;
+ return this;
+ }
+
/**
* @see #blkioWeight
*/
@@ -77,19 +152,68 @@ public UpdateContainerCmd withBlkioWeight(Integer blkioWeight) {
}
/**
- * @see #containerId
+ * @see #blkioWeightDevice
*/
@CheckForNull
- @JsonIgnore
- public String getContainerId() {
- return containerId;
+ public List getBlkioWeightDevice() {
+ return blkioWeightDevice;
+ }
+
+ public UpdateContainerCmd withBlkioWeightDevice(List blkioWeightDevice) {
+ this.blkioWeightDevice = blkioWeightDevice;
+ return this;
}
/**
- * @see #containerId
+ * @see #blkioDeviceReadBps
*/
- public UpdateContainerCmd withContainerId(@Nonnull String containerId) {
- this.containerId = containerId;
+ @CheckForNull
+ public List getBlkioDeviceReadBps() {
+ return blkioDeviceReadBps;
+ }
+
+ public UpdateContainerCmd withBlkioDeviceReadBps(List blkioDeviceReadBps) {
+ this.blkioDeviceReadBps = blkioDeviceReadBps;
+ return this;
+ }
+
+ /**
+ * @see #blkioDeviceWriteBps
+ */
+ @CheckForNull
+ public List getBlkioDeviceWriteBps() {
+ return blkioDeviceWriteBps;
+ }
+
+ public UpdateContainerCmd withBlkioDeviceWriteBps(List blkioDeviceWriteBps) {
+ this.blkioDeviceWriteBps = blkioDeviceWriteBps;
+ return this;
+ }
+
+ /**
+ * @see #blkioDeviceReadIOps
+ */
+ @CheckForNull
+ public List getBlkioDeviceReadIOps() {
+ return blkioDeviceReadIOps;
+ }
+
+ public UpdateContainerCmd withBlkioDeviceReadIOps(List blkioDeviceReadIOps) {
+ this.blkioDeviceReadIOps = blkioDeviceReadIOps;
+ return this;
+ }
+
+ /**
+ * @see #blkioDeviceWriteIOps
+ */
+ @CheckForNull
+ public List getBlkioDeviceWriteIOps() {
+ return blkioDeviceWriteIOps;
+ }
+
+ @Override
+ public UpdateContainerCmd withBlkioDeviceWriteIOps(List blkioDeviceWriteIOps) {
+ this.blkioDeviceWriteIOps = blkioDeviceWriteIOps;
return this;
}
@@ -97,14 +221,14 @@ public UpdateContainerCmd withContainerId(@Nonnull String containerId) {
* @see #cpuPeriod
*/
@CheckForNull
- public Integer getCpuPeriod() {
+ public Long getCpuPeriod() {
return cpuPeriod;
}
/**
* @see #cpuPeriod
*/
- public UpdateContainerCmd withCpuPeriod(Integer cpuPeriod) {
+ public UpdateContainerCmd withCpuPeriod(Long cpuPeriod) {
this.cpuPeriod = cpuPeriod;
return this;
}
@@ -113,14 +237,14 @@ public UpdateContainerCmd withCpuPeriod(Integer cpuPeriod) {
* @see #cpuQuota
*/
@CheckForNull
- public Integer getCpuQuota() {
+ public Long getCpuQuota() {
return cpuQuota;
}
/**
* @see #cpuQuota
*/
- public UpdateContainerCmd withCpuQuota(Integer cpuQuota) {
+ public UpdateContainerCmd withCpuQuota(Long cpuQuota) {
this.cpuQuota = cpuQuota;
return this;
}
@@ -173,6 +297,71 @@ public UpdateContainerCmd withCpuShares(Integer cpuShares) {
return this;
}
+ /**
+ * @see #cpuRealtimePeriod
+ */
+ @CheckForNull
+ public Long getCpuRealtimePeriod() {
+ return cpuRealtimePeriod;
+ }
+
+ public UpdateContainerCmd withCpuRealtimePeriod(Long cpuRealtimePeriod) {
+ this.cpuRealtimePeriod = cpuRealtimePeriod;
+ return this;
+ }
+
+ /**
+ * @see #cpuRealtimeRuntime
+ */
+ @CheckForNull
+ public Long getCpuRealtimeRuntime() {
+ return cpuRealtimeRuntime;
+ }
+
+ public UpdateContainerCmd withCpuRealtimeRuntime(Long cpuRealtimeRuntime) {
+ this.cpuRealtimeRuntime = cpuRealtimeRuntime;
+ return this;
+ }
+
+ /**
+ * @see #devices
+ */
+ @CheckForNull
+ public List getDevices() {
+ return devices;
+ }
+
+ public UpdateContainerCmd withDevices(List devices) {
+ this.devices = devices;
+ return this;
+ }
+
+ /**
+ * @see #deviceCgroupRules
+ */
+ @CheckForNull
+ public List getDeviceCgroupRules() {
+ return deviceCgroupRules;
+ }
+
+ public UpdateContainerCmd withDeviceCgroupRules(List deviceCgroupRules) {
+ this.deviceCgroupRules = deviceCgroupRules;
+ return this;
+ }
+
+ /**
+ * @see #deviceRequests
+ */
+ @CheckForNull
+ public List getDeviceRequests() {
+ return deviceRequests;
+ }
+
+ public UpdateContainerCmd withDeviceRequests(List deviceRequests) {
+ this.deviceRequests = deviceRequests;
+ return this;
+ }
+
/**
* @see #kernelMemory
*/
@@ -237,6 +426,84 @@ public UpdateContainerCmd withMemorySwap(Long memorySwap) {
return this;
}
+ /**
+ * @see #nanoCPUs
+ */
+ @CheckForNull
+ public Long getNanoCPUs() {
+ return nanoCPUs;
+ }
+
+ public UpdateContainerCmd withNanoCPUs(Long nanoCPUs) {
+ this.nanoCPUs = nanoCPUs;
+ return this;
+ }
+
+ /**
+ * @see #oomKillDisable
+ */
+ @CheckForNull
+ public Boolean getOomKillDisable() {
+ return oomKillDisable;
+ }
+
+ public UpdateContainerCmd withOomKillDisable(Boolean oomKillDisable) {
+ this.oomKillDisable = oomKillDisable;
+ return this;
+ }
+
+ /**
+ * @see #init
+ */
+ @CheckForNull
+ public Boolean getInit() {
+ return init;
+ }
+
+ public UpdateContainerCmd withInit(Boolean init) {
+ this.init = init;
+ return this;
+ }
+
+ /**
+ * @see #pidsLimit
+ */
+ @CheckForNull
+ public Long getPidsLimit() {
+ return pidsLimit;
+ }
+
+ public UpdateContainerCmd withPidsLimit(Long pidsLimit) {
+ this.pidsLimit = pidsLimit;
+ return this;
+ }
+
+ /**
+ * @see #ulimits
+ */
+ @CheckForNull
+ public List getUlimits() {
+ return ulimits;
+ }
+
+ public UpdateContainerCmd withUlimits(List ulimits) {
+ this.ulimits = ulimits;
+ return this;
+ }
+
+ /**
+ * @see #restartPolicy
+ */
+ @CheckForNull
+ public RestartPolicy getRestartPolicy() {
+ return restartPolicy;
+ }
+
+ public UpdateContainerCmd withRestartPolicy(RestartPolicy restartPolicy) {
+ this.restartPolicy = restartPolicy;
+ return this;
+ }
+
/**
* @throws NotFoundException No such container
*/
diff --git a/docker-java/src/test/java/com/github/dockerjava/api/command/CommandJSONSamples.java b/docker-java/src/test/java/com/github/dockerjava/api/command/CommandJSONSamples.java
index 0cf5141d49..23ef4b7f25 100644
--- a/docker-java/src/test/java/com/github/dockerjava/api/command/CommandJSONSamples.java
+++ b/docker-java/src/test/java/com/github/dockerjava/api/command/CommandJSONSamples.java
@@ -28,7 +28,9 @@ public enum CommandJSONSamples implements JSONResourceRef {
inspectContainerResponse_full_1_21,
inspectContainerResponse_full_1_26a,
inspectContainerResponse_full_1_26b,
- inspectContainerResponse_empty;
+ inspectContainerResponse_empty,
+ updateContainerResponse_empty,
+ updateContainerResponse_warnings;
@Override
public String getFileName() {
diff --git a/docker-java/src/test/java/com/github/dockerjava/api/command/UpdateContainerResponseTest.java b/docker-java/src/test/java/com/github/dockerjava/api/command/UpdateContainerResponseTest.java
new file mode 100644
index 0000000000..300a5c324b
--- /dev/null
+++ b/docker-java/src/test/java/com/github/dockerjava/api/command/UpdateContainerResponseTest.java
@@ -0,0 +1,33 @@
+package com.github.dockerjava.api.command;
+
+import com.github.dockerjava.api.model.UpdateContainerResponse;
+import org.junit.Test;
+
+import java.io.IOException;
+import java.util.List;
+
+import static com.github.dockerjava.test.serdes.JSONTestHelper.testRoundTrip;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+
+public class UpdateContainerResponseTest {
+ @Test
+ public void roundTrip_empty() throws IOException {
+ UpdateContainerResponse response = testRoundTrip(CommandJSONSamples.updateContainerResponse_empty, UpdateContainerResponse.class);
+ assertNull(response.getWarnings());
+ }
+
+ @Test
+ public void roundTrip_warnings() throws IOException {
+ UpdateContainerResponse response = testRoundTrip(CommandJSONSamples.updateContainerResponse_warnings,
+ UpdateContainerResponse.class);
+
+ List warnings = response.getWarnings();
+ assertNotNull(warnings);
+ assertEquals(1, warnings.size());
+
+ final String warning = warnings.get(0);
+ assertEquals("Published ports are discarded when using host network mode", warning);
+ }
+}
diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/UpdateContainerCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/UpdateContainerCmdIT.java
index e5bb554991..e1e637809c 100644
--- a/docker-java/src/test/java/com/github/dockerjava/cmd/UpdateContainerCmdIT.java
+++ b/docker-java/src/test/java/com/github/dockerjava/cmd/UpdateContainerCmdIT.java
@@ -48,8 +48,8 @@ public void updateContainer() throws DockerException {
dockerRule.getClient().updateContainerCmd(containerId)
.withBlkioWeight(300)
.withCpuShares(512)
- .withCpuPeriod(100000)
- .withCpuQuota(50000)
+ .withCpuPeriod(100000L)
+ .withCpuQuota(50000L)
// .withCpusetCpus("0") // depends on env
.withCpusetMems("0")
// .withMemory(209715200L + 2L)
diff --git a/docker-java/src/test/resources/com/github/dockerjava/api/command/updateContainerResponse_empty.json b/docker-java/src/test/resources/com/github/dockerjava/api/command/updateContainerResponse_empty.json
new file mode 100644
index 0000000000..0967ef424b
--- /dev/null
+++ b/docker-java/src/test/resources/com/github/dockerjava/api/command/updateContainerResponse_empty.json
@@ -0,0 +1 @@
+{}
diff --git a/docker-java/src/test/resources/com/github/dockerjava/api/command/updateContainerResponse_warnings.json b/docker-java/src/test/resources/com/github/dockerjava/api/command/updateContainerResponse_warnings.json
new file mode 100644
index 0000000000..edeaedc7a8
--- /dev/null
+++ b/docker-java/src/test/resources/com/github/dockerjava/api/command/updateContainerResponse_warnings.json
@@ -0,0 +1,5 @@
+{
+ "Warnings": [
+ "Published ports are discarded when using host network mode"
+ ]
+}
From d9b653361df9ace172a65f5267a1a80907558ebf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Edd=C3=BA=20Mel=C3=A9ndez=20Gonzales?=
Date: Tue, 1 Apr 2025 14:43:32 -0600
Subject: [PATCH 087/163] Fix possible CME while replacing properties (#2416)
Fixes #2274
---------
Co-authored-by: Torsten Krah
---
.../dockerjava/core/DefaultDockerClientConfig.java | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/DefaultDockerClientConfig.java b/docker-java-core/src/main/java/com/github/dockerjava/core/DefaultDockerClientConfig.java
index 8011a2a5e2..dad75b3607 100644
--- a/docker-java-core/src/main/java/com/github/dockerjava/core/DefaultDockerClientConfig.java
+++ b/docker-java-core/src/main/java/com/github/dockerjava/core/DefaultDockerClientConfig.java
@@ -5,6 +5,8 @@
import com.github.dockerjava.api.model.AuthConfigurations;
import com.github.dockerjava.core.NameParser.HostnameReposName;
import com.github.dockerjava.core.NameParser.ReposTag;
+
+import java.util.Map.Entry;
import java.util.Optional;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.SystemUtils;
@@ -128,9 +130,11 @@ private static Properties loadIncludedDockerProperties(Properties systemProperti
}
private static void replaceProperties(Properties properties, Properties replacements) {
- for (Object objectKey : properties.keySet()) {
- String key = objectKey.toString();
- properties.setProperty(key, replaceProperties(properties.getProperty(key), replacements));
+ for (Entry
From 476b88b81929e5af0f59c10d1ac5d55b21abcc74 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 30 Sep 2025 18:01:16 -0600
Subject: [PATCH 139/163] Bump com.fasterxml.jackson.core:jackson-annotations
from 2.19.2 to 2.20 (#2521)
Bumps [com.fasterxml.jackson.core:jackson-annotations](https://github.com/FasterXML/jackson) from 2.19.2 to 2.20.
- [Commits](https://github.com/FasterXML/jackson/commits)
---
updated-dependencies:
- dependency-name: com.fasterxml.jackson.core:jackson-annotations
dependency-version: '2.20'
dependency-type: direct:development
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
docker-java-api/pom.xml | 2 +-
docker-java/pom.xml | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/docker-java-api/pom.xml b/docker-java-api/pom.xml
index c3e17887ac..dda682ab1f 100644
--- a/docker-java-api/pom.xml
+++ b/docker-java-api/pom.xml
@@ -23,7 +23,7 @@
com.fasterxml.jackson.corejackson-annotations
- 2.19.2
+ 2.20
diff --git a/docker-java/pom.xml b/docker-java/pom.xml
index f1cc09f64f..b6f5c85648 100644
--- a/docker-java/pom.xml
+++ b/docker-java/pom.xml
@@ -133,8 +133,8 @@
com.fasterxml.jackson.corejackson-annotations
-
- 2.19.2
+
+ 2.20test
From 0873a609e55d4ff15a504b38c9a664fdc73322bd Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 14 Oct 2025 09:24:06 -0600
Subject: [PATCH 140/163] Bump com.github.siom79.japicmp:japicmp-maven-plugin
(#2529)
Bumps [com.github.siom79.japicmp:japicmp-maven-plugin](https://github.com/siom79/japicmp) from 0.23.1 to 0.24.2.
- [Release notes](https://github.com/siom79/japicmp/releases)
- [Changelog](https://github.com/siom79/japicmp/blob/master/release.py)
- [Commits](https://github.com/siom79/japicmp/compare/japicmp-base-0.23.1...japicmp-base-0.24.2)
---
updated-dependencies:
- dependency-name: com.github.siom79.japicmp:japicmp-maven-plugin
dependency-version: 0.24.2
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 8eb0a3adef..f8b0fe93c1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -242,7 +242,7 @@
com.github.siom79.japicmpjapicmp-maven-plugin
- 0.23.1
+ 0.24.2
From 9c2ac260d18589807cfb7819dbabc0994af0e611 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 28 Oct 2025 10:29:34 -0600
Subject: [PATCH 141/163] Bump netty.version from 4.2.6.Final to 4.2.7.Final
(#2531)
Bumps `netty.version` from 4.2.6.Final to 4.2.7.Final.
Updates `io.netty:netty-codec-http` from 4.2.6.Final to 4.2.7.Final
- [Commits](https://github.com/netty/netty/compare/netty-4.2.6.Final...netty-4.2.7.Final)
Updates `io.netty:netty-handler` from 4.2.6.Final to 4.2.7.Final
- [Commits](https://github.com/netty/netty/compare/netty-4.2.6.Final...netty-4.2.7.Final)
Updates `io.netty:netty-handler-proxy` from 4.2.6.Final to 4.2.7.Final
- [Commits](https://github.com/netty/netty/compare/netty-4.2.6.Final...netty-4.2.7.Final)
Updates `io.netty:netty-transport-native-epoll` from 4.2.6.Final to 4.2.7.Final
- [Commits](https://github.com/netty/netty/compare/netty-4.2.6.Final...netty-4.2.7.Final)
Updates `io.netty:netty-transport-native-kqueue` from 4.2.6.Final to 4.2.7.Final
- [Commits](https://github.com/netty/netty/compare/netty-4.2.6.Final...netty-4.2.7.Final)
---
updated-dependencies:
- dependency-name: io.netty:netty-codec-http
dependency-version: 4.2.7.Final
dependency-type: direct:production
update-type: version-update:semver-patch
- dependency-name: io.netty:netty-handler
dependency-version: 4.2.7.Final
dependency-type: direct:production
update-type: version-update:semver-patch
- dependency-name: io.netty:netty-handler-proxy
dependency-version: 4.2.7.Final
dependency-type: direct:production
update-type: version-update:semver-patch
- dependency-name: io.netty:netty-transport-native-epoll
dependency-version: 4.2.7.Final
dependency-type: direct:production
update-type: version-update:semver-patch
- dependency-name: io.netty:netty-transport-native-kqueue
dependency-version: 4.2.7.Final
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index f8b0fe93c1..c7c05864c0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -70,7 +70,7 @@
1.2.3
- 4.2.6.Final
+ 4.2.7.Final2.21.82.3.3
From 0bc94c6b305412c39a4abf2b4c5c69a01b182641 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 28 Oct 2025 10:30:02 -0600
Subject: [PATCH 142/163] Bump net.java.dev.jna:jna from 5.18.0 to 5.18.1
(#2524)
Bumps [net.java.dev.jna:jna](https://github.com/java-native-access/jna) from 5.18.0 to 5.18.1.
- [Changelog](https://github.com/java-native-access/jna/blob/master/CHANGES.md)
- [Commits](https://github.com/java-native-access/jna/compare/5.18.0...5.18.1)
---
updated-dependencies:
- dependency-name: net.java.dev.jna:jna
dependency-version: 5.18.1
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
docker-java-transport-httpclient5/pom.xml | 2 +-
docker-java-transport-okhttp/pom.xml | 2 +-
docker-java-transport/pom.xml | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/docker-java-transport-httpclient5/pom.xml b/docker-java-transport-httpclient5/pom.xml
index 744676f813..52cf66de2b 100644
--- a/docker-java-transport-httpclient5/pom.xml
+++ b/docker-java-transport-httpclient5/pom.xml
@@ -35,7 +35,7 @@
net.java.dev.jnajna
- 5.18.0
+ 5.18.1
diff --git a/docker-java-transport-okhttp/pom.xml b/docker-java-transport-okhttp/pom.xml
index c30e369a03..2a0ae42276 100644
--- a/docker-java-transport-okhttp/pom.xml
+++ b/docker-java-transport-okhttp/pom.xml
@@ -35,7 +35,7 @@
net.java.dev.jnajna
- 5.18.0
+ 5.18.1
diff --git a/docker-java-transport/pom.xml b/docker-java-transport/pom.xml
index 6a9e952704..8be456dd11 100644
--- a/docker-java-transport/pom.xml
+++ b/docker-java-transport/pom.xml
@@ -37,7 +37,7 @@
net.java.dev.jnajna
- 5.18.0
+ 5.18.1provided
From cbf88f5a6d3407159c69fd0ffc715a6ff4d11ef8 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 3 Nov 2025 11:06:35 -0600
Subject: [PATCH 143/163] Bump com.fasterxml.jackson.core:jackson-databind from
2.19.2 to 2.20.1 (#2537)
Bumps [com.fasterxml.jackson.core:jackson-databind](https://github.com/FasterXML/jackson) from 2.19.2 to 2.20.1.
- [Commits](https://github.com/FasterXML/jackson/commits)
---
updated-dependencies:
- dependency-name: com.fasterxml.jackson.core:jackson-databind
dependency-version: 2.20.1
dependency-type: direct:development
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
docker-java-core/pom.xml | 2 +-
docker-java/pom.xml | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/docker-java-core/pom.xml b/docker-java-core/pom.xml
index 90fa3a8130..89c72c0242 100644
--- a/docker-java-core/pom.xml
+++ b/docker-java-core/pom.xml
@@ -58,7 +58,7 @@
com.fasterxml.jackson.corejackson-databind
- 2.19.2
+ 2.20.1
diff --git a/docker-java/pom.xml b/docker-java/pom.xml
index b6f5c85648..3cfd7f2550 100644
--- a/docker-java/pom.xml
+++ b/docker-java/pom.xml
@@ -125,8 +125,8 @@
com.fasterxml.jackson.corejackson-databind
-
- 2.19.2
+
+ 2.20.1test
From d72d7418ecb1aea54fffb32924960822029910c9 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 12 Nov 2025 11:25:27 -0600
Subject: [PATCH 144/163] Bump commons-io:commons-io from 2.20.0 to 2.21.0
(#2539)
Bumps [commons-io:commons-io](https://github.com/apache/commons-io) from 2.20.0 to 2.21.0.
- [Changelog](https://github.com/apache/commons-io/blob/master/RELEASE-NOTES.txt)
- [Commits](https://github.com/apache/commons-io/compare/rel/commons-io-2.20.0...rel/commons-io-2.21.0)
---
updated-dependencies:
- dependency-name: commons-io:commons-io
dependency-version: 2.21.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index c7c05864c0..72add3980d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -60,7 +60,7 @@
2.474.5.121.28.0
- 2.20.0
+ 2.21.03.19.01.7.30
From 7ca5a47190dc4c9c9499a88a79369e436784ad94 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 12 Nov 2025 11:25:49 -0600
Subject: [PATCH 145/163] Bump org.testcontainers:testcontainers from 1.21.3 to
2.0.1 (#2530)
Bumps [org.testcontainers:testcontainers](https://github.com/testcontainers/testcontainers-java) from 1.21.3 to 2.0.1.
- [Release notes](https://github.com/testcontainers/testcontainers-java/releases)
- [Changelog](https://github.com/testcontainers/testcontainers-java/blob/main/CHANGELOG.md)
- [Commits](https://github.com/testcontainers/testcontainers-java/compare/1.21.3...2.0.1)
---
updated-dependencies:
- dependency-name: org.testcontainers:testcontainers
dependency-version: 2.0.1
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
docker-java-transport-tck/pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docker-java-transport-tck/pom.xml b/docker-java-transport-tck/pom.xml
index a7a74101b1..3d38f9dfc3 100644
--- a/docker-java-transport-tck/pom.xml
+++ b/docker-java-transport-tck/pom.xml
@@ -46,7 +46,7 @@
org.testcontainerstestcontainers
- 1.21.3
+ 2.0.1
From c6f0c7202e3e50d9b5e234bd7cb5643551dd5ff6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Edd=C3=BA=20Mel=C3=A9ndez=20Gonzales?=
Date: Wed, 12 Nov 2025 18:33:11 -0600
Subject: [PATCH 146/163] Set default docker API version to 1.44 (#2540)
---
.../src/test/java/com/github/dockerjava/cmd/CommitCmdIT.java | 3 ---
.../java/com/github/dockerjava/cmd/CreateContainerCmdIT.java | 4 ++--
.../java/com/github/dockerjava/cmd/InspectContainerCmdIT.java | 4 +++-
.../test/java/com/github/dockerjava/cmd/ListImagesCmdIT.java | 4 ++--
.../test/java/com/github/dockerjava/cmd/LoadImageCmdIT.java | 2 +-
.../com/github/dockerjava/cmd/RestartContainerCmdImplIT.java | 2 +-
.../src/test/java/com/github/dockerjava/core/DockerRule.java | 2 +-
.../dockerjava/netty/NettyDockerCmdExecFactoryConfigTest.java | 4 ++--
8 files changed, 12 insertions(+), 13 deletions(-)
diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/CommitCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/CommitCmdIT.java
index 39f51adc7d..bd87d4aab5 100644
--- a/docker-java/src/test/java/com/github/dockerjava/cmd/CommitCmdIT.java
+++ b/docker-java/src/test/java/com/github/dockerjava/cmd/CommitCmdIT.java
@@ -46,9 +46,6 @@ public void commit() throws DockerException, InterruptedException {
InspectImageResponse inspectImageResponse = dockerRule.getClient().inspectImageCmd(imageId).exec();
LOG.info("Image Inspect: {}", inspectImageResponse.toString());
- assertThat(inspectImageResponse, hasField("container", startsWith(container.getId())));
- assertThat(inspectImageResponse.getContainerConfig().getImage(), equalTo(DEFAULT_IMAGE));
-
InspectImageResponse busyboxImg = dockerRule.getClient().inspectImageCmd("busybox").exec();
assertThat(inspectImageResponse.getParent(), equalTo(busyboxImg.getId()));
diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/CreateContainerCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/CreateContainerCmdIT.java
index d91791cbcb..99d5dd9974 100644
--- a/docker-java/src/test/java/com/github/dockerjava/cmd/CreateContainerCmdIT.java
+++ b/docker-java/src/test/java/com/github/dockerjava/cmd/CreateContainerCmdIT.java
@@ -60,7 +60,7 @@
import static com.github.dockerjava.api.model.HostConfig.newHostConfig;
import static com.github.dockerjava.core.RemoteApiVersion.VERSION_1_23;
import static com.github.dockerjava.core.RemoteApiVersion.VERSION_1_24;
-import static com.github.dockerjava.core.RemoteApiVersion.VERSION_1_43;
+import static com.github.dockerjava.core.RemoteApiVersion.VERSION_1_44;
import static com.github.dockerjava.junit.DockerMatchers.isGreaterOrEqual;
import static com.github.dockerjava.junit.DockerMatchers.mountedVolumes;
import static com.github.dockerjava.core.DockerRule.DEFAULT_IMAGE;
@@ -1148,7 +1148,7 @@ public void shouldHandleANetworkAliasWithoutACustomNetworkGracefully() {
@Test
public void createContainerWithAnnotations() throws DockerException {
DefaultDockerClientConfig forcedConfig = DefaultDockerClientConfig.createDefaultConfigBuilder()
- .withApiVersion(VERSION_1_43)
+ .withApiVersion(VERSION_1_44)
.withRegistryUrl("https://index.docker.io/v1/")
.build();
diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/InspectContainerCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/InspectContainerCmdIT.java
index cc1468f7ff..e47a911d7e 100644
--- a/docker-java/src/test/java/com/github/dockerjava/cmd/InspectContainerCmdIT.java
+++ b/docker-java/src/test/java/com/github/dockerjava/cmd/InspectContainerCmdIT.java
@@ -6,6 +6,7 @@
import com.github.dockerjava.api.exception.DockerException;
import com.github.dockerjava.api.exception.NotFoundException;
import com.github.dockerjava.api.model.Container;
+import org.junit.Ignore;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -102,7 +103,7 @@ public void inspectContainerWithSize() throws DockerException {
assertNotNull(containerInfo.getSizeRootFs());
assertTrue(containerInfo.getSizeRootFs() > 0L);
assertNotNull(containerInfo.getSizeRw());
- assertEquals(0L, containerInfo.getSizeRw().longValue());
+ assertEquals(4096, containerInfo.getSizeRw().longValue());
}
}
@@ -127,6 +128,7 @@ public void inspectContainerRestartCount() throws DockerException {
}
@Test
+ @Ignore
public void inspectContainerNetworkSettings() throws DockerException {
CreateContainerResponse container = dockerRule.getClient().createContainerCmd("busybox")
diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/ListImagesCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/ListImagesCmdIT.java
index 38b756dab5..67ba85672d 100644
--- a/docker-java/src/test/java/com/github/dockerjava/cmd/ListImagesCmdIT.java
+++ b/docker-java/src/test/java/com/github/dockerjava/cmd/ListImagesCmdIT.java
@@ -40,9 +40,9 @@ public void listImages() throws DockerException {
Image img = images.get(0);
assertThat(img.getCreated(), is(greaterThan(0L)));
- assertThat(img.getVirtualSize(), is(greaterThan(0L)));
+ assertThat(img.getSize(), is(greaterThan(0L)));
assertThat(img.getId(), not(is(emptyString())));
- assertThat(img.getRepoTags(), not(emptyArray()));
+ assertThat(img.getRepoTags(), emptyArray());
}
@Test
diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/LoadImageCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/LoadImageCmdIT.java
index 5b87f17a69..36a8d51fca 100644
--- a/docker-java/src/test/java/com/github/dockerjava/cmd/LoadImageCmdIT.java
+++ b/docker-java/src/test/java/com/github/dockerjava/cmd/LoadImageCmdIT.java
@@ -25,7 +25,7 @@ public class LoadImageCmdIT extends CmdIT {
@Before
public void beforeMethod() {
- expectedImageId = "sha256:56031f66eb0cef2e2e5cb2d1dabafaa0ebcd0a18a507d313b5bdb8c0472c5eba";
+ expectedImageId = "sha256:28a8ed28c8b7bd9d7fc00f22ac7df6d385436b93e88ac978943f3dba06d836b4";
if (findImageWithId(expectedImageId, dockerRule.getClient().listImagesCmd().exec()) != null) {
dockerRule.getClient().removeImageCmd(expectedImageId).exec();
}
diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/RestartContainerCmdImplIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/RestartContainerCmdImplIT.java
index bdf309dc21..592c9c6501 100644
--- a/docker-java/src/test/java/com/github/dockerjava/cmd/RestartContainerCmdImplIT.java
+++ b/docker-java/src/test/java/com/github/dockerjava/cmd/RestartContainerCmdImplIT.java
@@ -55,7 +55,7 @@ public void restartContainerWithSignal() throws Exception {
assumeThat("API version should be >= 1.42", dockerRule, isGreaterOrEqual(RemoteApiVersion.VERSION_1_42));
DefaultDockerClientConfig dockerClientConfig = DefaultDockerClientConfig.createDefaultConfigBuilder()
- .withApiVersion(RemoteApiVersion.VERSION_1_42)
+ .withApiVersion(RemoteApiVersion.VERSION_1_44)
.withRegistryUrl("https://index.docker.io/v1/")
.build();
try (DockerClient dockerClient = createDockerClient(dockerClientConfig)) {
diff --git a/docker-java/src/test/java/com/github/dockerjava/core/DockerRule.java b/docker-java/src/test/java/com/github/dockerjava/core/DockerRule.java
index 3fc5c40d74..af606a5b18 100644
--- a/docker-java/src/test/java/com/github/dockerjava/core/DockerRule.java
+++ b/docker-java/src/test/java/com/github/dockerjava/core/DockerRule.java
@@ -174,7 +174,7 @@ private static DefaultDockerClientConfig config() {
public static DefaultDockerClientConfig config(String password) {
DefaultDockerClientConfig.Builder builder = DefaultDockerClientConfig.createDefaultConfigBuilder()
- .withApiVersion(RemoteApiVersion.VERSION_1_30)
+ .withApiVersion(RemoteApiVersion.VERSION_1_44)
.withRegistryUrl("https://index.docker.io/v1/");
if (password != null) {
builder = builder.withRegistryPassword(password);
diff --git a/docker-java/src/test/java/com/github/dockerjava/netty/NettyDockerCmdExecFactoryConfigTest.java b/docker-java/src/test/java/com/github/dockerjava/netty/NettyDockerCmdExecFactoryConfigTest.java
index 5f7d200bff..03019f3837 100644
--- a/docker-java/src/test/java/com/github/dockerjava/netty/NettyDockerCmdExecFactoryConfigTest.java
+++ b/docker-java/src/test/java/com/github/dockerjava/netty/NettyDockerCmdExecFactoryConfigTest.java
@@ -43,7 +43,7 @@ public void testNettyDockerCmdExecFactoryConfigWithApiVersion() throws Exception
Builder configBuilder = new DefaultDockerClientConfig.Builder()
.withDockerTlsVerify(false)
.withDockerHost("tcp://localhost:" + dockerPort)
- .withApiVersion("1.23");
+ .withApiVersion("1.44");
DockerClient client = DockerClientBuilder.getInstance(configBuilder)
.withDockerCmdExecFactory(factory)
@@ -57,7 +57,7 @@ public void testNettyDockerCmdExecFactoryConfigWithApiVersion() throws Exception
List requests = server.getRequests();
assertEquals(1, requests.size());
- assertEquals("/v1.23/version", requests.get(0).uri());
+ assertEquals("/v1.44/version", requests.get(0).uri());
} finally {
server.stop();
}
From faa88e16460a8cb321c9695cdbc34cb7a662458e Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 20 Nov 2025 07:57:35 -0600
Subject: [PATCH 147/163] Bump org.testcontainers:testcontainers from 2.0.1 to
2.0.2 (#2546)
Bumps [org.testcontainers:testcontainers](https://github.com/testcontainers/testcontainers-java) from 2.0.1 to 2.0.2.
- [Release notes](https://github.com/testcontainers/testcontainers-java/releases)
- [Changelog](https://github.com/testcontainers/testcontainers-java/blob/main/CHANGELOG.md)
- [Commits](https://github.com/testcontainers/testcontainers-java/compare/2.0.1...2.0.2)
---
updated-dependencies:
- dependency-name: org.testcontainers:testcontainers
dependency-version: 2.0.2
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
docker-java-transport-tck/pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docker-java-transport-tck/pom.xml b/docker-java-transport-tck/pom.xml
index 3d38f9dfc3..d7253c7865 100644
--- a/docker-java-transport-tck/pom.xml
+++ b/docker-java-transport-tck/pom.xml
@@ -46,7 +46,7 @@
org.testcontainerstestcontainers
- 2.0.1
+ 2.0.2
From 37424b0039296979fcf272b08112e942d7f9d978 Mon Sep 17 00:00:00 2001
From: Matthias Wiedemann
Date: Thu, 5 Mar 2026 22:40:31 +0100
Subject: [PATCH 148/163] Fix Docker image build (#2562)
---
docker-java/src/test/resources/buildTests/ADD/url/Dockerfile | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/docker-java/src/test/resources/buildTests/ADD/url/Dockerfile b/docker-java/src/test/resources/buildTests/ADD/url/Dockerfile
index 4fbfa32367..3036dbbe69 100644
--- a/docker-java/src/test/resources/buildTests/ADD/url/Dockerfile
+++ b/docker-java/src/test/resources/buildTests/ADD/url/Dockerfile
@@ -2,9 +2,9 @@ FROM busybox:latest
# Copy testrun.sh files into the container
-ADD http://www.example.com/index.html /tmp/some.html
+ADD https://www.example.com/ /tmp/some.html
ADD ./testrun.sh /tmp/
RUN mkdir -p /usr/local/bin
RUN cp /tmp/testrun.sh /usr/local/bin/ && chmod +x /usr/local/bin/testrun.sh
-CMD ["testrun.sh"]
\ No newline at end of file
+CMD ["testrun.sh"]
From ea48fd6e742e35d5c4629df9a251a00026cc140d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Edd=C3=BA=20Mel=C3=A9ndez=20Gonzales?=
Date: Thu, 5 Mar 2026 16:12:39 -0600
Subject: [PATCH 149/163] Update maven version to 3.9.12 (#2591)
---
.mvn/wrapper/MavenWrapperDownloader.java | 117 ------
.mvn/wrapper/maven-wrapper.jar | Bin 50710 -> 0 bytes
.mvn/wrapper/maven-wrapper.properties | 5 +-
mvnw | 475 +++++++++++------------
mvnw.cmd | 321 +++++++--------
5 files changed, 397 insertions(+), 521 deletions(-)
delete mode 100644 .mvn/wrapper/MavenWrapperDownloader.java
delete mode 100644 .mvn/wrapper/maven-wrapper.jar
diff --git a/.mvn/wrapper/MavenWrapperDownloader.java b/.mvn/wrapper/MavenWrapperDownloader.java
deleted file mode 100644
index b901097f2d..0000000000
--- a/.mvn/wrapper/MavenWrapperDownloader.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Copyright 2007-present the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-import java.net.*;
-import java.io.*;
-import java.nio.channels.*;
-import java.util.Properties;
-
-public class MavenWrapperDownloader {
-
- private static final String WRAPPER_VERSION = "0.5.6";
- /**
- * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided.
- */
- private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/"
- + WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar";
-
- /**
- * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to
- * use instead of the default one.
- */
- private static final String MAVEN_WRAPPER_PROPERTIES_PATH =
- ".mvn/wrapper/maven-wrapper.properties";
-
- /**
- * Path where the maven-wrapper.jar will be saved to.
- */
- private static final String MAVEN_WRAPPER_JAR_PATH =
- ".mvn/wrapper/maven-wrapper.jar";
-
- /**
- * Name of the property which should be used to override the default download url for the wrapper.
- */
- private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl";
-
- public static void main(String args[]) {
- System.out.println("- Downloader started");
- File baseDirectory = new File(args[0]);
- System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath());
-
- // If the maven-wrapper.properties exists, read it and check if it contains a custom
- // wrapperUrl parameter.
- File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH);
- String url = DEFAULT_DOWNLOAD_URL;
- if(mavenWrapperPropertyFile.exists()) {
- FileInputStream mavenWrapperPropertyFileInputStream = null;
- try {
- mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile);
- Properties mavenWrapperProperties = new Properties();
- mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream);
- url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url);
- } catch (IOException e) {
- System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'");
- } finally {
- try {
- if(mavenWrapperPropertyFileInputStream != null) {
- mavenWrapperPropertyFileInputStream.close();
- }
- } catch (IOException e) {
- // Ignore ...
- }
- }
- }
- System.out.println("- Downloading from: " + url);
-
- File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH);
- if(!outputFile.getParentFile().exists()) {
- if(!outputFile.getParentFile().mkdirs()) {
- System.out.println(
- "- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'");
- }
- }
- System.out.println("- Downloading to: " + outputFile.getAbsolutePath());
- try {
- downloadFileFromURL(url, outputFile);
- System.out.println("Done");
- System.exit(0);
- } catch (Throwable e) {
- System.out.println("- Error downloading");
- e.printStackTrace();
- System.exit(1);
- }
- }
-
- private static void downloadFileFromURL(String urlString, File destination) throws Exception {
- if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) {
- String username = System.getenv("MVNW_USERNAME");
- char[] password = System.getenv("MVNW_PASSWORD").toCharArray();
- Authenticator.setDefault(new Authenticator() {
- @Override
- protected PasswordAuthentication getPasswordAuthentication() {
- return new PasswordAuthentication(username, password);
- }
- });
- }
- URL website = new URL(urlString);
- ReadableByteChannel rbc;
- rbc = Channels.newChannel(website.openStream());
- FileOutputStream fos = new FileOutputStream(destination);
- fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
- fos.close();
- rbc.close();
- }
-
-}
diff --git a/.mvn/wrapper/maven-wrapper.jar b/.mvn/wrapper/maven-wrapper.jar
deleted file mode 100644
index 2cc7d4a55c0cd0092912bf49ae38b3a9e3fd0054..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 50710
zcmbTd1CVCTmM+|7+wQV$+qP}n>auOywyU~q+qUhh+uxis_~*a##hm*_WW?9E7Pb7N%LRFiwbEGCJ0XP=%-6oeT$XZcYgtzC2~q
zk(K08IQL8oTl}>>+hE5YRgXTB@fZ4TH9>7=79e`%%tw*SQUa9~$xKD5rS!;ZG@ocK
zQdcH}JX?W|0_Afv?y`-NgLum62B&WSD$-w;O6G0Sm;SMX65z)l%m1e-g8Q$QTI;(Q
z+x$xth4KFvH@Bs6(zn!iF#nenk^Y^ce;XIItAoCsow38eq?Y-Auh!1in#Rt-_D>H^
z=EjbclGGGa6VnaMGmMLj`x3NcwA43Jb(0gzl;RUIRAUDcR1~99l2SAPkVhoRMMtN}
zXvC<tOmX83grD8GSo_Lo?%lNfhD#EBgPo
z*nf@ppMC#B!T)Ae0RG$mlJWmGl7CkuU~B8-==5i;rS;8i6rJ=PoQxf446XDX9g|c>
zU64ePyMlsI^V5Jq5A+BPe#e73+kpc_r1tv#B)~EZ;7^67F0*QiYfrk0uVW;Qb=NsG
zN>gsuCwvb?s-KQIppEaeXtEMdc9dy6Dfduz-tMTms+i01{eD9JE&h?Kht*$eOl#&L
zJdM_-vXs(V#$Ed;5wyNWJdPNh+Z$+;$|%qR(t`4W@kDhd*{(7-33BOS6L$UPDeE_53j${QfKN-0v-HG
z(QfyvFNbwPK%^!eIo4ac1;b>c0vyf9}Xby@YY!lkz-UvNp
zwj#Gg|4B~?n?G^{;(W;|{SNoJbHTMpQJ*Wq5b{l9c8(%?Kd^1?H1om1de0Da9M;Q=n
zUfn{f87iVb^>Exl*nZ0hs(Yt>&V9$Pg`zX`AI%`+0SWQ4Zc(8lUDcTluS
z5a_KerZWe}a-MF9#Cd^fi!y3%@RFmg&~YnYZ6<=L`UJ0v={zr)>$A;x#MCHZy1st7
ztT+N07NR+vOwSV2pvWuN1%lO!K#Pj0Fr>Q~R40{bwdL%u9i`DSM4RdtEH#cW)6}+I-eE<
z&tZs+(Ogu(H_;$a$!7w`MH0r%h&@KM+<>gJL@O~2K2?VrSYUBbhCn#yy?P)uF3qWU
z0o09mIik+kvzV6w>vEZy@&Mr)SgxPzUiDA&%07m17udz9usD82afQEps3$pe!7fUf
z0eiidkJ)m3qhOjVHC_M(RYCBO%CZKZXFb8}s0-+}@CIn&EF(rRWUX2g^yZCvl0bI}
zbP;1S)iXnRC&}5-Tl(hASKqdSnO?ASGJ*MIhOXIblmEudj(M|W!+I3eDc}7t`^mtg
z)PKlaXe(OH+q-)qcQ8a@!llRrpGI8DsjhoKvw9T;TEH&?s=LH0w$EzI>%u;oD@x83
zJL7+ncjI9nn!TlS_KYu5vn%f*@qa5F;|
zEFxY&B?g=IVlaF3XNm_03PA)=3|{n-UCgJoTr;|;1AU9|kPE_if8!Zvb}0q$5okF$
zHaJdmO&gg!9oN|M{!qGE=tb|3pVQ8PbL$}e;NgXz<6ZEggI}wO@aBP**2Wo=yN#ZC
z4G$m^yaM9g=|&!^ft8jOLuzc3Psca*;7`;gnHm}tS0%f4{|VGEwu45KptfNmwxlE~
z^=r30gi@?cOm8kAz!EylA4G~7kbEiRlRIzwrb~{_2(x^$-?|#e6Bi_**(vyr_~9Of
z!n>Gqf+Qwiu!xhi9f53=PM3`3tNF}pCOiPU|H4;pzjcsqbwg*{{kyrTxk<;mx~(;;
z1NMrpaQ`57yn34>Jo3b|HROE(UNcQash!0p2-!Cz;{IRv#Vp5!3o$P8!%SgV~k&Hnqhp`5eLjTcy93cK!3Hm-$`@yGnaE=?;*2uSpiZTs_dDd51U%i
z{|Zd9ou-;laGS_x=O}a+
zB||za<795A?_~Q=r=coQ+ZK@@
zId~hWQL<%)fI_WDIX#=(WNl!Dm$a&ROfLTd&B$vatq!M-2Jcs;N2vps$b6P1(N}=oI3<3luMTmC|0*{
zm1w8bt7vgX($!0@V0A}XIK)w!AzUn7vH=pZEp0RU0p?}ch2XC-7r#LK&vyc2=-#Q2
z^L%8)JbbcZ%g0Du;|8=q8B>X=mIQirpE=&Ox{TiuNDnOPd-FLI^KfEF729!!0x#Es
z@>3ursjFSpu%C-8WL^Zw!7a0O-#cnf`HjI+AjVCFitK}GXO`ME&on|^=~Zc}^LBp9
zj=-vlN;Uc;IDjtK38l7}5xxQF&sRtfn4^TNtnzXv4M{r&ek*(eNbIu!u$>Ed%`
z5x7+&)2P&4>0J`N&ZP8$vcR+@FS0126s6+Jx_{{`3ZrIMwaJo6jdrRwE$>IU_JTZ}
z(||hyyQ)4Z1@wSlT94(-QKqkAatMmkT7pCycEB1U8KQbFX&?%|4$yyxCtm3=W`$4fiG0WU3yI@c
zx{wfmkZAYE_5M%4{J-ygbpH|(|GD$2f$3o_Vti#&zfSGZMQ5_f3xt6~+{RX=$H8at
z?GFG1Tmp}}lmm-R->ve*Iv+XJ@58p|1_jRvfEgz$XozU8#iJS})UM6VNI!3RUU!{5
zXB(+Eqd-E;cHQ>)`h0(HO_zLmzR3Tu-UGp;08YntWwMY-9i^w_u#wR?JxR2bky5j9
z3Sl-dQQU$xrO0xa&>vsiK`QN<$Yd%YXXM7*WOhnRdSFt5$aJux8QceC?lA0_if|s>
ze{ad*opH_kb%M&~(~&UcX0nFGq^MqjxW?HJIP462v9XG>j(5Gat_)#SiNfahq2Mz2
zU`4uV8m$S~o9(W>mu*=h%Gs(Wz+%>h;R9Sg)jZ$q8vT1HxX3iQnh6&2rJ1u|j>^Qf`A76K%_ubL`Zu?h4`b=IyL>1!=*%!_K)=XC
z6d}4R5L+sI50Q4P3upXQ3Z!~1ZXLlh!^UNcK6#QpYt-YC=^H=EPg3)z*wXo*024Q4b2sBCG4I#
zlTFFY=kQ>xvR+LsuDUAk)q%5pEcqr(O_|^spjhtpb1#aC&
zghXzGkGDC_XDa%t(X`E+kvKQ4zrQ*uuQoj>7@@ykWvF332)RO?%AA&Fsn&MNzmFa$
zWk&&^=NNjxLjrli_8ESU)}U|N{%j&TQmvY~lk!~Jh}*=^INA~&QB9em!in_X%Rl1&Kd~Z(u
z9mra#<@vZQlOY+JYUwCrgoea4C8^(xv4ceCXcejq84TQ#sF~IU2V}LKc~Xlr_P=ry
zl&Hh0exdCbVd^NPCqNNlxM3vA13EI8XvZ1H9#bT7y*U8Y{H8nwGpOR!e!!}*g;mJ#}T{ekSb}5zIPmye*If(}}_=PcuAW#yidAa^9-`<8Gr0
z)Fz=NiZ{)HAvw{Pl5uu)?)&i&Us$Cx4gE}cIJ}B4Xz~-q7)R_%owbP!z_V2=Aq%Rj
z{V;7#kV1dNT9-6R+H}}(ED*_!F=~uz>&nR3gb^Ce%+0s#u|vWl<~JD3MvS0T9thdF
zioIG3c#Sdsv;LdtRv3ml7%o$6LTVL>(H`^@TNg`2KPIk*8-IB}X!MT0`hN9Ddf7yN
z?J=GxPL!uJ7lqwowsl?iRrh@#5C$%E&h~Z>XQcvFC*5%0RN-Opq|=IwX(dq(*sjs+
zqy99+v~m|6T#zR*e1AVxZ8djd5>eIeCi(b8sUk)OGjAsKSOg^-ugwl2WSL@d#?mdl
zib0v*{u-?cq}dDGyZ%$XRY=UkQwt2oGu`zQneZh$=^!
zj;!pCBWQNtvAcwcWIBM2y9!*W|8LmQy$H~5BEx)78J`4Z0(FJO2P^!YyQU{*Al+fs
z){!4JvT1iLrJ8aU3k0t|P}{RN)_^v%$$r;+p0DY7N8CXzmS*HB*=?qaaF9D@#_$SN
zSz{moAK<*RH->%r7xX~9gVW$l7?b|_SYI)gcjf0VAUJ%FcQP(TpBs;
zg$25D!Ry_`8xpS_OJdeo$qh#7U+cepZ??TII7_%AXsT$B
z=e)Bx#v%J0j``00Zk5hsvv6%T^*xGNx%KN-=pocSoqE5_R)OK%-Pbu^1MNzfds)mL
zxz^F4lDKV9D&lEY;I+A)ui{TznB*CE$=9(wgE{m}`^<--OzV-5V4X2w9j(_!+jpTr
zJvD*y6;39&T+==$F&tsRKM_lqa1HC}aGL0o`%c9mO=fts?36@8MGm7Vi{Y
z^<7m$(EtdSr#22<(rm_(l_(`j!*Pu~Y>>xc>I9M#DJYDJNHO&4=HM%YLIp?;iR&$m
z#_$ZWYLfGLt5FJZhr3jpYb`*%9S!zCG6ivNHYzNHcI%khtgHBliM^Ou}ZVD7ehU9
zS+W@AV=?Ro!=%AJ>Kcy9aU3%VX3|XM_K0A+ZaknKDyIS3S-Hw1C7&BSW5)sqj5Ye_
z4OSW7Yu-;bCyYKHFUk}<*<(@TH?YZPHr~~Iy%9@GR2Yd}J2!N9K&CN7Eq{Ka!jdu;
zQNB*Y;i(7)OxZK%IHGt#Rt?z`I|A{q_BmoF!f^G}XVeTbe1Wnzh%1g>j}>DqFf;Rp
zz7>xIs12@Ke0gr+4-!pmFP84vCIaTjqFNg{V`5}Rdt~xE^I;Bxp4)|cs8=f)1YwHz
zqI`G~s2~qqDV+h02b`PQpUE#^^Aq8l%y2|ByQeXSADg5*qMprEAE3WFg0Q39`O+i1
z!J@iV!`Y~C$wJ!5Z+j5$i<1`+@)tBG$JL=!*uk=2k;T<@{|s1$YL079FvK%mPhyHV
zP8^KGZnp`(hVMZ;s=n~3r2y;LTwcJwoBW-(ndU-$03{RD
zh+Qn$ja_Z^OuMf3Ub|JTY74s&Am*(n{J3~@#OJNYuEVVJd9*H%)oFoRBkySGm`hx!
zT3tG|+aAkXcx-2Apy)h^BkOyFTWQVeZ%e2@;*0DtlG9I3Et=PKaPt&K
zw?WI7S;P)TWED7aSH$3hL@Qde?H#tzo^<(o_sv_2ci<7M?F$|oCFWc?7@KBj-;N$P
zB;q!8@bW-WJY9do&y|6~mEruZAVe$!?{)N9rZZxD-|oltkhW9~nR8bLBGXw<632!l
z*TYQn^NnUy%Ds}$f^=yQ+BM-a5X4^GHF=%PDrRfm_uqC
zh{sKwIu|O0&jWb27;wzg4w5uA@TO_j(1X?8E>5Zfma|Ly7Bklq|s
z9)H`zoAGY3n-+&JPrT!>u^qg9Evx4y@GI4$n-Uk_5wttU1_t?6><>}cZ-U+&+~JE)
zPlDbO_j;MoxdLzMd~Ew|1o^a5q_1R*JZ=#XXMzg?6Zy!^hop}qoLQlJ{(%!KYt`MK
z8umEN@Z4w!2=q_oe=;QttPCQy3Nm4F@x>@v4sz_jo{4m*0r%J(w1cSo;D_hQtJs7W
z><$QrmG^+<$4{d2bgGo&3-FV}avg9zI|Rr(k{wTyl3!M1q+a
zD9W{pCd%il*j&Ft
z5H$nENf>>k$;SONGW`qo6`&qKs*T
z2^RS)pXk9b@(_Fw1bkb)-oqK|v}r$L!W&aXA>IpcdNZ_vWE#XO8X`#Yp1+?RshVcd
zknG%rPd*4ECEI0wD#@d+3NbHKxl}n^Sgkx==Iu%}HvNliOqVBqG?P2va
zQ;kRJ$J6j;+wP9cS
za#m;#GUT!qAV%+rdWolk+)6kkz4@Yh5LXP+LSvo9_T+MmiaP-eq6_k;)i6_@WSJ
zlT@wK$zqHu<83U2V*yJ|XJU4farT#pAA&@qu)(PO^8PxEmPD4;Txpio+2)#!9
z>&=i7*#tc0`?!==vk>s7V+PL#S1;PwSY?NIXN2=Gu89x(cToFm))7L;<
z+bhAbVD*bD=}iU`+PU+SBobTQ%S!=VL!>q$rfWsaaV}Smz>lO9JXT#`CcH_mRCSf4%YQAw`$^yY
z3Y*^Nzk_g$xn7a_NO(2Eb*I=^;4f!Ra#Oo~LLjlcjke*k*o$~U#0ZXOQ5@HQ&T46l
z7504MUgZkz2gNP1QFN8Y?nSEnEai^Rgyvl}xZfMUV6QrJcXp;jKGqB=D*tj{8(_pV
zqyB*DK$2lgYGejmJUW)*s_Cv65sFf&pb(Yz8oWgDtQ0~k^0-wdF|tj}MOXaN@ydF8
zNr={U?=;&Z?wr^VC+`)S2xl}QFagy;$mG=TUs7Vi2wws5zEke4hTa2)>O0U?$WYsZ
z<8bN2bB_N4AWd%+kncgknZ&}bM~eDtj#C5uRkp21hWW5gxWvc6b*4+dn<{c?w9Rmf
zIVZKsPl{W2vQAlYO3yh}-{Os=YBnL8?uN5(RqfQ=-1cOiUnJu>KcLA*tQK3FU`_bM
zM^T28w;nAj5EdAXFi&Kk1Nnl2)D!M{@+D-}bIEe+Lc4{s;YJc-{F#``iS2uk;2!Zp
zF9#myUmO!wCeJIoi^A+T^e~20c+c2C}XltaR!|U-HfDA=^xF97ev}$l6#oY
z&-&T{egB)&aV$3_aVA51XGiU07$s9vubh_kQG?F$FycvS6|IO!6q
zq^>9|3U^*!X_C~SxX&pqUkUjz%!j=VlXDo$!2VLH!rKj@61mDpSr~7B2yy{>X~_nc
zRI+7g2V&k
zd**H++P9dg!-AOs3;GM`(g<+GRV$+&DdMVpUxY9I1@uK28$az=6oaa+PutlO9?6#?
zf-OsgT>^@8KK>ggkUQRPPgC7zjKFR5spqQb3ojCHzj^(UH~v+!y*`Smv)VpVoPwa6
zWG18WJaPKMi*F6Zdk*kU^`i~NNTfn3BkJniC`yN98L-Awd)Z&mY?
zprBW$!qL-OL7h@O#kvYnLsfff@kDIegt~?{-*5A7JrA;#TmTe?jICJqhub-G@e??D
zqiV#g{)M!kW1-4SDel7TO{;@*h2=_76g3NUD@|c*WO#>MfYq6_YVUP+&8e4|%4T`w
zXzhmVNziAHazWO2qXcaOu@R1MrPP{t)`N)}-1&~mq=ZH=w=;-E$IOk=y$dOls{6sRR`I5>|X
zpq~XYW4sd;J^6OwOf**J>a7u$S>WTFPRkjY;BfVgQst)u4aMLR1|6%)CB^18XCz+r
ztkYQ}G43j~Q&1em(_EkMv0|WEiKu;z2zhb(L%$F&xWwzOmk;VLBYAZ8lOCziNoPw1
zv2BOyXA`A8z^WH!nXhKXM`t0;6D*-uGds3TYGrm8SPnJJOQ^fJU#}@aIy@MYWz**H
zvkp?7I5PE{$$|~{-ZaFxr6ZolP^nL##mHOErB^AqJqn^hFA=)HWj!m3WDaHW$C)i^
z9@6G$SzB=>jbe>4kqr#sF7#K}W*Cg-5y6kun3u&0L7BpXF9=#7IN8FOjWrWwUBZiU
zT_se3ih-GBKx+Uw0N|CwP3D@-C=5(9T#BH@M`F2!Goiqx+Js5xC92|Sy0%WWWp={$(am!#l~f^W_oz78HX<0X#7
zp)p1u~M*o9W@O8P{0Qkg@Wa#
z2{Heb&oX^CQSZWSFBXKOfE|tsAm#^U-WkDnU;IowZ`Ok4!mwHwH=s|AqZ^YD4!5!@
zPxJj+Bd-q6w_YG`z_+r;S86zwXb+EO&qogOq8h-Ect5(M2+>(O7n7)^dP*ws_3U6v
zVsh)sk^@*c>)3EML|0<-YROho{lz@Nd4;R9gL{9|64xVL`n!m$-Jjrx?-Bacp!=^5
z1^T^eB{_)Y<9)y{-4Rz@9_>;_7h;5D+@QcbF4Wv7hu)s0&==&6u)33
zHRj+&Woq-vDvjwJCYES@$C4{$?f$Ibi4G()UeN11rgjF+^;YE^5nYprYoJNoudNj=
zm1pXSeG64dcWHObUetodRn1Fw|1nI$D9z}dVEYT0lQnsf_E1x2vBLql7NrHH!n&Sq
z6lc*mvU=W&3Y7tNdrmhnHR-*#=c(@8+WX>S6=v9Lrl}&zRiu_6u;6g%_DU{9b+R
z#YHqX7`m9eydf?KlKu6Sb%j$%_jmydig`B*TN`cZL-g!R)iE?+Q5oOqBFKhx
z%MW>BC^(F_JuG(ayE(MT{S3eI{cKiwOtPwLc0XO*{*|(JOx;uQOfq@lp_^cZo=FZj
z4#}@e@dJ>Bn%2`2_WPeSN7si^{U#H=7N4o%Dq3NdGybrZgEU$oSm$hC)uNDC_M9xc
zGzwh5Sg?mpBIE8lT2XsqTt3j3?We8}3bzLBTQd639vyg^$0#1epq8snlDJP2(BF)K
zSx30RM+{f+b$g{9usIL8H!hCO117Xgv}ttPJm9wVRjPk;ePH@zxv%j9k5`TzdXLeT
zFgFX`V7cYIcBls5WN0Pf6SMBN+;CrQ(|EsFd*xtwr#$R{Z9FP`OWtyNsq#mCgZ7+P
z^Yn$haBJ)r96{ZJd8vlMl?IBxrgh=fdq_NF!1{jARCVz>jNdC)H^wf2G!*f3zl;
zdyVT?9`x`+G$!^eYN@PUum|5;j8$+`cBrBI`k*I0!jRt1BR=3gh&7e8U#!mamgR&_
z3Z&@9rms~l@GlsEKduCfx9Wt{o>y?R94#MPdUjcYX>#wEx+LB#P-#4S-%YH>t-j+w
zOFTI8gX$ard6fAh&g=u&56%3^-6E2tpk*wx3HSCQ+t7+*iOs
zPk5ysqE}i*cQocFvA68xHfL|iX(C4h*67@3|5Qwle(8wT&!&{8*{f%0(5gH+m>$tq
zp;AqrP7?XTEooYG1Dzfxc>W%*CyL16q|fQ0_jp%%Bk^k!i#Nbi(N9&T>#M{gez_Ws
zYK=l}adalV(nH}I_!hNeb;tQFk3BHX7N}}R8%pek^E`X}%ou=cx8InPU1EE0|Hen-
zyw8MoJqB5=)Z%JXlrdTXAE)eqLAdVE-=>wGHrkRet}>3Yu^lt$Kzu%$3#(ioY}@Gu
zjk3BZuQH&~7H+C*uX^4}F*|P89JX;Hg2U!pt>rDi(n(Qe-c}tzb0#6_ItoR0->LSt
zR~UT<-|@TO%O`M+_e_J4wx7^)5_%%u+J=yF_S#2Xd?C;Ss3N7KY^#-vx+|;bJX&8r
zD?|MetfhdC;^2WG`7MCgs>TKKN=^=!x&Q~BzmQio_^l~LboTNT=I
zC5pme^P@ER``p$2md9>4!K#vV-Fc1an7pl>_|&>aqP}+zqR?+~Z;f2^`a+-!Te%V?
z;H2SbF>jP^GE(R1@%C==XQ@J=G9lKX+Z<@5}PO(EYkJh=GCv#)Nj{DkWJM2}F&oAZ6xu8&g7pn1ps2U5srwQ7CAK
zN&*~@t{`31lUf`O;2w^)M3B@o)_mbRu{-`PrfNpF!R^q>yTR&ETS7^-b2*{-tZAZz
zw@q5x9B5V8Qd7dZ!Ai$9hk%Q!wqbE1F1c96&zwBBaRW}(^axoPpN^4Aw}&a5dMe+*Gomky_l^54*rzXro$
z>LL)U5Ry>~FJi=*{JDc)_**c)-&faPz`6v`YU3HQa}pLtb5K)u%K+BOqXP0)rj5Au$zB
zW1?vr?mDv7Fsxtsr+S6ucp2l#(4dnr9sD*v+@*>g#M4b|U?~s93>Pg{{a5|rm2xfI
z`>E}?9S@|IoUX{Q1zjm5YJT|3S>&09D}|2~BiMo=z4YEjXlWh)V&qs;*C{`UMxp$9
zX)QB?G$fPD6z5_pNs>Jeh{^&U^)Wbr?2D6-q?)`*1k@!UvwQgl8eG$r+)NnFoT)L6
zg7lEh+E6J17krfYJCSjWzm67hEth24pomhz71|Qodn#oAILN)*Vwu2qpJirG)4Wnv}9GWOFrQg%Je+gNrPl8mw7ykE8{
z=|B4+uwC&bpp%eFcRU6{mxRV32VeH8XxX>v$du<$(DfinaaWxP<+Y97Z#n#U~V
zVEu-GoPD=9$}P;xv+S~Ob#mmi$JQmE;Iz4(){y*9pFyW-jjgdk#oG$fl4o9E8bo|L
zWjo4l%n51@Kz-n%zeSCD`uB?T%FVk+KBI}=ve
zvlcS#wt`U6wrJo}6I6Rwb=1GzZfwE=I&Ne@p7*pH84XShXYJRgvK)UjQL%R9Zbm(m
zxzTQsLTON$WO7vM)*vl%Pc0JH7WhP;$z@j=y#avW4X8iqy6mEYr@-}PW?H)xfP6fQ
z&tI$F{NNct4rRMSHhaelo<5kTYq+(?pY)Ieh8*sa83EQfMrFupMM@nfEV@EmdHUv9
z35uzIrIuo4#WnF^_jcpC@uNNaYTQ~uZWOE6P@LFT^1@$o&q+9Qr8YR+ObBkpP9=F+$s5+B!mX2~T
zAuQ6RenX?O{IlLMl1%)OK{S7oL}X%;!XUxU~xJN8xk
z`xywS*naF(J#?vOpB(K=o~lE;m$zhgPWDB@=p#dQIW>xe_p1OLoWInJRKbEuoncf;
zmS1!u-ycc1qWnDg5Nk2D)BY%jmOwCLC+Ny>`f&UxFowIsHnOXfR^S;&F(KXd{ODlm
z$6#1ccqt-HIH9)|@fHnrKudu!6B$_R{fbCIkSIb#aUN|3RM>zuO>dpMbROZ`^hvS@
z$FU-;e4W}!ubzKrU@R*dW*($tFZ>}dd*4_mv)#O>X{U@zSzQt*83l9mI
zI$8O<5AIDx`wo0}f2fsPC_l>ONx_`E7kdXu{YIZbp1$(^oBAH({T~&oQ&1{X951QW
zmhHUxd)t%GQ9#ak5fTjk-cahWC;>^Rg7(`TVlvy0W@Y!Jc%QL3Ozu#
zDPIqBCy&T2PWBj+d-JA-pxZlM=9ja2ce|3B(^VCF+a*MMp`(rH>Rt6W1$;r{n1(VK
zLs>UtkT43LR2G$AOYHVailiqk7naz2yZGLo*xQs!T9VN5Q>eE(w
zw$4&)&6xIV$IO^>1N-jrEUg>O8G4^@y+-hQv6@OmF@gy^nL_n1P1-Rtyy$Bl;|VcV
zF=p*&41-qI5gG9UhKmmnjs932!6hceXa#-qfK;3d*a{)BrwNFeKU|ge?N!;zk+kB!
zMD_uHJR#%b54c2tr~uGPLTRLg$`fupo}cRJeTwK;~}A>(Acy4k-Xk&Aa1&eWYS1ULWUj@fhBiWY$pdfy+F
z@G{OG{*v*mYtH3OdUjwEr6%_ZPZ3P{@rfbNPQG!BZ7lRyC^xlMpWH`@YRar`tr}d>
z#wz87t?#2FsH-jM6m{U=gp6WPrZ%*w0bFm(T#7m#v^;f%Z!kCeB5oiF`W33W5Srdt
zdU?YeOdPG@98H7NpI{(uN{FJdu14r(URPH^F6tOpXuhU7T9a{3G3_#Ldfx_nT(Hec
zo<1dyhsVsTw;ZkVcJ_0-h-T3G1W@q)_Q30LNv)W?FbMH+XJ*
zy=$@39Op|kZv`Rt>X`zg&at(?PO^I=X8d9&myFEx#S`dYTg1W+iE?vt#b47QwoHI9
zNP+|3WjtXo{u}VG(lLUaW0&@yD|O?4TS4dfJI`HC-^q;M(b3r2;7|FONXphw-%7~*
z&;2!X17|05+kZOpQ3~3!Nb>O94b&ZSs%p)TK)n3m=4eiblVtSx@KNFgBY_xV6ts;NF;GcGxMP8OKV^h6LmSb2E#Qnw
ze!6Mnz7>lE9u{AgQ~8u2zM8CYD5US8dMDX-5iMlgpE9m*s+Lh~A#P1er*rF}GHV3h
z=`STo?kIXw8I<`W0^*@mB1$}pj60R{aJ7>C2m=oghKyxMbFNq#EVLgP0cH3q7H
z%0?L93-z6|+jiN|@v>ix?tRBU(v-4RV`}cQH*fp|)vd3)8i9hJ3hkuh^8dz{F5-~_
zUUr1T3cP%cCaTooM8dj|4*M=e6flH0&8ve32Q)0dyisl))XkZ7Wg~N}6y`+Qi2l+e
zUd#F!nJp{#KIjbQdI`%oZ`?h=5G^kZ_uN`<(`3;a!~EMsWV|j-o>c?x#;zR2ktiB!
z);5rrHl?GPtr6-o!tYd|uK;Vbsp4P{v_4??=^a>>U4_aUXPWQ$FPLE4PK$T^3Gkf$
zHo&9$U&G`d(Os6xt1r?sg14n)G8HNyWa^q8#nf0lbr4A-Fi;q6t-`pAx1T*$eKM*$
z|CX|gDrk#&1}>5H+`EjV$9Bm)Njw&7-ZR{1!CJTaXuP!$Pcg69`{w5BRHysB$(tWUes@@6aM69kb|Lx$%BRY^-o6bjH#0!7b;5~{6J+jKxU!Kmi#
zndh@+?}WKSRY2gZ?Q`{(Uj|kb1%VWmRryOH0T)f3cKtG4oIF=F7RaRnH0Rc_&372={_3lRNsr95%ZO{IX{p@YJ^EI%+gvvKes5cY+PE@unghjdY5#9A!G
z70u6}?zmd?v+{`vCu-53_v5@z)X{oPC@P)iA3jK$`r
zSA2a7&!^zmUiZ82R2=1cumBQwOJUPz5Ay`RLfY(EiwKkrx%@YN^^XuET;tE
zmr-6~I7j!R!KrHu5CWGSChO6deaLWa*9LLJbcAJsFd%Dy>a!>J`N)Z&oiU4OEP-!Ti^_!p}O?7`}i7Lsf$-gBkuY*`Zb
z7=!nTT;5z$_5$=J=Ko+Cp|Q0J=%oFr>hBgnL3!tvFoLNhf#D0O=X^h+x08iB;@8pXdRHxX}6R4k@i6%vmsQwu^5z
zk1ip`#^N)^#Lg#HOW3sPI33xqFB4#bOPVnY%d6prwxf;Y-w9{ky4{O6&94Ra8VN@K
zb-lY;&`HtxW@sF!doT5T$2&lIvJpbKGMuDAFM#!QPXW87>}=Q4J3JeXlwHys?!1^#37q_k?N@+u&Ns20pEoBeZC*np;i;M{2C0Z4_br2gsh6eL
z#8`#sn41+$iD?^GL%5?cbRcaa-Nx0vE(D=*WY%rXy3B%gNz0l?#noGJGP728RMY#q
z=2&aJf@DcR?QbMmN)ItUe+VM_U!ryqA@1VVt$^*xYt~-qvW!J4Tp<-3>jT=7Zow5M
z8mSKp0v4b%a8bxFr>3MwZHSWD73D@+$5?nZAqGM#>H@`)mIeC#->B)P8T$zh-Pxnc
z8)~Zx?TWF4(YfKuF3WN_ckpCe5;x4V4AA3(i$pm|78{%!q?|~*eH0f=?j6i)n~Hso
zmTo>vqEtB)`%hP55INf7HM@taH)v`Fw40Ayc*R!T?O{ziUpYmP)AH`euTK!zg9*6Z
z!>M=$3pd0!&TzU=hc_@@^Yd3eUQpX4-33}b{?~5t5lgW=ldJ@dUAH%`l5US1y_`40
zs(X`Qk}vvMDYYq+@Rm+~IyCX;iD~pMgq^KY)T*aBz@DYEB={PxA>)mI6tM*sx-DmGQHEaHwRrAmNjO!ZLHO4b;;5mf@zzlPhkP($JeZGE7
z?^XN}Gf_feGoG~BjUgVa*)O`>lX=$BSR2)uD<9
z>o^|nb1^oVDhQbfW>>!;8-7<}nL6L^V*4pB=>wwW+RXAeRvKED(n1;R`A6v$6gy0I(;Vf?!4;&sgn7F%LpM}6PQ?0%2Z@b{It<(G1CZ|>913E0nR2r^Pa*Bp
z@tFGi*CQ~@Yc-?{cwu1
zsilf=k^+Qs>&WZG(3WDixisHpR>`+ihiRwkL(3T|=xsoNP*@XX3BU8hr57l3k;pni
zI``=3Nl4xh4oDj<%>Q1zYXHr%Xg_xrK3Nq?vKX3|^Hb(Bj+lONTz>4yhU-UdXt2>j
z<>S4NB&!iE+ao{0Tx^N*^|EZU;0kJkx@zh}S^P{ieQjGl468CbC`SWnwLRYYiStXm
zOxt~Rb3D{dz=nHMcY)#r^kF8|q8KZHVb9FCX2m^X*(|L9FZg!5a7((!J8%MjT$#Fs)M1Pb
zq6hBGp%O1A+&%2>l0mpaIzbo&jc^!oN^3zxap3V2dNj3x<=TwZ&0eKX5PIso9j1;e
zwUg+C&}FJ`k(M|%%}p=6RPUq4sT3-Y;k-<68ciZ~_j|bt>&9ZLHNVrp#+pk}XvM{8
z`?k}o-!if>hVlCP9j%&WI2V`5SW)BCeR5>MQhF)po=p~AYN%cNa_BbV6EEh_kk^@a
zD>4&>uCGCUmyA-c)%DIcF4R6!>?6T~Mj_m{Hpq`*(wj>foHL;;%;?(((YOxGt)Bhx
zuS+K{{CUsaC++%}S6~CJ=|vr(iIs-je)e9uJEU8ZJAz)w166q)R^2XI?@E2vUQ!R%
zn@dxS!JcOimXkWJBz8Y?2JKQr>`~SmE2F2SL38$SyR1^yqj8_mkBp)o$@+3BQ~Mid
z9U$XVqxX3P=XCKj0*W>}L0~Em`(vG<>srF8+*kPrw
z20{z(=^w+ybdGe~Oo_i|hYJ@kZl*(9sHw#Chi&OIc?w`nBODp?ia$uF%Hs(X>xm?j
zqZQ`Ybf@g#wli`!-al~3GWiE$K+LCe=Ndi!#CVjzUZ
z!sD2O*;d28zkl))m)YN7HDi^z5IuNo3^w(zy8
zszJG#mp#Cj)Q@E@r-=NP2FVxxEAeOI2e=|KshybNB6HgE^(r>HD{*}S}mO>LuRGJT{*tfTzw_#+er-0${}%YPe@CMJ1Ng#j#)i)SnY@ss3gL;g
zg2D~#Kpdfu#G;q1qz_TwSz1VJT(b3zby$Vk&;Y#1(A)|xj`_?i5YQ;TR%jice5E;0
zYHg;`zS5{S*9xI6o^j>rE8Ua*XhIw{_-*&@(R|C(am8__>+Ws&Q^ymy*X4~hR2b5r
zm^p3sw}yv=tdyncy_Ui7{BQS732et~Z_@{-IhHDXAV`(Wlay<#hb>%H%WDi+K$862nA@BDtM#UCKMu+kM`!JHyWSi?&)A7_
z3{cyNG%a~nnH_!+;g&JxEMAmh-Z}rC!o7>OVzW&PoMyTA_g{hqXG)SLraA^OP**<7
zjWbr7z!o2n3hnx7A=2O=WL;`@9N{vQIM@&|G-ljrPvIuJHYtss0Er0fT5cMXNUf1B
z7FAwBDixt0X7C3S)mPe5g`YtME23wAnbU)+AtV}z+e8G;0BP=bI;?(#|Ep!vVfDbK
zvx+|CKF>yt0hWQ3drchU#XBU+HiuG*V^snFAPUp-5<#R&BUAzoB!aZ+e*KIxa26V}s6?nBK(U-7REa573wg-jqCg>H8~>O{
z*C0JL-?X-k_y%hpUFL?I>0WV{oV`Nb)nZbJG01R~AG>flIJf)3O*oB2i8~;!P?Wo_
z0|QEB*fifiL6E6%>tlAYHm2cjTFE@*<);#>689Z6S#BySQ@VTMhf9vYQyLeDg1*F}
zjq>i1*x>5|CGKN{l9br3kB0EHY|k4{%^t7-uhjd#NVipUZa=EUuE5kS1_~qYX?>hJ
z$}!jc9$O$>J&wnu0SgfYods^z?J4X;X7c77Me0kS-dO_VUQ39T(Kv(Y#s}Qqz-0AH
z^?WRL(4RzpkD+T5FG_0NyPq-a-B7A5LHOCqwObRJi&oRi(<;OuIN7SV5PeHU$<@Zh
zPozEV`dYmu0Z&Tqd>t>8JVde9#Pt+l95iHe$4Xwfy1AhI
zDM4XJ;bBTTvRFtW>E+GzkN)9k!hA5z;xUOL2
zq4}zn-DP{qc^i|Y%rvi|^5k-*8;JZ~9a;>-+q_EOX+p1Wz;>i7c}M6Nv`^NY&{J->
z`(mzDJDM}QPu5i44**2Qbo(XzZ-ZDu%6vm8w@DUarqXj41VqP~
zs&4Y8F^Waik3y1fQo`bVUH;b=!^QrWb)3Gl=QVKr+6sxc=ygauUG|cm?|X=;Q)kQ8
zM(xrICifa2p``I7>g2R~?a{hmw@{!NS5`VhH8+;cV(F>B94M*S;5#O`YzZH1Z%yD?
zZ61w(M`#aS-*~Fj;x|J!KM|^o;MI#Xkh0ULJcA?o4u~f%Z^16ViA27FxU5GM*rKq(
z7cS~MrZ=f>_OWx8j#-Q3%!aEU2hVuTu(7`TQk-Bi6*!<}0WQi;_FpO;fhpL4`DcWp
zGOw9vx0N~6#}lz(r+dxIGZM3ah-8qrqMmeRh%{z@dbUD2w15*_4P?I~UZr^anP}DB
zU9CCrNiy9I3~d#&!$DX9e?A});BjBtQ7oGAyoI$8YQrkLBIH@2;lt4E^)|d6Jwj}z
z&2_E}Y;H#6I4<10d_&P0{4|EUacwFHauvrjAnAm6yeR#}f}Rk27CN)vhgRqEyPMMS7zvunj2?`f;%?alsJ+-K+IzjJx>h8
zu~m_y$!J5RWAh|C<6+uiCNsOKu)E72M3xKK(a9Okw3e_*O&}7llNV!=P87VM2DkAk
zci!YXS2&=P0}Hx|wwSc9JP%m8dMJA*q&VFB0yMI@5vWoAGraygwn){R+Cj6B1a2Px
z5)u(K5{+;z2n*_XD!+Auv#LJEM)(~Hx{$Yb^ldQmcYF2zNH1V30*)CN_|1$v2|`LnFUT$%-tO0Eg|c5$BB~yDfzS
zcOXJ$wpzVK0MfTjBJ0b$r#_OvAJ3WRt+YOLlJPYMx~qp>^$$$h#bc|`g0pF-Ao43?
z>*A+8lx>}L{p(Tni2Vvk)dtzg$hUKjSjXRagj)$h#8=KV>5s)J4vGtRn5kP|AXIz!
zPgbbVxW{2o4s-UM;c#We8P&mPN|DW7_uLF!a|^0S=wr6Esx9Z$2|c1?GaupU6$tb|
zY_KU`(_29O_%k(;>^|6*pZURH3`@%EuKS;Ns
z1lujmf;r{qAN&Q0&m{wJSZ8MeE7RM5+Sq;ul_
z`+ADrd_Um+G37js6tKsArNB}n{p*zTUxQr>3@wA;{EUbjNjlNd6$Mx
zg0|MyU)v`sa~tEY5$en7^PkC=S<2@!nEdG6L=h(vT__0F=S8Y&eM=hal#7eM(o^Lu
z2?^;05&|CNliYrq6gUv;|i!(W{0N)LWd*@{2q*u)}u*>
z7MQgk6t9OqqXMln?zoMAJcc
zMKaof_Up})q#DzdF?w^%tTI7STI^@8=Wk#enR*)&%8yje>+tKvUYbW8UAPg55xb70
zEn5&Ba~NmOJlgI#iS8W3-@N%>V!#z-ZRwfPO1)dQdQkaHsiqG|~we2ALqG7Ruup(DqSOft2RFg_X%3w?6VqvV1uzX_@F(diNVp
z4{I|}35=11u$;?|JFBEE*gb;T`dy+8gWJ9~pNsecrO`t#V9jW-6mnfO@ff9od}b(3s4>p0i30gbGIv~1@a^F2kl7YO;DxmF3?
zWi-RoXhzRJV0&XE@ACc?+@6?)LQ2XNm4KfalMtsc%4!Fn0rl
zpHTrHwR>t>7W?t!Yc{*-^xN%9P0cs0kr=`?bQ5T*oOo&VRRu+1chM!qj%2I!@+1XF
z4GWJ=7ix9;Wa@xoZ0RP`NCWw0*8247Y4jIZ>GEW7zuoCFXl6xIvz$ezsWgKdVMBH>
z{o!A7f;R-@eK9V