com.rapid7.container.analyzer.docker.model.json.ManifestJsonV2S2 Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of docker-image-analyzer Show documentation
Show all versions of docker-image-analyzer Show documentation
Extracts, parses, and analyzes Docker images into Java objects with JSON mappings.
package com.rapid7.container.analyzer.docker.model.json;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.rapid7.container.analyzer.docker.model.image.ImageId;
import com.rapid7.container.analyzer.docker.model.image.LayerId;
import java.util.ArrayList;
import java.util.List;
import java.util.StringJoiner;
import static java.util.stream.Collectors.summingLong;
import static java.util.stream.Collectors.toList;
/**
* Models an image manifest, schema version 2.
*
* @see Docker Image Manifest v2
*/
public class ManifestJsonV2S2 implements Manifest {
private String mediaType;
private LayerReferenceJson config;
private List layers;
public ManifestJsonV2S2() {
layers = new ArrayList<>();
}
@JsonProperty("mediaType")
public String getMediaType() {
return mediaType;
}
public void setMediaType(String mediaType) {
this.mediaType = mediaType;
}
@JsonProperty("config")
public LayerReferenceJson getConfig() {
return config;
}
public void setConfig(LayerReferenceJson config) {
this.config = config;
}
@JsonProperty("layers")
public List getLayerReferences() {
return layers;
}
public void setLayerReferences(List layers) {
this.layers = layers;
}
@Override
public List getLayers() {
return getLayerReferences().stream().map(reference -> reference.getDigest()).map(LayerId::new).collect(toList());
}
@Override
public ImageId getImageId() {
return config == null ? null : config.getDigest() == null ? null : new ImageId(config.getDigest());
}
@Override
public long getSize() {
return layers.stream().collect(summingLong(LayerReferenceJson::getSize));
}
@Override
public String getType() {
return "v2s2";
}
@Override
public String toString() {
return new StringJoiner(", ", ManifestJsonV2S2.class.getSimpleName() + "[", "]")
.add("Media Type=" + mediaType)
.add("Config=" + config)
.add("Layers=" + layers)
.toString();
}
}