Commit 59bda74e88ec95890cb13d54aefef38e27411c01
1 parent
4fe56726
处理获取消息体内容为空时造成的空指针异常
Showing
9 changed files
with
29 additions
and
8 deletions
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/NotifyRequestProcessor.java
| ... | ... | @@ -101,6 +101,10 @@ public class NotifyRequestProcessor extends SIPRequestProcessorParent implements |
| 101 | 101 | try { |
| 102 | 102 | HandlerCatchData take = taskQueue.poll(); |
| 103 | 103 | Element rootElement = getRootElement(take.getEvt()); |
| 104 | + if (rootElement == null) { | |
| 105 | + logger.error("处理NOTIFY消息时未获取到消息体,{}", take.getEvt().getRequest()); | |
| 106 | + continue; | |
| 107 | + } | |
| 104 | 108 | String cmd = XmlUtil.getText(rootElement, "CmdType"); |
| 105 | 109 | |
| 106 | 110 | if (CmdType.CATALOG.equals(cmd)) { |
| ... | ... | @@ -142,6 +146,10 @@ public class NotifyRequestProcessor extends SIPRequestProcessorParent implements |
| 142 | 146 | |
| 143 | 147 | // 回复 200 OK |
| 144 | 148 | Element rootElement = getRootElement(evt); |
| 149 | + if (rootElement == null) { | |
| 150 | + logger.error("处理MobilePosition移动位置Notify时未获取到消息体,{}", evt.getRequest()); | |
| 151 | + return; | |
| 152 | + } | |
| 145 | 153 | |
| 146 | 154 | MobilePosition mobilePosition = new MobilePosition(); |
| 147 | 155 | mobilePosition.setCreateTime(DateUtil.getNow()); |
| ... | ... | @@ -229,6 +237,10 @@ public class NotifyRequestProcessor extends SIPRequestProcessorParent implements |
| 229 | 237 | String deviceId = SipUtils.getUserIdFromFromHeader(fromHeader); |
| 230 | 238 | |
| 231 | 239 | Element rootElement = getRootElement(evt); |
| 240 | + if (rootElement == null) { | |
| 241 | + logger.error("处理alarm设备报警Notify时未获取到消息体{}", evt.getRequest()); | |
| 242 | + return; | |
| 243 | + } | |
| 232 | 244 | Element deviceIdElement = rootElement.element("DeviceID"); |
| 233 | 245 | String channelId = deviceIdElement.getText().toString(); |
| 234 | 246 | |
| ... | ... | @@ -239,7 +251,7 @@ public class NotifyRequestProcessor extends SIPRequestProcessorParent implements |
| 239 | 251 | } |
| 240 | 252 | rootElement = getRootElement(evt, device.getCharset()); |
| 241 | 253 | if (rootElement == null) { |
| 242 | - logger.warn("[ NotifyAlarm ] content cannot be null"); | |
| 254 | + logger.warn("[ NotifyAlarm ] content cannot be null, {}", evt.getRequest()); | |
| 243 | 255 | return; |
| 244 | 256 | } |
| 245 | 257 | DeviceAlarm deviceAlarm = new DeviceAlarm(); |
| ... | ... | @@ -338,7 +350,7 @@ public class NotifyRequestProcessor extends SIPRequestProcessorParent implements |
| 338 | 350 | } |
| 339 | 351 | Element rootElement = getRootElement(evt, device.getCharset()); |
| 340 | 352 | if (rootElement == null) { |
| 341 | - logger.warn("[ 收到目录订阅 ] content cannot be null"); | |
| 353 | + logger.warn("[ 收到目录订阅 ] content cannot be null, {}", evt.getRequest()); | |
| 342 | 354 | return; |
| 343 | 355 | } |
| 344 | 356 | Element deviceListElement = rootElement.element("DeviceList"); | ... | ... |
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/SubscribeRequestProcessor.java
| ... | ... | @@ -84,6 +84,10 @@ public class SubscribeRequestProcessor extends SIPRequestProcessorParent impleme |
| 84 | 84 | Request request = evt.getRequest(); |
| 85 | 85 | try { |
| 86 | 86 | Element rootElement = getRootElement(evt); |
| 87 | + if (rootElement == null) { | |
| 88 | + logger.error("处理SUBSCRIBE请求 未获取到消息体{}", evt.getRequest()); | |
| 89 | + return; | |
| 90 | + } | |
| 87 | 91 | String cmd = XmlUtil.getText(rootElement, "CmdType"); |
| 88 | 92 | if (CmdType.MOBILE_POSITION.equals(cmd)) { |
| 89 | 93 | processNotifyMobilePosition(evt, rootElement); | ... | ... |
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/MessageRequestProcessor.java
| ... | ... | @@ -108,6 +108,11 @@ public class MessageRequestProcessor extends SIPRequestProcessorParent implement |
| 108 | 108 | Element rootElement = null; |
| 109 | 109 | try { |
| 110 | 110 | rootElement = getRootElement(evt); |
| 111 | + if (rootElement == null) { | |
| 112 | + logger.error("处理SUBSCRIBE请求 未获取到消息体{}", evt.getRequest()); | |
| 113 | + responseAck(evt, Response.BAD_REQUEST, "content is null"); | |
| 114 | + return; | |
| 115 | + } | |
| 111 | 116 | } catch (DocumentException e) { |
| 112 | 117 | logger.warn("解析XML消息内容异常", e); |
| 113 | 118 | // 不存在则回复404 | ... | ... |
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/MobilePositionNotifyMessageHandler.java
| ... | ... | @@ -63,7 +63,7 @@ public class MobilePositionNotifyMessageHandler extends SIPRequestProcessorParen |
| 63 | 63 | try { |
| 64 | 64 | rootElement = getRootElement(evt, device.getCharset()); |
| 65 | 65 | if (rootElement == null) { |
| 66 | - logger.warn("[ 移动设备位置数据通知 ] content cannot be null"); | |
| 66 | + logger.warn("[ 移动设备位置数据通知 ] content cannot be null, {}", evt.getRequest()); | |
| 67 | 67 | responseAck(evt, Response.BAD_REQUEST); |
| 68 | 68 | return; |
| 69 | 69 | } | ... | ... |
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/CatalogResponseMessageHandler.java
| ... | ... | @@ -96,7 +96,7 @@ public class CatalogResponseMessageHandler extends SIPRequestProcessorParent imp |
| 96 | 96 | try { |
| 97 | 97 | Element rootElement = getRootElement(take.getEvt(), take.getDevice().getCharset()); |
| 98 | 98 | if (rootElement == null) { |
| 99 | - logger.warn("[ 收到通道 ] content cannot be null"); | |
| 99 | + logger.warn("[ 收到通道 ] content cannot be null, {}", evt.getRequest()); | |
| 100 | 100 | continue; |
| 101 | 101 | } |
| 102 | 102 | Element deviceListElement = rootElement.element("DeviceList"); | ... | ... |
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/DeviceInfoResponseMessageHandler.java
| ... | ... | @@ -76,7 +76,7 @@ public class DeviceInfoResponseMessageHandler extends SIPRequestProcessorParent |
| 76 | 76 | try { |
| 77 | 77 | rootElement = getRootElement(evt, device.getCharset()); |
| 78 | 78 | if (rootElement == null) { |
| 79 | - logger.warn("[ 接收到DeviceInfo应答消息 ] content cannot be null"); | |
| 79 | + logger.warn("[ 接收到DeviceInfo应答消息 ] content cannot be null, {}", evt.getRequest()); | |
| 80 | 80 | responseAck(evt, Response.BAD_REQUEST); |
| 81 | 81 | return; |
| 82 | 82 | } | ... | ... |
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/MobilePositionResponseMessageHandler.java
| ... | ... | @@ -66,7 +66,7 @@ public class MobilePositionResponseMessageHandler extends SIPRequestProcessorPar |
| 66 | 66 | try { |
| 67 | 67 | rootElement = getRootElement(evt, device.getCharset()); |
| 68 | 68 | if (rootElement == null) { |
| 69 | - logger.warn("[ 移动设备位置数据查询回复 ] content cannot be null"); | |
| 69 | + logger.warn("[ 移动设备位置数据查询回复 ] content cannot be null, {}", evt.getRequest()); | |
| 70 | 70 | responseAck(evt, Response.BAD_REQUEST); |
| 71 | 71 | return; |
| 72 | 72 | } | ... | ... |
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/PresetQueryResponseMessageHandler.java
| ... | ... | @@ -53,7 +53,7 @@ public class PresetQueryResponseMessageHandler extends SIPRequestProcessorParent |
| 53 | 53 | try { |
| 54 | 54 | rootElement = getRootElement(evt, device.getCharset()); |
| 55 | 55 | if (rootElement == null) { |
| 56 | - logger.warn("[ 设备预置位查询应答 ] content cannot be null"); | |
| 56 | + logger.warn("[ 设备预置位查询应答 ] content cannot be null, {}", evt.getRequest()); | |
| 57 | 57 | responseAck(evt, Response.BAD_REQUEST); |
| 58 | 58 | return; |
| 59 | 59 | } | ... | ... |
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/RecordInfoResponseMessageHandler.java
| ... | ... | @@ -81,7 +81,7 @@ public class RecordInfoResponseMessageHandler extends SIPRequestProcessorParent |
| 81 | 81 | HandlerCatchData take = taskQueue.poll(); |
| 82 | 82 | Element rootElementForCharset = getRootElement(take.getEvt(), take.getDevice().getCharset()); |
| 83 | 83 | if (rootElement == null) { |
| 84 | - logger.warn("[ 国标录像 ] content cannot be null"); | |
| 84 | + logger.warn("[ 国标录像 ] content cannot be null, {}", evt.getRequest()); | |
| 85 | 85 | continue; |
| 86 | 86 | } |
| 87 | 87 | String sn = getText(rootElementForCharset, "SN"); | ... | ... |