浏览代码

补充solar中AppInfo和AppLicense模型的json配置,允许忽略未知属性,兼容后续补充code字段的情况

Signed-off-by: luoshi <luoshi@qmth.com.cn>
luoshi 2 年之前
父节点
当前提交
a08c2f09aa

+ 3 - 0
core-solar/src/main/java/com/qmth/boot/core/solar/model/AppInfo.java

@@ -1,10 +1,13 @@
 package com.qmth.boot.core.solar.model;
 
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+
 import java.io.Serializable;
 
 /**
  * 应用部署信息
  */
+@JsonIgnoreProperties(ignoreUnknown = true)
 public class AppInfo implements Serializable {
 
     private static final long serialVersionUID = -6271285277552557162L;

+ 3 - 0
core-solar/src/main/java/com/qmth/boot/core/solar/model/AppLicense.java

@@ -1,11 +1,14 @@
 package com.qmth.boot.core.solar.model;
 
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+
 import java.util.ArrayList;
 import java.util.List;
 
 /**
  * 由授权文件激活的应用部署信息,额外附带了允许访问的机构信息
  */
+@JsonIgnoreProperties(ignoreUnknown = true)
 public class AppLicense extends AppInfo {
 
     private static final long serialVersionUID = 449739508288160613L;

+ 13 - 0
core-solar/src/test/java/com/qmth/boot/test/solar/AppLicenseUtilTest.java

@@ -1,9 +1,13 @@
 package com.qmth.boot.test.solar;
 
+import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import com.qmth.boot.core.solar.model.AppLicense;
 import com.qmth.boot.tools.crypto.RSA;
 import com.qmth.boot.tools.device.DeviceInfo;
 import com.qmth.boot.tools.models.ByteArray;
+import org.junit.Assert;
+import org.junit.Test;
 
 import java.io.File;
 
@@ -15,4 +19,13 @@ public class AppLicenseUtilTest {
                 .encrypt(new ObjectMapper().writeValueAsBytes(DeviceInfo.current()))
                 .toFile(new File("/Users/luoshi/Downloads/solar/device-test.info"));
     }
+
+    @Test
+    public void testParseAppInfo() throws JsonProcessingException {
+        String content = "{\"id\":26,\"name\":\"本地部署\",\"code\":\"markingcloud\",\"control\":{\"expireTime\":33239779200000,\"maxOnlineUserCount\":10},\"orgs\":[]}";
+        ObjectMapper mapper = new ObjectMapper();
+        AppLicense license = mapper.readValue(content, AppLicense.class);
+        Assert.assertNotNull(license);
+        Assert.assertEquals(26, (long) license.getId());
+    }
 }