Skip to content

Commit

Permalink
Migrate the QueryUtil to plain Java
Browse files Browse the repository at this point in the history
  • Loading branch information
gesellix committed Jul 28, 2024
1 parent 6fcbac8 commit 80df370
Show file tree
Hide file tree
Showing 11 changed files with 137 additions and 150 deletions.
Original file line number Diff line number Diff line change
@@ -1,19 +1,20 @@
package de.gesellix.docker.client.config;

import java.util.Base64;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import de.gesellix.docker.client.EngineResponseContent;
import de.gesellix.docker.remote.api.Config;
import de.gesellix.docker.remote.api.ConfigCreateRequest;
import de.gesellix.docker.remote.api.ConfigSpec;
import de.gesellix.docker.remote.api.EngineApiClient;
import de.gesellix.docker.remote.api.IdResponse;
import de.gesellix.util.QueryUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.Base64;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import de.gesellix.util.QueryParameterEncoder;

public class ManageConfigClient implements ManageConfig {

Expand Down Expand Up @@ -57,7 +58,7 @@ public EngineResponseContent<List<Config>> configs(Map<String, Object> query) {
actualQuery.putAll(query);
}

new QueryUtil().jsonEncodeQueryParameter(actualQuery, "filters");
new QueryParameterEncoder().jsonEncodeQueryParameter(actualQuery, "filters");
return configs((String) actualQuery.get("filters"));
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ import de.gesellix.docker.remote.api.client.ContainerApi
import de.gesellix.docker.remote.api.core.ClientException
import de.gesellix.docker.remote.api.core.Frame
import de.gesellix.docker.remote.api.core.StreamCallback
import de.gesellix.util.QueryUtil
import de.gesellix.util.QueryParameterEncoder
import okhttp3.WebSocket
import okhttp3.WebSocketListener
import org.slf4j.Logger
Expand All @@ -45,7 +45,7 @@ class ManageContainerClient implements ManageContainer {
private EngineApiClient client
private EngineClient engineClient
private DockerResponseHandler responseHandler
private QueryUtil queryUtil
private QueryParameterEncoder queryParameterEncoder
private ArchiveUtil archiveUtil
private RepositoryTagParser repositoryTagParser

Expand All @@ -54,7 +54,7 @@ class ManageContainerClient implements ManageContainer {
this.engineClient = engineClient
this.responseHandler = new DockerResponseHandler()
this.repositoryTagParser = new RepositoryTagParser()
this.queryUtil = new QueryUtil()
this.queryParameterEncoder = new QueryParameterEncoder()
this.archiveUtil = new ArchiveUtil()
}

Expand Down Expand Up @@ -320,28 +320,20 @@ class ManageContainerClient implements ManageContainer {
if (query) {
actualQuery.putAll(query)
}
Map defaults = [
follow : true,
stdout : true,
stderr : true,
timestamps: false,
since : 0,
tail : "all"]
queryUtil.applyDefaults(actualQuery, defaults)

// When using the TTY setting is enabled in POST /containers/create,
// the stream is the raw data from the process PTY and client’s stdin.
// When the TTY is disabled, then the stream is multiplexed to separate stdout and stderr.
// def multiplexStreams = !inspectContainer(container).content.config.tty

client.containerApi.containerLogs(container,
actualQuery.follow as Boolean,
actualQuery.stdout as Boolean,
actualQuery.stderr as Boolean,
actualQuery.since as Integer,
actualQuery.getOrDefault("follow", true) as Boolean,
actualQuery.getOrDefault("stdout", true) as Boolean,
actualQuery.getOrDefault("stderr", true) as Boolean,
actualQuery.getOrDefault("since", 0) as Integer,
actualQuery.until as Integer,
actualQuery.timestamps as Boolean,
actualQuery.tail as String,
actualQuery.getOrDefault("timestamps", false) as Boolean,
actualQuery.getOrDefault("tail", "all") as String,
callback, timeout.toMillis())
}

Expand Down Expand Up @@ -382,17 +374,15 @@ class ManageContainerClient implements ManageContainer {
@Override
EngineResponseContent<List<Map<String, Object>>> ps(Map<String, Object> query) {
log.info("docker ps")
Map actualQuery = [:]
Map<String, ?> actualQuery = [:]
if (query) {
actualQuery.putAll(query)
}
Map defaults = [all: true, size: false]
queryUtil.applyDefaults(actualQuery, defaults)
queryUtil.jsonEncodeQueryParameter(actualQuery, "filters")
queryParameterEncoder.jsonEncodeQueryParameter(actualQuery, "filters")
List<Map> containerList = client.containerApi.containerList(
actualQuery.all as Boolean,
actualQuery.getOrDefault("all", true) as Boolean,
actualQuery.limit as Integer,
actualQuery.size as Boolean,
actualQuery.getOrDefault("size", false) as Boolean,
actualQuery.filters as String)
return new EngineResponseContent<List<Map<String, Object>>>(containerList)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ import de.gesellix.docker.remote.api.ImageSummary
import de.gesellix.docker.remote.api.PushImageInfo
import de.gesellix.docker.remote.api.client.ImageApi
import de.gesellix.docker.remote.api.core.StreamCallback
import de.gesellix.util.QueryUtil
import de.gesellix.util.QueryParameterEncoder
import org.slf4j.Logger
import org.slf4j.LoggerFactory

Expand All @@ -28,14 +28,14 @@ class ManageImageClient implements ManageImage {

private EngineApiClient client
private RepositoryTagParser repositoryTagParser
private QueryUtil queryUtil
private QueryParameterEncoder queryParameterEncoder
private ManageAuthentication manageAuthentication

ManageImageClient(EngineApiClient client, ManageAuthentication manageAuthentication) {
this.client = client
this.manageAuthentication = manageAuthentication
this.repositoryTagParser = new RepositoryTagParser()
this.queryUtil = new QueryUtil()
this.queryParameterEncoder = new QueryParameterEncoder()
}

@Override
Expand All @@ -47,37 +47,38 @@ class ManageImageClient implements ManageImage {

@Override
void build(InputStream buildContext) {
build(null, null,
buildContext)
build(null, null, buildContext)
}

@Override
void build(StreamCallback<BuildInfo> callback, Duration timeout,
InputStream buildContext) {
void build(StreamCallback<BuildInfo> callback, Duration timeout, InputStream buildContext) {
build(callback, timeout,
null, null, null, null, null, null, null, null, null, null, buildContext)
null, null, null, null, null, null, null, null, null, null,
buildContext)
}

@Override
void build(String tag,
InputStream buildContext) {
build(null, null,
buildContext)
build(null, null, buildContext)
}

@Override
void build(StreamCallback<BuildInfo> callback, Duration timeout,
String tag,
InputStream buildContext) {
build(callback, timeout,
null, tag, null, null, null, null, null, null, null, null, buildContext)
null, tag, null, null, null, null, null, null, null, null,
buildContext)
}

@Override
void build(String dockerfile, String tag, Boolean quiet, Boolean nocache, String pull, Boolean rm,
String buildargs, String labels, String encodedRegistryConfig, String contentType, InputStream buildContext) {
build(null, null,
dockerfile, tag, quiet, nocache, pull, rm, buildargs, labels, encodedRegistryConfig, contentType, buildContext)
dockerfile, tag, quiet, nocache, pull, rm,
buildargs, labels, encodedRegistryConfig, contentType,
buildContext)
}

@Override
Expand All @@ -94,20 +95,20 @@ class ManageImageClient implements ManageImage {
? ImageApi.ContentTypeImageBuild.valueOf(contentType)
: ImageApi.ContentTypeImageBuild.ApplicationSlashXMinusTar
client.imageApi.imageBuild(dockerfile,
tag, null, null, quiet, nocache, null, pull,
rm == null ? true : rm, null,
null, null, null, null, null, null,
buildargs,
null,
null,
labels,
null,
contentTypeImageBuild,
encodedRegistryConfig,
null, null,
null,
buildContext,
callback, timeout ? timeout.toMillis() : null)
tag, null, null, quiet, nocache, null, pull,
rm == null ? true : rm, null,
null, null, null, null, null, null,
buildargs,
null,
null,
labels,
null,
contentTypeImageBuild,
encodedRegistryConfig,
null, null,
null,
buildContext,
callback, timeout ? timeout.toMillis() : null)
}

@Override
Expand Down Expand Up @@ -141,11 +142,9 @@ class ManageImageClient implements ManageImage {
if (query != null) {
actualQuery.putAll(query)
}
Map<String, Object> defaults = [all: false]
queryUtil.applyDefaults(actualQuery, defaults)
queryUtil.jsonEncodeQueryParameter(actualQuery, "filters")
queryParameterEncoder.jsonEncodeQueryParameter(actualQuery, "filters")
return images(
(Boolean) actualQuery.get("all"),
(Boolean) actualQuery.getOrDefault("all", false),
(String) actualQuery.get("filters"),
(Boolean) actualQuery.get("digests"))
}
Expand All @@ -168,7 +167,7 @@ class ManageImageClient implements ManageImage {
if (query != null) {
actualQuery.putAll(query)
}
queryUtil.jsonEncodeQueryParameter(actualQuery, "filters")
queryParameterEncoder.jsonEncodeQueryParameter(actualQuery, "filters")
return pruneImages(actualQuery.filters as String)
}

Expand Down Expand Up @@ -257,10 +256,10 @@ class ManageImageClient implements ManageImage {
RepositoryAndTag repoAndTag = repositoryTagParser.parseRepositoryTag(actualImageName)

client.imageApi.imagePush(repoAndTag.repo as String,
authBase64Encoded ?: ".",
repoAndTag.tag as String,
callback,
timeout ? timeout.toMillis() : null)
authBase64Encoded ?: ".",
repoAndTag.tag as String,
callback,
timeout ? timeout.toMillis() : null)
}

@Override
Expand Down Expand Up @@ -310,8 +309,7 @@ class ManageImageClient implements ManageImage {
}
log.warn("couldn't find imageId for `${imageName}` via `docker images`")
return imageName
}
else {
} else {
String canonicalImageName = "$imageName:${tag ?: 'latest'}"
if (imageIdsByName[canonicalImageName]) {
return imageIdsByName[canonicalImageName]
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
package de.gesellix.docker.client.network;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import de.gesellix.docker.client.EngineResponseContent;
import de.gesellix.docker.remote.api.EngineApiClient;
import de.gesellix.docker.remote.api.IPAM;
Expand All @@ -9,23 +16,17 @@
import de.gesellix.docker.remote.api.NetworkCreateResponse;
import de.gesellix.docker.remote.api.NetworkDisconnectRequest;
import de.gesellix.docker.remote.api.NetworkPruneResponse;
import de.gesellix.util.QueryUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import de.gesellix.util.QueryParameterEncoder;

public class ManageNetworkClient implements ManageNetwork {

private final Logger log = LoggerFactory.getLogger(ManageNetworkClient.class);
private final EngineApiClient client;
private final QueryUtil queryUtil;
private final QueryParameterEncoder queryParameterEncoder;

public ManageNetworkClient(EngineApiClient client) {
this.client = client;
this.queryUtil = new QueryUtil();
this.queryParameterEncoder = new QueryParameterEncoder();
}

/**
Expand All @@ -41,7 +42,7 @@ public EngineResponseContent<List<Network>> networks(Map<String, Object> query)
actualQuery.putAll(query);
}

queryUtil.jsonEncodeQueryParameter(actualQuery, "filters");
queryParameterEncoder.jsonEncodeQueryParameter(actualQuery, "filters");
return networks((String) actualQuery.get("filters"));
}

Expand Down Expand Up @@ -153,7 +154,7 @@ public EngineResponseContent<NetworkPruneResponse> pruneNetworks(Map<String, Obj
if (query != null) {
actualQuery.putAll(query);
}
queryUtil.jsonEncodeQueryParameter(actualQuery, "filters");
queryParameterEncoder.jsonEncodeQueryParameter(actualQuery, "filters");
return pruneNetworks((String) actualQuery.get("filters"));
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,19 @@
package de.gesellix.docker.client.node;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import de.gesellix.docker.client.EngineResponseContent;
import de.gesellix.docker.client.tasks.ManageTask;
import de.gesellix.docker.remote.api.EngineApiClient;
import de.gesellix.docker.remote.api.Node;
import de.gesellix.docker.remote.api.NodeSpec;
import de.gesellix.docker.remote.api.Task;
import de.gesellix.util.QueryUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import de.gesellix.util.QueryParameterEncoder;

public class ManageNodeClient implements ManageNode {

Expand All @@ -39,7 +40,7 @@ public EngineResponseContent<List<Node>> nodes(Map<String, Object> query) {
if (query != null) {
actualQuery.putAll(query);
}
new QueryUtil().jsonEncodeQueryParameter(actualQuery, "filters");
new QueryParameterEncoder().jsonEncodeQueryParameter(actualQuery, "filters");
return nodes((String) actualQuery.get("filters"));
}

Expand Down Expand Up @@ -116,7 +117,7 @@ public EngineResponseContent<List<Task>> tasksOnNode(String node, Map<String, Ob
}
Map<String, Object> filters = (Map<String, Object>) actualQuery.get("filters");
filters.put("node", nodeUtil.resolveNodeId(node));
new QueryUtil().jsonEncodeQueryParameter(actualQuery, "filters");
new QueryParameterEncoder().jsonEncodeQueryParameter(actualQuery, "filters");
return manageTask.tasks((String) actualQuery.get("filters"));
}

Expand Down
Loading

0 comments on commit 80df370

Please sign in to comment.