Skip to content

Commit 0795a77

Browse files
Fix missing information in Json Schema (#450)
1 parent f3cc5a5 commit 0795a77

File tree

7 files changed

+116
-63
lines changed

7 files changed

+116
-63
lines changed

hivemq-edge/src/main/java/com/hivemq/edge/modules/adapters/impl/factories/AdapterFactoriesImpl.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,11 @@
22

33
import com.hivemq.adapter.sdk.api.factories.AdapterFactories;
44
import com.hivemq.adapter.sdk.api.factories.DataPointFactory;
5-
import com.hivemq.adapter.sdk.api.factories.PollingContextFactory;
65
import com.hivemq.edge.modules.adapters.data.DataPointImpl;
7-
import com.hivemq.edge.modules.config.impl.PollingContextImpl;
86
import com.hivemq.extension.sdk.api.annotations.NotNull;
97

108
public class AdapterFactoriesImpl implements AdapterFactories {
119

12-
@Override
13-
public @NotNull PollingContextFactory pollingContextFactory() {
14-
return PollingContextImpl::new;
15-
}
1610

1711
@Override
1812
public @NotNull DataPointFactory dataPointFactory() {

hivemq-edge/src/main/java/com/hivemq/edge/modules/api/events/model/EventImpl.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,11 @@ public EventImpl(
114114
return timestamp;
115115
}
116116

117+
@Override
118+
public @NotNull Long getCreated() {
119+
return created;
120+
}
121+
117122
@Override
118123
public @Nullable TypeIdentifier getAssociatedObject() {
119124
return associatedObject;

hivemq-edge/src/main/java/com/hivemq/edge/modules/config/impl/UserPropertyImpl.java

Lines changed: 0 additions & 45 deletions
This file was deleted.

hivemq-edge/src/main/java/com/hivemq/protocols/ProtocolAdapterUtils.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,6 @@
2222
import com.fasterxml.jackson.databind.module.SimpleAbstractTypeResolver;
2323
import com.fasterxml.jackson.databind.module.SimpleModule;
2424
import com.fasterxml.jackson.databind.type.LogicalType;
25-
import com.hivemq.adapter.sdk.api.config.UserProperty;
26-
import com.hivemq.edge.modules.config.impl.UserPropertyImpl;
2725
import com.hivemq.extension.sdk.api.annotations.NotNull;
2826

2927
/**
@@ -41,8 +39,6 @@ public class ProtocolAdapterUtils {
4139

4240
SimpleModule module = new SimpleModule("UserPropertyModule", Version.unknownVersion());
4341
SimpleAbstractTypeResolver resolver = new SimpleAbstractTypeResolver();
44-
resolver.addMapping(UserProperty.class, UserPropertyImpl.class);
45-
// resolver.addMapping(PollingContext.class, PollingContextImpl.class);
4642

4743
module.setAbstractTypes(resolver);
4844
copyObjectMapper.registerModule(module);

hivemq-edge/src/test/java/com/hivemq/adapter/AdapterConfigModelTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@
2626
import com.hivemq.adapter.sdk.api.annotations.ModuleConfigField;
2727
import com.hivemq.adapter.sdk.api.config.PollingContext;
2828
import com.hivemq.adapter.sdk.api.config.ProtocolAdapterConfig;
29+
import com.hivemq.adapter.sdk.api.config.UserProperty;
2930
import com.hivemq.edge.modules.config.impl.PollingContextImpl;
30-
import com.hivemq.edge.modules.config.impl.UserPropertyImpl;
3131
import com.hivemq.extension.sdk.api.annotations.NotNull;
3232
import org.junit.jupiter.api.Assertions;
3333
import org.junit.jupiter.api.BeforeAll;
@@ -58,7 +58,7 @@ public void testUserPropertiesAppearOnSubscription() throws JsonProcessingExcept
5858

5959
AdapterConfiguration entity = new AdapterConfiguration();
6060
entity.subscriptions = new ArrayList<>();
61-
entity.subscriptions.add(new PollingContextImpl("some/path",1,List.of(new UserPropertyImpl("propertyName", "propertyValue"))));
61+
entity.subscriptions.add(new PollingContextImpl("some/path",1,List.of(new UserProperty("propertyName", "propertyValue"))));
6262
String marhslaled = mapper.writeValueAsString(entity);
6363
System.err.println(marhslaled);
6464

modules/hivemq-edge-module-http/src/main/java/com/hivemq/edge/adapters/http/HttpProtocolAdapter.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717

1818
import com.fasterxml.jackson.databind.ObjectMapper;
1919
import com.hivemq.adapter.sdk.api.ProtocolAdapterInformation;
20-
import com.hivemq.adapter.sdk.api.config.PollingContext;
2120
import com.hivemq.adapter.sdk.api.data.DataPoint;
2221
import com.hivemq.adapter.sdk.api.events.model.Event;
2322
import com.hivemq.adapter.sdk.api.exceptions.ProtocolAdapterException;
@@ -33,6 +32,7 @@
3332
import com.hivemq.adapter.sdk.api.services.ModuleServices;
3433
import com.hivemq.adapter.sdk.api.state.ProtocolAdapterState;
3534
import com.hivemq.edge.adapters.http.model.HttpData;
35+
import com.hivemq.edge.adapters.http.model.HttpPollingContextImpl;
3636
import org.jetbrains.annotations.NotNull;
3737
import org.jetbrains.annotations.Nullable;
3838
import org.slf4j.Logger;
@@ -65,7 +65,7 @@
6565
/**
6666
* @author HiveMQ Adapter Generator
6767
*/
68-
public class HttpProtocolAdapter implements PollingProtocolAdapter {
68+
public class HttpProtocolAdapter implements PollingProtocolAdapter<HttpPollingContextImpl> {
6969

7070
private static final @NotNull Logger log = LoggerFactory.getLogger(HttpProtocolAdapter.class);
7171

@@ -80,7 +80,7 @@ public class HttpProtocolAdapter implements PollingProtocolAdapter {
8080
private final @NotNull ModuleServices moduleServices;
8181
private final @NotNull AdapterFactories adapterFactories;
8282
// The http adapter only supports a single endpont to be polled from
83-
private final @NotNull PollingContext pollingContext;
83+
private final @NotNull HttpPollingContextImpl pollingContext;
8484

8585
private volatile @Nullable HttpClient httpClient = null;
8686
protected @NotNull
@@ -97,8 +97,7 @@ public HttpProtocolAdapter(
9797
this.protocolAdapterState = input.getProtocolAdapterState();
9898
this.moduleServices = input.moduleServices();
9999
this.adapterFactories = input.adapterFactories();
100-
this.pollingContext = adapterFactories.pollingContextFactory()
101-
.create(adapterConfig.getDestination(), adapterConfig.getQos(), null);
100+
this.pollingContext = new HttpPollingContextImpl(adapterConfig.getDestination(), adapterConfig.getQos(), null);
102101
}
103102

104103
@Override
@@ -182,7 +181,7 @@ public void poll(
182181
}
183182

184183
@Override
185-
public @NotNull List<? extends PollingContext> getPollingContexts() {
184+
public @NotNull List<HttpPollingContextImpl> getPollingContexts() {
186185
return List.of(pollingContext);
187186
}
188187

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
package com.hivemq.edge.adapters.http.model;
2+
3+
import com.fasterxml.jackson.annotation.JsonCreator;
4+
import com.fasterxml.jackson.annotation.JsonProperty;
5+
import com.hivemq.adapter.sdk.api.annotations.ModuleConfigField;
6+
import com.hivemq.adapter.sdk.api.config.MessageHandlingOptions;
7+
import com.hivemq.adapter.sdk.api.config.PollingContext;
8+
import com.hivemq.adapter.sdk.api.config.UserProperty;
9+
import org.jetbrains.annotations.NotNull;
10+
import org.jetbrains.annotations.Nullable;
11+
12+
import java.util.ArrayList;
13+
import java.util.List;
14+
15+
public class HttpPollingContextImpl implements PollingContext {
16+
17+
@JsonProperty(value = "destination", required = true)
18+
@ModuleConfigField(title = "Destination Topic",
19+
description = "The topic to publish data on",
20+
required = true,
21+
format = ModuleConfigField.FieldType.MQTT_TOPIC)
22+
protected @Nullable String destination;
23+
24+
@JsonProperty(value = "qos", required = true)
25+
@ModuleConfigField(title = "QoS",
26+
description = "MQTT Quality of Service level",
27+
required = true,
28+
numberMin = 0,
29+
numberMax = 2,
30+
defaultValue = "0")
31+
protected int qos = 0;
32+
33+
@JsonProperty(value = "messageHandlingOptions")
34+
@ModuleConfigField(title = "Message Handling Options",
35+
description = "This setting defines the format of the resulting MQTT message, either a message per changed tag or a message per subscription that may include multiple data points per sample",
36+
enumDisplayValues = {
37+
"MQTT Message Per Device Tag",
38+
"MQTT Message Per Subscription (Potentially Multiple Data Points Per Sample)"},
39+
defaultValue = "MQTTMessagePerTag")
40+
protected @NotNull MessageHandlingOptions messageHandlingOptions = MessageHandlingOptions.MQTTMessagePerTag;
41+
42+
@JsonProperty(value = "includeTimestamp")
43+
@ModuleConfigField(title = "Include Sample Timestamp In Publish?",
44+
description = "Include the unix timestamp of the sample time in the resulting MQTT message",
45+
defaultValue = "true")
46+
protected @NotNull Boolean includeTimestamp = Boolean.TRUE;
47+
48+
@JsonProperty(value = "includeTagNames")
49+
@ModuleConfigField(title = "Include Tag Names In Publish?",
50+
description = "Include the names of the tags in the resulting MQTT publish",
51+
defaultValue = "false")
52+
protected @NotNull Boolean includeTagNames = Boolean.FALSE;
53+
54+
@JsonProperty(value = "userProperties")
55+
@ModuleConfigField(title = "User Properties",
56+
description = "Arbitrary properties to associate with the subscription",
57+
arrayMaxItems = 10)
58+
private @NotNull List<UserProperty> userProperties = new ArrayList<>();
59+
60+
public HttpPollingContextImpl() {
61+
}
62+
63+
@JsonCreator
64+
public HttpPollingContextImpl(
65+
@JsonProperty("destination") @Nullable final String destination,
66+
@JsonProperty("qos") final int qos,
67+
@JsonProperty("userProperties") @Nullable List<UserProperty> userProperties) {
68+
this.destination = destination;
69+
this.qos = qos;
70+
if (userProperties != null) {
71+
this.userProperties = userProperties;
72+
}
73+
}
74+
75+
@Override
76+
public @Nullable String getDestinationMqttTopic() {
77+
return destination;
78+
}
79+
80+
@Override
81+
public int getQos() {
82+
return qos;
83+
}
84+
85+
@Override
86+
public @NotNull MessageHandlingOptions getMessageHandlingOptions() {
87+
return messageHandlingOptions;
88+
}
89+
90+
@Override
91+
public @NotNull Boolean getIncludeTimestamp() {
92+
return includeTimestamp;
93+
}
94+
95+
@Override
96+
public @NotNull Boolean getIncludeTagNames() {
97+
return includeTagNames;
98+
}
99+
100+
@Override
101+
public @NotNull List<UserProperty> getUserProperties() {
102+
return userProperties;
103+
}
104+
}

0 commit comments

Comments
 (0)