From fc86b6a78b7dc80fef1c9f7fd5bae6e6692e7c68 Mon Sep 17 00:00:00 2001 From: Dariusz Jarosz Date: Fri, 2 Oct 2026 10:40:29 -0500 Subject: [PATCH 1/9] Add a shared lib for use between BELY and CDB for MQTT integration and mqtt event object serialization. controls/hla/hla-support#210 --- .../developer_tools/cdb-mqtt-java/.gitignore | 1 + tools/developer_tools/cdb-mqtt-java/README.md | 25 ++++++++ .../developer_tools/cdb-mqtt-java/SHA256SUMS | 1 + tools/developer_tools/cdb-mqtt-java/pom.xml | 56 +++++++++++++++++ .../main/java/gov/anl/aps/mqtt/MqttEvent.java | 13 ++++ .../java/gov/anl/aps/mqtt/MqttPublisher.java | 11 ++++ .../anl/aps/mqtt/exception/MqttException.java | 10 +++ .../exception/MqttNotConfiguredException.java | 10 +++ .../mqtt/exception/MqttPublishException.java | 9 +++ .../exception/MqttSerializationException.java | 9 +++ .../anl/aps/mqtt/jca/JcaMqttPublisher.java | 39 ++++++++++++ .../mqtt/jca/JndiMqttConnectionProvider.java | 61 +++++++++++++++++++ .../gov/anl/aps/mqtt/jca/MqttConnection.java | 10 +++ .../aps/mqtt/jca/MqttConnectionProvider.java | 11 ++++ .../anl/aps/mqtt/JcaMqttPublisherTest.java | 53 ++++++++++++++++ .../mqtt/JndiMqttConnectionProviderTest.java | 16 +++++ 16 files changed, 335 insertions(+) create mode 100644 tools/developer_tools/cdb-mqtt-java/.gitignore create mode 100644 tools/developer_tools/cdb-mqtt-java/README.md create mode 100644 tools/developer_tools/cdb-mqtt-java/SHA256SUMS create mode 100644 tools/developer_tools/cdb-mqtt-java/pom.xml create mode 100644 tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/MqttEvent.java create mode 100644 tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/MqttPublisher.java create mode 100644 tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/exception/MqttException.java create mode 100644 tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/exception/MqttNotConfiguredException.java create mode 100644 tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/exception/MqttPublishException.java create mode 100644 tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/exception/MqttSerializationException.java create mode 100644 tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/jca/JcaMqttPublisher.java create mode 100644 tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/jca/JndiMqttConnectionProvider.java create mode 100644 tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/jca/MqttConnection.java create mode 100644 tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/jca/MqttConnectionProvider.java create mode 100644 tools/developer_tools/cdb-mqtt-java/src/test/java/gov/anl/aps/mqtt/JcaMqttPublisherTest.java create mode 100644 tools/developer_tools/cdb-mqtt-java/src/test/java/gov/anl/aps/mqtt/JndiMqttConnectionProviderTest.java diff --git a/tools/developer_tools/cdb-mqtt-java/.gitignore b/tools/developer_tools/cdb-mqtt-java/.gitignore new file mode 100644 index 000000000..2f7896d1d --- /dev/null +++ b/tools/developer_tools/cdb-mqtt-java/.gitignore @@ -0,0 +1 @@ +target/ diff --git a/tools/developer_tools/cdb-mqtt-java/README.md b/tools/developer_tools/cdb-mqtt-java/README.md new file mode 100644 index 000000000..b9344dc73 --- /dev/null +++ b/tools/developer_tools/cdb-mqtt-java/README.md @@ -0,0 +1,25 @@ +# CDB MQTT Java + +Shared Java 8 MQTT event publishing API and Payara JCA/JNDI transport used by ComponentDB and BELY. + +## Build and test + +A JDK and Maven are required. + +```sh +mvn clean verify +sha256sum -c SHA256SUMS +``` + +The versioned thin JAR is written to `target/cdb-mqtt-java-1.0.0.jar`. Jackson is provided by each consuming portal and is intentionally not bundled. + +## Release artifact + +The checked-in `SHA256SUMS` records the released JAR checksum and verifies the artifact under `target/`. After changing this library: + +1. Increment the version in `pom.xml`. +2. Run `mvn clean verify`. +3. Update `SHA256SUMS` with the checksum of the generated JAR. +4. Copy that exact JAR into each portal's checked-in `lib/` directory. +5. Register the versioned JAR in each portal's NetBeans Ant classpath. +6. Verify each copied JAR with `sha256sum` before building the portals. diff --git a/tools/developer_tools/cdb-mqtt-java/SHA256SUMS b/tools/developer_tools/cdb-mqtt-java/SHA256SUMS new file mode 100644 index 000000000..fe7f6caec --- /dev/null +++ b/tools/developer_tools/cdb-mqtt-java/SHA256SUMS @@ -0,0 +1 @@ +80a786de428cf74fb7f5c4fa19c783ab59e96ad5b6faa150314b4c1a642f1984 target/cdb-mqtt-java-1.0.0.jar diff --git a/tools/developer_tools/cdb-mqtt-java/pom.xml b/tools/developer_tools/cdb-mqtt-java/pom.xml new file mode 100644 index 000000000..f7daf6f6a --- /dev/null +++ b/tools/developer_tools/cdb-mqtt-java/pom.xml @@ -0,0 +1,56 @@ + + 4.0.0 + + gov.anl.aps + cdb-mqtt-java + 1.0.0 + + + 1.8 + 1.8 + 2026-09-30T00:00:00Z + UTF-8 + 5.10.3 + + + + + com.fasterxml.jackson.core + jackson-annotations + 2.11.2 + provided + + + com.fasterxml.jackson.core + jackson-databind + 2.11.2 + provided + + + org.junit.jupiter + junit-jupiter + ${junit.version} + test + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.13.0 + + 8 + + + + org.apache.maven.plugins + maven-surefire-plugin + 3.2.5 + + + + diff --git a/tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/MqttEvent.java b/tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/MqttEvent.java new file mode 100644 index 000000000..c7f426684 --- /dev/null +++ b/tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/MqttEvent.java @@ -0,0 +1,13 @@ +/* + * Copyright (c) UChicago Argonne, LLC. All rights reserved. + * See LICENSE file. + */ +package gov.anl.aps.mqtt; + +import com.fasterxml.jackson.annotation.JsonIgnore; + +/** An application-owned payload and its destination topic. */ +public interface MqttEvent { + @JsonIgnore + String getTopic(); +} diff --git a/tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/MqttPublisher.java b/tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/MqttPublisher.java new file mode 100644 index 000000000..6e4a7d7f0 --- /dev/null +++ b/tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/MqttPublisher.java @@ -0,0 +1,11 @@ +/* + * Copyright (c) UChicago Argonne, LLC. All rights reserved. + * See LICENSE file. + */ +package gov.anl.aps.mqtt; + +import gov.anl.aps.mqtt.exception.MqttException; + +public interface MqttPublisher { + void publish(MqttEvent event) throws MqttException; +} diff --git a/tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/exception/MqttException.java b/tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/exception/MqttException.java new file mode 100644 index 000000000..1f286800c --- /dev/null +++ b/tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/exception/MqttException.java @@ -0,0 +1,10 @@ +/* + * Copyright (c) UChicago Argonne, LLC. All rights reserved. + * See LICENSE file. + */ +package gov.anl.aps.mqtt.exception; + +public abstract class MqttException extends Exception { + protected MqttException(String message) { super(message); } + protected MqttException(String message, Throwable cause) { super(message, cause); } +} diff --git a/tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/exception/MqttNotConfiguredException.java b/tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/exception/MqttNotConfiguredException.java new file mode 100644 index 000000000..0f2ce2134 --- /dev/null +++ b/tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/exception/MqttNotConfiguredException.java @@ -0,0 +1,10 @@ +/* + * Copyright (c) UChicago Argonne, LLC. All rights reserved. + * See LICENSE file. + */ +package gov.anl.aps.mqtt.exception; + +public class MqttNotConfiguredException extends MqttException { + public MqttNotConfiguredException(String message) { super(message); } + public MqttNotConfiguredException(String message, Throwable cause) { super(message, cause); } +} diff --git a/tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/exception/MqttPublishException.java b/tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/exception/MqttPublishException.java new file mode 100644 index 000000000..5508e9e2a --- /dev/null +++ b/tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/exception/MqttPublishException.java @@ -0,0 +1,9 @@ +/* + * Copyright (c) UChicago Argonne, LLC. All rights reserved. + * See LICENSE file. + */ +package gov.anl.aps.mqtt.exception; + +public class MqttPublishException extends MqttException { + public MqttPublishException(String message, Throwable cause) { super(message, cause); } +} diff --git a/tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/exception/MqttSerializationException.java b/tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/exception/MqttSerializationException.java new file mode 100644 index 000000000..43c9388b1 --- /dev/null +++ b/tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/exception/MqttSerializationException.java @@ -0,0 +1,9 @@ +/* + * Copyright (c) UChicago Argonne, LLC. All rights reserved. + * See LICENSE file. + */ +package gov.anl.aps.mqtt.exception; + +public class MqttSerializationException extends MqttException { + public MqttSerializationException(String message, Throwable cause) { super(message, cause); } +} diff --git a/tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/jca/JcaMqttPublisher.java b/tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/jca/JcaMqttPublisher.java new file mode 100644 index 000000000..5ae135e91 --- /dev/null +++ b/tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/jca/JcaMqttPublisher.java @@ -0,0 +1,39 @@ +/* + * Copyright (c) UChicago Argonne, LLC. All rights reserved. + * See LICENSE file. + */ +package gov.anl.aps.mqtt.jca; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import gov.anl.aps.mqtt.MqttEvent; +import gov.anl.aps.mqtt.MqttPublisher; +import gov.anl.aps.mqtt.exception.MqttException; +import gov.anl.aps.mqtt.exception.MqttPublishException; +import gov.anl.aps.mqtt.exception.MqttSerializationException; +import java.nio.charset.StandardCharsets; + +public class JcaMqttPublisher implements MqttPublisher { + private final MqttConnectionProvider connections; + private final ObjectMapper mapper; + private final int qos; + private final boolean retained; + + public JcaMqttPublisher(MqttConnectionProvider connections, ObjectMapper mapper) { this(connections, mapper, 0, false); } + public JcaMqttPublisher(MqttConnectionProvider connections, ObjectMapper mapper, int qos, boolean retained) { + if (connections == null || mapper == null) throw new IllegalArgumentException("connections and mapper are required"); + if (qos < 0 || qos > 2) throw new IllegalArgumentException("qos must be between 0 and 2"); + this.connections = connections; this.mapper = mapper; this.qos = qos; this.retained = retained; + } + + @Override public void publish(MqttEvent event) throws MqttException { + if (event == null || event.getTopic() == null || event.getTopic().trim().isEmpty()) throw new IllegalArgumentException("event topic is required"); + final byte[] payload; + try { payload = mapper.writeValueAsString(event).getBytes(StandardCharsets.UTF_8); } + catch (JsonProcessingException ex) { throw new MqttSerializationException("Failed to serialize MQTT event", ex); } + try (MqttConnection connection = connections.getConnection()) { + connection.publish(event.getTopic(), payload, qos, retained); + } catch (MqttException ex) { throw ex; } + catch (Exception ex) { throw new MqttPublishException("Failed to publish MQTT event to " + event.getTopic(), ex); } + } +} diff --git a/tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/jca/JndiMqttConnectionProvider.java b/tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/jca/JndiMqttConnectionProvider.java new file mode 100644 index 000000000..12e176858 --- /dev/null +++ b/tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/jca/JndiMqttConnectionProvider.java @@ -0,0 +1,61 @@ +/* + * Copyright (c) UChicago Argonne, LLC. All rights reserved. + * See LICENSE file. + */ +package gov.anl.aps.mqtt.jca; + +import gov.anl.aps.mqtt.exception.MqttNotConfiguredException; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import javax.naming.InitialContext; +import javax.naming.NamingException; + +/** Looks up a Payara MQTT JCA factory without binding consumers to its API version. */ +public class JndiMqttConnectionProvider implements MqttConnectionProvider { + private final String jndiName; + + public JndiMqttConnectionProvider(String jndiName) { + if (jndiName == null || jndiName.trim().isEmpty()) throw new IllegalArgumentException("jndiName is required"); + this.jndiName = jndiName; + } + + @Override public MqttConnection getConnection() throws MqttNotConfiguredException { + try { + Object factory = new InitialContext().lookup(jndiName); + Object connection = factory.getClass().getMethod("getConnection").invoke(factory); + if (connection == null) { + throw new MqttNotConfiguredException( + "MQTT resource could not connect to its broker: " + jndiName, null); + } + return new ReflectiveConnection(connection); + } catch (NamingException | ReflectiveOperationException | LinkageError ex) { + throw new MqttNotConfiguredException("MQTT resource is unavailable: " + jndiName, unwrap(ex)); + } + } + + private static Throwable unwrap(Throwable error) { + return error instanceof InvocationTargetException && error.getCause() != null ? error.getCause() : error; + } + + private static final class ReflectiveConnection implements MqttConnection { + private final Object delegate; + private final Method publish; + private final Method close; + ReflectiveConnection(Object delegate) throws NoSuchMethodException { + this.delegate = delegate; + publish = delegate.getClass().getMethod("publish", String.class, byte[].class, int.class, boolean.class); + close = delegate.getClass().getMethod("close"); + } + @Override public void publish(String topic, byte[] payload, int qos, boolean retained) throws Exception { + try { publish.invoke(delegate, topic, payload, qos, retained); } + catch (InvocationTargetException ex) { throw asException(unwrap(ex)); } + } + @Override public void close() throws Exception { + try { close.invoke(delegate); } + catch (InvocationTargetException ex) { throw asException(unwrap(ex)); } + } + private static Exception asException(Throwable error) { + return error instanceof Exception ? (Exception) error : new Exception(error); + } + } +} diff --git a/tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/jca/MqttConnection.java b/tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/jca/MqttConnection.java new file mode 100644 index 000000000..aef5d90b1 --- /dev/null +++ b/tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/jca/MqttConnection.java @@ -0,0 +1,10 @@ +/* + * Copyright (c) UChicago Argonne, LLC. All rights reserved. + * See LICENSE file. + */ +package gov.anl.aps.mqtt.jca; + +public interface MqttConnection extends AutoCloseable { + void publish(String topic, byte[] payload, int qos, boolean retained) throws Exception; + @Override void close() throws Exception; +} diff --git a/tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/jca/MqttConnectionProvider.java b/tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/jca/MqttConnectionProvider.java new file mode 100644 index 000000000..7ee901ca1 --- /dev/null +++ b/tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/jca/MqttConnectionProvider.java @@ -0,0 +1,11 @@ +/* + * Copyright (c) UChicago Argonne, LLC. All rights reserved. + * See LICENSE file. + */ +package gov.anl.aps.mqtt.jca; + +import gov.anl.aps.mqtt.exception.MqttNotConfiguredException; + +public interface MqttConnectionProvider { + MqttConnection getConnection() throws MqttNotConfiguredException; +} diff --git a/tools/developer_tools/cdb-mqtt-java/src/test/java/gov/anl/aps/mqtt/JcaMqttPublisherTest.java b/tools/developer_tools/cdb-mqtt-java/src/test/java/gov/anl/aps/mqtt/JcaMqttPublisherTest.java new file mode 100644 index 000000000..764ae4b51 --- /dev/null +++ b/tools/developer_tools/cdb-mqtt-java/src/test/java/gov/anl/aps/mqtt/JcaMqttPublisherTest.java @@ -0,0 +1,53 @@ +/* + * Copyright (c) UChicago Argonne, LLC. All rights reserved. + * See LICENSE file. + */ +package gov.anl.aps.mqtt; + +import com.fasterxml.jackson.databind.ObjectMapper; +import gov.anl.aps.mqtt.exception.MqttNotConfiguredException; +import gov.anl.aps.mqtt.exception.MqttPublishException; +import gov.anl.aps.mqtt.exception.MqttSerializationException; +import gov.anl.aps.mqtt.jca.JcaMqttPublisher; +import gov.anl.aps.mqtt.jca.MqttConnection; +import gov.anl.aps.mqtt.jca.MqttConnectionProvider; +import java.nio.charset.StandardCharsets; +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; + +class JcaMqttPublisherTest { + @Test void publishesConfiguredArgumentsAndCloses() throws Exception { + FakeConnection connection = new FakeConnection(); + JcaMqttPublisher publisher = new JcaMqttPublisher(() -> connection, new ObjectMapper(), 1, true); + publisher.publish(new Event("value")); + assertEquals("cdb/add", connection.topic); + assertTrue(new String(connection.payload, StandardCharsets.UTF_8).contains("\"value\":\"value\"")); + assertEquals(1, connection.qos); assertTrue(connection.retained); assertTrue(connection.closed); + } + @Test void reportsMissingConfiguration() { + MqttConnectionProvider provider = () -> { throw new MqttNotConfiguredException("missing"); }; + assertThrows(MqttNotConfiguredException.class, () -> new JcaMqttPublisher(provider, new ObjectMapper()).publish(new Event("x"))); + } + @Test void reportsSerializationFailureWithoutOpeningConnection() { + boolean[] opened = {false}; + ObjectMapper mapper = new ObjectMapper() { @Override public String writeValueAsString(Object value) throws com.fasterxml.jackson.core.JsonProcessingException { throw new com.fasterxml.jackson.core.JsonProcessingException("bad") {}; } }; + assertThrows(MqttSerializationException.class, () -> new JcaMqttPublisher(() -> { opened[0]=true; return new FakeConnection(); }, mapper).publish(new Event("x"))); + assertFalse(opened[0]); + } + @Test void closesAfterPublishFailure() { + FakeConnection connection = new FakeConnection(); connection.failPublish = true; + assertThrows(MqttPublishException.class, () -> new JcaMqttPublisher(() -> connection, new ObjectMapper()).publish(new Event("x"))); + assertTrue(connection.closed); + } + @Test void rejectsInvalidQos() { assertThrows(IllegalArgumentException.class, () -> new JcaMqttPublisher(() -> null, new ObjectMapper(), 3, false)); } + + static final class Event implements MqttEvent { + private final String value; Event(String value){this.value=value;} + @Override public String getTopic(){return "cdb/add";} public String getValue(){return value;} + } + static final class FakeConnection implements MqttConnection { + String topic; byte[] payload; int qos; boolean retained; boolean closed; boolean failPublish; + @Override public void publish(String topic, byte[] payload, int qos, boolean retained) throws Exception { this.topic=topic;this.payload=payload;this.qos=qos;this.retained=retained;if(failPublish)throw new Exception("broker"); } + @Override public void close(){closed=true;} + } +} diff --git a/tools/developer_tools/cdb-mqtt-java/src/test/java/gov/anl/aps/mqtt/JndiMqttConnectionProviderTest.java b/tools/developer_tools/cdb-mqtt-java/src/test/java/gov/anl/aps/mqtt/JndiMqttConnectionProviderTest.java new file mode 100644 index 000000000..5769bf928 --- /dev/null +++ b/tools/developer_tools/cdb-mqtt-java/src/test/java/gov/anl/aps/mqtt/JndiMqttConnectionProviderTest.java @@ -0,0 +1,16 @@ +/* + * Copyright (c) UChicago Argonne, LLC. All rights reserved. + * See LICENSE file. + */ +package gov.anl.aps.mqtt; + +import gov.anl.aps.mqtt.exception.MqttNotConfiguredException; +import gov.anl.aps.mqtt.jca.JndiMqttConnectionProvider; +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertThrows; + +class JndiMqttConnectionProviderTest { + @Test void missingJndiResourceIsReportedAsNotConfigured() { + assertThrows(MqttNotConfiguredException.class, () -> new JndiMqttConnectionProvider("java:comp/env/missing-mqtt").getConnection()); + } +} From 50775397a580d182fd49ed34da17b6f3a94a7fa0 Mon Sep 17 00:00:00 2001 From: Dariusz Jarosz Date: Fri, 2 Oct 2026 10:42:12 -0500 Subject: [PATCH 2/9] Add scripts to create and deploy mqtt connection configuration controls/hla/hla-support#210 --- Makefile | 13 ++ sbin/cdb_configure_mqtt_service.sh | 170 ++++++++++++++++++++++++++ sbin/cdb_create_mqtt_configuration.sh | 135 ++++++++++++++++++++ src/lib/mqtt-rar-0.8.0.rar | Bin 0 -> 238508 bytes 4 files changed, 318 insertions(+) create mode 100755 sbin/cdb_configure_mqtt_service.sh create mode 100755 sbin/cdb_create_mqtt_configuration.sh create mode 100644 src/lib/mqtt-rar-0.8.0.rar diff --git a/Makefile b/Makefile index f2daa3b76..33d369d64 100644 --- a/Makefile +++ b/Makefile @@ -9,6 +9,7 @@ TOP = . SUBDIRS = src .PHONY: support support-mysql dev-config prepare-release release-python-client +.PHONY: mqtt-configuration configure-mqtt mqtt-configuration-dev configure-mqtt-dev .PHONY: db backup db-dev deploy-web-portal undeploy-web-portal deploy-web-service undeploy-web-service .PHONY: db-dev backup-dev deploy-web-portal-dev undeploy-web-portal-dev deploy-web-service-dev undeploy-web-service-dev @@ -28,6 +29,12 @@ release-python-client: configuration: $(TOP)/sbin/cdb_create_configuration.sh +mqtt-configuration: + $(TOP)/sbin/cdb_create_mqtt_configuration.sh cdb + +configure-mqtt: + $(TOP)/sbin/cdb_configure_mqtt_service.sh cdb + support: $(TOP)/sbin/cdb_install_support.sh @@ -79,6 +86,12 @@ undeploy-web-service: configuration-dev: $(TOP)/sbin/cdb_create_configuration.sh cdb_dev +mqtt-configuration-dev: + $(TOP)/sbin/cdb_create_mqtt_configuration.sh cdb_dev + +configure-mqtt-dev: + $(TOP)/sbin/cdb_configure_mqtt_service.sh cdb_dev + db-dev: $(TOP)/sbin/cdb_create_db.sh cdb_dev diff --git a/sbin/cdb_configure_mqtt_service.sh b/sbin/cdb_configure_mqtt_service.sh new file mode 100755 index 000000000..020298bd0 --- /dev/null +++ b/sbin/cdb_configure_mqtt_service.sh @@ -0,0 +1,170 @@ +#!/bin/bash + +# Copyright (c) UChicago Argonne, LLC. All rights reserved. +# See LICENSE file. + + +# +# Script used for configuring MQTT connector for CDB webapp +# Deploys MQTT Resource Adapter and creates connection pool/resource +# +# Usage: +# +# $0 [CDB_DB_NAME] [mqtt_config_file] +# +# If no config file is specified, defaults to $CDB_INSTALL_DIR/etc/.mqtt.conf +# +# Sample MQTT configuration file contents (mqtt.conf): +# MQTT_HOST=localhost # MQTT broker hostname (default: localhost) +# MQTT_PORT=1883 # MQTT broker port (default: 1883) +# MQTT_USERNAME=admin # MQTT username (optional) +# MQTT_PASSWORD=admin # MQTT password (optional) +# MQTT_CLEAN_SESSION=true # Clean session flag (optional) +# MQTT_QOS=1 # Quality of Service level (optional) +# MQTT_KEEP_ALIVE_INTERVAL=60 # Keep alive interval in seconds (optional) +# MQTT_CONNECTION_TIMEOUT=30 # Connection timeout in seconds (optional) +# MQTT_MAX_INFLIGHT=10 # Maximum number of messages in flight (optional) +# MQTT_AUTOMATIC_RECONNECT=true # Automatic reconnection on disconnect (optional) +# MQTT_FILE_PERSISTANCE=false # Enable file-based message persistence (optional) +# MQTT_PERSISTENCE_DIRECTORY=. # Directory for persistent message storage (optional) +# MQTT_TOPIC_FILTER # MQTT topic filter for subscriptions (optional) + +MY_DIR=`dirname $0` && cd $MY_DIR && MY_DIR=`pwd` +if [ -z "${CDB_ROOT_DIR}" ]; then + CDB_ROOT_DIR=$MY_DIR/.. +fi +CDB_ENV_FILE=${CDB_ROOT_DIR}/setup.sh +if [ ! -f ${CDB_ENV_FILE} ]; then + echo "Environment file ${CDB_ENV_FILE} does not exist." + exit 2 +fi +. ${CDB_ENV_FILE} > /dev/null + +# Constants +MQTT_POOL_NAME="cdb/MQTT/pool" +MQTT_RESOURCE_NAME="cdb/MQTT/resource" +MQTT_RAR_NAME="mqtt-rar-0.8.0" +MQTT_CONNECTOR_RAR_DEPLOYMENT_NAME="cdb-mqtt-rar-deployment" +MQTT_RAR_PATH=$CDB_ROOT_DIR/src/lib/${MQTT_RAR_NAME}.rar + +# Look for the deployment-specific MQTT configuration file +CDB_DB_NAME=${1:-${CDB_DB_NAME:-cdb}} +if [ ! -z "$2" ]; then + mqttConfigFile=$2 +else + mqttConfigFile=$CDB_INSTALL_DIR/etc/${CDB_DB_NAME}.mqtt.conf +fi + +if [ -f $mqttConfigFile ]; then + echo "Using MQTT config file: $mqttConfigFile" + . $mqttConfigFile +else + echo "Error: MQTT config file $mqttConfigFile not found." + echo "You can create one using cdb_create_mqtt_configuration.sh ${CDB_DB_NAME}" + exit 1 +fi + +CDB_HOST_ARCH=$(uname -sm | tr -s '[:upper:][:blank:]' '[:lower:][\-]') +GLASSFISH_DIR=$CDB_SUPPORT_DIR/payara/$CDB_HOST_ARCH + +ASADMIN_CMD=$GLASSFISH_DIR/bin/asadmin + +# MQTT Configuration defaults +MQTT_HOST=${MQTT_HOST:=localhost} +MQTT_PORT=${MQTT_PORT:=1883} + +# Build properties string for connection pool +PROPERTIES="serverURIs=tcp\\://${MQTT_HOST}\\:${MQTT_PORT}" + +if [ ! -z "$MQTT_USERNAME" ]; then + PROPERTIES="${PROPERTIES}:userName=${MQTT_USERNAME}" +fi + +if [ ! -z "$MQTT_PASSWORD" ]; then + PROPERTIES="${PROPERTIES}:password=${MQTT_PASSWORD}" +fi + +if [ ! -z "$MQTT_CLEAN_SESSION" ]; then + PROPERTIES="${PROPERTIES}:cleanSession=${MQTT_CLEAN_SESSION}" +fi + +if [ ! -z "$MQTT_KEEP_ALIVE_INTERVAL" ]; then + PROPERTIES="${PROPERTIES}:keepAliveInterval=${MQTT_KEEP_ALIVE_INTERVAL}" +fi + +if [ ! -z "$MQTT_CONNECTION_TIMEOUT" ]; then + PROPERTIES="${PROPERTIES}:connectionTimeout=${MQTT_CONNECTION_TIMEOUT}" +fi + +if [ ! -z "$MQTT_MAX_INFLIGHT" ]; then + PROPERTIES="${PROPERTIES}:maxInflight=${MQTT_MAX_INFLIGHT}" +fi + +if [ ! -z "$MQTT_AUTOMATIC_RECONNECT" ]; then + PROPERTIES="${PROPERTIES}:automaticReconnect=${MQTT_AUTOMATIC_RECONNECT}" +fi + +if [ ! -z "$MQTT_FILE_PERSISTANCE" ]; then + PROPERTIES="${PROPERTIES}:filePersistance=${MQTT_FILE_PERSISTANCE}" +fi + +if [ ! -z "$MQTT_PERSISTENCE_DIRECTORY" ]; then + PROPERTIES="${PROPERTIES}:persistenceDirectory=${MQTT_PERSISTENCE_DIRECTORY}" +fi + +if [ ! -z "$MQTT_QOS" ]; then + PROPERTIES="${PROPERTIES}:qos=${MQTT_QOS}" +fi + +if [ ! -z "$MQTT_TOPIC_FILTER" ]; then + PROPERTIES="${PROPERTIES}:topicFilter=${MQTT_TOPIC_FILTER}" +fi + +# Deploy MQTT RAR +echo "Deploying MQTT RAR" +if [ -f "$MQTT_RAR_PATH" ]; then + # Check if already deployed and undeploy if needed + $ASADMIN_CMD list-applications | grep -q ${MQTT_CONNECTOR_RAR_DEPLOYMENT_NAME} && { + echo "Undeploying existing MQTT RAR" + # Check if resource exists and delete it + $ASADMIN_CMD list-connector-resources | grep -q ${MQTT_RESOURCE_NAME} && { + echo "Deleting existing MQTT resource" + $ASADMIN_CMD delete-connector-resource ${MQTT_RESOURCE_NAME} || exit 1 + } + + # Check if connection pool exists and delete it + $ASADMIN_CMD list-connector-connection-pools | grep -q ${MQTT_POOL_NAME} && { + echo "Deleting existing MQTT connection pool" + $ASADMIN_CMD delete-connector-connection-pool ${MQTT_POOL_NAME} || exit 1 + } + + echo "Undeploying existing MQTT RAR" + $ASADMIN_CMD undeploy ${MQTT_CONNECTOR_RAR_DEPLOYMENT_NAME} || exit 1 + } + $ASADMIN_CMD deploy --name ${MQTT_CONNECTOR_RAR_DEPLOYMENT_NAME} $MQTT_RAR_PATH || exit 1 +else + echo "Warning: MQTT RAR file not found at $MQTT_RAR_PATH" + exit 1 +fi + +# Create MQTT connection pool +echo "Creating MQTT connection pool ${MQTT_POOL_NAME}" +$ASADMIN_CMD create-connector-connection-pool \ + --raname ${MQTT_CONNECTOR_RAR_DEPLOYMENT_NAME} \ + --connectiondefinition fish.payara.cloud.connectors.mqtt.api.MQTTConnectionFactory \ + --property "${PROPERTIES}" \ + ${MQTT_POOL_NAME} || exit 1 +# Create MQTT resource +echo "Creating MQTT resource ${MQTT_RESOURCE_NAME}" +$ASADMIN_CMD create-connector-resource \ + --poolname ${MQTT_POOL_NAME} \ + ${MQTT_RESOURCE_NAME} || exit 1 + +# The connector logs allocation failures with a full stack trace before returning null. +$ASADMIN_CMD set-log-levels fish.payara.cloud.connectors.mqtt.api.outbound.MQTTConnectionFactoryImpl=OFF || exit 1 + +# Test MQTT connection pool +echo "Testing MQTT connection pool" +$ASADMIN_CMD ping-connection-pool ${MQTT_POOL_NAME} || { echo "Warning: MQTT connection pool ping failed"; exit 1; } + +echo "Restart or redeploy CDB." \ No newline at end of file diff --git a/sbin/cdb_create_mqtt_configuration.sh b/sbin/cdb_create_mqtt_configuration.sh new file mode 100755 index 000000000..000b0f4fb --- /dev/null +++ b/sbin/cdb_create_mqtt_configuration.sh @@ -0,0 +1,135 @@ +#!/bin/bash + +# Script to create MQTT configuration file for CDB service +# Usage: $0 [CDB_DB_NAME] + +MY_DIR=`dirname $0` && cd $MY_DIR && MY_DIR=`pwd` +if [ -z "${CDB_ROOT_DIR}" ]; then + CDB_ROOT_DIR=$MY_DIR/.. +fi +CDB_ENV_FILE=${CDB_ROOT_DIR}/setup.sh +if [ ! -f ${CDB_ENV_FILE} ]; then + echo "Environment file ${CDB_ENV_FILE} does not exist." + exit 2 +fi +. ${CDB_ENV_FILE} > /dev/null + +# Default configuration file location +CDB_DB_NAME=${1:-${CDB_DB_NAME:-cdb}} +MQTT_CONFIG_FILE=${CDB_INSTALL_DIR}/etc/${CDB_DB_NAME}.mqtt.conf + +echo "===================================" +echo "MQTT Configuration Setup for CDB" +echo "===================================" +echo "" +echo "This script will help you create an MQTT configuration file." +echo "Configuration will be saved to: $MQTT_CONFIG_FILE" +echo "" + +# Check if config file already exists +if [ -f "$MQTT_CONFIG_FILE" ]; then + read -p "Configuration file already exists. Overwrite? (y/n): " -n 1 -r + echo + if [[ ! $REPLY =~ ^[Yy]$ ]]; then + echo "Exiting without changes." + exit 0 + fi +fi + +echo "" +echo "Configuration Details:" +echo "- cleanSession: Whether client and server should remember state across reconnects" +echo "- automaticReconnect: Whether client will automatically reconnect if connection is lost" +echo "- filePersistance: Whether to use file persistence for un-acknowledged messages" +echo "- persistenceDirectory: Directory to use for file persistence" +echo "- connectionTimeout: Connection timeout value in seconds" +echo "- maxInflight: Maximum messages that can be sent without acknowledgements" +echo "- keepAliveInterval: Keep alive interval in seconds" +echo "- userName/password: Authentication credentials" +# Disable MDB only variables. +# echo "- topicFilter: Topic Filter (For MDBs only)" +# echo "- qos: Quality of Service for the subscription (For MDBs only)" +echo "" + +# Ensure directory exists +mkdir -p $(dirname "$MQTT_CONFIG_FILE") + +# Prompt for configuration values +read -p "MQTT Host [localhost]: " MQTT_HOST +MQTT_HOST=${MQTT_HOST:-localhost} + +read -p "MQTT Port [1883]: " MQTT_PORT +MQTT_PORT=${MQTT_PORT:-1883} + +read -p "MQTT Username (leave empty for no auth): " MQTT_USERNAME + +if [ ! -z "$MQTT_USERNAME" ]; then + read -s -p "MQTT Password: " MQTT_PASSWORD + echo +fi + +read -p "Clean Session (true/false) [false]: " CLEAN_SESSION +CLEAN_SESSION=${CLEAN_SESSION:-false} + +read -p "Automatic Reconnect (true/false) [true]: " AUTOMATIC_RECONNECT +AUTOMATIC_RECONNECT=${AUTOMATIC_RECONNECT:-true} + +read -p "File Persistance (true/false) [false]: " FILE_PERSISTANCE +FILE_PERSISTANCE=${FILE_PERSISTANCE:-false} + +read -p "Persistence Directory [.]: " PERSISTENCE_DIRECTORY +PERSISTENCE_DIRECTORY=${PERSISTENCE_DIRECTORY:-.} + +read -p "Connection Timeout (seconds) [30]: " CONNECTION_TIMEOUT +CONNECTION_TIMEOUT=${CONNECTION_TIMEOUT:-30} + +read -p "Max Inflight [10]: " MAX_INFLIGHT +MAX_INFLIGHT=${MAX_INFLIGHT:-10} + +read -p "Keep Alive Interval (seconds) [60]: " KEEP_ALIVE_INTERVAL +KEEP_ALIVE_INTERVAL=${KEEP_ALIVE_INTERVAL:-60} + +# MDB only variables +# read -p "Topic Filter (leave empty if not using MDB): " TOPIC_FILTER +# read -p "QoS (0/1/2) [0]: " QOS +# QOS=${QOS:-0} + +# Write configuration file +cat > "$MQTT_CONFIG_FILE" << EOF +# MQTT Configuration for CDB Service +# Generated on $(date) + +MQTT_HOST=$MQTT_HOST +MQTT_PORT=$MQTT_PORT +EOF + +if [ ! -z "$MQTT_USERNAME" ]; then + echo "MQTT_USERNAME=$MQTT_USERNAME" >> "$MQTT_CONFIG_FILE" +fi + +if [ ! -z "$MQTT_PASSWORD" ]; then + echo "MQTT_PASSWORD=$MQTT_PASSWORD" >> "$MQTT_CONFIG_FILE" +fi + +cat >> "$MQTT_CONFIG_FILE" << EOF +MQTT_CLEAN_SESSION=$CLEAN_SESSION +MQTT_AUTOMATIC_RECONNECT=$AUTOMATIC_RECONNECT +MQTT_FILE_PERSISTANCE=$FILE_PERSISTANCE +MQTT_PERSISTENCE_DIRECTORY=$PERSISTENCE_DIRECTORY +MQTT_CONNECTION_TIMEOUT=$CONNECTION_TIMEOUT +MQTT_MAX_INFLIGHT=$MAX_INFLIGHT +MQTT_KEEP_ALIVE_INTERVAL=$KEEP_ALIVE_INTERVAL +EOF + +if [ ! -z "$TOPIC_FILTER" ]; then + echo "MQTT_TOPIC_FILTER=$TOPIC_FILTER" >> "$MQTT_CONFIG_FILE" +fi + +if [ ! -z "$QOS" ]; then + echo "MQTT_QOS=$QOS" >> "$MQTT_CONFIG_FILE" +fi + +echo "" +echo "Configuration file created successfully at: $MQTT_CONFIG_FILE" +echo "" +echo "You can now run cdb_configure_mqtt_service.sh ${CDB_DB_NAME} to apply this configuration." \ No newline at end of file diff --git a/src/lib/mqtt-rar-0.8.0.rar b/src/lib/mqtt-rar-0.8.0.rar new file mode 100644 index 0000000000000000000000000000000000000000..5f21fdcae51d133e842d592b92eeb0ff3b9fe5aa GIT binary patch literal 238508 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
XBjnoy=S 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 -#+Z@H4RzeMhi4-IYeX3kXi}y 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

Z&xM2 zIxn07p~0Tx{4`!r2yv7i+vyE3PXjWI;uw62k7RZEhjZM#aWg6J_x!B<=oD&??d5;$ z9IoyzuGa3J_SPQ6L!Ee`bhzl_V$Jie=UsrL2_ns>rPu5%&Q<2GX}VQxYPh4%1WY>Ajl^*GVL z+T+{5U!`Gxb^q?$uVmDf6%}-Jd0r|0jRE^n4* Date: Fri, 2 Oct 2026 10:44:57 -0500 Subject: [PATCH 3/9] Add libs required for mqtt connection. --- .../CdbWebPortal/lib/cdb-mqtt-java-1.0.0.jar | Bin 0 -> 10028 bytes .../CdbWebPortal/lib/mqtt-jca-api-1.0.0.jar | Bin 0 -> 22554 bytes src/java/CdbWebPortal/nbproject/build-impl.xml | 4 ++++ .../CdbWebPortal/nbproject/genfiles.properties | 6 +++--- .../CdbWebPortal/nbproject/project.properties | 6 +++++- src/java/CdbWebPortal/nbproject/project.xml | 8 ++++++++ 6 files changed, 20 insertions(+), 4 deletions(-) create mode 100644 src/java/CdbWebPortal/lib/cdb-mqtt-java-1.0.0.jar create mode 100644 src/java/CdbWebPortal/lib/mqtt-jca-api-1.0.0.jar diff --git a/src/java/CdbWebPortal/lib/cdb-mqtt-java-1.0.0.jar b/src/java/CdbWebPortal/lib/cdb-mqtt-java-1.0.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..3e57bab39f2f57dcc84ecaed7e3ca796a0eddfde GIT binary patch literal 10028 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 DOsc2| literal 0 HcmV?d00001 diff --git a/src/java/CdbWebPortal/lib/mqtt-jca-api-1.0.0.jar b/src/java/CdbWebPortal/lib/mqtt-jca-api-1.0.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..fa423699f452a205f67da4d5fae732ca333faf0b GIT binary patch literal 22554 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 literal 0 HcmV?d00001 diff --git a/src/java/CdbWebPortal/nbproject/build-impl.xml b/src/java/CdbWebPortal/nbproject/build-impl.xml index 2c394668c..29e6028a7 100644 --- a/src/java/CdbWebPortal/nbproject/build-impl.xml +++ b/src/java/CdbWebPortal/nbproject/build-impl.xml @@ -1041,6 +1041,8 @@ exists or setup the property manually. For example like this: + + @@ -1104,6 +1106,8 @@ exists or setup the property manually. For example like this: + + diff --git a/src/java/CdbWebPortal/nbproject/genfiles.properties b/src/java/CdbWebPortal/nbproject/genfiles.properties index f3a7e4c63..c1e02b10e 100644 --- a/src/java/CdbWebPortal/nbproject/genfiles.properties +++ b/src/java/CdbWebPortal/nbproject/genfiles.properties @@ -1,10 +1,10 @@ -build.xml.data.CRC32=d5de4743 +build.xml.data.CRC32=9c7b4582 build.xml.script.CRC32=67492cbd build.xml.stylesheet.CRC32=1707db4f@1.94.0.1 # This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. # Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. -nbproject/build-impl.xml.data.CRC32=d5de4743 -nbproject/build-impl.xml.script.CRC32=8f60c160 +nbproject/build-impl.xml.data.CRC32=9c7b4582 +nbproject/build-impl.xml.script.CRC32=e1cf7847 nbproject/build-impl.xml.stylesheet.CRC32=334708a0@1.94.0.1 nbproject/rest-build.xml.data.CRC32=83e13ee9 nbproject/rest-build.xml.script.CRC32=0d1fb1b4 diff --git a/src/java/CdbWebPortal/nbproject/project.properties b/src/java/CdbWebPortal/nbproject/project.properties index 4206c7f64..b26fe717a 100644 --- a/src/java/CdbWebPortal/nbproject/project.properties +++ b/src/java/CdbWebPortal/nbproject/project.properties @@ -42,6 +42,7 @@ file.reference.bcmail-jdk14-1.38.jar=lib/bcmail-jdk14-1.38.jar file.reference.bcprov-jdk14-1.38.jar=lib/bcprov-jdk14-1.38.jar file.reference.bctsp-jdk14-1.38.jar=lib/bctsp-jdk14-1.38.jar file.reference.classgraph-4.8.31.jar=lib/classgraph-4.8.31.jar +file.reference.cdb-mqtt-java-1.0.0.jar=lib/cdb-mqtt-java-1.0.0.jar file.reference.commons-lang3-3.11.jar=lib/commons-lang3-3.11.jar file.reference.commons-logging-1.2.jar=lib/commons-logging-1.2.jar file.reference.dm-api-3.3.1.jar=lib/dm-api-3.3.1.jar @@ -79,6 +80,7 @@ file.reference.libphonenumber-8.12.3.jar=lib/libphonenumber-8.12.3.jar file.reference.log4j-api-2.26.0.jar=lib/log4j-api-2.26.0.jar file.reference.log4j-core-2.26.0.jar=lib/log4j-core-2.26.0.jar file.reference.metadata-extractor-2.17.0.jar=lib/metadata-extractor-2.17.0.jar +file.reference.mqtt-jca-api-1.0.0.jar=lib/mqtt-jca-api-1.0.0.jar file.reference.omnifaces-3.10.1.jar-1=lib/omnifaces-3.10.1.jar file.reference.pdfbox-2.0.24.jar=lib/pdfbox-2.0.24.jar file.reference.poi-4.0.1.jar=lib/poi-4.0.1.jar @@ -169,7 +171,9 @@ javac.classpath=\ ${file.reference.flexmark-util-html-0.64.8.jar}:\ ${file.reference.flexmark-util-misc-0.64.8.jar}:\ ${file.reference.flexmark-util-sequence-0.64.8.jar}:\ - ${file.reference.flexmark-util-visitor-0.64.8.jar} + ${file.reference.flexmark-util-visitor-0.64.8.jar}:\ + ${file.reference.cdb-mqtt-java-1.0.0.jar}:\ + ${file.reference.mqtt-jca-api-1.0.0.jar} # Space-separated list of extra javac options javac.compilerargs= javac.debug=true diff --git a/src/java/CdbWebPortal/nbproject/project.xml b/src/java/CdbWebPortal/nbproject/project.xml index fe2ceeb99..5503e627d 100644 --- a/src/java/CdbWebPortal/nbproject/project.xml +++ b/src/java/CdbWebPortal/nbproject/project.xml @@ -242,6 +242,14 @@ ${file.reference.flexmark-util-visitor-0.64.8.jar} WEB-INF/lib + + ${file.reference.cdb-mqtt-java-1.0.0.jar} + WEB-INF/lib + + + ${file.reference.mqtt-jca-api-1.0.0.jar} + WEB-INF/lib + From b3b549833c1642f59fbfdf24b3d7ceb687b155a4 Mon Sep 17 00:00:00 2001 From: Dariusz Jarosz Date: Fri, 2 Oct 2026 11:02:55 -0500 Subject: [PATCH 4/9] the shared lib also contains the base mqttEvent. --- .../CdbWebPortal/lib/cdb-mqtt-java-1.0.0.jar | Bin 10028 -> 10356 bytes tools/developer_tools/cdb-mqtt-java/README.md | 4 +++- .../developer_tools/cdb-mqtt-java/SHA256SUMS | 2 +- .../main/java/gov/anl/aps/mqtt/MqttEvent.java | 19 +++++++++++++++--- .../anl/aps/mqtt/JcaMqttPublisherTest.java | 7 +++++-- 5 files changed, 25 insertions(+), 7 deletions(-) diff --git a/src/java/CdbWebPortal/lib/cdb-mqtt-java-1.0.0.jar b/src/java/CdbWebPortal/lib/cdb-mqtt-java-1.0.0.jar index 3e57bab39f2f57dcc84ecaed7e3ca796a0eddfde..b982fc8d392b8774ec16792d6f21b909d60c5a59 100644 GIT binary patch delta 5896 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 kKvi%v connection, new ObjectMapper(), 1, true); publisher.publish(new Event("value")); assertEquals("cdb/add", connection.topic); - assertTrue(new String(connection.payload, StandardCharsets.UTF_8).contains("\"value\":\"value\"")); + String payload = new String(connection.payload, StandardCharsets.UTF_8); + assertTrue(payload.contains("\"value\":\"value\"")); + assertTrue(payload.contains("\"eventTimestamp\":")); + assertFalse(payload.contains("\"topic\":")); assertEquals(1, connection.qos); assertTrue(connection.retained); assertTrue(connection.closed); } @Test void reportsMissingConfiguration() { @@ -41,7 +44,7 @@ class JcaMqttPublisherTest { } @Test void rejectsInvalidQos() { assertThrows(IllegalArgumentException.class, () -> new JcaMqttPublisher(() -> null, new ObjectMapper(), 3, false)); } - static final class Event implements MqttEvent { + static final class Event extends MqttEvent { private final String value; Event(String value){this.value=value;} @Override public String getTopic(){return "cdb/add";} public String getValue(){return value;} } From 373eb8423c091484fd125d024050b65acc4155e2 Mon Sep 17 00:00:00 2001 From: Dariusz Jarosz Date: Fri, 2 Oct 2026 11:11:41 -0500 Subject: [PATCH 5/9] Refactor rename the shared lib to base-cdb-mqtt --- .../{cdb-mqtt-java => cdb-base-mqtt}/.gitignore | 0 .../{cdb-mqtt-java => cdb-base-mqtt}/README.md | 6 +++--- tools/developer_tools/cdb-base-mqtt/SHA256SUMS | 1 + .../{cdb-mqtt-java => cdb-base-mqtt}/pom.xml | 2 +- .../java/gov/anl/aps/cdb/base}/mqtt/MqttEvent.java | 2 +- .../gov/anl/aps/cdb/base}/mqtt/MqttPublisher.java | 4 ++-- .../cdb/base}/mqtt/exception/MqttException.java | 2 +- .../mqtt/exception/MqttNotConfiguredException.java | 2 +- .../base}/mqtt/exception/MqttPublishException.java | 2 +- .../mqtt/exception/MqttSerializationException.java | 2 +- .../aps/cdb/base}/mqtt/jca/JcaMqttPublisher.java | 12 ++++++------ .../base}/mqtt/jca/JndiMqttConnectionProvider.java | 4 ++-- .../anl/aps/cdb/base}/mqtt/jca/MqttConnection.java | 2 +- .../cdb/base}/mqtt/jca/MqttConnectionProvider.java | 4 ++-- .../aps/cdb/base}/mqtt/JcaMqttPublisherTest.java | 14 +++++++------- .../base}/mqtt/JndiMqttConnectionProviderTest.java | 6 +++--- tools/developer_tools/cdb-mqtt-java/SHA256SUMS | 1 - 17 files changed, 33 insertions(+), 33 deletions(-) rename tools/developer_tools/{cdb-mqtt-java => cdb-base-mqtt}/.gitignore (100%) rename tools/developer_tools/{cdb-mqtt-java => cdb-base-mqtt}/README.md (74%) create mode 100644 tools/developer_tools/cdb-base-mqtt/SHA256SUMS rename tools/developer_tools/{cdb-mqtt-java => cdb-base-mqtt}/pom.xml (97%) rename tools/developer_tools/{cdb-mqtt-java/src/main/java/gov/anl/aps => cdb-base-mqtt/src/main/java/gov/anl/aps/cdb/base}/mqtt/MqttEvent.java (94%) rename tools/developer_tools/{cdb-mqtt-java/src/main/java/gov/anl/aps => cdb-base-mqtt/src/main/java/gov/anl/aps/cdb/base}/mqtt/MqttPublisher.java (66%) rename tools/developer_tools/{cdb-mqtt-java/src/main/java/gov/anl/aps => cdb-base-mqtt/src/main/java/gov/anl/aps/cdb/base}/mqtt/exception/MqttException.java (86%) rename tools/developer_tools/{cdb-mqtt-java/src/main/java/gov/anl/aps => cdb-base-mqtt/src/main/java/gov/anl/aps/cdb/base}/mqtt/exception/MqttNotConfiguredException.java (87%) rename tools/developer_tools/{cdb-mqtt-java/src/main/java/gov/anl/aps => cdb-base-mqtt/src/main/java/gov/anl/aps/cdb/base}/mqtt/exception/MqttPublishException.java (84%) rename tools/developer_tools/{cdb-mqtt-java/src/main/java/gov/anl/aps => cdb-base-mqtt/src/main/java/gov/anl/aps/cdb/base}/mqtt/exception/MqttSerializationException.java (84%) rename tools/developer_tools/{cdb-mqtt-java/src/main/java/gov/anl/aps => cdb-base-mqtt/src/main/java/gov/anl/aps/cdb/base}/mqtt/jca/JcaMqttPublisher.java (84%) rename tools/developer_tools/{cdb-mqtt-java/src/main/java/gov/anl/aps => cdb-base-mqtt/src/main/java/gov/anl/aps/cdb/base}/mqtt/jca/JndiMqttConnectionProvider.java (96%) rename tools/developer_tools/{cdb-mqtt-java/src/main/java/gov/anl/aps => cdb-base-mqtt/src/main/java/gov/anl/aps/cdb/base}/mqtt/jca/MqttConnection.java (87%) rename tools/developer_tools/{cdb-mqtt-java/src/main/java/gov/anl/aps => cdb-base-mqtt/src/main/java/gov/anl/aps/cdb/base}/mqtt/jca/MqttConnectionProvider.java (65%) rename tools/developer_tools/{cdb-mqtt-java/src/test/java/gov/anl/aps => cdb-base-mqtt/src/test/java/gov/anl/aps/cdb/base}/mqtt/JcaMqttPublisherTest.java (88%) rename tools/developer_tools/{cdb-mqtt-java/src/test/java/gov/anl/aps => cdb-base-mqtt/src/test/java/gov/anl/aps/cdb/base}/mqtt/JndiMqttConnectionProviderTest.java (71%) delete mode 100644 tools/developer_tools/cdb-mqtt-java/SHA256SUMS diff --git a/tools/developer_tools/cdb-mqtt-java/.gitignore b/tools/developer_tools/cdb-base-mqtt/.gitignore similarity index 100% rename from tools/developer_tools/cdb-mqtt-java/.gitignore rename to tools/developer_tools/cdb-base-mqtt/.gitignore diff --git a/tools/developer_tools/cdb-mqtt-java/README.md b/tools/developer_tools/cdb-base-mqtt/README.md similarity index 74% rename from tools/developer_tools/cdb-mqtt-java/README.md rename to tools/developer_tools/cdb-base-mqtt/README.md index d1f2325f5..a20fc899e 100644 --- a/tools/developer_tools/cdb-mqtt-java/README.md +++ b/tools/developer_tools/cdb-base-mqtt/README.md @@ -1,8 +1,8 @@ -# CDB MQTT Java +# CDB Base MQTT Shared Java 8 MQTT event base class, publishing API, and Payara JCA/JNDI transport used by ComponentDB and BELY. -`MqttEvent` owns the event timestamp and requires applications to supply a string topic. Application-specific payload fields and topic definitions remain in each portal. +`gov.anl.aps.cdb.base.mqtt.MqttEvent` owns the event timestamp and requires applications to supply a string topic. Application-specific payload fields and topic definitions remain in each portal. ## Build and test @@ -13,7 +13,7 @@ mvn clean verify sha256sum -c SHA256SUMS ``` -The versioned thin JAR is written to `target/cdb-mqtt-java-1.0.0.jar`. Jackson is provided by each consuming portal and is intentionally not bundled. +The versioned thin JAR is written to `target/cdb-base-mqtt-1.0.0.jar`. Jackson is provided by each consuming portal and is intentionally not bundled. ## Release artifact diff --git a/tools/developer_tools/cdb-base-mqtt/SHA256SUMS b/tools/developer_tools/cdb-base-mqtt/SHA256SUMS new file mode 100644 index 000000000..c381ed494 --- /dev/null +++ b/tools/developer_tools/cdb-base-mqtt/SHA256SUMS @@ -0,0 +1 @@ +42a4db3b8f35d7a3785849c0f3365af9f5dec7cffa915899c460c5f90e5e8819 target/cdb-base-mqtt-1.0.0.jar diff --git a/tools/developer_tools/cdb-mqtt-java/pom.xml b/tools/developer_tools/cdb-base-mqtt/pom.xml similarity index 97% rename from tools/developer_tools/cdb-mqtt-java/pom.xml rename to tools/developer_tools/cdb-base-mqtt/pom.xml index f7daf6f6a..3292ba2fe 100644 --- a/tools/developer_tools/cdb-mqtt-java/pom.xml +++ b/tools/developer_tools/cdb-base-mqtt/pom.xml @@ -4,7 +4,7 @@ 4.0.0 gov.anl.aps - cdb-mqtt-java + cdb-base-mqtt 1.0.0 diff --git a/tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/MqttEvent.java b/tools/developer_tools/cdb-base-mqtt/src/main/java/gov/anl/aps/cdb/base/mqtt/MqttEvent.java similarity index 94% rename from tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/MqttEvent.java rename to tools/developer_tools/cdb-base-mqtt/src/main/java/gov/anl/aps/cdb/base/mqtt/MqttEvent.java index 5e74ec741..6a3482bc1 100644 --- a/tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/MqttEvent.java +++ b/tools/developer_tools/cdb-base-mqtt/src/main/java/gov/anl/aps/cdb/base/mqtt/MqttEvent.java @@ -2,7 +2,7 @@ * Copyright (c) UChicago Argonne, LLC. All rights reserved. * See LICENSE file. */ -package gov.anl.aps.mqtt; +package gov.anl.aps.cdb.base.mqtt; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonIgnore; diff --git a/tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/MqttPublisher.java b/tools/developer_tools/cdb-base-mqtt/src/main/java/gov/anl/aps/cdb/base/mqtt/MqttPublisher.java similarity index 66% rename from tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/MqttPublisher.java rename to tools/developer_tools/cdb-base-mqtt/src/main/java/gov/anl/aps/cdb/base/mqtt/MqttPublisher.java index 6e4a7d7f0..873d73a07 100644 --- a/tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/MqttPublisher.java +++ b/tools/developer_tools/cdb-base-mqtt/src/main/java/gov/anl/aps/cdb/base/mqtt/MqttPublisher.java @@ -2,9 +2,9 @@ * Copyright (c) UChicago Argonne, LLC. All rights reserved. * See LICENSE file. */ -package gov.anl.aps.mqtt; +package gov.anl.aps.cdb.base.mqtt; -import gov.anl.aps.mqtt.exception.MqttException; +import gov.anl.aps.cdb.base.mqtt.exception.MqttException; public interface MqttPublisher { void publish(MqttEvent event) throws MqttException; diff --git a/tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/exception/MqttException.java b/tools/developer_tools/cdb-base-mqtt/src/main/java/gov/anl/aps/cdb/base/mqtt/exception/MqttException.java similarity index 86% rename from tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/exception/MqttException.java rename to tools/developer_tools/cdb-base-mqtt/src/main/java/gov/anl/aps/cdb/base/mqtt/exception/MqttException.java index 1f286800c..91982bbe0 100644 --- a/tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/exception/MqttException.java +++ b/tools/developer_tools/cdb-base-mqtt/src/main/java/gov/anl/aps/cdb/base/mqtt/exception/MqttException.java @@ -2,7 +2,7 @@ * Copyright (c) UChicago Argonne, LLC. All rights reserved. * See LICENSE file. */ -package gov.anl.aps.mqtt.exception; +package gov.anl.aps.cdb.base.mqtt.exception; public abstract class MqttException extends Exception { protected MqttException(String message) { super(message); } diff --git a/tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/exception/MqttNotConfiguredException.java b/tools/developer_tools/cdb-base-mqtt/src/main/java/gov/anl/aps/cdb/base/mqtt/exception/MqttNotConfiguredException.java similarity index 87% rename from tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/exception/MqttNotConfiguredException.java rename to tools/developer_tools/cdb-base-mqtt/src/main/java/gov/anl/aps/cdb/base/mqtt/exception/MqttNotConfiguredException.java index 0f2ce2134..dbefec5be 100644 --- a/tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/exception/MqttNotConfiguredException.java +++ b/tools/developer_tools/cdb-base-mqtt/src/main/java/gov/anl/aps/cdb/base/mqtt/exception/MqttNotConfiguredException.java @@ -2,7 +2,7 @@ * Copyright (c) UChicago Argonne, LLC. All rights reserved. * See LICENSE file. */ -package gov.anl.aps.mqtt.exception; +package gov.anl.aps.cdb.base.mqtt.exception; public class MqttNotConfiguredException extends MqttException { public MqttNotConfiguredException(String message) { super(message); } diff --git a/tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/exception/MqttPublishException.java b/tools/developer_tools/cdb-base-mqtt/src/main/java/gov/anl/aps/cdb/base/mqtt/exception/MqttPublishException.java similarity index 84% rename from tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/exception/MqttPublishException.java rename to tools/developer_tools/cdb-base-mqtt/src/main/java/gov/anl/aps/cdb/base/mqtt/exception/MqttPublishException.java index 5508e9e2a..529ea5025 100644 --- a/tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/exception/MqttPublishException.java +++ b/tools/developer_tools/cdb-base-mqtt/src/main/java/gov/anl/aps/cdb/base/mqtt/exception/MqttPublishException.java @@ -2,7 +2,7 @@ * Copyright (c) UChicago Argonne, LLC. All rights reserved. * See LICENSE file. */ -package gov.anl.aps.mqtt.exception; +package gov.anl.aps.cdb.base.mqtt.exception; public class MqttPublishException extends MqttException { public MqttPublishException(String message, Throwable cause) { super(message, cause); } diff --git a/tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/exception/MqttSerializationException.java b/tools/developer_tools/cdb-base-mqtt/src/main/java/gov/anl/aps/cdb/base/mqtt/exception/MqttSerializationException.java similarity index 84% rename from tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/exception/MqttSerializationException.java rename to tools/developer_tools/cdb-base-mqtt/src/main/java/gov/anl/aps/cdb/base/mqtt/exception/MqttSerializationException.java index 43c9388b1..19ad831ed 100644 --- a/tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/exception/MqttSerializationException.java +++ b/tools/developer_tools/cdb-base-mqtt/src/main/java/gov/anl/aps/cdb/base/mqtt/exception/MqttSerializationException.java @@ -2,7 +2,7 @@ * Copyright (c) UChicago Argonne, LLC. All rights reserved. * See LICENSE file. */ -package gov.anl.aps.mqtt.exception; +package gov.anl.aps.cdb.base.mqtt.exception; public class MqttSerializationException extends MqttException { public MqttSerializationException(String message, Throwable cause) { super(message, cause); } diff --git a/tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/jca/JcaMqttPublisher.java b/tools/developer_tools/cdb-base-mqtt/src/main/java/gov/anl/aps/cdb/base/mqtt/jca/JcaMqttPublisher.java similarity index 84% rename from tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/jca/JcaMqttPublisher.java rename to tools/developer_tools/cdb-base-mqtt/src/main/java/gov/anl/aps/cdb/base/mqtt/jca/JcaMqttPublisher.java index 5ae135e91..76bac90f1 100644 --- a/tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/jca/JcaMqttPublisher.java +++ b/tools/developer_tools/cdb-base-mqtt/src/main/java/gov/anl/aps/cdb/base/mqtt/jca/JcaMqttPublisher.java @@ -2,15 +2,15 @@ * Copyright (c) UChicago Argonne, LLC. All rights reserved. * See LICENSE file. */ -package gov.anl.aps.mqtt.jca; +package gov.anl.aps.cdb.base.mqtt.jca; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; -import gov.anl.aps.mqtt.MqttEvent; -import gov.anl.aps.mqtt.MqttPublisher; -import gov.anl.aps.mqtt.exception.MqttException; -import gov.anl.aps.mqtt.exception.MqttPublishException; -import gov.anl.aps.mqtt.exception.MqttSerializationException; +import gov.anl.aps.cdb.base.mqtt.MqttEvent; +import gov.anl.aps.cdb.base.mqtt.MqttPublisher; +import gov.anl.aps.cdb.base.mqtt.exception.MqttException; +import gov.anl.aps.cdb.base.mqtt.exception.MqttPublishException; +import gov.anl.aps.cdb.base.mqtt.exception.MqttSerializationException; import java.nio.charset.StandardCharsets; public class JcaMqttPublisher implements MqttPublisher { diff --git a/tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/jca/JndiMqttConnectionProvider.java b/tools/developer_tools/cdb-base-mqtt/src/main/java/gov/anl/aps/cdb/base/mqtt/jca/JndiMqttConnectionProvider.java similarity index 96% rename from tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/jca/JndiMqttConnectionProvider.java rename to tools/developer_tools/cdb-base-mqtt/src/main/java/gov/anl/aps/cdb/base/mqtt/jca/JndiMqttConnectionProvider.java index 12e176858..cfd83e7e8 100644 --- a/tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/jca/JndiMqttConnectionProvider.java +++ b/tools/developer_tools/cdb-base-mqtt/src/main/java/gov/anl/aps/cdb/base/mqtt/jca/JndiMqttConnectionProvider.java @@ -2,9 +2,9 @@ * Copyright (c) UChicago Argonne, LLC. All rights reserved. * See LICENSE file. */ -package gov.anl.aps.mqtt.jca; +package gov.anl.aps.cdb.base.mqtt.jca; -import gov.anl.aps.mqtt.exception.MqttNotConfiguredException; +import gov.anl.aps.cdb.base.mqtt.exception.MqttNotConfiguredException; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import javax.naming.InitialContext; diff --git a/tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/jca/MqttConnection.java b/tools/developer_tools/cdb-base-mqtt/src/main/java/gov/anl/aps/cdb/base/mqtt/jca/MqttConnection.java similarity index 87% rename from tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/jca/MqttConnection.java rename to tools/developer_tools/cdb-base-mqtt/src/main/java/gov/anl/aps/cdb/base/mqtt/jca/MqttConnection.java index aef5d90b1..19741d331 100644 --- a/tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/jca/MqttConnection.java +++ b/tools/developer_tools/cdb-base-mqtt/src/main/java/gov/anl/aps/cdb/base/mqtt/jca/MqttConnection.java @@ -2,7 +2,7 @@ * Copyright (c) UChicago Argonne, LLC. All rights reserved. * See LICENSE file. */ -package gov.anl.aps.mqtt.jca; +package gov.anl.aps.cdb.base.mqtt.jca; public interface MqttConnection extends AutoCloseable { void publish(String topic, byte[] payload, int qos, boolean retained) throws Exception; diff --git a/tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/jca/MqttConnectionProvider.java b/tools/developer_tools/cdb-base-mqtt/src/main/java/gov/anl/aps/cdb/base/mqtt/jca/MqttConnectionProvider.java similarity index 65% rename from tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/jca/MqttConnectionProvider.java rename to tools/developer_tools/cdb-base-mqtt/src/main/java/gov/anl/aps/cdb/base/mqtt/jca/MqttConnectionProvider.java index 7ee901ca1..e2209bfa9 100644 --- a/tools/developer_tools/cdb-mqtt-java/src/main/java/gov/anl/aps/mqtt/jca/MqttConnectionProvider.java +++ b/tools/developer_tools/cdb-base-mqtt/src/main/java/gov/anl/aps/cdb/base/mqtt/jca/MqttConnectionProvider.java @@ -2,9 +2,9 @@ * Copyright (c) UChicago Argonne, LLC. All rights reserved. * See LICENSE file. */ -package gov.anl.aps.mqtt.jca; +package gov.anl.aps.cdb.base.mqtt.jca; -import gov.anl.aps.mqtt.exception.MqttNotConfiguredException; +import gov.anl.aps.cdb.base.mqtt.exception.MqttNotConfiguredException; public interface MqttConnectionProvider { MqttConnection getConnection() throws MqttNotConfiguredException; diff --git a/tools/developer_tools/cdb-mqtt-java/src/test/java/gov/anl/aps/mqtt/JcaMqttPublisherTest.java b/tools/developer_tools/cdb-base-mqtt/src/test/java/gov/anl/aps/cdb/base/mqtt/JcaMqttPublisherTest.java similarity index 88% rename from tools/developer_tools/cdb-mqtt-java/src/test/java/gov/anl/aps/mqtt/JcaMqttPublisherTest.java rename to tools/developer_tools/cdb-base-mqtt/src/test/java/gov/anl/aps/cdb/base/mqtt/JcaMqttPublisherTest.java index 2c5bebd4b..9cb4142b7 100644 --- a/tools/developer_tools/cdb-mqtt-java/src/test/java/gov/anl/aps/mqtt/JcaMqttPublisherTest.java +++ b/tools/developer_tools/cdb-base-mqtt/src/test/java/gov/anl/aps/cdb/base/mqtt/JcaMqttPublisherTest.java @@ -2,15 +2,15 @@ * Copyright (c) UChicago Argonne, LLC. All rights reserved. * See LICENSE file. */ -package gov.anl.aps.mqtt; +package gov.anl.aps.cdb.base.mqtt; import com.fasterxml.jackson.databind.ObjectMapper; -import gov.anl.aps.mqtt.exception.MqttNotConfiguredException; -import gov.anl.aps.mqtt.exception.MqttPublishException; -import gov.anl.aps.mqtt.exception.MqttSerializationException; -import gov.anl.aps.mqtt.jca.JcaMqttPublisher; -import gov.anl.aps.mqtt.jca.MqttConnection; -import gov.anl.aps.mqtt.jca.MqttConnectionProvider; +import gov.anl.aps.cdb.base.mqtt.exception.MqttNotConfiguredException; +import gov.anl.aps.cdb.base.mqtt.exception.MqttPublishException; +import gov.anl.aps.cdb.base.mqtt.exception.MqttSerializationException; +import gov.anl.aps.cdb.base.mqtt.jca.JcaMqttPublisher; +import gov.anl.aps.cdb.base.mqtt.jca.MqttConnection; +import gov.anl.aps.cdb.base.mqtt.jca.MqttConnectionProvider; import java.nio.charset.StandardCharsets; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.*; diff --git a/tools/developer_tools/cdb-mqtt-java/src/test/java/gov/anl/aps/mqtt/JndiMqttConnectionProviderTest.java b/tools/developer_tools/cdb-base-mqtt/src/test/java/gov/anl/aps/cdb/base/mqtt/JndiMqttConnectionProviderTest.java similarity index 71% rename from tools/developer_tools/cdb-mqtt-java/src/test/java/gov/anl/aps/mqtt/JndiMqttConnectionProviderTest.java rename to tools/developer_tools/cdb-base-mqtt/src/test/java/gov/anl/aps/cdb/base/mqtt/JndiMqttConnectionProviderTest.java index 5769bf928..60d5a0830 100644 --- a/tools/developer_tools/cdb-mqtt-java/src/test/java/gov/anl/aps/mqtt/JndiMqttConnectionProviderTest.java +++ b/tools/developer_tools/cdb-base-mqtt/src/test/java/gov/anl/aps/cdb/base/mqtt/JndiMqttConnectionProviderTest.java @@ -2,10 +2,10 @@ * Copyright (c) UChicago Argonne, LLC. All rights reserved. * See LICENSE file. */ -package gov.anl.aps.mqtt; +package gov.anl.aps.cdb.base.mqtt; -import gov.anl.aps.mqtt.exception.MqttNotConfiguredException; -import gov.anl.aps.mqtt.jca.JndiMqttConnectionProvider; +import gov.anl.aps.cdb.base.mqtt.exception.MqttNotConfiguredException; +import gov.anl.aps.cdb.base.mqtt.jca.JndiMqttConnectionProvider; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertThrows; diff --git a/tools/developer_tools/cdb-mqtt-java/SHA256SUMS b/tools/developer_tools/cdb-mqtt-java/SHA256SUMS deleted file mode 100644 index 7c7702e6e..000000000 --- a/tools/developer_tools/cdb-mqtt-java/SHA256SUMS +++ /dev/null @@ -1 +0,0 @@ -22acf065085351f4d797171a35fe96a1e748b84dd7a771c66aa879be199f84e0 target/cdb-mqtt-java-1.0.0.jar From 719e1602b0f7c8560e19e9d170a8bb6e490cc604 Mon Sep 17 00:00:00 2001 From: Dariusz Jarosz Date: Fri, 2 Oct 2026 11:12:02 -0500 Subject: [PATCH 6/9] Refactor rename the shared lib to base-cdb-mqtt --- .../CdbWebPortal/lib/cdb-base-mqtt-1.0.0.jar | Bin 0 -> 10921 bytes .../CdbWebPortal/lib/cdb-mqtt-java-1.0.0.jar | Bin 10356 -> 0 bytes src/java/CdbWebPortal/nbproject/build-impl.xml | 4 ++-- .../CdbWebPortal/nbproject/project.properties | 4 ++-- src/java/CdbWebPortal/nbproject/project.xml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) create mode 100644 src/java/CdbWebPortal/lib/cdb-base-mqtt-1.0.0.jar delete mode 100644 src/java/CdbWebPortal/lib/cdb-mqtt-java-1.0.0.jar diff --git a/src/java/CdbWebPortal/lib/cdb-base-mqtt-1.0.0.jar b/src/java/CdbWebPortal/lib/cdb-base-mqtt-1.0.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..04b3e761a576ae402521377552e576f43d43df36 GIT binary patch literal 10921 zcmbVy1z42Z^Z!bx)UJe-bR!7TAq~sYAsx%o-6&mB(x6C4gOs$C2$B-gjdUXtA|L|( zm+SR%<#*+N@BhH=^FA>1nRCv}nKSRqD1i}?FaQ8F0DK7Roqzuv=Wvg4I=d!($g&uW@Q_|2D37~@9C>h zxjlSmZh23R1uTK4wd2T_V7ijM_8`Y(6NNCFEa0`$b2!A&gzs% z2fGAeGGiM;C}skJ(O7NOgN}Bj`>(DtREUR;YeDW?BCk?s^q@CphU18N?;c=L%MdmJRu>}X7vpUOIm-LO*5aL zTMGkjbwurvOhk4#e<&F<=TfqExA_#I0}JB_Y6WEp9g!>LHb}gLAd*_~6Vue< zTMN`z)+-*mqG?6nHDWph9X+^8jb^twic+9dl{h}qJGmn9X%1!Y?0r_2h;;?DH=N3) zStld3yGw@Jv6K`Ns(Hav5NP>wbbK(ho3P!-I_6Td0c_p{gQ!uBK zrmx#9J-nkIeF;G;as8#tbQ1)lHUVj--KEZH-yX!R`%vR6_OE`ilc;6+CET8HuK@t8 z|7urCF2>dtPUbMjAGYNc*^A*X3JmJwcIwiWV2`mO@pmn@Q3oPznOWa%8+MLQE0)CR z7nh_quCKHA5$0XBH`wkVXu^O7-wFU5deFw@H{c4|-8AJUw0JA2zcTOgvswjKTql`Fq+ zK7X98pRVZ7^A!zId@G6@JR3BKLB)Wk|0UOOnn);g*LX+mwP=l9cWx0QYc=wzPMVD1 z5#ot*`vmfCc=*Go6K=w3sS~dbpJ)PB$C;bO^pf>Zu~8u?-&7=->W$4w>kf_S+!-=` z56dMa@2#3Q8R~V2zf*Eir`gVhD$;q)2LWHyma)I}lZhYgPEUBO)@8qfvKtZ3uw)$T z=(Faam>nBMQ6AAvZ=k>ll0Hc^IaGBaN-2|9#Una+u0^D6MR#&zJu3D{S<$GS?a25U z{)@6||BT`Ayij(#c&+6Q8v44d2n1^zCak>g`oS4zUp_Kfl2I!9yi|-76ar{J8%ACy z^{5|73lK^^2_B6{{Sao79F7rRYJqmQYdo`IMJ+LfZTIt1s>V0>$Z0#J0p9~cTIT2q zq;(z8)Npetl;4WtS8c@d#yLpCwc!odhQxo+hJu~5xSg%3g_(;Z%tZ26)#SuBom_JZo&M+Sgh}ny;wDA*gOFgUE|kfB8-g}SQNfJ z?;iVZGBabKe@)l$O$ezgWV}MTLYcm_BoOG3obLK@x`H_CTAc7!M@F>wrio1SW~SpVYA|IPc+h#EW=% zl3>!V7bgmV+~OMuyz%#x4=aYLO6di|o<0}eZy~w|ef)tvshL+Ts$Hc{dcdFCog?Rup*;JMEX66aTg_}bqc}7caAGb zdigq?v}bQ?k7d{)lWm4y2bLw_v&5I?YzC|9JJvmWK9cvrJnenV*XvB#=`E7o7$)rZ zRy3MjEp6yii@g5`UoI{p0R|;Za=4-p;EEFd4~qKJbzD+Wsxk!JB8uy!I#e`zto~&V zVyE3ExkIVZAR{D+r~P0y8(bb6^$b$r(;YY0OfeUQPrr-UOx{XHwDLOX)n`Nf*)#(H zDKsmHuL#{4X%ziak}SkQVeQj{SC$1PMT1J$!=|&1wo&gy?0wY#TJ~w{G1_~{yQ6`i zzU<>VdCydwLh_77m|vJQ6A$Q&CY6da(S9RnLal%+(b5=p`yl6KQQ|v2WtmglHCdx_ zHGPf-#?$ff{O^(nXjB8E1*Q7C-Sip6`Gby5PPs5KtLOxebau$Hnbl}yi`;l{0Nwo3 z8!2>Yp9F8K(f|~L><6vQD7^I%$2}SiYo90t{m5&rMeSWZ08du|)gn@*z8a@NO;nRE z28QU}MRRvXx<=f7JtFSr5>gcKod^EMBccj(v@o)^cwlrMKV91Y9OZ5~#Cy0!k;xGy zyPz*cGhAT-b2hYS_=<&30;kP*T1-tS94M4em=*m|MVg}UAC98>WB3pC%WJy05bl5O zUL^2^TGu>nc_u1tnA*?J@q+PT;HMIw98sv=#cDmi6pLt?>;q9_IZoV9G=7k1)8 ztdPVmOg7YKU&?A#Z>;+$k>8`KV^C9LKVC`f$5L0nUHdi5!C#=WKyY}qy>9Z@YbYb( z)qJ|_+G!ux{Mt)IVeavJ0e0|}lw!YUEjf~1{(n2y3+K|gH1W8(fM_8>B@YqxvolJ zM)dtPjZs`FFq|q~vL)vhE+K9)GA0@_CW@da)1(GZGU!H}_4o(-@hS3ylGjtaV1Y%f z=UYG`OXgDvvtz|!k!;oDhI$SONlfoGERQI&=Zl9a^(SBZ*k4_%oD&eSv>%MpPQkyu z)K*HtmU3X+D!os5q*{!* z35g9v8Hr>Ni{LEM6@!19u?g1@qx57vNL4@kt8m*B3lXMt^rv{Ynddmg{W9s}3XClt z44Uu~5fA0j@DV>*if3dj%LgVv)aB&06S*=v2LWVt6$tcLUUK0tq;86Piz(!&1>7Q4 z-VbzEzRNoDRJJt-U8~k)Lza$ zXvF$LYYU4oAPUt|Rdhp&X!^qgc^E?&Zb-8;RRKwhBbP$_LP$yHF5X1{k&w8v&LYVz zyAvGy)3Bc1R2k{TXMDExf@eOw!)}T7YP=?RgfZ6ru9F6MJ4^x5jsOlMilAWX^(2+J zL^8@-w0-R^N%-+@CE+(*f-{zH1A@xVOs`VSDb20cSzIbu%p7O7;&w~YQVEw zLN*MRFWWJ5md^0UJB&i2?W5W4ZmSi~Z-jS@aPWDz5`pPEwKW*UT@O3Mtq(gA`hF_M2mJhmVJ+hwukV3}@YwAo|uxjAu6= z=KD&rA%K}`rtKkCj;k(0V%lK5uc>LV(zVcE#q)ANF= zv7Lviu?@6Q(u>Uy%xdMD8uPaFa3D2?dU}sH>v4uRLB-<-Mu?BQ`b&u!_USP8h&Aye zrYT$>9(Z)9Sv_?_XsI^*5FmIM*qgEI7MMY6Zfj|(NCoSiyt_7{A!uWs$WPTVw1M}T zZ97f3C9>XTbMi%{g)HPryu-w8^>A`!t8S^HsoEjHUJCgqA)gQ<>7{EcSgOg3Dq}@C z_}@$BT8KA~ig1bv5#n?T6N-Lv|bq_{(DF~VPA1`w(E_BrMFV0Uc4US z%K0GaiBDo-lR2gA9)fTr_63`5jA|TGx0I1I>S=tf8Y)tJ?NO*O2@c>O^rq24X!5&? z1o9q+*N|!QNdd9&&O!sf{vA{dyJl|fkNSaTwF~?WptPIBD#G+Z8>_bhNmk~u)q4n@ z;vWj0@Yq!L-bE`ZiEm)ea^g#x_H+GMnNh`?Ti(wP|K;pI3hiiuJ$DCAyH5_h!oVZH z_6SLkIz1sKzHgIy{w^uqy**lXiH+B-o{vr#iVZ}YF{*cLt}P&7yy@fJ4cuz&+ZoKt zd|nE>rg*(4!+hsPb>s~@O!mw`5l~`js!?=RU5l2CG>53=|eXj(#UBe$KqO}KNn}|Ge~PmYu@3!_k!qk zkX}~!xE|?!(VRtzWrPBF%)JNMD-RR2%@7+%Z%Mz6Gl%dRoO(*qHplPXid|=r;|6@= zW{mzuh2*F)B9HT(W$sgd;nl)?%V+sq0_$A9mV?UTvFbEh;wM$`FO{mJ@UBGqJ>V^K zDzZKm%g+o+$nixAb%zAcsMj)w>?F2Dc~ZSQZ25)E^7a+(esSv$(C^Zx_wF>Gw;-2R zPTJ1)&GN|-ZTehj(kkmg@d0TclNUt_d`&NMcb4fCk$So>W_hnDR$udgqo0;i?2X?C zA{r~(@;7nb9b3ZuyMH7pF2XG~ZYowLc$%mXo(NL?_dCbd#NzzYfrrGlFzESxujFXw zYGDF%q)~yHTA%;P6?XB@A8#Am`IScjMskm9Svipp%n zYeMBL*T9MFQW7yCEYtfq`y%^gXg%0WuBcEm}%-ptH ze9pcMy#%nm9gS|%B@L*d%h}|J$gjyT)(^t#K(K8u3rQy7cL4K$h`hzxfup{}{cPKu z%O~3iy_-pctH>CV^%V+o3V2ZXwv@5;|6&SJy3#>)yZj<-h_C%DVzYD?k;HT}}^KC<(gRxzzr)v4`T z2Cwr6*J^SXIlf~^Qa2KGCqim3fswdPm%r|b5)a{?Eu4VOM^(3&X-qCqgFn8DD!_=P zu!I!g9#!ikeR$Sq*VW43N{t+6V;S#e)g$j;ll#d+*6ypjTzovT?Vt*ARnF``yd!qnWWm zFV_aihk?&_y!yOG}?vgR9lbKE_OfEr&{9;Pl>#RwOR8>u@>pNL(2`O zHLqGUrZE1yWjPCX$eu4^l2P+!Q9r&TowC^t?s#$}*C-F7CA)Dy?c*EsM;IBg-~C8&&Wktghs5Zy@2`x@l!&pKs!%NKvq7 zOUdN_II@Ir?1lyZgxAbxQX@{O6pjr)kgnY;cKv2zk#&HwRc-~l#w!q3#Ilai%@flc zql%G!L$MaCj`=;o@`+F1bkm+prAX`8MCQAi&GqD$RB!~XA?*xrD&MPuf{s5WkUH&m9 ze|U_EW(E<@4 z0mS{-(e;N>F*SpH!ydkki2L6U0`F5g2G>f9nW9HFeH+$m;@VbuXC8@1*Lf$vx>I0m zDKX2Nv$c~0liDN=O1>S$z_*}Fxf&j?)uIO)(!TQ;_?$~`!=fgIl0GjFF^Z=7ijL=Kz}kZObPclAeCz(e3xn-*Ju$6=P8&<8F1F6uwV9Rt0f*@CbW$8A zJims+nS!#7@8GU!7oK*%`c3eUaQL^b>4z6e)$md!kS6tJYtXGB_s45~C6}Fk>mH8I z6q9zLN|CldM*NMfsg?4;fNs48UEC?f1^Tr&uDRH$oW(;vALZYuT0MV_6e~)a_rB@u zZhfEdo3Yca)6;D`A3%*S1y;&iY{b*2cX!ZDhwW86@*Ji)`-7&0rW>;s?;r|c336omvEw@aLTh;vDw!r==7EojC6U`FJuv+sw0tHYvZ^ z3{Rae5HD7(K=x_DPqPYDnJE9v$4uWf$Rvy*Zq<8Zl#C={IVyPm5W%PAUAHgY7q-B+ z`h8(4t;Ds-tCshId%YEM+YPd^)vtwq0U15=-pS?$x;a@%*iV%vuR$H-I4t~GOHj_B zuzr}S5~>%s>0KKw75fL%db{MPnb}5EBM1HNQ|j1yoM`$r^oXX-W_BSshkxES;E|ymkI~YBLmjf`@fsz*SQ1 zwq}U3Rwvd^=^Lb}86{fNNe{RrUmUAYUDq3-At*+ssXncyBA)BOng7C2ipM<(w3~_M zKH&PLv>zhad`QC9XmOiM_ekWh(xJ%5&Xk+f(kYb7IXhEIQa+|Cg~V=b)j3a4l_f}# zY9Db%bL?=8xu|z&>sY`309O-R2E^TKK7hxH-!Cqz5nL!-KT>tK2!gNAb^0A+@ zw0@QJBH4;nYMO!E)~o&bvz+QP=WrF-2POjFo}pFhGJ`_;XWvQJ^$r|t*;({qRzN3I zgi142az(^n9C*dP++b|XvNk(W%uj0_tBG@}W{6xosS3T`${;kzzq;PT9`ap64Rw%|UQL=LQWkym3VU2o*D zLU+;Y_XLiNL+=NGNLHz9bRw+ z#Ep0=!6m#4lfU6%w+Fenef7|D7XkD;hT5)`Mg1lV;Y~o6Thu=bF{O} z2+ShatLA$zfH-N*c93e23`H=ar_RY9Kv(fp!`5{c2k|>{EzA z*Q=a4#3P1QGJFXjP|Kp~&SdHYAF0nFfJzXV2n7wj@5S&PtB5uJir}3C{RionLGQx@U4-`}??3})XfcwLn5xYpCalg4w$Rh#%V>Zg^w za;1Y03j?*55Q}%$)6oive2_9B3L-vrc`s$<7uu|6P6c6J<>h%~QPPgO9%A?%;A4BA zL*zU0EU{huxx85G8YRV1GZybthBt^i`fdiM`ll43z3)UspA5%R1cO=Ak5Jkd(37Ha zoR^Zh^QYJ9jv2~zDbQ4rO{*EVQm}oA>D?j(xN66xbWCqC`S3p(yqA5Ae6q6Je%Qzz z!?hkEFre3ydXO?;vpg1=$k@e(m-5TqoS_WaXHYs+9$71KztQW-)>c|*nO2%3w$$LJ ziFozI)_2Ja-ZzUEAfzu(4~25Z_*6Z_bGAWaVg-WV>b~NB&|j%-3gr5xEh}9Y{2>}9 zufa(6Fqv)8=;qBwz8LXfwm~`x(_bIf8QCSd&tK&9oznusAv@qi8nQc!uQztpm&r+@7*xwT16tO@-jM zfrl=%%H3ZkZ<-8KzXYCb9Gcsmoq+vYBpbEQnm!%&Zri{5CYidpIhu#WQ9*w`Gmo*E^LDFQGp=b>;&MS^FrBwGCzAq zJA0U;vjxlv%)<0e9xTtcD_;gtkR61`u_%o6va&GF%dvN{vjW0$SD&oYt}L(7-T*o! zD!9Oum(KgK!75d86H8UHG-^X85pXN73a+&KgK!Y*_DXruP;|A=)8I40*fE+ssFOTpRFXnU)p&y$py37 z|7C`&>~F0lzXv++3b_DEzZ&S*d*a99F3!p2W|N=5aCZTRy=+6jZ9TaRd%4%(0#*e1 z-(WA5Q7%JYF6LiA^T7)?zn}4iv7Coql0Qx7Mokl z>xD#nxZC?*CH`~i^|GwX<;4qG8*s<_zskC**mzmu<$BtML@T(@`@O_J(h2`qUArvd za`yB>!Yuy3O89NU;)-1Ag})W~~`HAS4t#7#J)VXz*#@{rzjefgYqqlmzG`WJDR{Kx6{G%>Yx`9s%VQ`~8PN1<u}ZtP}gZ0BTdYx5gM^j|Sr80!Cq1qH#;khi3PD-(PIam}gT<+SouYAywe04RV& z`3;OO&dt=)5*@0ooaH>V=6r5w|9PV)q#epEr;)s~J#P@8;MlIrCL76P&dz?UgD%kT z4Xkl3GoWmFIXGh+{|N59Qxs-_#ikuHuwN)Y%f0<|$%F^uVB||OtWfLx_8X4fu)Mx2 zaH25lz2o#Q67y5tbi+ua{?Zxz&5$nTr9=7M0NaQ|o#8UeOvT_`{x>D~5^4JRD$iwz zmMoT>rAQ}yXsI6=8dDCWhLfQ^mzTt`$x;z+oH%pdY*;Tt8>wSF2%PhNVkxpL6JC$8 zHQ+lMO_wJ%;&NNyaY(v5-FqABCM!nt$+*8m%#&1WTw+%(nrKl;QkWY&%1|JGAtk_` zWV!UorV~oi)eyD=9&e;)8HKeaLN4B1)!PkwWOu>aBH}3bwIegVvBpIcwTp8?v&$y# z+w$jtM*Ff3JJa=KY%Oki3)^y5x|vrRee^@?h)Oc?E^NR$sj)KU*KvV{g``HlmAP3g zwZI4}wN)C0AjPcbEf@T1@X%ZcM&N*+LSfUlFG&~Hgmkg(XwTgR6JYy>y@*0w(Gr7O zI;&+HCmYSSa0r$?JLdpz&vS{GdybE=w^x{)1#9@bnXl1(X{sgZEkjmWi$+s2gV4wA zF6_Th{2Yr4l+I`jGycAIUizSeZMT89V&&CGJz(DLxn&m?tp!E-*4KF!Z7@ zXMUqu$^9#cqA>1AX(!*AuiNW!uiO0$uIE}~9((B$E^8ztsTvexcXl^_(TGmgkc)Yn zrrJN)jI{P>BN2lvx7K()iQqX4ZN`d_{4eK7fB_52lDe!O+W>pF#2en8-Dz-w_~IaI5ULUwbVlDIgJ z3e6yen%YxJWyBdVPd*mCDLVl7r0l9dSczz*8=St?YUDLtT+r14PhM^g2nb}mLQX=~ zKs*ZwRdVSWw(>YPpm(Eu?}Jh>|J7s3iBrhIn??U%72+SQ|;#0senv?ikITP0o?Q|d7#D3}XVCkn zi50Qy>bF&EVLW6Cj)u^$xPy<|6Q_Eu4h&-y=j8?9s@RkR&%9mr%sd;aA~nP)M`d>u z31zj0OR@$fFuP|{zC!FyuYIb_;n`FnpVd%l?x-UAoTnFbl%%L_f7#9uR1%s~a*r)SERWQ@fuCLol;5^t0*eswX<6jdulIKm%d$1Wk(;Llg-~f!; z;-SDgShKD`8LNsfNRtcUpG`9kzYQ(q!9Y}_4A&udJX8~g!Yuh<64&EXZZ1rLVlQwKE1%Y1F0haV9;{$jyUB1>Z8 zBOa8DELldEt-t-tgSuix79C;y1UNFkWABE@^qa1^0(7zNZCz#>NCTV6k;!d^o$!TX zQAgyXKpC;)iWi@724Xpx7X<u#F$pOL45E^HTYAN!s>f zXxI|nipVxq=(AAkkihCu`7fTJyN=jgEs8HDsl9Mg&VR7&I;*3t36CR|S zE{2*<4@75;^`0iF6jF|#n@in^TZ%j?fISV!x8CiawO2x@vl}Mw_P!)Jxs~%&EDOST z?%@^uYRdkr9jj4gXUEdg0o+OV6b94=@)I8sWWDoOeq_}Hu)fAl?;4xoRn%L&M<}Nj z!GE^2it(ZmHpt2spwItf0VoMZQlGQUJ9m@*SS`D$TZfLkHy` z*@}KgSo_#E8PRzUmzC%l+BsTB(-EoL0pxeeGE*(rPr8m{HLXK36AfHs)8FR^QJT| z!%IS+#c=E6D*BYuXzaYQ>LKm`>Z1JTV#sZu4;D4@fLeb_GKEO9=S)wK-JszzJ4Geh%gwS&4Ft#I-CcGIBa# zQgE-rbG%w+&s;<=$p|XZcRt_!lclI(FvGXuwnD8mLYZQNflnMx3i2%#q^j2BmBS<` z#3;mT7fmPxrm|$#{dK@~gvyMR6%CwtWuK-gvrcePFB#YY)vAn|^woUofKgNsp~OZW zgz;F);Y9AwWa3tW@#9z9$}^5Uk~XV4l_BaG*mD~5`t?&JBRZ8G=Ufg(Z(*Cxd0f-& zhKcEkr&0If8e0zvz!IG7VDoyx{Xia|@T@Nq0@zz&ubs2Bp}mObZgKqRZ8)*#rb4NN9LD=BnS^Z;(WxtKF~N_rz9y5e z%`qKjrsPPWV#Qz0WGr1bs70&5T~k8SUBy9LT;V$H$ypEav9?@KmgmptSKn1f=yb{nTm@ZC&yrf#6n^^*qPJy zDQ;?o5N~3noEq`Yn=vWtNMK4ug5dY~mI!Q|Z-mHSV1cA!ke|z_Njs*a=f%Kh=f2Sm z>8}gs9=|*kUaggIER~DwfKlwp5)krf%I@>Sf#}(o$Uu|jP*s_V9;Is>cIjn>Zm- zLXkw7qg-c+;>!%Z_*~(dOn zTG$%t__g?#&&?@POH;mK>%34pc~V8U)N{iLK$`0~i(bK77KuB^wSwb@MuaW?%BVUb zOiFP59Y}dfSnucf?+%ifG>48fV^ov9cmffou)BtoYM0m&N z^kaoX)3yqTHp^mjIaf$8J{@>GN;sg&_TBIM94n*3(g8S`&=OL1d@Wh=O6EF`49}TV zT`0!6T~{{7nN&HdDbLECcnH<+Rn{t}q%}TSg-^_cz&W3wBVvlvWyI#*=KHbzy!T_r zE|UAE3f=_sn;E;#OF@+wsq6ND_zM{p+*=%IM24amG>R_`PKKL?9N@kQ5VgrmP0E+g zeR+GMmye2KbX3=whI>#mbiL7Gx|81R?&mB@)J4f$BmBIdlR}Lhkbo{tfinF2s-d48q0K4E8 zIYOD4z$!f<;de_s;^wV1&b@_9WUMD-YaPLqkD~+L-T2-F-S~N0#Y!mTq%=03i8;Se zIm3#5BgHayC|*~4zFV`gP^f*e@BQ)uubJ%g)0j6BdSC=S(-9nj%5zFgg{|Ux$j5NB zdOAXgVUL|?BExZ?tH=*;HWrUuhXj(*7OIVuhO$O{l~tY_c`Yj6Q5!l0Xzy!9LuWyS zR{(mL3_QafE5<6E^=O69LC?E-G#jZsugo~Ua@G+k)Ko_6r~N@nt>2-Znv?6pYzbaJ zrFc|hKU-A>A=gHH2=_;$I)g7uH&q8y1J)GbU)6Ie^e?MCZLl(1O0<=SU32k=N)YrByeye!8HK#vUh)0QWB)LEA&KrLyN=Po8$M@Ku_a5Vc@z{#frHsQ$Zn7 z-5N%bae?}!*VK7q{J~Zk#txHt>p5@QwPjtXElQu_39=`UcBWitLxz4Ix+i^=_J|9H zDQlIU&vYZot!!?OgpB3MjwOUZ%UWw(o+2b;=jSkKW$N9b9n65VbvWZy8uXdo9g-`r zG2QH5PbG;7EodTA3C-dP%QlmwOE8c{Wk}#kBb4_<-ovilX5pv{b;F;@a2cRDsKZsC2R%NsW-`q!L&b0it%q+&~uGxP?bixT-} zfoPriEMZ!C+>7H0xn9I;-7E+sN~xy!`$4qsM_O6yz~qWR59*vslc(l7*n->U)mns@ zrf&p4Nxf1APM&T9YYZ(shOhi)c&rnrYiI^8Pl@mg;=f4=SqniwA5c8RKu_X%!x2lZ zB2JNrXml%h`N(YgdGt&F65VL}vWx5IBg#>;*sUc2hbNbhwZ1sANFF7Gn#0%NSA7?% zZ<8mn^SK3xGM@Z#b9sNUv6ct)YXya(I?$!_FAs5lB)b0^ivGMIRIyZjB8K&nO^eM6 zv&Bxa5-ZO@d{|F&7Jl-5FnXT|eYS`PPAe(~Tb+Hy^61TDZ-J(5PU}so+|!dV-rU># zk3&`v5_-JF8_oSj>u)!_7B{?1O>QqYKnJ1vC<4Tj)kt3#DXi)+iHW(fLvz46(lh;n zfIbu_Pm^>JA`QmkQWklwF(%6;z`7I9GsY-ryfCf=L?=Ds&>`ifq9g{y_Jiz5bV$=f z@h(F=-K}q2p|(z*mP_2Qc!gZdPq{GHYUx-SKhjZXb;*-Vjp)hP?@E7uFZUW6X++v| zAPJo_pNOr2s!C)ALx!zk(<31kZ*16e%z^ecA+V&q=Szk$QpA(5PuV|7Yepv1t*c~z zB30S*861H1PDkO zNhg~UJMS5oHCc!W9Xtm~)PAWpNCp=RmZ@Z0*GVJV) zjQl%Yr?J9pM*6xv5)=+wcLHh)f~CWkb3*#maz)9@KQrp z-9(?$Cbz`|YX($Pqygw;OQ@>+Lx5Q0b~0tVIe5_(0JNR9$86e%UrKBZ5UN6O#m7}X zVvN6o!yM1LuAbpaeRIG+Uy>%C!gE3+zEo5wsPm~@q*iIwVd!wQUa``uAcKgPrKz%= z65iMIFkG{8Y9(@~i)Jh0%4Y5e;ZS*KK4!se&OhpXh&9=?@vd3*Rbc!Jrrpm}^eV#_ zT+1e}O2|W7EC9+eHT5U{8Xv%2RDF3|G>K^_`kcp93FwYhonSv&DeGq1Bjs<)e6aGn zm|Yi8ZU?rmnsb%6m9v!v?NhDbSnzY-t|F?8>~)RhW{|A;n3;(~sUkCRPMRA~?skqA zw;Iv!??Z2j@q|_F*r2PszS3t``#cg=z%7DKJD*p9CiQq&usQsMT}y|5m8d96b~oRc z6VTYtU(51AGxHduqN1bQmQ?1&<+n8@GoAtBv_$0TlJ7wf&Zc5;%XL8);(=C3O*08m z4d_9sbgKU79T2Nq68?+6o&;AH#76}y-cs}Io~k&U>!)ol!A&kBKCoB5Ykb7{iDuIA z!*YVFik0~3=46xgDAyv)r!4P>LM-@Wtiy4e&8wJ_H&|w(WU@HMv`tzWOTb#h)yM7P zS6zg4(C|m1Cz&AlCOxYU=v{{q1_)IlRL=BCy#*`%KjmzNV_RB(L&}vj1D4q` zET8lrq+xOJTYUk;gL3VxmE5G?-=xnFo9%jw`G}*Axjt&abnIhuBbVMbCe-KVBcYe% z$%Q8yG}p87Zdd6Qysy|^l4%Jt@bU#+C8u;j(-Pvhry4<7SHC*{Hvb-tHGBtGq?*qM z<$!1dOIze^A-Lw6?cCHM+N}-|d_-&BI*cd{XK0HYgDjbB#V)#->=BBVTj*HN;}r%f zKpnxz8&8+G`JNAm;30a;vWv|W?-rU%%E)&Ng_KI+~i2%$2Kf!UG4 zultKzh)YObzLCwb{E39+#Lpydgxs(P6rJTpDRKJZ7b)0MJ)69(b*B8!y5z;)$|es$ zzwi%aqmP0;9WkzT=+F^M3(78gA?~j>>Lu1>{pZNl=0jg@aL(5Q081h2(`kb$UlWlXS}#i8?$tkUtwH z@6dR;8e|Z1kYSkqe}?%hY5nsiTt)&OWT2wRq-sA`f^=dIOkQ^YZ;dYlRxA@~``b52 zi|Z|qzERqX1{3R8nbn4VEhxEKeF4cRFe}g|5IcM*!ltSK&yEmBdh)0({sVlcal2b` z`50%P+NML*};*+-K?!Tlv*O+F`_nX(7ex6wIZCiz>&8pRx(#D z9%Pw=uS&oV)5;1;#*WnF&D! zFlisBxQuX1ge)uYtbTJ28wS3vFj>InAS^#4|CmdbZ6xOjnY{;>A4cZ3qWLjTs;Bm{ zdsK=oIJnhh67FjXoeyPOl>bvp1sB-fv`#2ab8$bhXpGNJ<|N)qEPNd zbztI+I}qf=`!wWB$7i7!f-uYj^AP)qixJ#4*sYxM+*@83Nh`nOWoQ}9DH`PnUxZqo z)x-JPX1CF}57#)T-n&EN#gJ#DWwbSQ9kk?N0RXol};(pKp3%Cvu6d`6q|AU~AjqXfw!O8^&I^>kQ*rCg|7@?m@FEJVru6@zpcsA=7?weC{Ac>R8GcZV(O)Wvo%&SgKoDHHEFWGUb1Hs|!5 z^B{|Ci{wxfU`=5=#jocsR^?wf|An5Ongsy?^egmE!vb}MR*s%eCnegiRyvY z9#gG5*PcXvL-w^#ojtOxQtjn~uswmhr~j;vA8hy8=fie}Kl#A2d@26U_P6GS-w6h#v44&` z!DXQ5yTJWBj=Q#mALEW=4D|R{sQ(?;U7Ny>amRH5di;y)N6r4@__@MGL@l7OP< z-#M*8r~Timd)F;+&#v$*cH_V5UB3moYiqa%3i}n%-4^#dBiyw)+(R^iApSGUe>FY) zyB&Uhk)3}sgUs@`CWwCry4#)awIBt>(9q8v+{Nv^Beeq#i#9zQ!zLp@^f6UX} z_W!pgiHB$pi{tlb6(BeLCE9~J!b8M|CFpy^H0WO--aEn{n*QY$KepkA*bghL_t?0g zE$$!M{*3**dh0_$4{L_^f+|33@xKWAbp`REh=;|pdl7h`c=caI{H}ENP|(8~(Y>H3 zgkK2y;~@RZiqS*hhu4Gmz - + @@ -1106,7 +1106,7 @@ exists or setup the property manually. For example like this: - + diff --git a/src/java/CdbWebPortal/nbproject/project.properties b/src/java/CdbWebPortal/nbproject/project.properties index b26fe717a..34eea5b9f 100644 --- a/src/java/CdbWebPortal/nbproject/project.properties +++ b/src/java/CdbWebPortal/nbproject/project.properties @@ -42,7 +42,7 @@ file.reference.bcmail-jdk14-1.38.jar=lib/bcmail-jdk14-1.38.jar file.reference.bcprov-jdk14-1.38.jar=lib/bcprov-jdk14-1.38.jar file.reference.bctsp-jdk14-1.38.jar=lib/bctsp-jdk14-1.38.jar file.reference.classgraph-4.8.31.jar=lib/classgraph-4.8.31.jar -file.reference.cdb-mqtt-java-1.0.0.jar=lib/cdb-mqtt-java-1.0.0.jar +file.reference.cdb-base-mqtt-1.0.0.jar=lib/cdb-base-mqtt-1.0.0.jar file.reference.commons-lang3-3.11.jar=lib/commons-lang3-3.11.jar file.reference.commons-logging-1.2.jar=lib/commons-logging-1.2.jar file.reference.dm-api-3.3.1.jar=lib/dm-api-3.3.1.jar @@ -172,7 +172,7 @@ javac.classpath=\ ${file.reference.flexmark-util-misc-0.64.8.jar}:\ ${file.reference.flexmark-util-sequence-0.64.8.jar}:\ ${file.reference.flexmark-util-visitor-0.64.8.jar}:\ - ${file.reference.cdb-mqtt-java-1.0.0.jar}:\ + ${file.reference.cdb-base-mqtt-1.0.0.jar}:\ ${file.reference.mqtt-jca-api-1.0.0.jar} # Space-separated list of extra javac options javac.compilerargs= diff --git a/src/java/CdbWebPortal/nbproject/project.xml b/src/java/CdbWebPortal/nbproject/project.xml index 5503e627d..553e82ac8 100644 --- a/src/java/CdbWebPortal/nbproject/project.xml +++ b/src/java/CdbWebPortal/nbproject/project.xml @@ -243,7 +243,7 @@ WEB-INF/lib - ${file.reference.cdb-mqtt-java-1.0.0.jar} + ${file.reference.cdb-base-mqtt-1.0.0.jar} WEB-INF/lib From fc2a49a447aa5f2c2f1948d3f8e645ea2add334d Mon Sep 17 00:00:00 2001 From: Dariusz Jarosz Date: Fri, 2 Oct 2026 11:12:17 -0500 Subject: [PATCH 7/9] Initial MQTT integration base --- .../gov/anl/aps/cdb/mqtt/CdbEntityEvent.java | 58 +++++++++++++++++++ .../anl/aps/cdb/mqtt/CdbMqttPublisher.java | 50 ++++++++++++++++ .../gov/anl/aps/cdb/mqtt/CdbMqttTopic.java | 21 +++++++ .../utilities/CdbEntityControllerUtility.java | 31 +++++++++- 4 files changed, 158 insertions(+), 2 deletions(-) create mode 100644 src/java/CdbWebPortal/src/java/gov/anl/aps/cdb/mqtt/CdbEntityEvent.java create mode 100644 src/java/CdbWebPortal/src/java/gov/anl/aps/cdb/mqtt/CdbMqttPublisher.java create mode 100644 src/java/CdbWebPortal/src/java/gov/anl/aps/cdb/mqtt/CdbMqttTopic.java diff --git a/src/java/CdbWebPortal/src/java/gov/anl/aps/cdb/mqtt/CdbEntityEvent.java b/src/java/CdbWebPortal/src/java/gov/anl/aps/cdb/mqtt/CdbEntityEvent.java new file mode 100644 index 000000000..86d216187 --- /dev/null +++ b/src/java/CdbWebPortal/src/java/gov/anl/aps/cdb/mqtt/CdbEntityEvent.java @@ -0,0 +1,58 @@ +/* + * Copyright (c) UChicago Argonne, LLC. All rights reserved. + * See LICENSE file. + */ +package gov.anl.aps.cdb.mqtt; + +import gov.anl.aps.cdb.portal.model.db.entities.CdbEntity; +import gov.anl.aps.cdb.portal.model.db.entities.UserInfo; +import gov.anl.aps.cdb.base.mqtt.MqttEvent; + +/** Scalar snapshot of a completed entity operation. */ +public class CdbEntityEvent extends MqttEvent { + + private final String topic; + private final String operation; + private final String entityId; + private final String entityType; + private final String entityDescription; + private final String triggeredByUsername; + + public CdbEntityEvent(CdbMqttTopic topic, CdbEntity entity, UserInfo triggeredByUser) { + if (topic == null || entity == null) { + throw new IllegalArgumentException("topic and entity are required"); + } + this.topic = topic.getValue(); + this.operation = topic.name().toLowerCase(); + Object id = entity.getId(); + this.entityId = id == null ? null : id.toString(); + this.entityType = entity.getClass().getSimpleName(); + this.entityDescription = entity.getSystemLogString(); + this.triggeredByUsername = triggeredByUser == null ? null : triggeredByUser.getUsername(); + } + + @Override + public String getTopic() { + return topic; + } + + public String getOperation() { + return operation; + } + + public String getEntityId() { + return entityId; + } + + public String getEntityType() { + return entityType; + } + + public String getEntityDescription() { + return entityDescription; + } + + public String getTriggeredByUsername() { + return triggeredByUsername; + } +} diff --git a/src/java/CdbWebPortal/src/java/gov/anl/aps/cdb/mqtt/CdbMqttPublisher.java b/src/java/CdbWebPortal/src/java/gov/anl/aps/cdb/mqtt/CdbMqttPublisher.java new file mode 100644 index 000000000..f2bd5f135 --- /dev/null +++ b/src/java/CdbWebPortal/src/java/gov/anl/aps/cdb/mqtt/CdbMqttPublisher.java @@ -0,0 +1,50 @@ +/* + * Copyright (c) UChicago Argonne, LLC. All rights reserved. + * See LICENSE file. + */ +package gov.anl.aps.cdb.mqtt; + +import com.fasterxml.jackson.databind.ObjectMapper; +import gov.anl.aps.cdb.base.mqtt.MqttEvent; +import gov.anl.aps.cdb.base.mqtt.MqttPublisher; +import gov.anl.aps.cdb.base.mqtt.exception.MqttException; +import gov.anl.aps.cdb.base.mqtt.exception.MqttNotConfiguredException; +import gov.anl.aps.cdb.base.mqtt.exception.MqttPublishException; +import gov.anl.aps.cdb.base.mqtt.jca.JcaMqttPublisher; +import gov.anl.aps.cdb.base.mqtt.jca.JndiMqttConnectionProvider; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +/** Application adapter that makes MQTT publishing best effort. */ +public final class CdbMqttPublisher { + + public static final String JNDI_RESOURCE_NAME = "cdb/MQTT/resource"; + private static final Logger LOGGER = LogManager.getLogger(CdbMqttPublisher.class.getName()); + private static final MqttPublisher PUBLISHER = new JcaMqttPublisher( + new JndiMqttConnectionProvider(JNDI_RESOURCE_NAME), new ObjectMapper()); + + private CdbMqttPublisher() { + } + + public static void publish(MqttEvent event) { + try { + PUBLISHER.publish(event); + } catch (MqttNotConfiguredException ex) { + LOGGER.warn("MQTT is unavailable; skipped event for " + event.getTopic() + + ". " + ex.getMessage()); + } catch (MqttPublishException ex) { + LOGGER.warn("MQTT broker is unavailable or disconnected; skipped event for " + + event.getTopic() + ". " + getRootCauseMessage(ex)); + } catch (MqttException | RuntimeException ex) { + LOGGER.error("Failed to prepare MQTT event for " + event.getTopic(), ex); + } + } + + private static String getRootCauseMessage(Throwable error) { + Throwable cause = error; + while (cause.getCause() != null && cause.getCause() != cause) { + cause = cause.getCause(); + } + return cause.getMessage() == null ? cause.getClass().getSimpleName() : cause.getMessage(); + } +} diff --git a/src/java/CdbWebPortal/src/java/gov/anl/aps/cdb/mqtt/CdbMqttTopic.java b/src/java/CdbWebPortal/src/java/gov/anl/aps/cdb/mqtt/CdbMqttTopic.java new file mode 100644 index 000000000..ac3251519 --- /dev/null +++ b/src/java/CdbWebPortal/src/java/gov/anl/aps/cdb/mqtt/CdbMqttTopic.java @@ -0,0 +1,21 @@ +/* + * Copyright (c) UChicago Argonne, LLC. All rights reserved. + * See LICENSE file. + */ +package gov.anl.aps.cdb.mqtt; + +public enum CdbMqttTopic { + ADD("cdb/entity/add"), + UPDATE("cdb/entity/update"), + DELETE("cdb/entity/delete"); + + private final String value; + + CdbMqttTopic(String value) { + this.value = value; + } + + public String getValue() { + return value; + } +} diff --git a/src/java/CdbWebPortal/src/java/gov/anl/aps/cdb/portal/controllers/utilities/CdbEntityControllerUtility.java b/src/java/CdbWebPortal/src/java/gov/anl/aps/cdb/portal/controllers/utilities/CdbEntityControllerUtility.java index cf7dfff81..9355a1298 100644 --- a/src/java/CdbWebPortal/src/java/gov/anl/aps/cdb/portal/controllers/utilities/CdbEntityControllerUtility.java +++ b/src/java/CdbWebPortal/src/java/gov/anl/aps/cdb/portal/controllers/utilities/CdbEntityControllerUtility.java @@ -5,6 +5,9 @@ package gov.anl.aps.cdb.portal.controllers.utilities; import gov.anl.aps.cdb.common.exceptions.CdbException; +import gov.anl.aps.cdb.mqtt.CdbEntityEvent; +import gov.anl.aps.cdb.mqtt.CdbMqttPublisher; +import gov.anl.aps.cdb.mqtt.CdbMqttTopic; import gov.anl.aps.cdb.common.utilities.StringUtility; import gov.anl.aps.cdb.portal.constants.SystemLogLevel; import gov.anl.aps.cdb.portal.model.db.beans.CdbEntityFacade; @@ -55,6 +58,7 @@ public EntityType create(EntityType entity, UserInfo createdByUserInfo) throws C addCreatedSystemLog(entity, createdByUserInfo); entity.setPersitanceErrorMessage(null); + publishMqttEvent(CdbMqttTopic.ADD, entity, createdByUserInfo); clearCaches(); return entity; @@ -79,7 +83,10 @@ public void createList(List entities, UserInfo createdByUserInfo) th } getEntityDbFacade().create(entities); - addCdbEntitySystemLog(SystemLogLevel.entityInfo, "Created " + entities.size() + " entities.", createdByUserInfo); + addCdbEntitySystemLog(SystemLogLevel.entityInfo, "Created " + entities.size() + " entities.", createdByUserInfo); + for (EntityType entity : entities) { + publishMqttEvent(CdbMqttTopic.ADD, entity, createdByUserInfo); + } setPersistenceErrorMessageForList(entities, null); clearCaches(); } catch (CdbException ex) { @@ -103,6 +110,7 @@ public EntityType update(EntityType entity, UserInfo updatedByUserInfo) throws C EntityType updatedEntity = getEntityDbFacade().edit(entity); addCdbEntitySystemLog(SystemLogLevel.entityInfo, "Updated: " + entity.getSystemLogString(), updatedByUserInfo); entity.setPersitanceErrorMessage(null); + publishMqttEvent(CdbMqttTopic.UPDATE, updatedEntity, updatedByUserInfo); clearCaches(); return updatedEntity; @@ -127,6 +135,7 @@ public EntityType updateOnRemoval(EntityType entity, UserInfo updatedByUserInfo) logger.debug("Updating " + getDisplayEntityTypeName() + " " + getEntityInstanceName(entity)); prepareEntityUpdateOnRemoval(entity); EntityType updatedEntity = getEntityDbFacade().edit(entity); + publishMqttEvent(CdbMqttTopic.UPDATE, updatedEntity, updatedByUserInfo); clearCaches(); return updatedEntity; @@ -156,6 +165,7 @@ public void updateList(List entities, UserInfo updatedByUserInfo) th for (EntityType entity : entities) { entity.setPersitanceErrorMessage(null); addCdbEntitySystemLog(SystemLogLevel.entityInfo, "Updated: " + entity.getSystemLogString(), updatedByUserInfo); + publishMqttEvent(CdbMqttTopic.UPDATE, entity, updatedByUserInfo); } clearCaches(); } catch (CdbException ex) { @@ -177,7 +187,8 @@ public void destroy(EntityType entity, UserInfo destroyedByUserInfo) throws CdbE prepareEntityDestroy(entity, destroyedByUserInfo); getEntityDbFacade().remove(entity); - addCdbEntitySystemLog(SystemLogLevel.entityInfo, "Deleted: " + entity.getSystemLogString(), destroyedByUserInfo); + addCdbEntitySystemLog(SystemLogLevel.entityInfo, "Deleted: " + entity.getSystemLogString(), destroyedByUserInfo); + publishMqttEvent(CdbMqttTopic.DELETE, entity, destroyedByUserInfo); clearCaches(); } catch (CdbException ex) { entity.setPersitanceErrorMessage(ex.getMessage()); @@ -214,6 +225,14 @@ public void destroyList( getEntityDbFacade().remove(entities, updateEntity); addCdbEntitySystemLog(SystemLogLevel.entityInfo, "Deleted: " + entities.size() + " entities.", destroyedByUserInfo); + for (EntityType entity : entities) { + if (entity != null) { + publishMqttEvent(CdbMqttTopic.DELETE, entity, destroyedByUserInfo); + } + } + if (updateEntity != null) { + publishMqttEvent(CdbMqttTopic.UPDATE, updateEntity, destroyedByUserInfo); + } setPersistenceErrorMessageForList(entities, null); clearCaches(); } catch (CdbException ex) { @@ -229,6 +248,14 @@ public void destroyList( } } + protected void publishMqttEvent(CdbMqttTopic topic, EntityType entity, UserInfo userInfo) { + try { + CdbMqttPublisher.publish(new CdbEntityEvent(topic, entity, userInfo)); + } catch (RuntimeException ex) { + logger.error("Failed to create MQTT event for " + getDisplayEntityTypeName(), ex); + } + } + /** * On database operation clear cache of related cached entity when needed. */ From 0136ccd9f6b3034b5e24586b6f610cd828e3cfac Mon Sep 17 00:00:00 2001 From: Dariusz Jarosz Date: Fri, 2 Oct 2026 11:16:22 -0500 Subject: [PATCH 8/9] Run tests upon changes to the lib. --- .gitlab-ci.yml | 26 +++++++++++++++++++ tools/developer_tools/cdb-base-mqtt/README.md | 2 ++ 2 files changed, 28 insertions(+) create mode 100644 .gitlab-ci.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 000000000..cb57952e8 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,26 @@ +stages: + - test + +variables: + MAVEN_OPTS: "-Dmaven.repo.local=$CI_PROJECT_DIR/.m2/repository" + +cdb-base-mqtt-tests: + stage: test + image: maven:3.9-eclipse-temurin-8 + cache: + key: + files: + - tools/developer_tools/cdb-base-mqtt/pom.xml + paths: + - .m2/repository/ + rules: + - changes: + - tools/developer_tools/cdb-base-mqtt/**/* + - .gitlab-ci.yml + script: + - mvn --batch-mode --no-transfer-progress --file tools/developer_tools/cdb-base-mqtt/pom.xml verify + artifacts: + when: always + reports: + junit: + - tools/developer_tools/cdb-base-mqtt/target/surefire-reports/TEST-*.xml diff --git a/tools/developer_tools/cdb-base-mqtt/README.md b/tools/developer_tools/cdb-base-mqtt/README.md index a20fc899e..63f8968e6 100644 --- a/tools/developer_tools/cdb-base-mqtt/README.md +++ b/tools/developer_tools/cdb-base-mqtt/README.md @@ -15,6 +15,8 @@ sha256sum -c SHA256SUMS The versioned thin JAR is written to `target/cdb-base-mqtt-1.0.0.jar`. Jackson is provided by each consuming portal and is intentionally not bundled. +GitLab CI runs `mvn verify` when this module or the root `.gitlab-ci.yml` changes and publishes the Surefire JUnit reports. + ## Release artifact The checked-in `SHA256SUMS` records the released JAR checksum and verifies the artifact under `target/`. After changing this library: From ed435e4347d4b0b709e2a71f79c70a9746c147f3 Mon Sep 17 00:00:00 2001 From: Dariusz Jarosz Date: Fri, 2 Oct 2026 11:21:41 -0500 Subject: [PATCH 9/9] Run tests in CI upon changes to the lib. --- .github/workflows/cdb-base-mqtt.yml | 45 +++++++++++++++++++ .gitlab-ci.yml | 26 ----------- tools/developer_tools/cdb-base-mqtt/README.md | 2 +- 3 files changed, 46 insertions(+), 27 deletions(-) create mode 100644 .github/workflows/cdb-base-mqtt.yml delete mode 100644 .gitlab-ci.yml diff --git a/.github/workflows/cdb-base-mqtt.yml b/.github/workflows/cdb-base-mqtt.yml new file mode 100644 index 000000000..f05712045 --- /dev/null +++ b/.github/workflows/cdb-base-mqtt.yml @@ -0,0 +1,45 @@ +name: CDB Base MQTT + +on: + push: + paths: + - "tools/developer_tools/cdb-base-mqtt/**" + - ".github/workflows/cdb-base-mqtt.yml" + pull_request: + paths: + - "tools/developer_tools/cdb-base-mqtt/**" + - ".github/workflows/cdb-base-mqtt.yml" + workflow_dispatch: + +permissions: + contents: read + +jobs: + test: + runs-on: ubuntu-latest + defaults: + run: + working-directory: tools/developer_tools/cdb-base-mqtt + + steps: + - name: Check out repository + uses: actions/checkout@v4 + + - name: Set up Java 8 and Maven cache + uses: actions/setup-java@v4 + with: + distribution: temurin + java-version: "8" + cache: maven + cache-dependency-path: tools/developer_tools/cdb-base-mqtt/pom.xml + + - name: Run tests + run: mvn --batch-mode --no-transfer-progress verify + + - name: Publish test results + if: always() + uses: actions/upload-artifact@v4 + with: + name: cdb-base-mqtt-test-results + path: tools/developer_tools/cdb-base-mqtt/target/surefire-reports/ + if-no-files-found: warn diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml deleted file mode 100644 index cb57952e8..000000000 --- a/.gitlab-ci.yml +++ /dev/null @@ -1,26 +0,0 @@ -stages: - - test - -variables: - MAVEN_OPTS: "-Dmaven.repo.local=$CI_PROJECT_DIR/.m2/repository" - -cdb-base-mqtt-tests: - stage: test - image: maven:3.9-eclipse-temurin-8 - cache: - key: - files: - - tools/developer_tools/cdb-base-mqtt/pom.xml - paths: - - .m2/repository/ - rules: - - changes: - - tools/developer_tools/cdb-base-mqtt/**/* - - .gitlab-ci.yml - script: - - mvn --batch-mode --no-transfer-progress --file tools/developer_tools/cdb-base-mqtt/pom.xml verify - artifacts: - when: always - reports: - junit: - - tools/developer_tools/cdb-base-mqtt/target/surefire-reports/TEST-*.xml diff --git a/tools/developer_tools/cdb-base-mqtt/README.md b/tools/developer_tools/cdb-base-mqtt/README.md index 63f8968e6..7a00f06e6 100644 --- a/tools/developer_tools/cdb-base-mqtt/README.md +++ b/tools/developer_tools/cdb-base-mqtt/README.md @@ -15,7 +15,7 @@ sha256sum -c SHA256SUMS The versioned thin JAR is written to `target/cdb-base-mqtt-1.0.0.jar`. Jackson is provided by each consuming portal and is intentionally not bundled. -GitLab CI runs `mvn verify` when this module or the root `.gitlab-ci.yml` changes and publishes the Surefire JUnit reports. +GitHub Actions runs `mvn verify` on pushes and pull requests that change this module or its workflow. It also supports manual runs and uploads the Surefire reports as a workflow artifact. ## Release artifact