Showing
8 changed files
with
145 additions
and
48 deletions
... | ... | @@ -62,19 +62,28 @@ public abstract class AbstractMqttIntegrationTest extends AbstractControllerTest |
62 | 62 | |
63 | 63 | private static final AtomicInteger atomicInteger = new AtomicInteger(2); |
64 | 64 | |
65 | - protected static final String DEVICE_TELEMETRY_PROTO_SCHEMA = "syntax =\"proto3\";\n" + | |
65 | + public static final String DEVICE_TELEMETRY_PROTO_SCHEMA = "syntax =\"proto3\";\n" + | |
66 | 66 | "\n" + |
67 | 67 | "package test;\n" + |
68 | - " \n" + | |
68 | + "\n" + | |
69 | 69 | "message PostTelemetry {\n" + |
70 | 70 | " string key1 = 1;\n" + |
71 | 71 | " bool key2 = 2;\n" + |
72 | 72 | " double key3 = 3;\n" + |
73 | 73 | " int32 key4 = 4;\n" + |
74 | - " string key5 = 5;\n" + | |
74 | + " JsonObject key5 = 5;\n" + | |
75 | + "\n" + | |
76 | + " message JsonObject {\n" + | |
77 | + " int32 someNumber = 6;\n" + | |
78 | + " repeated int32 someArray = 7;\n" + | |
79 | + " NestedJsonObject someNestedObject = 8;\n" + | |
80 | + " message NestedJsonObject {\n" + | |
81 | + " string key = 9;\n" + | |
82 | + " }\n" + | |
83 | + " }\n" + | |
75 | 84 | "}"; |
76 | 85 | |
77 | - protected static final String DEVICE_ATTRIBUTES_PROTO_SCHEMA = "syntax =\"proto3\";\n" + | |
86 | + public static final String DEVICE_ATTRIBUTES_PROTO_SCHEMA = "syntax =\"proto3\";\n" + | |
78 | 87 | "\n" + |
79 | 88 | "package test;\n" + |
80 | 89 | "\n" + |
... | ... | @@ -83,7 +92,16 @@ public abstract class AbstractMqttIntegrationTest extends AbstractControllerTest |
83 | 92 | " bool key2 = 2;\n" + |
84 | 93 | " double key3 = 3;\n" + |
85 | 94 | " int32 key4 = 4;\n" + |
86 | - " string key5 = 5;\n" + | |
95 | + " JsonObject key5 = 5;\n" + | |
96 | + "\n" + | |
97 | + " message JsonObject {\n" + | |
98 | + " int32 someNumber = 6;\n" + | |
99 | + " repeated int32 someArray = 7;\n" + | |
100 | + " NestedJsonObject someNestedObject = 8;\n" + | |
101 | + " message NestedJsonObject {\n" + | |
102 | + " string key = 9;\n" + | |
103 | + " }\n" + | |
104 | + " }\n" + | |
87 | 105 | "}"; |
88 | 106 | |
89 | 107 | protected Tenant savedTenant; | ... | ... |
... | ... | @@ -26,13 +26,13 @@ import java.util.Arrays; |
26 | 26 | |
27 | 27 | @RunWith(ClasspathSuite.class) |
28 | 28 | @ClasspathSuite.ClassnameFilters({ |
29 | -// "org.thingsboard.server.mqtt.rpc.sql.*Test", | |
30 | -// "org.thingsboard.server.mqtt.telemetry.timeseries.sql.*Test", | |
31 | -// "org.thingsboard.server.mqtt.telemetry.attributes.sql.*Test", | |
32 | -// "org.thingsboard.server.mqtt.attributes.updates.sql.*Test", | |
29 | + "org.thingsboard.server.mqtt.rpc.sql.*Test", | |
30 | + "org.thingsboard.server.mqtt.telemetry.timeseries.sql.*Test", | |
31 | + "org.thingsboard.server.mqtt.telemetry.attributes.sql.*Test", | |
32 | + "org.thingsboard.server.mqtt.attributes.updates.sql.*Test", | |
33 | 33 | "org.thingsboard.server.mqtt.attributes.request.sql.*Test", |
34 | -// "org.thingsboard.server.mqtt.claim.sql.*Test", | |
35 | -// "org.thingsboard.server.mqtt.provision.sql.*Test" | |
34 | + "org.thingsboard.server.mqtt.claim.sql.*Test", | |
35 | + "org.thingsboard.server.mqtt.provision.sql.*Test" | |
36 | 36 | }) |
37 | 37 | public class MqttSqlTestSuite { |
38 | 38 | ... | ... |
... | ... | @@ -122,7 +122,7 @@ public abstract class AbstractMqttAttributesRequestIntegrationTest extends Abstr |
122 | 122 | client.publish(MqttTopics.DEVICE_ATTRIBUTES_REQUEST_TOPIC_PREFIX + "1", mqttMessage); |
123 | 123 | latch.await(3, TimeUnit.SECONDS); |
124 | 124 | assertEquals(MqttQoS.AT_MOST_ONCE.value(), callback.getQoS()); |
125 | - String expectedRequestPayload = "{\"client\":{\"attribute5\":{\"someNumber\":42,\"someArray\":[1,2,3],\"someNestedObject\":{\"key\":\"value\"}},\"attribute4\":73,\"attribute1\":\"value1\",\"attribute3\":42.0,\"attribute2\":true},\"shared\":{\"attribute5\":{\"someNumber\":42,\"someArray\":[1,2,3],\"someNestedObject\":{\"key\":\"value\"}},\"attribute4\":73,\"attribute1\":\"value1\",\"attribute3\":42.0,\"attribute2\":true}}"; | |
125 | + String expectedRequestPayload = "{\"client\":{\"attribute1\":\"value1\",\"attribute2\":true,\"attribute3\":42.0,\"attribute4\":73,\"attribute5\":{\"someNumber\":42,\"someArray\":[1,2,3],\"someNestedObject\":{\"key\":\"value\"}}},\"shared\":{\"attribute1\":\"value1\",\"attribute2\":true,\"attribute3\":42.0,\"attribute4\":73,\"attribute5\":{\"someNumber\":42,\"someArray\":[1,2,3],\"someNestedObject\":{\"key\":\"value\"}}}}"; | |
126 | 126 | assertEquals(JacksonUtil.toJsonNode(expectedRequestPayload), JacksonUtil.toJsonNode(new String(callback.getPayloadBytes(), StandardCharsets.UTF_8))); |
127 | 127 | } |
128 | 128 | ... | ... |
... | ... | @@ -62,7 +62,16 @@ public abstract class AbstractMqttAttributesRequestProtoIntegrationTest extends |
62 | 62 | " bool attribute2 = 2;\n" + |
63 | 63 | " double attribute3 = 3;\n" + |
64 | 64 | " int32 attribute4 = 4;\n" + |
65 | - " string attribute5 = 5;\n" + | |
65 | + " JsonObject attribute5 = 5;\n" + | |
66 | + "\n" + | |
67 | + " message JsonObject {\n" + | |
68 | + " int32 someNumber = 6;\n" + | |
69 | + " repeated int32 someArray = 7;\n" + | |
70 | + " NestedJsonObject someNestedObject = 8;\n" + | |
71 | + " message NestedJsonObject {\n" + | |
72 | + " string key = 9;\n" + | |
73 | + " }\n" + | |
74 | + " }\n" + | |
66 | 75 | "}"; |
67 | 76 | |
68 | 77 | @After |
... | ... | @@ -93,6 +102,23 @@ public abstract class AbstractMqttAttributesRequestProtoIntegrationTest extends |
93 | 102 | ProtoTransportPayloadConfiguration protoTransportPayloadConfiguration = (ProtoTransportPayloadConfiguration) transportPayloadTypeConfiguration; |
94 | 103 | ProtoFileElement transportProtoSchema = protoTransportPayloadConfiguration.getTransportProtoSchema(ATTRIBUTES_SCHEMA_STR); |
95 | 104 | DynamicSchema attributesSchema = protoTransportPayloadConfiguration.getDynamicSchema(transportProtoSchema, ProtoTransportPayloadConfiguration.ATTRIBUTES_PROTO_SCHEMA); |
105 | + | |
106 | + DynamicMessage.Builder nestedJsonObjectBuilder = attributesSchema.newMessageBuilder("PostAttributes.JsonObject.NestedJsonObject"); | |
107 | + Descriptors.Descriptor nestedJsonObjectBuilderDescriptor = nestedJsonObjectBuilder.getDescriptorForType(); | |
108 | + assertNotNull(nestedJsonObjectBuilderDescriptor); | |
109 | + DynamicMessage nestedJsonObject = nestedJsonObjectBuilder.setField(nestedJsonObjectBuilderDescriptor.findFieldByName("key"), "value").build(); | |
110 | + | |
111 | + DynamicMessage.Builder jsonObjectBuilder = attributesSchema.newMessageBuilder("PostAttributes.JsonObject"); | |
112 | + Descriptors.Descriptor jsonObjectBuilderDescriptor = jsonObjectBuilder.getDescriptorForType(); | |
113 | + assertNotNull(jsonObjectBuilderDescriptor); | |
114 | + DynamicMessage jsonObject = jsonObjectBuilder | |
115 | + .setField(jsonObjectBuilderDescriptor.findFieldByName("someNumber"), 42) | |
116 | + .addRepeatedField(jsonObjectBuilderDescriptor.findFieldByName("someArray"), 1) | |
117 | + .addRepeatedField(jsonObjectBuilderDescriptor.findFieldByName("someArray"), 2) | |
118 | + .addRepeatedField(jsonObjectBuilderDescriptor.findFieldByName("someArray"), 3) | |
119 | + .setField(jsonObjectBuilderDescriptor.findFieldByName("someNestedObject"), nestedJsonObject) | |
120 | + .build(); | |
121 | + | |
96 | 122 | DynamicMessage.Builder postAttributesBuilder = attributesSchema.newMessageBuilder("PostAttributes"); |
97 | 123 | Descriptors.Descriptor postAttributesMsgDescriptor = postAttributesBuilder.getDescriptorForType(); |
98 | 124 | assertNotNull(postAttributesMsgDescriptor); |
... | ... | @@ -101,7 +127,7 @@ public abstract class AbstractMqttAttributesRequestProtoIntegrationTest extends |
101 | 127 | .setField(postAttributesMsgDescriptor.findFieldByName("attribute2"), true) |
102 | 128 | .setField(postAttributesMsgDescriptor.findFieldByName("attribute3"), 42.0) |
103 | 129 | .setField(postAttributesMsgDescriptor.findFieldByName("attribute4"), 73) |
104 | - .setField(postAttributesMsgDescriptor.findFieldByName("attribute5"), "{\"someNumber\":42,\"someArray\":[1,2,3],\"someNestedObject\":{\"key\":\"value\"}}") | |
130 | + .setField(postAttributesMsgDescriptor.findFieldByName("attribute5"), jsonObject) | |
105 | 131 | .build(); |
106 | 132 | byte[] payload = postAttributesMsg.toByteArray(); |
107 | 133 | client.publish(MqttTopics.DEVICE_ATTRIBUTES_TOPIC, new MqttMessage(payload)); | ... | ... |
... | ... | @@ -163,16 +163,10 @@ public abstract class AbstractMqttAttributesIntegrationTest extends AbstractMqtt |
163 | 163 | break; |
164 | 164 | case "key5": |
165 | 165 | assertNotNull(value); |
166 | - LinkedHashMap valueMap; | |
167 | - if (value instanceof String) { | |
168 | - valueMap = mapper.readValue((String) value, LinkedHashMap.class); | |
169 | - } else { | |
170 | - valueMap = (LinkedHashMap) value; | |
171 | - } | |
172 | - assertEquals(3, valueMap.size()); | |
173 | - assertEquals(42, valueMap.get("someNumber")); | |
174 | - assertEquals(Arrays.asList(1, 2, 3), valueMap.get("someArray")); | |
175 | - LinkedHashMap<String, String> someNestedObject = (LinkedHashMap) valueMap.get("someNestedObject"); | |
166 | + assertEquals(3, ((LinkedHashMap) value).size()); | |
167 | + assertEquals(42, ((LinkedHashMap) value).get("someNumber")); | |
168 | + assertEquals(Arrays.asList(1, 2, 3), ((LinkedHashMap) value).get("someArray")); | |
169 | + LinkedHashMap<String, String> someNestedObject = (LinkedHashMap) ((LinkedHashMap) value).get("someNestedObject"); | |
176 | 170 | assertEquals("value", someNestedObject.get("key")); |
177 | 171 | break; |
178 | 172 | } | ... | ... |
... | ... | @@ -58,6 +58,23 @@ public abstract class AbstractMqttAttributesProtoIntegrationTest extends Abstrac |
58 | 58 | ProtoTransportPayloadConfiguration protoTransportPayloadConfiguration = (ProtoTransportPayloadConfiguration) transportPayloadTypeConfiguration; |
59 | 59 | ProtoFileElement transportProtoSchemaFile = protoTransportPayloadConfiguration.getTransportProtoSchema(DEVICE_ATTRIBUTES_PROTO_SCHEMA); |
60 | 60 | DynamicSchema attributesSchema = protoTransportPayloadConfiguration.getDynamicSchema(transportProtoSchemaFile, ProtoTransportPayloadConfiguration.ATTRIBUTES_PROTO_SCHEMA); |
61 | + | |
62 | + DynamicMessage.Builder nestedJsonObjectBuilder = attributesSchema.newMessageBuilder("PostAttributes.JsonObject.NestedJsonObject"); | |
63 | + Descriptors.Descriptor nestedJsonObjectBuilderDescriptor = nestedJsonObjectBuilder.getDescriptorForType(); | |
64 | + assertNotNull(nestedJsonObjectBuilderDescriptor); | |
65 | + DynamicMessage nestedJsonObject = nestedJsonObjectBuilder.setField(nestedJsonObjectBuilderDescriptor.findFieldByName("key"), "value").build(); | |
66 | + | |
67 | + DynamicMessage.Builder jsonObjectBuilder = attributesSchema.newMessageBuilder("PostAttributes.JsonObject"); | |
68 | + Descriptors.Descriptor jsonObjectBuilderDescriptor = jsonObjectBuilder.getDescriptorForType(); | |
69 | + assertNotNull(jsonObjectBuilderDescriptor); | |
70 | + DynamicMessage jsonObject = jsonObjectBuilder | |
71 | + .setField(jsonObjectBuilderDescriptor.findFieldByName("someNumber"), 42) | |
72 | + .addRepeatedField(jsonObjectBuilderDescriptor.findFieldByName("someArray"), 1) | |
73 | + .addRepeatedField(jsonObjectBuilderDescriptor.findFieldByName("someArray"), 2) | |
74 | + .addRepeatedField(jsonObjectBuilderDescriptor.findFieldByName("someArray"), 3) | |
75 | + .setField(jsonObjectBuilderDescriptor.findFieldByName("someNestedObject"), nestedJsonObject) | |
76 | + .build(); | |
77 | + | |
61 | 78 | DynamicMessage.Builder postAttributesBuilder = attributesSchema.newMessageBuilder("PostAttributes"); |
62 | 79 | Descriptors.Descriptor postAttributesMsgDescriptor = postAttributesBuilder.getDescriptorForType(); |
63 | 80 | assertNotNull(postAttributesMsgDescriptor); |
... | ... | @@ -66,7 +83,7 @@ public abstract class AbstractMqttAttributesProtoIntegrationTest extends Abstrac |
66 | 83 | .setField(postAttributesMsgDescriptor.findFieldByName("key2"), true) |
67 | 84 | .setField(postAttributesMsgDescriptor.findFieldByName("key3"), 3.0) |
68 | 85 | .setField(postAttributesMsgDescriptor.findFieldByName("key4"), 4) |
69 | - .setField(postAttributesMsgDescriptor.findFieldByName("key5"), "{\"someNumber\":42,\"someArray\":[1,2,3],\"someNestedObject\":{\"key\":\"value\"}}") | |
86 | + .setField(postAttributesMsgDescriptor.findFieldByName("key5"), jsonObject) | |
70 | 87 | .build(); |
71 | 88 | processAttributesTest(POST_DATA_ATTRIBUTES_TOPIC, expectedKeys, postAttributesMsg.toByteArray()); |
72 | 89 | } | ... | ... |
... | ... | @@ -62,6 +62,23 @@ public abstract class AbstractMqttTimeseriesProtoIntegrationTest extends Abstrac |
62 | 62 | ProtoTransportPayloadConfiguration protoTransportPayloadConfiguration = (ProtoTransportPayloadConfiguration) transportPayloadTypeConfiguration; |
63 | 63 | ProtoFileElement transportProtoSchema = protoTransportPayloadConfiguration.getTransportProtoSchema(DEVICE_TELEMETRY_PROTO_SCHEMA); |
64 | 64 | DynamicSchema telemetrySchema = protoTransportPayloadConfiguration.getDynamicSchema(transportProtoSchema, "telemetrySchema"); |
65 | + | |
66 | + DynamicMessage.Builder nestedJsonObjectBuilder = telemetrySchema.newMessageBuilder("PostTelemetry.JsonObject.NestedJsonObject"); | |
67 | + Descriptors.Descriptor nestedJsonObjectBuilderDescriptor = nestedJsonObjectBuilder.getDescriptorForType(); | |
68 | + assertNotNull(nestedJsonObjectBuilderDescriptor); | |
69 | + DynamicMessage nestedJsonObject = nestedJsonObjectBuilder.setField(nestedJsonObjectBuilderDescriptor.findFieldByName("key"), "value").build(); | |
70 | + | |
71 | + DynamicMessage.Builder jsonObjectBuilder = telemetrySchema.newMessageBuilder("PostTelemetry.JsonObject"); | |
72 | + Descriptors.Descriptor jsonObjectBuilderDescriptor = jsonObjectBuilder.getDescriptorForType(); | |
73 | + assertNotNull(jsonObjectBuilderDescriptor); | |
74 | + DynamicMessage jsonObject = jsonObjectBuilder | |
75 | + .setField(jsonObjectBuilderDescriptor.findFieldByName("someNumber"), 42) | |
76 | + .addRepeatedField(jsonObjectBuilderDescriptor.findFieldByName("someArray"), 1) | |
77 | + .addRepeatedField(jsonObjectBuilderDescriptor.findFieldByName("someArray"), 2) | |
78 | + .addRepeatedField(jsonObjectBuilderDescriptor.findFieldByName("someArray"), 3) | |
79 | + .setField(jsonObjectBuilderDescriptor.findFieldByName("someNestedObject"), nestedJsonObject) | |
80 | + .build(); | |
81 | + | |
65 | 82 | DynamicMessage.Builder postTelemetryBuilder = telemetrySchema.newMessageBuilder("PostTelemetry"); |
66 | 83 | Descriptors.Descriptor postTelemetryMsgDescriptor = postTelemetryBuilder.getDescriptorForType(); |
67 | 84 | assertNotNull(postTelemetryMsgDescriptor); |
... | ... | @@ -70,7 +87,7 @@ public abstract class AbstractMqttTimeseriesProtoIntegrationTest extends Abstrac |
70 | 87 | .setField(postTelemetryMsgDescriptor.findFieldByName("key2"), true) |
71 | 88 | .setField(postTelemetryMsgDescriptor.findFieldByName("key3"), 3.0) |
72 | 89 | .setField(postTelemetryMsgDescriptor.findFieldByName("key4"), 4) |
73 | - .setField(postTelemetryMsgDescriptor.findFieldByName("key5"), "{\"someNumber\":42,\"someArray\":[1,2,3],\"someNestedObject\":{\"key\":\"value\"}}") | |
90 | + .setField(postTelemetryMsgDescriptor.findFieldByName("key5"), jsonObject) | |
74 | 91 | .build(); |
75 | 92 | processTelemetryTest(POST_DATA_TELEMETRY_TOPIC, expectedKeys, postTelemetryMsg.toByteArray(), false); |
76 | 93 | } |
... | ... | @@ -80,19 +97,27 @@ public abstract class AbstractMqttTimeseriesProtoIntegrationTest extends Abstrac |
80 | 97 | String schemaStr = "syntax =\"proto3\";\n" + |
81 | 98 | "\n" + |
82 | 99 | "package test;\n" + |
83 | - " \n" + | |
84 | - "message PostTelemetry {\n" + | |
85 | - "\n" + | |
86 | - " message Values {\n" + | |
87 | - " string key1 = 1;\n" + | |
88 | - " bool key2 = 2;\n" + | |
89 | - " double key3 = 3;\n" + | |
90 | - " int32 key4 = 4;\n" + | |
91 | - " string key5 = 5;\n" + | |
92 | - " }\n" + | |
93 | 100 | "\n" + |
101 | + "message PostTelemetry {\n" + | |
94 | 102 | " int64 ts = 1;\n" + |
95 | 103 | " Values values = 2;\n" + |
104 | + " \n" + | |
105 | + " message Values {\n" + | |
106 | + " string key1 = 3;\n" + | |
107 | + " bool key2 = 4;\n" + | |
108 | + " double key3 = 5;\n" + | |
109 | + " int32 key4 = 6;\n" + | |
110 | + " JsonObject key5 = 7;\n" + | |
111 | + " }\n" + | |
112 | + " \n" + | |
113 | + " message JsonObject {\n" + | |
114 | + " int32 someNumber = 8;\n" + | |
115 | + " repeated int32 someArray = 9;\n" + | |
116 | + " NestedJsonObject someNestedObject = 10;\n" + | |
117 | + " message NestedJsonObject {\n" + | |
118 | + " string key = 11;\n" + | |
119 | + " }\n" + | |
120 | + " }\n" + | |
96 | 121 | "}"; |
97 | 122 | super.processBeforeTest("Test Post Telemetry device proto payload", "Test Post Telemetry gateway proto payload", TransportPayloadType.PROTOBUF, POST_DATA_TELEMETRY_TOPIC, null, schemaStr, null, DeviceProfileProvisionType.DISABLED, null, null); |
98 | 123 | List<String> expectedKeys = Arrays.asList("key1", "key2", "key3", "key4", "key5"); |
... | ... | @@ -105,6 +130,23 @@ public abstract class AbstractMqttTimeseriesProtoIntegrationTest extends Abstrac |
105 | 130 | ProtoFileElement transportProtoSchema = protoTransportPayloadConfiguration.getTransportProtoSchema(schemaStr); |
106 | 131 | DynamicSchema telemetrySchema = protoTransportPayloadConfiguration.getDynamicSchema(transportProtoSchema, "telemetrySchema"); |
107 | 132 | |
133 | + DynamicMessage.Builder nestedJsonObjectBuilder = telemetrySchema.newMessageBuilder("PostTelemetry.JsonObject.NestedJsonObject"); | |
134 | + Descriptors.Descriptor nestedJsonObjectBuilderDescriptor = nestedJsonObjectBuilder.getDescriptorForType(); | |
135 | + assertNotNull(nestedJsonObjectBuilderDescriptor); | |
136 | + DynamicMessage nestedJsonObject = nestedJsonObjectBuilder.setField(nestedJsonObjectBuilderDescriptor.findFieldByName("key"), "value").build(); | |
137 | + | |
138 | + DynamicMessage.Builder jsonObjectBuilder = telemetrySchema.newMessageBuilder("PostTelemetry.JsonObject"); | |
139 | + Descriptors.Descriptor jsonObjectBuilderDescriptor = jsonObjectBuilder.getDescriptorForType(); | |
140 | + assertNotNull(jsonObjectBuilderDescriptor); | |
141 | + DynamicMessage jsonObject = jsonObjectBuilder | |
142 | + .setField(jsonObjectBuilderDescriptor.findFieldByName("someNumber"), 42) | |
143 | + .addRepeatedField(jsonObjectBuilderDescriptor.findFieldByName("someArray"), 1) | |
144 | + .addRepeatedField(jsonObjectBuilderDescriptor.findFieldByName("someArray"), 2) | |
145 | + .addRepeatedField(jsonObjectBuilderDescriptor.findFieldByName("someArray"), 3) | |
146 | + .setField(jsonObjectBuilderDescriptor.findFieldByName("someNestedObject"), nestedJsonObject) | |
147 | + .build(); | |
148 | + | |
149 | + | |
108 | 150 | DynamicMessage.Builder valuesBuilder = telemetrySchema.newMessageBuilder("PostTelemetry.Values"); |
109 | 151 | Descriptors.Descriptor valuesDescriptor = valuesBuilder.getDescriptorForType(); |
110 | 152 | assertNotNull(valuesDescriptor); |
... | ... | @@ -114,7 +156,7 @@ public abstract class AbstractMqttTimeseriesProtoIntegrationTest extends Abstrac |
114 | 156 | .setField(valuesDescriptor.findFieldByName("key2"), true) |
115 | 157 | .setField(valuesDescriptor.findFieldByName("key3"), 3.0) |
116 | 158 | .setField(valuesDescriptor.findFieldByName("key4"), 4) |
117 | - .setField(valuesDescriptor.findFieldByName("key5"), "{\"someNumber\":42,\"someArray\":[1,2,3],\"someNestedObject\":{\"key\":\"value\"}}") | |
159 | + .setField(valuesDescriptor.findFieldByName("key5"), jsonObject) | |
118 | 160 | .build(); |
119 | 161 | |
120 | 162 | DynamicMessage.Builder postTelemetryBuilder = telemetrySchema.newMessageBuilder("PostTelemetry"); | ... | ... |
... | ... | @@ -128,19 +128,8 @@ public class ProtoTransportPayloadConfiguration implements TransportPayloadTypeC |
128 | 128 | List<MessageDefinition> messageDefinitions = new ArrayList<>(); |
129 | 129 | messageElementsList.forEach(messageElement -> { |
130 | 130 | MessageDefinition.Builder messageDefinitionBuilder = MessageDefinition.newBuilder(messageElement.getName()); |
131 | - List<FieldElement> messageElementFields = messageElement.getFields(); | |
132 | - List<OneOfElement> oneOfs = messageElement.getOneOfs(); | |
133 | 131 | |
134 | 132 | List<TypeElement> nestedTypes = messageElement.getNestedTypes(); |
135 | - if (!messageElementFields.isEmpty()) { | |
136 | - addMessageFieldsToTheMessageDefinition(messageElementFields, messageDefinitionBuilder); | |
137 | - } | |
138 | - if (!oneOfs.isEmpty()) { | |
139 | - for (OneOfElement oneOfelement : oneOfs) { | |
140 | - MessageDefinition.OneofBuilder oneofBuilder = messageDefinitionBuilder.addOneof(oneOfelement.getName()); | |
141 | - addMessageFieldsToTheOneOfDefinition(oneOfelement.getFields(), oneofBuilder); | |
142 | - } | |
143 | - } | |
144 | 133 | if (!nestedTypes.isEmpty()) { |
145 | 134 | List<EnumElement> nestedEnumTypes = getEnumElements(nestedTypes); |
146 | 135 | if (!nestedEnumTypes.isEmpty()) { |
... | ... | @@ -153,6 +142,17 @@ public class ProtoTransportPayloadConfiguration implements TransportPayloadTypeC |
153 | 142 | List<MessageDefinition> nestedMessageDefinitions = getMessageDefinitions(nestedMessageTypes); |
154 | 143 | nestedMessageDefinitions.forEach(messageDefinitionBuilder::addMessageDefinition); |
155 | 144 | } |
145 | + List<FieldElement> messageElementFields = messageElement.getFields(); | |
146 | + List<OneOfElement> oneOfs = messageElement.getOneOfs(); | |
147 | + if (!oneOfs.isEmpty()) { | |
148 | + for (OneOfElement oneOfelement : oneOfs) { | |
149 | + MessageDefinition.OneofBuilder oneofBuilder = messageDefinitionBuilder.addOneof(oneOfelement.getName()); | |
150 | + addMessageFieldsToTheOneOfDefinition(oneOfelement.getFields(), oneofBuilder); | |
151 | + } | |
152 | + } | |
153 | + if (!messageElementFields.isEmpty()) { | |
154 | + addMessageFieldsToTheMessageDefinition(messageElementFields, messageDefinitionBuilder); | |
155 | + } | |
156 | 156 | messageDefinitions.add(messageDefinitionBuilder.build()); |
157 | 157 | }); |
158 | 158 | return messageDefinitions; | ... | ... |