From a7aaeabc7873a0eafb4a7ecad7f65b018b7a9bc9 Mon Sep 17 00:00:00 2001
From: sean.zhou <sean.zhou@dji.com>
Date: Fri, 24 Feb 2023 19:31:23 +0800
Subject: [PATCH] What's new? 1. Add license for dock. 2. Modify the logic corresponding to the firmware file and device type. 3. Add multiple mqtt clients options. 4. Modify the structure of the interface for obtaining the device list. 5. Fixed some issues.

---
 src/main/java/com/dji/sample/component/mqtt/handler/InboundMessageRouter.java |   81 ++--------------------------------------
 1 files changed, 5 insertions(+), 76 deletions(-)

diff --git a/src/main/java/com/dji/sample/component/mqtt/handler/InboundMessageRouter.java b/src/main/java/com/dji/sample/component/mqtt/handler/InboundMessageRouter.java
index 3047ea5..8aa9112 100644
--- a/src/main/java/com/dji/sample/component/mqtt/handler/InboundMessageRouter.java
+++ b/src/main/java/com/dji/sample/component/mqtt/handler/InboundMessageRouter.java
@@ -1,6 +1,8 @@
 package com.dji.sample.component.mqtt.handler;
 
+import com.dji.sample.common.util.SpringBeanUtils;
 import com.dji.sample.component.mqtt.model.ChannelName;
+import com.dji.sample.component.mqtt.model.DeviceTopicEnum;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.integration.annotation.Router;
 import org.springframework.integration.mqtt.support.MqttHeaders;
@@ -10,12 +12,8 @@
 import org.springframework.messaging.MessageHeaders;
 import org.springframework.stereotype.Component;
 
-import javax.annotation.Resource;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.regex.Pattern;
-
-import static com.dji.sample.component.mqtt.model.TopicConst.*;
 
 /**
  *
@@ -26,48 +24,6 @@
 @Component
 @Slf4j
 public class InboundMessageRouter extends AbstractMessageRouter {
-
-    @Resource(name = ChannelName.INBOUND)
-    private MessageChannel inboundChannel;
-
-    @Resource(name = ChannelName.INBOUND_STATUS)
-    private MessageChannel statusChannel;
-
-    @Resource(name = ChannelName.INBOUND_STATE)
-    private MessageChannel stateChannel;
-
-    @Resource(name = ChannelName.DEFAULT)
-    private MessageChannel defaultChannel;
-
-    @Resource(name = ChannelName.INBOUND_SERVICE_REPLY)
-    private MessageChannel serviceReplyChannel;
-
-    @Resource(name = ChannelName.INBOUND_OSD)
-    private MessageChannel osdChannel;
-
-    @Resource(name = ChannelName.INBOUND_REQUESTS)
-    private MessageChannel requestsChannel;
-
-    @Resource(name = ChannelName.INBOUND_EVENTS)
-    private MessageChannel eventsChannel;
-
-    private static final Pattern PATTERN_TOPIC_STATUS =
-            Pattern.compile("^" + BASIC_PRE + PRODUCT + REGEX_SN + STATUS_SUF + "$");
-
-    private static final Pattern PATTERN_TOPIC_STATE =
-            Pattern.compile("^" + THING_MODEL_PRE + PRODUCT + REGEX_SN + STATE_SUF + "$");
-
-    private static final Pattern PATTERN_TOPIC_SERVICE_REPLY =
-            Pattern.compile("^" + THING_MODEL_PRE + PRODUCT + REGEX_SN + SERVICES_SUF + _REPLY_SUF + "$");
-
-    private static final Pattern PATTERN_TOPIC_OSD =
-            Pattern.compile("^" + THING_MODEL_PRE + PRODUCT + REGEX_SN + OSD_SUF + "$");
-
-    private static final Pattern PATTERN_TOPIC_REQUESTS =
-            Pattern.compile("^" + THING_MODEL_PRE + PRODUCT + REGEX_SN + REQUESTS_SUF + "$");
-
-    private static final Pattern PATTERN_TOPIC_EVENTS =
-            Pattern.compile("^" + THING_MODEL_PRE + PRODUCT + REGEX_SN + EVENTS_SUF + "$");
 
     /**
      * All mqtt broker messages will arrive here before distributing them to different channels.
@@ -81,38 +37,11 @@
         String topic = headers.get(MqttHeaders.RECEIVED_TOPIC).toString();
         byte[] payload = (byte[])message.getPayload();
 
-        // osd
-        if (PATTERN_TOPIC_OSD.matcher(topic).matches()) {
-            return Collections.singleton(osdChannel);
-        }
-
         log.debug("received topic :{} \t payload :{}", topic, new String(payload));
 
-        // status
-        if (PATTERN_TOPIC_STATUS.matcher(topic).matches()) {
-            return Collections.singleton(statusChannel);
-        }
+        DeviceTopicEnum topicEnum = DeviceTopicEnum.find(topic);
+        MessageChannel bean = (MessageChannel) SpringBeanUtils.getBean(topicEnum.getBeanName());
 
-        // state
-        if (PATTERN_TOPIC_STATE.matcher(topic).matches()) {
-            return Collections.singleton(stateChannel);
-        }
-
-        // services_reply
-        if (PATTERN_TOPIC_SERVICE_REPLY.matcher(topic).matches()) {
-            return Collections.singleton(serviceReplyChannel);
-        }
-
-        // requests
-        if (PATTERN_TOPIC_REQUESTS.matcher(topic).matches()) {
-            return Collections.singleton(requestsChannel);
-        }
-
-        // events
-        if (PATTERN_TOPIC_EVENTS.matcher(topic).matches()) {
-            return Collections.singleton(eventsChannel);
-        }
-
-        return Collections.singleton(defaultChannel);
+        return Collections.singleton(bean);
     }
 }

--
Gitblit v1.9.3