Skip to content

Validators contravariance #65

@javier-godoy

Description

@javier-godoy

ValidatorSupport.getValidators() should return a List<Validator<? super T>> instead of List<Validator<T>>, because PECS.

https://github.com/AppJars/commons-backend/blob/ca5a44fea72cec4a41f3b5c240bd8da590a43b0c/commons-model/src/main/java/com/appjars/saturn/validation/ValidationSupport.java#L27

image
(Picture courtesy: Andrey Tyukin CC-BY-SA)

For instance, if MyEntity implements HasFoo and FooValidator implements Validator<HasFoo>, then MyEntityService can implement getValidators() as:

	public List<Validator<? super MyEntity>> getValidators() {
		return List.of(new FooValidator());
	}

(which makes sense because FooValidator is able to validate any Foo, including my entity)

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions