All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.distelli.gcr.models.GcrManifestV2Schema2 Maven / Gradle / Ivy

There is a newer version: 2.1.3
Show newest version
package com.distelli.gcr.models;

import java.util.Collections;
import java.util.List;
import lombok.Data;
import lombok.Builder;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import com.fasterxml.jackson.databind.ObjectMapper;

// NOTE: gcr appears to reject this manifest format with INVALID_MANIFEST, perhaps
// it will be supported in the future?
//
// See https://docs.docker.com/registry/spec/manifest-v2-2/

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class GcrManifestV2Schema2 implements GcrManifest
{
    private static ObjectMapper OM = new ObjectMapper();
    public static final String MEDIA_TYPE = "application/vnd.docker.distribution.manifest.v2+json";

    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    public static class Config {
        public static class ConfigBuilder {
            protected String mediaType = "application/vnd.docker.container.image.v1+json";
        }
        protected String mediaType = "application/vnd.docker.container.image.v1+json";
        protected int size;
        protected String digest;
    }

    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    public static class LayerItem {
        public static class LayerItemBuilder {
            protected String mediaType = "application/vnd.docker.image.rootfs.diff.tar.gzip";
        }
        protected String mediaType = "application/vnd.docker.image.rootfs.diff.tar.gzip";
        protected int size;
        protected String digest;
        protected List urls;
    }

    public static class GcrManifestV2Schema2Builder {
        protected String mediaType = MEDIA_TYPE;
        protected List layers = Collections.emptyList();
    }

    public int getSchemaVersion() {
        return 2;
    }

    protected String mediaType = MEDIA_TYPE;
    protected Config config;
    protected List layers = Collections.emptyList();

    @Override
    public String toString() {
        try {
            return OM.writeValueAsString(this);
        } catch ( RuntimeException ex ) {
            throw ex;
        } catch ( Exception ex ) {
            throw new RuntimeException(ex);
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy