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