Browse Source

优化协议调试

zhou-hao 5 years ago
parent
commit
2452aacf31

+ 13 - 6
jetlinks-manager/device-manager/src/main/java/org/jetlinks/community/device/web/ProtocolSupportController.java

@@ -1,9 +1,11 @@
 package org.jetlinks.community.device.web;
 
+import com.alibaba.fastjson.JSON;
 import lombok.AllArgsConstructor;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
+import org.hswebframework.utils.StringUtils;
 import org.hswebframework.web.authorization.annotation.Authorize;
 import org.hswebframework.web.authorization.annotation.QueryAction;
 import org.hswebframework.web.authorization.annotation.Resource;
@@ -110,21 +112,24 @@ public class ProtocolSupportController implements
 
     @PostMapping("/decode")
     @SaveAction
-    public Flux<Message> decode(@RequestBody Mono<ProtocolDecodeRequest> entity) {
+    public Mono<String> decode(@RequestBody Mono<ProtocolDecodeRequest> entity) {
         return entity
-            .flatMapMany(request -> {
+            .<Object>flatMapMany(request -> {
                 ProtocolSupportDefinition supportEntity = request.getEntity().toDeployDefinition();
                 supportEntity.setId("_debug");
                 return supportLoader.load(supportEntity)
                     .flatMapMany(protocol -> request
                         .getRequest()
                         .doDecode(protocol, null));
-            });
+            })
+            .collectList()
+            .map(JSON::toJSONString)
+            .onErrorResume(err-> Mono.just(StringUtils.throwable2String(err)));
     }
 
     @PostMapping("/encode")
     @SaveAction
-    public Flux<Object> encode(@RequestBody Mono<ProtocolEncodeRequest> entity) {
+    public  Mono<String> encode(@RequestBody Mono<ProtocolEncodeRequest> entity) {
         return entity
             .flatMapMany(request -> {
                 ProtocolSupportDefinition supportEntity = request.getEntity().toDeployDefinition();
@@ -133,10 +138,12 @@ public class ProtocolSupportController implements
                     .flatMapMany(protocol -> request
                         .getRequest()
                         .doEncode(protocol, null));
-            });
+            })
+            .collectList()
+            .map(JSON::toJSONString)
+            .onErrorResume(err-> Mono.just(StringUtils.throwable2String(err)));
     }
 
-
     @GetMapping("/units")
     @Authorize(merge = false)
     public Flux<ValueUnit> allUnits() {

+ 5 - 4
jetlinks-manager/device-manager/src/main/java/org/jetlinks/community/device/web/request/ProtocolEncodePayload.java

@@ -45,10 +45,11 @@ public class ProtocolEncodePayload {
                     return operator;
                 }
             }))
-            .map(msg->{
-                if(msg instanceof MqttMessage){
-                    JSONObject obj=(JSONObject)JSON.toJSON(msg);
-                    obj.put("payload",payloadType.read(msg.getPayload()));
+            .map(msg -> {
+                if (msg instanceof MqttMessage) {
+                    JSONObject obj = (JSONObject) JSON.toJSON(msg);
+                    obj.put("payload", payloadType.read(msg.getPayload()));
+                    obj.remove("bytes");
                     return obj;
                 }
                 return getPayloadType().read(msg.getPayload());