@GroupSequenceProvider and group is a superset

只谈情不闲聊 提交于 2019-12-25 02:42:34

问题


Simple class Person.class

class Person {

@NotNull(groups = {PartlyCheck.class})
private String name;

@NotNull(groups = {FullCheck.class})
private String adress;

private boolean isFullCheck;

}

Check interfaces

public interface PartlyCheck{}
public interface FullCheck extends PartlyCheck{}

I use two approach:

    if(person.isFullCheck) {

      validator.validate(person, FullCheck.class);

    else {

       validator.validate(person, PartlyCheck.class);
  }

1.

If isFullCheck=true used both checks (FullCheck.class and PartlyCheck.class)

If isFullCheck=false used only PartlyCheck.class.

It is an understandable behavior.

    @GroupSequenceProvider(PersonGroupSequenceProvider.class)

    @Override
    public List<Class<?>> getValidationGroups(Person person) {                

       List<Class<?>> defaultGroupSequence = new ArrayList<>();
       defaultGroupSequence.add(Person.class);                    


        if (person.isFullCheck) {                                
            defaultGroupSequence.add(FullCheck.class);
        } else {                                
            defaultGroupSequence.add(PartlyCheck.class);
        }       


       return defaultGroupSequence;
   }
  1. In the second case, I added @GroupSequenceProvider(PersonGroupSequenceProvider.class).

If isFullCheck=true used only FullCheck.class.

Why extends is not considered for this case?

If isFullCheck=false used only PartlyCheck.class.

来源:https://stackoverflow.com/questions/21363481/groupsequenceprovider-and-group-is-a-superset

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!