Skip to content

Commit c552bb0

Browse files
committed
#1086: Address comments
1 parent 94af355 commit c552bb0

File tree

3 files changed

+32
-4
lines changed

3 files changed

+32
-4
lines changed

src/main/java/com/github/dockerjava/core/exec/BuildImageCmdExec.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import com.github.dockerjava.core.InvocationBuilder;
1010
import com.github.dockerjava.core.MediaType;
1111
import com.github.dockerjava.core.WebTarget;
12-
import com.google.common.base.Joiner;
12+
import com.github.dockerjava.core.util.CacheFromEncoder;
1313
import org.slf4j.Logger;
1414
import org.slf4j.LoggerFactory;
1515

@@ -59,7 +59,7 @@ protected Void execute0(BuildImageCmd command, ResultCallback<BuildResponseItem>
5959
}
6060

6161
if (command.getCacheFrom() != null && !command.getCacheFrom().isEmpty()) {
62-
webTarget = webTarget.queryParam("cachefrom", "[\"" + Joiner.on("\",\"").join(command.getCacheFrom()) + "\"]");
62+
webTarget = webTarget.queryParam("cachefrom", CacheFromEncoder.jsonEncode(command.getCacheFrom()));
6363
}
6464

6565
if (command.getRemote() != null) {
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.github.dockerjava.core.util;
2+
3+
import com.fasterxml.jackson.core.JsonProcessingException;
4+
import com.fasterxml.jackson.databind.ObjectMapper;
5+
import com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider;
6+
7+
import javax.ws.rs.core.MediaType;
8+
import java.util.Collection;
9+
10+
/**
11+
* JSON Encoder for the docker --cache-from parameter.
12+
*/
13+
public class CacheFromEncoder {
14+
private CacheFromEncoder() {
15+
}
16+
17+
private static final ObjectMapper OBJECT_MAPPER = new JacksonJaxbJsonProvider().locateMapper(Collection.class,
18+
MediaType.APPLICATION_JSON_TYPE);
19+
20+
public static String jsonEncode(Collection<String> imageIds) {
21+
try {
22+
return OBJECT_MAPPER.writeValueAsString(imageIds);
23+
} catch (JsonProcessingException e) {
24+
throw new RuntimeException(e);
25+
}
26+
}
27+
}

src/main/java/com/github/dockerjava/jaxrs/BuildImageCmdExec.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,10 @@
77
import javax.ws.rs.client.WebTarget;
88
import javax.ws.rs.core.MediaType;
99

10+
import com.fasterxml.jackson.core.JsonProcessingException;
1011
import com.fasterxml.jackson.databind.ObjectMapper;
1112

12-
import com.google.common.base.Joiner;
13+
import com.github.dockerjava.core.util.CacheFromEncoder;
1314
import org.glassfish.jersey.client.ClientProperties;
1415
import org.glassfish.jersey.client.RequestEntityProcessing;
1516
import org.slf4j.Logger;
@@ -77,7 +78,7 @@ protected AbstractCallbackNotifier<BuildResponseItem> callbackNotifier(BuildImag
7778
}
7879

7980
if (command.getCacheFrom() != null && !command.getCacheFrom().isEmpty()) {
80-
webTarget = webTarget.queryParam("cachefrom", "[\"" + Joiner.on("\",\"").join(command.getCacheFrom()) + "\"]");
81+
webTarget = webTarget.queryParam("cachefrom", CacheFromEncoder.jsonEncode(command.getCacheFrom()));
8182
}
8283

8384
if (command.getRemote() != null) {

0 commit comments

Comments
 (0)