package p.studio.vfs; import p.studio.vfs.messages.VfsDocumentAccessContext; import p.studio.vfs.messages.VfsUnsupportedReason; import java.nio.file.Path; import java.util.Objects; public sealed interface VfsDocumentOpenResult permits VfsDocumentOpenResult.VfsUnsupportedDocument, VfsDocumentOpenResult.VfsTextDocument { Path path(); record VfsUnsupportedDocument( Path path, VfsUnsupportedReason reason) implements VfsDocumentOpenResult { public VfsUnsupportedDocument { path = Objects.requireNonNull(path, "path").toAbsolutePath().normalize(); Objects.requireNonNull(reason, "reason"); } } record VfsTextDocument( Path path, String documentName, String typeId, String content, String lineSeparator, boolean dirty, VfsDocumentAccessContext accessContext) implements VfsDocumentOpenResult { public VfsTextDocument { path = Objects.requireNonNull(path, "path").toAbsolutePath().normalize(); Objects.requireNonNull(documentName, "documentName"); Objects.requireNonNull(typeId, "typeId"); Objects.requireNonNull(content, "content"); Objects.requireNonNull(lineSeparator, "lineSeparator"); Objects.requireNonNull(accessContext, "accessContext"); } } }