blob: fd8df28922851537e04ca708e2cac80c1ff0cc8f [file] [log] [blame]
Matthias Andreas Benkard4e8423d2021-12-19 22:56:09 +01001package eu.mulk.jgvariant.ostree;
2
3import eu.mulk.jgvariant.core.Decoder;
4import eu.mulk.jgvariant.core.Variant;
5import java.nio.charset.StandardCharsets;
Matthias Andreas Benkard329168c2021-12-28 01:20:05 +01006import java.util.Map;
Matthias Andreas Benkard4e8423d2021-12-19 22:56:09 +01007
8/**
Matthias Andreas Benkard05114642021-12-29 21:51:29 +01009 * A wrapper for a set of metadata fields.
Matthias Andreas Benkard4e8423d2021-12-19 22:56:09 +010010 *
11 * <p>Reference: (embedded in other data types)
Matthias Andreas Benkard05114642021-12-29 21:51:29 +010012 *
13 * @param fields a set of metadata fields indexed by name.
Matthias Andreas Benkard4e8423d2021-12-19 22:56:09 +010014 */
Matthias Andreas Benkard329168c2021-12-28 01:20:05 +010015public record Metadata(Map<String, Variant> fields) {
Matthias Andreas Benkard4e8423d2021-12-19 22:56:09 +010016
17 private static final Decoder<Metadata> DECODER =
Matthias Andreas Benkard329168c2021-12-28 01:20:05 +010018 Decoder.ofDictionary(Decoder.ofString(StandardCharsets.UTF_8), Decoder.ofVariant())
19 .map(Metadata::new);
Matthias Andreas Benkard4e8423d2021-12-19 22:56:09 +010020
Matthias Andreas Benkard05114642021-12-29 21:51:29 +010021 /**
22 * Acquires a {@link Decoder} for the enclosing type.
23 *
24 * @return a possibly shared {@link Decoder}.
25 */
Matthias Andreas Benkard4e8423d2021-12-19 22:56:09 +010026 public static Decoder<Metadata> decoder() {
27 return DECODER;
28 }
29}