From 5401070321675416e27b535d1c298e40463432d6 Mon Sep 17 00:00:00 2001 From: James Maes Date: Thu, 15 Oct 2026 01:34:11 -0500 Subject: [PATCH] fix: the qbit metadata version comes from the build, not a hardcoded constant The producer read a literal version, so released artifacts reported a stale or -SNAPSHOT version. qbit-object-storage.properties (version=${project.version}) is Maven-filtered and the producer loads it; tests assert producer == bundle == artifact version. Co-Authored-By: Claude Opus 5.5 --- CHANGELOG.md | 1 + pom.xml | 11 +++++++ .../ObjectStorageQBitProducer.java | 33 ++++++++++++++++++- .../resources/qbit-object-storage.properties | 1 + .../ObjectStorageHelpBundleTest.java | 8 ++++- .../ObjectStorageQBitProducerTest.java | 4 +++ 6 files changed, 56 insertions(+), 2 deletions(-) create mode 100644 src/main/resources/qbit-object-storage.properties diff --git a/CHANGELOG.md b/CHANGELOG.md index 2093629..96519cd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -30,6 +30,7 @@ All notable changes to this project are documented here. The format follows Keep - None for the health migration; both Test connection record actions, including on-demand write tests, are retained. ### Changed +- Read the qbit metadata version from the Maven-filtered artifact version so release metadata matches the build and help bundle. - Rechecked the released RC.8 JARs: core still has no S3 session-token/provider hook or file-reference interpreter. Retained both compatibility shims and moved their review deadline to RC.9 under issue #10. - Raised the QQQ BOM baseline to released `4.1.0-RC.8` for the central health API. - Raised the QQQ BOM baseline to released `4.1.0-RC.7` for the core help-bundle registry and coverage assertions. diff --git a/pom.xml b/pom.xml index 3637ef2..919eb97 100644 --- a/pom.xml +++ b/pom.xml @@ -179,6 +179,7 @@ true help/*.yaml + qbit-object-storage.properties @@ -186,10 +187,20 @@ false help/*.yaml + qbit-object-storage.properties + + org.apache.maven.plugins + maven-surefire-plugin + + + ${project.version} + + + org.apache.maven.plugins maven-checkstyle-plugin diff --git a/src/main/java/com/kingsrook/qbits/objectstorage/ObjectStorageQBitProducer.java b/src/main/java/com/kingsrook/qbits/objectstorage/ObjectStorageQBitProducer.java index 6d47ab2..367a102 100644 --- a/src/main/java/com/kingsrook/qbits/objectstorage/ObjectStorageQBitProducer.java +++ b/src/main/java/com/kingsrook/qbits/objectstorage/ObjectStorageQBitProducer.java @@ -21,8 +21,11 @@ package com.kingsrook.qbits.objectstorage; +import java.io.IOException; +import java.io.InputStream; import java.util.ArrayList; import java.util.List; +import java.util.Properties; import com.kingsrook.qbits.objectstorage.app.StorageWidgets; import com.kingsrook.qbits.objectstorage.health.ObjectStorageConnectionChecks; import com.kingsrook.qbits.objectstorage.internal.ConfigSync; @@ -60,13 +63,41 @@ public class ObjectStorageQBitProducer implements QBitMetaDataProducer assertThat(bundle.getId()).isEqualTo("qbit-object-storage")); + .satisfies(bundle -> + { + assertThat(bundle.getId()).isEqualTo("qbit-object-storage"); + assertThat(System.getProperty("qbit.artifactVersion")).isNotBlank(); + assertThat(bundle.getVersion()).isEqualTo(System.getProperty("qbit.artifactVersion")) + .isEqualTo(ObjectStorageQBitProducer.VERSION); + }); HelpBundles.syncOnStartup(instance); Set keys = HelpBundles.of(instance).getBundles().get(0).getEntries().stream() .map(entry -> entry.getKey()).collect(Collectors.toSet()); diff --git a/src/test/java/com/kingsrook/qbits/objectstorage/ObjectStorageQBitProducerTest.java b/src/test/java/com/kingsrook/qbits/objectstorage/ObjectStorageQBitProducerTest.java index efbb394..ff815f8 100644 --- a/src/test/java/com/kingsrook/qbits/objectstorage/ObjectStorageQBitProducerTest.java +++ b/src/test/java/com/kingsrook/qbits/objectstorage/ObjectStorageQBitProducerTest.java @@ -44,6 +44,10 @@ class ObjectStorageQBitProducerTest ObjectStorageQBitConfig config = new ObjectStorageQBitConfig().withBackendName("rdbms"); ObjectStorageQBitProducer producer = new ObjectStorageQBitProducer().withQBitConfig(config).withNamespace("object_storage"); + String artifactVersion = System.getProperty("qbit.artifactVersion"); + assertThat(artifactVersion).isNotBlank(); + assertThat(ObjectStorageQBitProducer.VERSION).isEqualTo(artifactVersion); + assertThat(producer.getQBitMetaData().getVersion()).isEqualTo(artifactVersion); assertThat(producer.isEnabled()).isTrue(); assertThat(producer.getQBitConfig()).isSameAs(config); assertThat(producer.getNamespace()).isEqualTo("object_storage"); -- 2.54.0