/src/test/java/com/alibaba/json/bvt/issue_1400/Issue1496.java
https://github.com/alibaba/fastjson · Java · 201 lines · 155 code · 36 blank · 10 comment · 11 complexity · 3ce86a346020e3c9c614f547ff76ca0f MD5 · raw file
- package com.alibaba.json.bvt.issue_1400;
- import com.alibaba.fastjson.JSON;
- import com.alibaba.fastjson.annotation.JSONType;
- import com.alibaba.fastjson.serializer.SerializeConfig;
- import junit.framework.TestCase;
- import java.util.Arrays;
- import java.util.List;
- public class Issue1496 extends TestCase {
- public void test_for_issue() throws Exception {
- String json = JSON.toJSONString(SetupStatus.FINAL_TRAIL);
- assertEquals("{\"canRefuse\":true,\"code\":3,\"declaringClass\":\"com.alibaba.json.bvt.issue_1400.Issue1496$SetupStatus\",\"first\":false,\"last\":false,\"name\":\"FINAL_TRAIL\",\"nameCn\":\"公益委员会/理事会/理事长审核\"}", json);
- }
- public interface ISetupStatusInfo {
- List<SetupStatus> nextList();
- Boolean isFirst();
- Boolean isLast();
- }
- public interface ISetupStatusProcess {
- /**
- *
- * @return
- */
- SetupStatus refuse();
- /**
- * 状态转移失败返回null
- *
- * @param name
- * @return
- */
- SetupStatus next(String name);
- }
- @JSONType(serializeEnumAsJavaBean = true)
- public enum SetupStatus implements ISetupStatusInfo, ISetupStatusProcess {
- EDIT(0, "EDIT", "编辑中") {
- public List<SetupStatus> nextList() {
- return Arrays.asList(FIRST_TRAIL);
- }
- @Override
- public Boolean isFirst() {
- return true;
- }
- @Override
- public SetupStatus refuse() {
- return EDIT;
- }
- }, FIRST_TRAIL(1, "FIRST_TRAIL", "初审") {
- public List<SetupStatus> nextList() {
- return Arrays.asList(EXPERT, FINAL_TRAIL);
- }
- @Override
- public SetupStatus refuse() {
- return EDIT;
- }
- }, EXPERT(2, "EXPERT", "专家补充意见", false) {
- public List<SetupStatus> nextList() {
- return Arrays.asList(FINAL_TRAIL);
- }
- }, FINAL_TRAIL(3, "FINAL_TRAIL", "公益委员会/理事会/理事长审核") {
- public List<SetupStatus> nextList() {
- return Arrays.asList(PASS);
- }
- @Override
- public SetupStatus refuse() {
- return EDIT;
- }
- }, PASS(4, "PASS", "项目通过", false) {
- public List<SetupStatus> nextList() {
- return Arrays.asList(SIGN);
- }
- }, SIGN(5, "SIGN", "协议签署", false) {
- @Override
- public List<SetupStatus> nextList() {
- return Arrays.asList(ACTIVE);
- }
- }, ACTIVE(6, "ACTIVE", "启动") {
- @Override
- public List<SetupStatus> nextList() {
- return null;
- }
- @Override
- public Boolean isLast() {
- return true;
- }
- };
- private int code;
- private String name;
- private String nameCn;
- private boolean canRefuse;
- SetupStatus(int code, String name, String nameCn) {
- this.code = code;
- this.name = name;
- this.nameCn = nameCn;
- this.canRefuse = true;
- }
- SetupStatus(int code, String name, String nameCn, boolean canRefuse) {
- this.code = code;
- this.name = name;
- this.nameCn = nameCn;
- this.canRefuse = canRefuse;
- }
- public int getCode() {
- return code;
- }
- public void setCode(int code) {
- this.code = code;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getNameCn() {
- return nameCn;
- }
- public void setNameCn(String nameCn) {
- this.nameCn = nameCn;
- }
- public boolean isCanRefuse() {
- return canRefuse;
- }
- public void setCanRefuse(boolean canRefuse) {
- this.canRefuse = canRefuse;
- }
- public static SetupStatus getFromCode(Integer code) {
- if (code == null) {
- return null;
- }
- for (SetupStatus status : values()) {
- if (status.code == code) {
- return status;
- }
- }
- throw new IllegalArgumentException("unknown SetupStatus enumeration code:" + code);
- }
- public static SetupStatus getFromName(String name) {
- if (name == null) {
- return null;
- }
- for (SetupStatus status : values()) {
- if (status.name.equals(name)) {
- return status;
- }
- }
- return null;
- }
- public Boolean isFirst() {
- return false;
- }
- public Boolean isLast() {
- return false;
- }
- public SetupStatus refuse() {
- return null;
- }
- public SetupStatus next(String name) {
- SetupStatus status = getFromName(name);
- return name != null && this.nextList().contains(status) ? status : null;
- }
- @Override
- public String toString() {
- return "SetupStatus{" + "code=" + code + ", name='" + name + '\'' + ", nameCn='" + nameCn + '\'' + ", canRefuse=" + canRefuse + '}';
- }
- }
- }