event标识以topic中的为准
This commit is contained in:
parent
02dc934820
commit
5e326544f7
|
@ -24,7 +24,24 @@ public enum TopicMessageCodec {
|
||||||
//上报属性数据
|
//上报属性数据
|
||||||
reportProperty("/*/properties/report", ReportPropertyMessage.class),
|
reportProperty("/*/properties/report", ReportPropertyMessage.class),
|
||||||
//事件上报
|
//事件上报
|
||||||
event("/*/event/*", EventMessage.class),
|
event("/*/event/*", EventMessage.class) {
|
||||||
|
@Override
|
||||||
|
Publisher<DeviceMessage> doDecode(ObjectMapper mapper, String[] topic, byte[] payload) {
|
||||||
|
String event = topic[topic.length - 1];
|
||||||
|
|
||||||
|
return Mono.from(super.doDecode(mapper, topic, payload))
|
||||||
|
.cast(EventMessage.class)
|
||||||
|
.doOnNext(e -> e.setEvent(event))
|
||||||
|
.cast(DeviceMessage.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
void refactorTopic(String[] topics, DeviceMessage message) {
|
||||||
|
super.refactorTopic(topics, message);
|
||||||
|
EventMessage event = ((EventMessage) message);
|
||||||
|
topics[topics.length - 1] = String.valueOf(event.getEvent());
|
||||||
|
}
|
||||||
|
},
|
||||||
//读取属性
|
//读取属性
|
||||||
readProperty("/*/properties/read", ReadPropertyMessage.class),
|
readProperty("/*/properties/read", ReadPropertyMessage.class),
|
||||||
//读取属性回复
|
//读取属性回复
|
||||||
|
|
|
@ -2,6 +2,8 @@ package org.jetlinks.protocol.official;
|
||||||
|
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
import org.jetlinks.core.message.ChildDeviceMessage;
|
import org.jetlinks.core.message.ChildDeviceMessage;
|
||||||
|
import org.jetlinks.core.message.DeviceMessage;
|
||||||
|
import org.jetlinks.core.message.event.EventMessage;
|
||||||
import org.jetlinks.core.message.property.ReportPropertyMessage;
|
import org.jetlinks.core.message.property.ReportPropertyMessage;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import reactor.test.StepVerifier;
|
import reactor.test.StepVerifier;
|
||||||
|
@ -41,4 +43,21 @@ public class TopicMessageCodecTest {
|
||||||
testChild(ObjectMappers.JSON_MAPPER);
|
testChild(ObjectMappers.JSON_MAPPER);
|
||||||
testChild(ObjectMappers.CBOR_MAPPER);
|
testChild(ObjectMappers.CBOR_MAPPER);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testEvent() {
|
||||||
|
EventMessage eventMessage = new EventMessage();
|
||||||
|
eventMessage.setEvent("test");
|
||||||
|
eventMessage.setDeviceId("test-device");
|
||||||
|
eventMessage.setData("123");
|
||||||
|
|
||||||
|
TopicPayload payload = TopicMessageCodec.encode(ObjectMappers.JSON_MAPPER, eventMessage);
|
||||||
|
assertEquals(payload.getTopic(), "/test-device/event/test");
|
||||||
|
|
||||||
|
|
||||||
|
DeviceMessage msg = TopicMessageCodec
|
||||||
|
.decode(ObjectMappers.JSON_MAPPER, payload.getTopic(), payload.getPayload())
|
||||||
|
.blockLast();
|
||||||
|
assertEquals(msg.toJson(),eventMessage.toJson());
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue