Merge pull request #736 from kunlong-luo/fix-null-point-and-cast-exception
fix: 修复一些问题pull/738/head
commit
6246ce6ba8
|
@ -4,6 +4,7 @@ import com.genersoft.iot.vmp.common.VideoManagerConstants;
|
|||
import com.genersoft.iot.vmp.conf.UserSetting;
|
||||
import com.genersoft.iot.vmp.gb28181.bean.SipTransactionInfo;
|
||||
import com.genersoft.iot.vmp.gb28181.bean.SsrcTransaction;
|
||||
import com.genersoft.iot.vmp.utils.JsonUtil;
|
||||
import com.genersoft.iot.vmp.utils.redis.RedisUtil;
|
||||
import gov.nist.javax.sip.message.SIPResponse;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
@ -133,7 +134,7 @@ public class VideoStreamSessionManager {
|
|||
List<SsrcTransaction> result= new ArrayList<>();
|
||||
for (int i = 0; i < ssrcTransactionKeys.size(); i++) {
|
||||
String key = (String)ssrcTransactionKeys.get(i);
|
||||
SsrcTransaction ssrcTransaction = (SsrcTransaction)RedisUtil.get(key);
|
||||
SsrcTransaction ssrcTransaction = JsonUtil.redisJsonToObject(key, SsrcTransaction.class);
|
||||
result.add(ssrcTransaction);
|
||||
}
|
||||
return result;
|
||||
|
|
|
@ -22,6 +22,7 @@ import com.genersoft.iot.vmp.service.bean.SSRCInfo;
|
|||
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
|
||||
import com.genersoft.iot.vmp.storager.dao.MediaServerMapper;
|
||||
import com.genersoft.iot.vmp.utils.DateUtil;
|
||||
import com.genersoft.iot.vmp.utils.JsonUtil;
|
||||
import com.genersoft.iot.vmp.utils.redis.RedisUtil;
|
||||
import com.genersoft.iot.vmp.vmanager.bean.ErrorCode;
|
||||
import okhttp3.OkHttpClient;
|
||||
|
@ -228,11 +229,10 @@ public class MediaServerServiceImpl implements IMediaServerService {
|
|||
String onlineKey = VideoManagerConstants.MEDIA_SERVERS_ONLINE_PREFIX + userSetting.getServerId();
|
||||
for (Object mediaServerKey : mediaServerKeys) {
|
||||
String key = (String) mediaServerKey;
|
||||
JSONObject jsonObject = (JSONObject) RedisUtil.get(key);
|
||||
if (Objects.isNull(jsonObject)) {
|
||||
MediaServerItem mediaServerItem = JsonUtil.redisJsonToObject(key, MediaServerItem.class);
|
||||
if (Objects.isNull(mediaServerItem)) {
|
||||
continue;
|
||||
}
|
||||
MediaServerItem mediaServerItem = JSON.parseObject(jsonObject.toJSONString(), MediaServerItem.class);
|
||||
// 检查状态
|
||||
Double aDouble = RedisUtil.zScore(onlineKey, mediaServerItem.getId());
|
||||
if (aDouble != null) {
|
||||
|
@ -284,7 +284,7 @@ public class MediaServerServiceImpl implements IMediaServerService {
|
|||
return null;
|
||||
}
|
||||
String key = VideoManagerConstants.MEDIA_SERVER_PREFIX + userSetting.getServerId() + "_" + mediaServerId;
|
||||
return (MediaServerItem)RedisUtil.get(key);
|
||||
return JsonUtil.redisJsonToObject(key, MediaServerItem.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -400,9 +400,11 @@ public class MediaServerServiceImpl implements IMediaServerService {
|
|||
SsrcConfig ssrcConfig = new SsrcConfig(zlmServerConfig.getGeneralMediaServerId(), null, sipConfig.getDomain());
|
||||
serverItem.setSsrcConfig(ssrcConfig);
|
||||
}else {
|
||||
MediaServerItem mediaServerItemInRedis = (MediaServerItem)RedisUtil.get(key);
|
||||
MediaServerItem mediaServerItemInRedis = JsonUtil.redisJsonToObject(key, MediaServerItem.class);
|
||||
if (Objects.nonNull(mediaServerItemInRedis)) {
|
||||
serverItem.setSsrcConfig(mediaServerItemInRedis.getSsrcConfig());
|
||||
}
|
||||
}
|
||||
RedisUtil.set(key, serverItem);
|
||||
resetOnlineServerItem(serverItem);
|
||||
if (serverItem.isAutoConfig()) {
|
||||
|
|
|
@ -17,6 +17,7 @@ import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
|
|||
import com.genersoft.iot.vmp.storager.dao.DeviceChannelMapper;
|
||||
import com.genersoft.iot.vmp.storager.dao.dto.PlatformRegisterInfo;
|
||||
import com.genersoft.iot.vmp.utils.DateUtil;
|
||||
import com.genersoft.iot.vmp.utils.JsonUtil;
|
||||
import com.genersoft.iot.vmp.utils.SystemInfoUtils;
|
||||
import com.genersoft.iot.vmp.utils.redis.RedisUtil;
|
||||
import org.slf4j.Logger;
|
||||
|
@ -157,7 +158,10 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
|
|||
}
|
||||
for (Object player : players) {
|
||||
String key = (String) player;
|
||||
StreamInfo streamInfo = (StreamInfo) RedisUtil.get(key);
|
||||
StreamInfo streamInfo = JsonUtil.redisJsonToObject(key, StreamInfo.class);
|
||||
if (Objects.isNull(streamInfo)) {
|
||||
continue;
|
||||
}
|
||||
streamInfos.put(streamInfo.getDeviceID() + "_" + streamInfo.getChannelId(), streamInfo);
|
||||
}
|
||||
return streamInfos;
|
||||
|
@ -624,8 +628,7 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
|
|||
@Override
|
||||
public ThirdPartyGB queryMemberNoGBId(String queryKey) {
|
||||
String key = VideoManagerConstants.WVP_STREAM_GB_ID_PREFIX + queryKey;
|
||||
JSONObject jsonObject = (JSONObject)RedisUtil.get(key);
|
||||
return jsonObject.to(ThirdPartyGB.class);
|
||||
return JsonUtil.redisJsonToObject(key, ThirdPartyGB.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -664,7 +667,7 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
|
|||
@Override
|
||||
public Device getDevice(String deviceId) {
|
||||
String key = VideoManagerConstants.DEVICE_PREFIX + userSetting.getServerId() + "_" + deviceId;
|
||||
return (Device)RedisUtil.get(key);
|
||||
return JsonUtil.redisJsonToObject(key, Device.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -676,7 +679,7 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
|
|||
@Override
|
||||
public GPSMsgInfo getGpsMsgInfo(String gbId) {
|
||||
String key = VideoManagerConstants.WVP_STREAM_GPS_MSG_PREFIX + userSetting.getServerId() + "_" + gbId;
|
||||
return (GPSMsgInfo)RedisUtil.get(key);
|
||||
return JsonUtil.redisJsonToObject(key, GPSMsgInfo.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -686,9 +689,9 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
|
|||
List<Object> keys = RedisUtil.scan(scanKey);
|
||||
for (Object o : keys) {
|
||||
String key = (String) o;
|
||||
GPSMsgInfo gpsMsgInfo = (GPSMsgInfo) RedisUtil.get(key);
|
||||
if (!gpsMsgInfo.isStored()) { // 只取没有存过得
|
||||
result.add((GPSMsgInfo) RedisUtil.get(key));
|
||||
GPSMsgInfo gpsMsgInfo = JsonUtil.redisJsonToObject(key, GPSMsgInfo.class);
|
||||
if (Objects.nonNull(gpsMsgInfo) && !gpsMsgInfo.isStored()) { // 只取没有存过得
|
||||
result.add(JsonUtil.redisJsonToObject(key, GPSMsgInfo.class));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -710,7 +713,7 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
|
|||
@Override
|
||||
public StreamAuthorityInfo getStreamAuthorityInfo(String app, String stream) {
|
||||
String key = VideoManagerConstants.MEDIA_STREAM_AUTHORITY + userSetting.getServerId() + "_" + app+ "_" + stream ;
|
||||
return (StreamAuthorityInfo) RedisUtil.get(key);
|
||||
return JsonUtil.redisJsonToObject(key, StreamAuthorityInfo.class);
|
||||
|
||||
}
|
||||
|
||||
|
@ -721,7 +724,7 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
|
|||
List<Object> keys = RedisUtil.scan(scanKey);
|
||||
for (Object o : keys) {
|
||||
String key = (String) o;
|
||||
result.add((StreamAuthorityInfo) RedisUtil.get(key));
|
||||
result.add(JsonUtil.redisJsonToObject(key, StreamAuthorityInfo.class));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
@ -735,7 +738,7 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
|
|||
List<Object> keys = RedisUtil.scan(scanKey);
|
||||
if (keys.size() > 0) {
|
||||
String key = (String) keys.get(0);
|
||||
result = (OnStreamChangedHookParam)RedisUtil.get(key);
|
||||
result = JsonUtil.redisJsonToObject(key, OnStreamChangedHookParam.class);
|
||||
}
|
||||
|
||||
return result;
|
||||
|
|
|
@ -0,0 +1,37 @@
|
|||
package com.genersoft.iot.vmp.utils;
|
||||
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.genersoft.iot.vmp.utils.redis.RedisUtil;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* JsonUtil
|
||||
*
|
||||
* @author KunLong-Luo
|
||||
* @version 1.0.0
|
||||
* @since 2023/2/2 15:24
|
||||
*/
|
||||
public final class JsonUtil {
|
||||
|
||||
private JsonUtil() {
|
||||
}
|
||||
|
||||
/**
|
||||
* safe json type conversion
|
||||
*
|
||||
* @param key redis key
|
||||
* @param clazz cast type
|
||||
* @param <T>
|
||||
* @return result type
|
||||
*/
|
||||
public static <T> T redisJsonToObject(String key, Class<T> clazz) {
|
||||
JSONObject jsonObject = (JSONObject) RedisUtil.get(key);
|
||||
if (Objects.isNull(jsonObject)) {
|
||||
return null;
|
||||
}
|
||||
return JSON.parseObject(jsonObject.toJSONString(), clazz);
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue