Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update 4.22.0 #9

Merged
merged 3 commits into from
Dec 5, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions README.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,6 @@ image:https://img.shields.io/github/v/release/hivemq/hivemq-sparkplug-aware-exte
image:https://img.shields.io/github/license/hivemq/hivemq-sparkplug-aware-extension?style=for-the-badge&color=brightgreen[GitHub,link=LICENSE]
image:https://img.shields.io/github/actions/workflow/status/hivemq/hivemq-sparkplug-aware-extension/check.yml?branch=master&style=for-the-badge[GitHub Workflow Status,link=https://github.com/hivemq/hivemq-sparkplug-aware-extension/actions/workflows/check.yml?query=branch%3Amaster]

*This extension is not yet ready for production use.*

== Purpose

This HiveMQ Sparkplug aware extension has the purpose to fulfil the new link:https://github.com/eclipse/sparkplug[Sparkplug Release] of the Sparkplug specification extend HiveMQ with the functionality of a Sparkplug Aware Broker wich is an optional Requirement.
Expand Down
2 changes: 1 addition & 1 deletion gradle/libs.versions.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[versions]
commonsLang = "3.8.1"
guava = "31.1-jre"
hivemq-extensionSdk = "4.9.1"
hivemq-extensionSdk = "4.22.0"
jackson = "2.13.2"
jacksonv1 = "1.9.13"
jetbrains-annotations = "24.0.1"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,14 @@
*/
package com.hivemq.extensions.sparkplug.aware;

public class AwareRequirements {
public final static String CONFORMANCE_MQTT_AWARE_NBIRTH_MQTT_TOPIC = "A Sparkplug Aware MQTT Server MUST make NBIRTH messages available on a topic of the form: $sparkplug/certificates/namespace/group_id/NBIRTH/edge_node_id";
public final static String CONFORMANCE_MQTT_AWARE_NBIRTH_MQTT_RETAIN = "A Sparkplug Aware MQTT Server MUST make NBIRTH messages available on the topic: $sparkplug/certificates/namespace/group_id/NBIRTH/edge_node_id with the MQTT retain flag set to true";
public final static String CONFORMANCE_MQTT_AWARE_DBIRTH_MQTT_TOPIC = "A Sparkplug Aware MQTT Server MUST make DBIRTH messages available on a topic of the form: $sparkplug/certificates/namespace/group_id/DBIRTH/edge_node_id/device_id";
public final static String CONFORMANCE_MQTT_AWARE_DBIRTH_MQTT_RETAIN = "A Sparkplug Aware MQTT Server MUST make DBIRTH messages available on the topic: $sparkplug/certificates/namespace/group_id/DBIRTH/edge_node_id/device_id with the MQTT retain flag set to true";
public final static String CONFORMANCE_MQTT_AWARE_NDEATH_TIMESTAMP = "A Sparkplug Aware MQTT Server MAY replace the timestamp of NDEATH messages. If it does, it MUST set the timestamp to the UTC time at which it attempts to deliver the NDEATH to subscribed clients";
public final class AwareRequirements {

AwareRequirements() {
}

public static final String CONFORMANCE_MQTT_AWARE_NBIRTH_MQTT_TOPIC = "A Sparkplug Aware MQTT Server MUST make NBIRTH messages available on a topic of the form: $sparkplug/certificates/namespace/group_id/NBIRTH/edge_node_id";
public static final String CONFORMANCE_MQTT_AWARE_NBIRTH_MQTT_RETAIN = "A Sparkplug Aware MQTT Server MUST make NBIRTH messages available on the topic: $sparkplug/certificates/namespace/group_id/NBIRTH/edge_node_id with the MQTT retain flag set to true";
public static final String CONFORMANCE_MQTT_AWARE_DBIRTH_MQTT_TOPIC = "A Sparkplug Aware MQTT Server MUST make DBIRTH messages available on a topic of the form: $sparkplug/certificates/namespace/group_id/DBIRTH/edge_node_id/device_id";
public static final String CONFORMANCE_MQTT_AWARE_DBIRTH_MQTT_RETAIN = "A Sparkplug Aware MQTT Server MUST make DBIRTH messages available on the topic: $sparkplug/certificates/namespace/group_id/DBIRTH/edge_node_id/device_id with the MQTT retain flag set to true";
public static final String CONFORMANCE_MQTT_AWARE_NDEATH_TIMESTAMP = "A Sparkplug Aware MQTT Server MAY replace the timestamp of NDEATH messages. If it does, it MUST set the timestamp to the UTC time at which it attempts to deliver the NDEATH to subscribed clients";
}
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ public void extensionStart(
addPublishModifier();

final ExtensionInformation extensionInformation = extensionStartInput.getExtensionInformation();
log.info("Started " + extensionInformation.getName() + ":" + extensionInformation.getVersion());
log.info("Started {}:{}", extensionInformation.getName(), extensionInformation.getVersion());

log.debug("Add Awareness: {} ", AwareRequirements.CONFORMANCE_MQTT_AWARE_DBIRTH_MQTT_TOPIC);
log.debug("Add Awareness: {} ", AwareRequirements.CONFORMANCE_MQTT_AWARE_DBIRTH_MQTT_RETAIN);
Expand All @@ -75,7 +75,7 @@ public void extensionStop(
final @NotNull ExtensionStopOutput extensionStopOutput) {

final ExtensionInformation extensionInformation = extensionStopInput.getExtensionInformation();
log.info("Stopped " + extensionInformation.getName() + ":" + extensionInformation.getVersion());
log.info("Stopped {}:{}", extensionInformation.getName(), extensionInformation.getVersion());
}

private void addPublishModifier() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,8 @@ public class SparkplugPublishInboundInterceptor implements PublishInboundInterce
private final PublishService publishService;
private final @NotNull String sparkplugVersion;
private final @NotNull String sysTopic;
private final Boolean useCompression;
private final Boolean jsonLogEnabled;
private final boolean useCompression;
private final boolean jsonLogEnabled;
private final Long messageExpiry;

public SparkplugPublishInboundInterceptor(final @NotNull SparkplugConfiguration configuration,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,8 @@ public class SparkplugPublishOutboundInterceptor implements PublishOutboundInter
private static final CompressionAlgorithm compressionAlgorithm = CompressionAlgorithm.GZIP;
private final @NotNull String sparkplugVersion;

private final Boolean useCompression;
private final Boolean jsonLogEnabled;
private final boolean useCompression;
private final boolean jsonLogEnabled;

public SparkplugPublishOutboundInterceptor(final @NotNull SparkplugConfiguration configuration) {
this.sparkplugVersion = configuration.getSparkplugVersion();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,20 @@
import java.nio.ByteBuffer;
import java.util.Date;

public class PayloadUtil {
public final class PayloadUtil {
private static final @NotNull Logger log = LoggerFactory.getLogger(PayloadUtil.class);
private static final @NotNull Logger jsonLog = LoggerFactory.getLogger("com.hivemq.extensions.sparkplug.jsonLog");
private static final CompressionAlgorithm compressionAlgorithm = CompressionAlgorithm.GZIP;

public static ByteBuffer modifySparkplugTimestamp(Boolean useCompression, ByteBuffer byteBuffer) throws Exception {
SparkplugBPayload inboundPayload = getSparkplugBPayload(byteBuffer);
PayloadUtil(){
}

public static ByteBuffer modifySparkplugTimestamp(boolean useCompression, ByteBuffer byteBuffer) throws Exception {
final SparkplugBPayload inboundPayload = getSparkplugBPayload(byteBuffer);
if (inboundPayload == null) {
throw new IllegalArgumentException("Unable to get Sparkplug B Payload from byte buffer.");
}

//create the same payload with a new timestamp.
SparkplugBPayload payload =
new SparkplugBPayload(new Date(),
Expand Down