Commit 59bda74e88ec95890cb13d54aefef38e27411c01

Authored by 648540858
1 parent 4fe56726

处理获取消息体内容为空时造成的空指针异常

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");
... ...