Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docker-java-api/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
<dependencies>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<artifactId>jackson-annotations</artifactId>
<version>${jackson.version}</version>
</dependency>

Expand Down
Original file line number Diff line number Diff line change
@@ -1,25 +1,11 @@
package com.github.dockerjava.api.model;

import java.io.IOException;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.stream.Stream;

import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.ObjectCodec;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;

@JsonSerialize(using = Binds.Serializer.class)
@JsonDeserialize(using = Binds.Deserializer.class)
public class Binds implements Serializable {
private static final long serialVersionUID = 1L;

Expand All @@ -33,39 +19,16 @@ public Bind[] getBinds() {
return binds;
}

public static class Serializer extends JsonSerializer<Binds> {

@Override
public void serialize(Binds binds, JsonGenerator jsonGen, SerializerProvider serProvider) throws IOException,
JsonProcessingException {

//
jsonGen.writeStartArray();
for (Bind bind : binds.getBinds()) {
jsonGen.writeString(bind.toString());
}
jsonGen.writeEndArray();
//
}

@JsonValue
public String[] toPrimitive() {
return Stream.of(binds).map(Bind::toString).toArray(String[]::new);
}

public static class Deserializer extends JsonDeserializer<Binds> {
@Override
public Binds deserialize(JsonParser jsonParser, DeserializationContext deserializationContext)
throws IOException, JsonProcessingException {

List<Bind> binds = new ArrayList<>();
ObjectCodec oc = jsonParser.getCodec();
JsonNode node = oc.readTree(jsonParser);
for (Iterator<JsonNode> it = node.elements(); it.hasNext();) {

JsonNode field = it.next();
binds.add(Bind.parse(field.asText()));

}
return new Binds(binds.toArray(new Bind[0]));
}
@JsonCreator
public static Binds fromPrimitive(String[] binds) {
return new Binds(
Stream.of(binds).map(Bind::parse).toArray(Bind[]::new)
);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

import java.io.Serializable;

@Deprecated
public class ErrorResponse implements Serializable {
private static final long serialVersionUID = 1L;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,22 +3,10 @@
import static com.github.dockerjava.api.model.InternetProtocol.TCP;
import static com.github.dockerjava.api.model.InternetProtocol.UDP;

import java.io.IOException;
import java.io.Serializable;
import java.util.Map.Entry;

import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.ObjectCodec;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.node.NullNode;

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;
import com.github.dockerjava.api.model.Ports.Binding;
import lombok.EqualsAndHashCode;

Expand All @@ -27,8 +15,6 @@
* {@link InternetProtocol}. It can be published by Docker by {@link Ports#bind(ExposedPort, Binding) binding} it to a host port,
* represented by a {@link Binding}.
*/
@JsonDeserialize(using = ExposedPort.Deserializer.class)
@JsonSerialize(using = ExposedPort.Serializer.class)
@EqualsAndHashCode
public class ExposedPort implements Serializable {
private static final long serialVersionUID = 1L;
Expand Down Expand Up @@ -120,6 +106,7 @@ public static ExposedPort udp(int port) {
* @throws IllegalArgumentException
* if the specification cannot be parsed
*/
@JsonCreator
public static ExposedPort parse(String serialized) throws IllegalArgumentException {
try {
String[] parts = serialized.split("/");
Expand All @@ -143,36 +130,8 @@ public static ExposedPort parse(String serialized) throws IllegalArgumentExcepti
* @return a string representation of this {@link ExposedPort}
*/
@Override
@JsonValue
public String toString() {
return port + "/" + protocol.toString();
}

public static class Deserializer extends JsonDeserializer<ExposedPort> {
@Override
public ExposedPort deserialize(JsonParser jsonParser, DeserializationContext deserializationContext)
throws IOException, JsonProcessingException {
ObjectCodec oc = jsonParser.getCodec();
JsonNode node = oc.readTree(jsonParser);
if (!node.equals(NullNode.getInstance())) {
Entry<String, JsonNode> field = node.fields().next();
return ExposedPort.parse(field.getKey());
} else {
return null;
}
}
}

public static class Serializer extends JsonSerializer<ExposedPort> {

@Override
public void serialize(ExposedPort exposedPort, JsonGenerator jsonGen, SerializerProvider serProvider)
throws IOException, JsonProcessingException {

jsonGen.writeStartObject();
jsonGen.writeFieldName(exposedPort.toString());
jsonGen.writeEndObject();
}

}

}
Original file line number Diff line number Diff line change
@@ -1,27 +1,14 @@
package com.github.dockerjava.api.model;

import java.io.IOException;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;

import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.ObjectCodec;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.node.NullNode;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;

@JsonSerialize(using = ExposedPorts.Serializer.class)
@JsonDeserialize(using = ExposedPorts.Deserializer.class)
public class ExposedPorts implements Serializable {
private static final long serialVersionUID = 1L;

Expand All @@ -39,40 +26,19 @@ public ExposedPort[] getExposedPorts() {
return exposedPorts;
}

public static class Serializer extends JsonSerializer<ExposedPorts> {

@Override
public void serialize(ExposedPorts exposedPorts, JsonGenerator jsonGen, SerializerProvider serProvider)
throws IOException, JsonProcessingException {

jsonGen.writeStartObject();
for (ExposedPort exposedPort : exposedPorts.getExposedPorts()) {
jsonGen.writeFieldName(exposedPort.toString());
jsonGen.writeStartObject();
jsonGen.writeEndObject();
}
jsonGen.writeEndObject();
}

@JsonCreator
public static ExposedPorts fromPrimitive(Map<String, Object> object) {
return new ExposedPorts(
object.keySet().stream().map(ExposedPort::parse).toArray(ExposedPort[]::new)
);
}

public static class Deserializer extends JsonDeserializer<ExposedPorts> {
@Override
public ExposedPorts deserialize(JsonParser jsonParser, DeserializationContext deserializationContext)
throws IOException, JsonProcessingException {

List<ExposedPort> exposedPorts = new ArrayList<>();
ObjectCodec oc = jsonParser.getCodec();
JsonNode node = oc.readTree(jsonParser);
for (Iterator<Map.Entry<String, JsonNode>> it = node.fields(); it.hasNext();) {

Map.Entry<String, JsonNode> field = it.next();
if (!field.getValue().equals(NullNode.getInstance())) {
exposedPorts.add(ExposedPort.parse(field.getKey()));
}
}
return new ExposedPorts(exposedPorts.toArray(new ExposedPort[0]));
}
@JsonValue
public Map<String, Object> toPrimitive() {
return Stream.of(exposedPorts).collect(Collectors.toMap(
ExposedPort::toString,
__ -> new Object()
));
}

}
Original file line number Diff line number Diff line change
@@ -1,26 +1,12 @@
package com.github.dockerjava.api.model;

import java.io.IOException;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.stream.Stream;

import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.ObjectCodec;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.node.NullNode;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;

@JsonSerialize(using = Links.Serializer.class)
@JsonDeserialize(using = Links.Deserializer.class)
public class Links implements Serializable {
private static final long serialVersionUID = 1L;

Expand All @@ -38,37 +24,15 @@ public Link[] getLinks() {
return links;
}

public static class Serializer extends JsonSerializer<Links> {

@Override
public void serialize(final Links links, final JsonGenerator jsonGen, final SerializerProvider serProvider)
throws IOException, JsonProcessingException {
jsonGen.writeStartArray();
for (final Link link : links.getLinks()) {
jsonGen.writeString(link.toString());
}
jsonGen.writeEndArray();
}

@JsonCreator
public static Links fromPrimitive(String[] links) {
return new Links(
Stream.of(links).map(Link::parse).toArray(Link[]::new)
);
}

public static class Deserializer extends JsonDeserializer<Links> {

@Override
public Links deserialize(final JsonParser jsonParser, final DeserializationContext deserializationContext)
throws IOException, JsonProcessingException {
final List<Link> binds = new ArrayList<>();
final ObjectCodec oc = jsonParser.getCodec();
final JsonNode node = oc.readTree(jsonParser);
for (final Iterator<JsonNode> it = node.elements(); it.hasNext();) {

final JsonNode element = it.next();
if (!element.equals(NullNode.getInstance())) {
binds.add(Link.parse(element.asText()));
}
}
return new Links(binds.toArray(new Link[0]));
}
@JsonValue
public String[] toPrimitive() {
return Stream.of(links).map(Link::toString).toArray(String[]::new);
}

}
Loading