tree: 62787608ad6caa5aef974d6a96da24cebbb21667 [path history] [tgz]
  1. .mvn/
  2. src/
  3. .gitignore
  4. COPYING
  5. COPYING.GPL
  6. pom.xml
  7. README.md
README.md

GVariant for Java

This library provides a GVariant parser in pure Java.

Overview

The two foundational classes are Value and Decoder.

Value is a sum type (sealed interface) that represents a GVariant value. Its subtypes represent the different types of values that GVariant supports.

Instances of Decoder read a given concrete subtype of Value from a ByteBuffer. The class also contains factory methods to create those instances.

The various subclasses of Decoder together implement the GVariant serialization specification.

Example

To parse a GVariant value of type "a(si)", which is an array of pairs of String and int, you can use the following code:

record ExampleRecord(Value.Str s, Value.Int32 i) {}

var decoder =
  Decoder.ofArray(
    Decoder.ofStructure(
      ExampleRecord.class,
      Decoder.ofStr(StandardCharsets.UTF_8),
      Decoder.ofInt32().withByteOrder(ByteOrder.LITTLE_ENDIAN)));

byte[] bytes = ...;
Value.Array<Value.Structure<ExampleRecord>> example = decoder.decode(bytes);