Skip to content

Commit 142e59e

Browse files
committed
Add awaitMessage
1 parent 1faa11e commit 142e59e

File tree

2 files changed

+46
-0
lines changed

2 files changed

+46
-0
lines changed

docker-java-api/src/main/java/com/github/dockerjava/api/command/LoadImageCallback.java

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.github.dockerjava.api.command;
22

33
import com.github.dockerjava.api.async.ResultCallbackTemplate;
4+
import com.github.dockerjava.api.exception.DockerClientException;
45
import com.github.dockerjava.api.model.LoadResponseItem;
56
import org.slf4j.Logger;
67
import org.slf4j.LoggerFactory;
@@ -9,8 +10,40 @@ public class LoadImageCallback extends ResultCallbackTemplate<LoadImageCallback,
910

1011
private static final Logger LOGGER = LoggerFactory.getLogger(LoadImageCallback.class);
1112

13+
private String message;
14+
15+
private String error;
16+
1217
@Override
1318
public void onNext(LoadResponseItem item) {
19+
if (item.isBuildSuccessIndicated()) {
20+
this.message = item.getMessage();
21+
} else if (item.isErrorIndicated()) {
22+
this.error = item.getError();
23+
}
24+
1425
LOGGER.debug(item.toString());
1526
}
27+
28+
public String awaitMessage() {
29+
try {
30+
awaitCompletion();
31+
} catch (InterruptedException e) {
32+
throw new DockerClientException("", e);
33+
}
34+
35+
return getMessage();
36+
}
37+
38+
private String getMessage() {
39+
if (this.message != null) {
40+
return this.message;
41+
}
42+
43+
if (this.error == null) {
44+
throw new DockerClientException("Could not build image");
45+
}
46+
47+
throw new DockerClientException("Could not build image: " + this.error);
48+
}
1649
}

docker-java-api/src/main/java/com/github/dockerjava/api/model/LoadResponseItem.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
public class LoadResponseItem extends ResponseItem {
66

7+
private static final long serialVersionUID = 1L;
8+
79
private static final String IMPORT_SUCCESS = "Loaded image:";
810

911
/**
@@ -17,4 +19,15 @@ public boolean isBuildSuccessIndicated() {
1719

1820
return getStream().contains(IMPORT_SUCCESS);
1921
}
22+
23+
@JsonIgnore
24+
public String getMessage() {
25+
if (!isBuildSuccessIndicated()) {
26+
return null;
27+
} else if (getStream().contains(IMPORT_SUCCESS)) {
28+
return getStream();
29+
}
30+
31+
return null;
32+
}
2033
}

0 commit comments

Comments
 (0)