Browse Source

fix: 修复一些npe问题

pull/41/head
Vincent 1 year ago
parent
commit
07b0fd39b7
  1. 3
      src/main/java/com/dji/sdk/cloudapi/device/DockLiveErrorStatus.java
  2. 5
      src/main/java/com/dji/sdk/cloudapi/device/DroneModeCodeEnum.java
  3. 4
      src/main/java/com/dji/sdk/cloudapi/device/api/AbstractDeviceService.java
  4. 11
      src/main/java/com/dji/sdk/cloudapi/wayline/ExecutionStepEnum.java
  5. 8
      src/main/java/com/dji/sdk/mqtt/state/DockStateDataKeyEnum.java
  6. 7
      src/main/java/com/dji/sdk/mqtt/state/RcStateDataKeyEnum.java
  7. 6
      src/main/java/com/dji/sdk/mqtt/state/StateRouter.java

3
src/main/java/com/dji/sdk/cloudapi/device/DockLiveErrorStatus.java

@ -40,11 +40,14 @@ public class DockLiveErrorStatus { @@ -40,11 +40,14 @@ public class DockLiveErrorStatus {
}
public String getMessage() {
if(success){ return "success";}
return errorCode.getMessage();
}
@JsonValue
public Integer getCode() {
//witcom: errorCode.getCode() will cause npe 2023.10.30
if(success){ return 0; }
return source.getSource() * MOD + errorCode.getCode();
}

5
src/main/java/com/dji/sdk/cloudapi/device/DroneModeCodeEnum.java

@ -45,7 +45,10 @@ public enum DroneModeCodeEnum { @@ -45,7 +45,10 @@ public enum DroneModeCodeEnum {
APAS(15),
VIRTUAL_JOYSTICK(16);
VIRTUAL_JOYSTICK(16),
//witcom: 飞机报这个号上来报异常
UNKNOWN_1(17);
private final int code;

4
src/main/java/com/dji/sdk/cloudapi/device/api/AbstractDeviceService.java

@ -169,7 +169,9 @@ public class AbstractDeviceService { @@ -169,7 +169,9 @@ public class AbstractDeviceService {
* @param request data
* @param headers The headers for a {@link Message}.
*/
@ServiceActivator(inputChannel = ChannelName.INBOUND_STATE_DOCK_WPMZ_VERSION)
//witcom: wrong ChannelName. is INBOUND_STATE_DOCK_PAYLOAD??
// @ServiceActivator(inputChannel = ChannelName.INBOUND_STATE_DOCK_WPMZ_VERSION)
@ServiceActivator(inputChannel = ChannelName.INBOUND_STATE_DOCK_PAYLOAD)
public void dockPayload(TopicStateRequest<DockPayload> request, MessageHeaders headers) {
throw new UnsupportedOperationException("dockPayload not implemented");
}

11
src/main/java/com/dji/sdk/cloudapi/wayline/ExecutionStepEnum.java

@ -52,15 +52,16 @@ public enum ExecutionStepEnum { @@ -52,15 +52,16 @@ public enum ExecutionStepEnum {
return msg;
}
//witcom: 这个函数跑不进来,跑了下面的函数,导致FlightTaskProgress报不上来
@JsonCreator
public static ExecutionStepEnum find(int step) {
return Arrays.stream(values()).filter(stepEnum -> stepEnum.min <= step && stepEnum.max >= step).findAny()
.orElseThrow(() -> new CloudSDKException(ExecutionStepEnum.class, step));
}
@JsonCreator
public static ExecutionStepEnum find(String msg) {
return Arrays.stream(values()).filter(stepEnum -> stepEnum.msg.equals(msg)).findAny()
.orElseThrow(() -> new CloudSDKException(ExecutionStepEnum.class, msg));
}
// @JsonCreator
// public static ExecutionStepEnum find(String msg) {
// return Arrays.stream(values()).filter(stepEnum -> stepEnum.msg.equals(msg)).findAny()
// .orElseThrow(() -> new CloudSDKException(ExecutionStepEnum.class, msg));
// }
}

8
src/main/java/com/dji/sdk/mqtt/state/DockStateDataKeyEnum.java

@ -6,6 +6,7 @@ import com.dji.sdk.exception.CloudSDKException; @@ -6,6 +6,7 @@ import com.dji.sdk.exception.CloudSDKException;
import java.util.Arrays;
import java.util.Collections;
import java.util.Optional;
import java.util.Set;
/**
@ -47,9 +48,10 @@ public enum DockStateDataKeyEnum { @@ -47,9 +48,10 @@ public enum DockStateDataKeyEnum {
return keys;
}
public static DockStateDataKeyEnum find(Set<String> keys) {
return Arrays.stream(values()).filter(keyEnum -> !Collections.disjoint(keys, keyEnum.keys)).findAny()
.orElseThrow(() -> new CloudSDKException(DockStateDataKeyEnum.class, keys));
public static Optional<DockStateDataKeyEnum> find(Set<String> keys) {
// com.dji.sdk.mqtt.state.DockStateDataKeyEnum has unknown data: [[mode_code_reason]]
return Arrays.stream(values()).filter(keyEnum -> !Collections.disjoint(keys, keyEnum.keys)).findAny();
// .orElseThrow(() -> new CloudSDKException(DockStateDataKeyEnum.class, keys));
}
}

7
src/main/java/com/dji/sdk/mqtt/state/RcStateDataKeyEnum.java

@ -6,6 +6,7 @@ import com.dji.sdk.exception.CloudSDKException; @@ -6,6 +6,7 @@ import com.dji.sdk.exception.CloudSDKException;
import java.util.Arrays;
import java.util.Collections;
import java.util.Optional;
import java.util.Set;
/**
@ -45,9 +46,9 @@ public enum RcStateDataKeyEnum { @@ -45,9 +46,9 @@ public enum RcStateDataKeyEnum {
return keys;
}
public static RcStateDataKeyEnum find(Set<String> keys) {
return Arrays.stream(values()).filter(keyEnum -> !Collections.disjoint(keys, keyEnum.keys)).findAny()
.orElseThrow(() -> new CloudSDKException(RcStateDataKeyEnum.class, keys));
public static Optional<RcStateDataKeyEnum> find(Set<String> keys) {
return Arrays.stream(values()).filter(keyEnum -> !Collections.disjoint(keys, keyEnum.keys)).findAny();
//.orElseThrow(() -> new CloudSDKException(RcStateDataKeyEnum.class, keys));
}
}

6
src/main/java/com/dji/sdk/mqtt/state/StateRouter.java

@ -80,13 +80,13 @@ public class StateRouter { @@ -80,13 +80,13 @@ public class StateRouter {
//fix: 捕捉数据流发现在注册前设备可能会推送state主题导致产生大量日志 witcom@2023.10.08
//GatewayTypeEnum type = sdkManager.getDeviceSDK(gatewaySn).getType();
return sdkManager.findDeviceSDK(gatewaySn)
.map(gw -> {
.flatMap(gw -> {
GatewayTypeEnum type = gw.getType();
switch (type) {
case RC:
return RcStateDataKeyEnum.find(keys).getClassType();
return RcStateDataKeyEnum.find(keys).map(v->v.getClassType());
case DOCK:
return DockStateDataKeyEnum.find(keys).getClassType();
return DockStateDataKeyEnum.find(keys).map(v->v.getClassType());
default:
throw new CloudSDKException(CloudSDKErrorEnum.WRONG_DATA, "Unexpected value: " + type);
}

Loading…
Cancel
Save