Skip to content

Commit 0eab8a7

Browse files
authored
Merge pull request docker-java#1108 from KostyaSha/pull/1086/head
Pull/1086/head
2 parents 492b074 + d394513 commit 0eab8a7

File tree

7 files changed

+50
-90
lines changed

7 files changed

+50
-90
lines changed

src/main/java/com/github/dockerjava/api/command/BuildImageCmd.java

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
* TODO: http://docs.docker.com/reference/builder/#dockerignore
2020
*
2121
* @see <a
22-
* href="https://docs.docker.com/reference/api/docker_remote_api_v1.20/#build-image-from-a-dockerfile">build-image-from-a-dockerfile</a>
22+
* href="https://docs.docker.com/reference/api/docker_remote_api_v1.20/#build-image-from-a-dockerfile">build-image-from-a-dockerfile</a>
2323
*/
2424
public interface BuildImageCmd extends AsyncDockerCmd<BuildImageCmd, BuildResponseItem> {
2525

@@ -45,6 +45,7 @@ public interface BuildImageCmd extends AsyncDockerCmd<BuildImageCmd, BuildRespon
4545

4646
/**
4747
* Multple "t" tags.
48+
*
4849
* @since {@link RemoteApiVersion#VERSION_1_21}
4950
*/
5051
@CheckForNull
@@ -114,7 +115,7 @@ public interface BuildImageCmd extends AsyncDockerCmd<BuildImageCmd, BuildRespon
114115
Map<String, String> getBuildArgs();
115116

116117
/**
117-
*@since {@link RemoteApiVersion#VERSION_1_22}
118+
* @since {@link RemoteApiVersion#VERSION_1_22}
118119
*/
119120
@CheckForNull
120121
Long getShmsize();
@@ -143,7 +144,7 @@ public interface BuildImageCmd extends AsyncDockerCmd<BuildImageCmd, BuildRespon
143144

144145
/**
145146
* @deprecated since docker API version 1.21 there can be multiple tags
146-
* specified so use {@link #withTags(Set<String>)}
147+
* specified so use {@link BuildImageCmd#withTags(java.util.Set)}
147148
*/
148149
@Deprecated
149150
BuildImageCmd withTag(String tag);
@@ -193,17 +194,17 @@ public interface BuildImageCmd extends AsyncDockerCmd<BuildImageCmd, BuildRespon
193194
BuildImageCmd withTarInputStream(@Nonnull InputStream tarInputStream);
194195

195196
/**
196-
*@since {@link RemoteApiVersion#VERSION_1_22}
197-
*/
197+
* @since {@link RemoteApiVersion#VERSION_1_22}
198+
*/
198199
BuildImageCmd withShmsize(Long shmsize);
199200

200201
/**
201-
*@since {@link RemoteApiVersion#VERSION_1_23}
202-
*/
202+
* @since {@link RemoteApiVersion#VERSION_1_23}
203+
*/
203204
BuildImageCmd withLabels(Map<String, String> labels);
204205

205206
/**
206-
*@since {@link RemoteApiVersion#VERSION_1_25}
207+
* @since {@link RemoteApiVersion#VERSION_1_25}
207208
*/
208209
BuildImageCmd withNetworkMode(String networkMode);
209210

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
11
package com.github.dockerjava.core.exec;
22

3-
import org.slf4j.Logger;
4-
import org.slf4j.LoggerFactory;
5-
63
import com.fasterxml.jackson.core.type.TypeReference;
74
import com.github.dockerjava.api.async.ResultCallback;
85
import com.github.dockerjava.api.command.BuildImageCmd;
@@ -12,7 +9,10 @@
129
import com.github.dockerjava.core.InvocationBuilder;
1310
import com.github.dockerjava.core.MediaType;
1411
import com.github.dockerjava.core.WebTarget;
12+
import org.slf4j.Logger;
13+
import org.slf4j.LoggerFactory;
1514

15+
import static com.github.dockerjava.core.util.CacheFromEncoder.jsonEncode;
1616
import static org.apache.commons.lang.StringUtils.isNotBlank;
1717

1818
public class BuildImageCmdExec extends AbstrAsyncDockerCmdExec<BuildImageCmd, BuildResponseItem> implements
@@ -59,7 +59,7 @@ protected Void execute0(BuildImageCmd command, ResultCallback<BuildResponseItem>
5959
}
6060

6161
if (command.getCacheFrom() != null && !command.getCacheFrom().isEmpty()) {
62-
webTarget = webTarget.queryParamsSet("cachefrom", command.getCacheFrom());
62+
webTarget = webTarget.queryParam("cachefrom", jsonEncode(command.getCacheFrom()));
6363
}
6464

6565
if (command.getRemote() != null) {
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
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+
15+
private CacheFromEncoder() {
16+
}
17+
18+
private static final ObjectMapper MAPPER = new JacksonJaxbJsonProvider().locateMapper(Collection.class,
19+
MediaType.APPLICATION_JSON_TYPE);
20+
21+
public static String jsonEncode(Collection<String> imageIds) {
22+
try {
23+
return MAPPER.writeValueAsString(imageIds);
24+
} catch (JsonProcessingException e) {
25+
throw new RuntimeException(e);
26+
}
27+
}
28+
}

src/main/java/com/github/dockerjava/core/util/FiltersEncoder.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,20 +13,20 @@
1313
* JSON Encoder for docker filters.
1414
*
1515
* @author Carlos Sanchez <carlos@apache.org>
16-
*
1716
*/
1817
public class FiltersEncoder {
18+
1919
private FiltersEncoder() {
2020
}
2121

22-
private static final ObjectMapper OBJECT_MAPPER = new JacksonJaxbJsonProvider().locateMapper(Map.class,
23-
MediaType.APPLICATION_JSON_TYPE);
22+
private static final ObjectMapper MAPPER = new JacksonJaxbJsonProvider().locateMapper(Map.class, MediaType.APPLICATION_JSON_TYPE);
2423

25-
public static String jsonEncode(Map<String, List<String>> filters) {
24+
public static String jsonEncode(Map<String, List<String>> mapStringListString) {
2625
try {
27-
return OBJECT_MAPPER.writeValueAsString(filters);
26+
return MAPPER.writeValueAsString(mapStringListString);
2827
} catch (JsonProcessingException e) {
2928
throw new RuntimeException(e);
3029
}
3130
}
31+
3232
}

src/main/java/com/github/dockerjava/core/util/ServiceFiltersBuilder.java

Lines changed: 0 additions & 67 deletions
This file was deleted.

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

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
import com.fasterxml.jackson.databind.ObjectMapper;
1111

12+
import com.github.dockerjava.core.util.CacheFromEncoder;
1213
import org.glassfish.jersey.client.ClientProperties;
1314
import org.glassfish.jersey.client.RequestEntityProcessing;
1415
import org.slf4j.Logger;
@@ -75,10 +76,8 @@ protected AbstractCallbackNotifier<BuildResponseItem> callbackNotifier(BuildImag
7576
webTarget = webTarget.queryParam("t", command.getTag());
7677
}
7778

78-
if (command.getCacheFrom() != null) {
79-
for (String c: command.getCacheFrom()) {
80-
webTarget = webTarget.queryParam("cachefrom", c);
81-
}
79+
if (command.getCacheFrom() != null && !command.getCacheFrom().isEmpty()) {
80+
webTarget = webTarget.queryParam("cachefrom", CacheFromEncoder.jsonEncode(command.getCacheFrom()));
8281
}
8382

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

src/test/java/com/github/dockerjava/cmd/BuildImageCmdIT.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -302,8 +302,7 @@ public void cacheFrom() throws Exception {
302302
assertThat(inspectImageResponse1, not(nullValue()));
303303

304304
File baseDir2 = fileFromBuildTestResource("CacheFrom/test2");
305-
String cacheImage = String.format("[\"%s\"]", imageId1);
306-
String imageId2 = dockerRule.getClient().buildImageCmd(baseDir2).withCacheFrom(new HashSet<>(Arrays.asList(cacheImage)))
305+
String imageId2 = dockerRule.getClient().buildImageCmd(baseDir2).withCacheFrom(new HashSet<>(Arrays.asList(imageId1)))
307306
.exec(new BuildImageResultCallback())
308307
.awaitImageId();
309308
InspectImageResponse inspectImageResponse2 = dockerRule.getClient().inspectImageCmd(imageId2).exec();

0 commit comments

Comments
 (0)