XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFEServerManager

【Java】我的世界XFE服务器管理器

公开
关注 0 Fork 0 Star 0
UTF-8
package com.xfestudio.xfeservermanager.core.content;

import java.time.Instant;
import java.util.Objects;
import java.util.UUID;

/** A durable publication intent. PREPARING never implies that disk publication succeeded. */
public record ContentPublication(String id, Status status, ContentWorkspace workspace, String sha256,
                                 Instant createdAt, String createdBy, String error) {
    public enum Status { PREPARING, PUBLISHED, ACTIVE, FAILED }
    public ContentPublication {
        id = UUID.fromString(id).toString();
        Objects.requireNonNull(status, "publication status");
        Objects.requireNonNull(workspace, "publication workspace");
        sha256 = Objects.toString(sha256, "");
        if (!sha256.isEmpty() && !sha256.matches("[0-9a-f]{64}")) throw new IllegalArgumentException("invalid publication sha256");
        if ((status == Status.PUBLISHED || status == Status.ACTIVE) && sha256.isEmpty()) {
            throw new IllegalArgumentException("published content needs a sha256");
        }
        Objects.requireNonNull(createdAt, "publication createdAt");
        createdBy = ContentDefinition.text(createdBy, "publication actor", 1, 128);
        error = ContentDefinition.text(error, "publication error", 0, 1024);
    }
}