Update all non-major dependencies (mulk/jgvariant!28)

This MR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [org.tukaani:xz](https://tukaani.org/xz/java.html) ([source](https://github.com/tukaani-project/xz-java)) | compile | minor | `1.9` -> `1.10` |
| [org.eclipse:yasson](https://projects.eclipse.org/projects/ee4j.yasson) ([source](https://github.com/eclipse-ee4j/yasson)) | compile | patch | `3.0.3` -> `3.0.4` |
| [org.eclipse.parsson:parsson](https://github.com/eclipse-ee4j/parsson) | compile | patch | `1.1.6` -> `1.1.7` |
| [com.uber.nullaway:nullaway](https://github.com/uber/NullAway) |  | patch | `0.11.0` -> `0.11.1` |
| [io.hosuaby:inject-resources-junit-jupiter](https://github.com/hosuaby/inject-resources) | test | patch | `0.3.3` -> `0.3.5` |
| [org.codehaus.mojo:exec-maven-plugin](https://www.mojohaus.org/exec-maven-plugin) ([source](https://github.com/mojohaus/exec-maven-plugin)) | build | minor | `3.3.0` -> `3.4.0` |

---

### Release Notes

<details>
<summary>tukaani-project/xz-java</summary>

### [`v1.10`](https://github.com/tukaani-project/xz-java/releases/tag/v1.10): XZ for Java 1.10

[Compare Source](https://github.com/tukaani-project/xz-java/compare/v1.9...v1.10)

</details>

<details>
<summary>eclipse-ee4j/yasson</summary>

### [`v3.0.4`](https://github.com/eclipse-ee4j/yasson/compare/3.0.3...3.0.4)

[Compare Source](https://github.com/eclipse-ee4j/yasson/compare/3.0.3...3.0.4)

</details>

<details>
<summary>eclipse-ee4j/parsson</summary>

### [`v1.1.7`](https://github.com/eclipse-ee4j/parsson/compare/1.1.6...1.1.7)

[Compare Source](https://github.com/eclipse-ee4j/parsson/compare/1.1.6...1.1.7)

</details>

<details>
<summary>uber/NullAway</summary>

### [`v0.11.1`](https://github.com/uber/NullAway/blob/HEAD/CHANGELOG.md#Version-0111)

[Compare Source](https://github.com/uber/NullAway/compare/v0.11.0...v0.11.1)

-   Fix issue 1008 ([#&#8203;1009](https://github.com/uber/NullAway/issues/1009))
-   JSpecify: read upper bound annotations from bytecode and add tests ([#&#8203;1004](https://github.com/uber/NullAway/issues/1004))
-   Fix crash with suggested suppressions in JSpecify mode ([#&#8203;1001](https://github.com/uber/NullAway/issues/1001))
-   Update to JSpecify 1.0 and use JSpecify annotations in NullAway code ([#&#8203;1000](https://github.com/uber/NullAway/issues/1000))
-   Expose [@&#8203;EnsuresNonNull](https://github.com/EnsuresNonNull) and [@&#8203;RequiresNonNull](https://github.com/RequiresNonNull) in annotations package ([#&#8203;999](https://github.com/uber/NullAway/issues/999))
-   Don't report initializer warnings on [@&#8203;NullUnmarked](https://github.com/NullUnmarked) constructors / methods ([#&#8203;997](https://github.com/uber/NullAway/issues/997))
-   Strip annotations from MethodSymbol strings ([#&#8203;993](https://github.com/uber/NullAway/issues/993))
-   JSpecify: fix crashes where declared parameter / return types were raw ([#&#8203;989](https://github.com/uber/NullAway/issues/989))
-   JSpecify: Handle [@&#8203;nullable](https://github.com/nullable) elements for enhanced-for-loops on arrays ([#&#8203;986](https://github.com/uber/NullAway/issues/986))
-   Features/944 tidy stream nullability propagator ([#&#8203;985](https://github.com/uber/NullAway/issues/985))
-   Tests for loops over arrays ([#&#8203;982](https://github.com/uber/NullAway/issues/982))
-   Bug fixes for array subtyping at returns / parameter passing ([#&#8203;980](https://github.com/uber/NullAway/issues/980))
-   JSpecify: Handle [@&#8203;nonnull](https://github.com/nonnull) elements in [@&#8203;nullable](https://github.com/nullable) content arrays ([#&#8203;963](https://github.com/uber/NullAway/issues/963))
-   Don't report [@&#8203;nullable](https://github.com/nullable) type argument errors for unmarked classes ([#&#8203;958](https://github.com/uber/NullAway/issues/958))
-   External Library Models: Adding support for Nullable upper bounds of Generic Type parameters ([#&#8203;949](https://github.com/uber/NullAway/issues/949))
-   Refactoring / code cleanups:
    -   Test on JDK 22 ([#&#8203;992](https://github.com/uber/NullAway/issues/992))
    -   Add test case for [@&#8203;nullable](https://github.com/nullable) Void with override in JSpecify mode ([#&#8203;990](https://github.com/uber/NullAway/issues/990))
    -   Enable UnnecessaryFinal and PreferredInterfaceType EP checks ([#&#8203;991](https://github.com/uber/NullAway/issues/991))
    -   Add missing [@&#8203;test](https://github.com/test) annotation ([#&#8203;988](https://github.com/uber/NullAway/issues/988))
    -   Fix typo in variable name ([#&#8203;987](https://github.com/uber/NullAway/issues/987))
    -   Remove AbstractConfig class ([#&#8203;974](https://github.com/uber/NullAway/issues/974))
    -   Fix Javadoc for MethodRef ([#&#8203;973](https://github.com/uber/NullAway/issues/973))
    -   Refactored data clumps with the help of LLMs (research project) ([#&#8203;960](https://github.com/uber/NullAway/issues/960))
-   Build / CI tooling maintenance:
    -   Various cleanups enabled by bumping minimum Java and Error Prone versions ([#&#8203;962](https://github.com/uber/NullAway/issues/962))
    -   Disable publishing of snapshot builds from CI ([#&#8203;967](https://github.com/uber/NullAway/issues/967))
    -   Update Gradle action usage in CI workflow ([#&#8203;969](https://github.com/uber/NullAway/issues/969))
    -   Update Gradle config to always compile Java code using JDK 17 ([#&#8203;971](https://github.com/uber/NullAway/issues/971))
    -   Update JavaParser to 3.26.0 ([#&#8203;970](https://github.com/uber/NullAway/issues/970))
    -   Reenable JMH benchmarking in a safer manner ([#&#8203;975](https://github.com/uber/NullAway/issues/975))
    -   Updated JMH Benchmark Comment Action ([#&#8203;976](https://github.com/uber/NullAway/issues/976))
    -   Update to Gradle 8.8 ([#&#8203;981](https://github.com/uber/NullAway/issues/981))
    -   Update to Error Prone 2.28.0 ([#&#8203;984](https://github.com/uber/NullAway/issues/984))
    -   Update to Gradle 8.9 ([#&#8203;998](https://github.com/uber/NullAway/issues/998))
    -   Update to WALA 1.6.6 ([#&#8203;1003](https://github.com/uber/NullAway/issues/1003))

</details>

<details>
<summary>hosuaby/inject-resources</summary>

### [`v0.3.5`](https://github.com/hosuaby/inject-resources/compare/v0.3.4...v0.3.5)

[Compare Source](https://github.com/hosuaby/inject-resources/compare/v0.3.4...v0.3.5)

### [`v0.3.4`](https://github.com/hosuaby/inject-resources/compare/v0.3.3...v0.3.4)

[Compare Source](https://github.com/hosuaby/inject-resources/compare/v0.3.3...v0.3.4)

</details>

<details>
<summary>mojohaus/exec-maven-plugin</summary>

### [`v3.4.0`](https://github.com/mojohaus/exec-maven-plugin/releases/tag/3.4.0)

[Compare Source](https://github.com/mojohaus/exec-maven-plugin/compare/3.3.0...3.4.0)

<!-- Optional: add a release summary here -->

#### 🚀 New features and improvements

-   Allow `<includePluginDependencies>` to be specified for the exec:exec goal ([#&#8203;432](https://github.com/mojohaus/exec-maven-plugin/pull/432)) [@&#8203;sebthom](https://github.com/sebthom)

#### 🐛 Bug Fixes

-   Do not get UPPERCASE env vars ([#&#8203;427](https://github.com/mojohaus/exec-maven-plugin/pull/427)) [@&#8203;wheezil](https://github.com/wheezil)

#### 📦 Dependency updates

-   Bump org.codehaus.mojo:mojo-parent from 82 to 84 ([#&#8203;434](https://github.com/mojohaus/exec-maven-plugin/pull/434)) [@&#8203;dependabot](https://github.com/dependabot)
-   Bump org.codehaus.plexus:plexus-xml from 3.0.0 to 3.0.1 ([#&#8203;431](https://github.com/mojohaus/exec-maven-plugin/pull/431)) [@&#8203;dependabot](https://github.com/dependabot)

#### 👻 Maintenance

-   Remove Log4j 1.2.x from ITs ([#&#8203;437](https://github.com/mojohaus/exec-maven-plugin/pull/437)) [@&#8203;slawekjaranowski](https://github.com/slawekjaranowski)

#### 🔧 Build

-   Use Maven 3.9.7 and 4.0.0-beta-3 ([#&#8203;433](https://github.com/mojohaus/exec-maven-plugin/pull/433)) [@&#8203;slawekjaranowski](https://github.com/slawekjaranowski)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever MR is behind base branch, or you tick the rebase/retry checkbox.

👻 **Immortal**: This MR will be recreated if closed unmerged. Get [config help](https://github.com/renovatebot/renovate/discussions) if that's undesired.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box

---

This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNC4yNC4wIiwidXBkYXRlZEluVmVyIjoiMzQuMjQuMCJ9-->
tree: 417471a5c6dfc76c8b1bfb3571f1023be1a0d19d
  1. .mvn/
  2. .reuse/
  3. jgvariant-bom/
  4. jgvariant-core/
  5. jgvariant-ostree/
  6. jgvariant-parent/
  7. jgvariant-tool/
  8. LICENSES/
  9. .gitignore
  10. .gitlab-ci.yml
  11. COPYING
  12. pom.xml
  13. README.md
  14. renovate.json
README.md

GVariant for Java

This library provides a GVariant parser in pure Java.

Overview

jgvariant-core provides Decoder<T>, which read a given type of GVariant-encoded value from a ByteBuffer. The class also contains factory methods to acquire those instances.

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

jgvariant-ostree provides instances of Decoder<T> for various GVariant types used in OSTree repositories.

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(String s, int i) {}

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

byte[] bytes = ...;
List<ExampleRecord> example = decoder.decode(ByteBuffer.wrap(bytes));

Command line tool

The jgvariant-tool module contains a tool called jgvariant that can be used to manipulate GVariant-formatted files from the command line. Its primary purpose is to enable the scripting of OSTree repository management tasks.

Usage examples

Dumping the contents of an OSTree summary file

$ jgvariant ostree summary read ./jgvariant-ostree/src/test/resources/ostree/summary

Output:

{
    "entries": [
        {
            "ref": "mulkos/1.x/amd64",
            "value": {
                "checksum": "66ff167ff35ce87daac817447a9490a262ee75f095f017716a6eb1a9d9eb3350",
                "metadata": {
                    "fields": {
                        "ostree.commit.timestamp": 1640537170
                    }
                },
                "size": 214
            }
        }
    ],
    "metadata": {
        "fields": {
            "ostree.summary.last-modified": 1640537300,
            "ostree.summary.tombstone-commits": false,
            "ostree.static-deltas": {
                "3d3b3329dca38871f29aeda1bf5854d76c707fa269759a899d0985c91815fe6f-66ff167ff35ce87daac817447a9490a262ee75f095f017716a6eb1a9d9eb3350": "03738040e28e7662e9c9d2599c530ea974e642c9f87e6c00cbaa39a0cdac8d44",
                "31c8835d5c9d2c6687a50091c85142d1b2d853ff416a9fb81b4ee30754510d52": "f481144629474bd88c106e45ac405ebd75b324b0655af1aec14b31786ae1fd61",
                "31c8835d5c9d2c6687a50091c85142d1b2d853ff416a9fb81b4ee30754510d52-3d3b3329dca38871f29aeda1bf5854d76c707fa269759a899d0985c91815fe6f": "2c6a07bc1cf4d7ce7d00f82d7d2d6d156fd0e31d476851b46dc2306b181b064a"
            },
            "ostree.summary.mode": "bare",
            "ostree.summary.indexed-deltas": true
        }
    }
}

Adding a static delta to an OSTree summary file

Superblock checksum 0..., between commits 3... and 6...:

$ jgvariant ostree summary add-static-delta ./jgvariant-ostree/src/test/resources/ostree/summary 03738040e28e7662e9c9d2599c530ea974e642c9f87e6c00cbaa39a0cdac8d44 66ff167ff35ce87daac817447a9490a262ee75f095f017716a6eb1a9d9eb3350 3d3b3329dca38871f29aeda1bf5854d76c707fa269759a899d0985c91815fe6f

Superblock checksum f..., between the empty commit and 3...:

$ jgvariant ostree summary add-static-delta ./jgvariant-ostree/src/test/resources/ostree/summary f481144629474bd88c106e45ac405ebd75b324b0655af1aec14b31786ae1fd61 31c8835d5c9d2c6687a50091c85142d1b2d853ff416a9fb81b4ee30754510d52

Checksums can be given in either hex (64 digits) or a variant of Base64 (43 digits) where / is replaced by _. The latter format is used to identify the start and end commits of deltas as part of folder names below deltas/ in the OSTree repository itself.

Building the tool

You can build the tool either as a shaded JAR or as a native executable.

To build and run a shaded JAR:

$ mvn package -pl jgvariant-tool -am -Pshade
$ java -jar jgvariant-tool/target/jgvariant-tool-*.jar ...

To build and run a native executable:

$ mvn package -pl jgvariant-tool -am -Pnative
$ ./jgvariant-tool/target/jgvariant ...

You can also run the tool directly with Maven using the exec profile:

$ mvn verify -pl jgvariant-tool -am -Pexec -Dexec.args="..."

Library installation

Usage with Maven

<project>
  ...

  <dependencyManagement>
    ...

    <dependencies>
      <dependency>
        <groupId>eu.mulk.jgvariant</groupId>
        <artifactId>jgvariant-bom</artifactId>
        <version>0.1.10</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>

    ...
  </dependencyManagement>

  <dependencies>
    ...

    <dependency>
      <groupId>eu.mulk.jgvariant</groupId>
      <artifactId>jgvariant-core</artifactId>
    </dependency>
    <dependency>
      <groupId>eu.mulk.jgvariant</groupId>
      <artifactId>jgvariant-ostree</artifactId>
    </dependency>

    ...
  </dependencies>

  ...
</project>

Usage with Gradle

dependencies {
  ...

  implementation(platform("eu.mulk.jgvariant:jgvariant-bom:0.1.10")
  implementation("eu.mulk.jgvariant:jgvariant-core")
  implementation("eu.mulk.jgvariant:jgvariant-ostree")

  ...
}