LIVR springframework validator

Language Independent Validation Rules (v2.0) Springframework annotation validator support

Лицензия

Лицензия

Группа

Группа

com.github.gaborkolarovics
Идентификатор

Идентификатор

livr-spring-validator
Последняя версия

Последняя версия

1.0.0
Дата

Дата

Тип

Тип

jar
Описание

Описание

LIVR springframework validator
Language Independent Validation Rules (v2.0) Springframework annotation validator support
Ссылка на сайт

Ссылка на сайт

https://github.com/gaborkolarovics/livr-spring-validator
Система контроля версий

Система контроля версий

https://github.com/gaborkolarovics/livr-spring-validator/tree/master

Скачать livr-spring-validator

Как подключить последнюю версию

<!-- https://jarcasting.com/artifacts/com.github.gaborkolarovics/livr-spring-validator/ -->
<dependency>
    <groupId>com.github.gaborkolarovics</groupId>
    <artifactId>livr-spring-validator</artifactId>
    <version>1.0.0</version>
</dependency>
// https://jarcasting.com/artifacts/com.github.gaborkolarovics/livr-spring-validator/
implementation 'com.github.gaborkolarovics:livr-spring-validator:1.0.0'
// https://jarcasting.com/artifacts/com.github.gaborkolarovics/livr-spring-validator/
implementation ("com.github.gaborkolarovics:livr-spring-validator:1.0.0")
'com.github.gaborkolarovics:livr-spring-validator:jar:1.0.0'
<dependency org="com.github.gaborkolarovics" name="livr-spring-validator" rev="1.0.0">
  <artifact name="livr-spring-validator" type="jar" />
</dependency>
@Grapes(
@Grab(group='com.github.gaborkolarovics', module='livr-spring-validator', version='1.0.0')
)
libraryDependencies += "com.github.gaborkolarovics" % "livr-spring-validator" % "1.0.0"
[com.github.gaborkolarovics/livr-spring-validator "1.0.0"]

Зависимости

compile (5)

Идентификатор библиотеки Тип Версия
org.apache.commons : commons-lang3 jar 3.11
com.googlecode.json-simple : json-simple jar 1.1.1
com.google.guava : guava jar 23.0
javax.validation : validation-api jar 2.0.1.Final
com.fasterxml.jackson.core : jackson-databind jar 2.11.3

Модули Проекта

Данный проект не имеет модулей.

livr-validator

build Quality Gate Status Maven Central

Lightweight validator supporting Language Independent Validation Rules Specification (LIVR)

Description

See 'LIVR Specification' for detailed documentation and list of supported rules.

Features:

  • Rules are declarative and language independent
  • Any number of rules for each field
  • Return together errors for all fields
  • Excludes all fields that do not have validation rules described
  • Has possibility to validatate complex hierarchical structures
  • Easy to describe and undersand rules
  • Returns understandable error codes(not error messages)
  • Easy to add own rules
  • Rules are be able to change results output ("trim", "nested_object", for example)
  • Multipurpose (user input validation, configs validation, contracts programming etc)

Usage

Dependency

maven

<dependency>
  <groupId>com.github.gaborkolarovics</groupId>
  <artifactId>livr-validator</artifactId>
  <version>1.5.1</version>
</dependency>

Gradle

implementation 'com.github.gaborkolarovics:livr-validator:1.5.1'

Code

Schema source

  • Simple string schema
@LivrSchema(schema = "{\"name\": \"required\", \"email\": \"required\"}")
public class SamplePOJO{
    private String name;
    private String email;
    // Getter.. Setter..
}
  • Classpath resource
@LivrSchema(schema = "classpath:schemas/samplePOJO.json")
public class SamplePOJO{
    private String name;
    private String email;
    // Getter.. Setter..
}
  • File resource
@LivrSchema(schema = "file:/path/of/schemas/samplePOJO.json")
public class SamplePOJO{
    private String name;
    private String email;
    // Getter.. Setter..
}

Aliases

@LivrSchema(schema = "{\"password\": \"strong_password\"}"
    aliases = { "{\"name\": \"strong_password\", \"rules\": {\"min_length\": 6}, \"error\": \"WEAK_PASSWORD\"}" }
    )
public class SamplePOJO{
    private String password;
    // Getter.. Setter..
}

Alias loader support file: and classpath: resource loading like schema.

Custom rule

  • Pojo
@LivrSchema(schema = "{\"name\": {\"my_length\": 50 }}"
	rules = { MyLength.class })
public class SamplePOJO{
    private String name;
    private String email;
    // Getter.. Setter..
}
  • CustomRule
public class MyLength implements Rule {

    @Override
    public Function<List<Object>, Function<FunctionKeeper, Object>> func() {

        return ruleDefinition -> {
            final Long maxLength = Long.valueOf(ruleDefinition.get(0) + "");

            return wrapper -> {
                if ((wrapper.getValue() == null) || (wrapper.getValue() + "").equals("")) {
                    return "";
                }

                final String value = wrapper.getValue() + "";
                if (value.length() > maxLength) {
                    return "MY_TOO_LONG";
                }
                wrapper.getFieldResultArr().add(value);
                return "";
            };
        };
    }

    @Override
    public String rule() {
        return "my_length";
    }

}

Extra rules

This package contains livr-extra-rules module. See README.md.

@LivrSchema(schema = "{\"id\": \"uuid\" }}"
	scanRulePackages = { "livr.validation.rules" })

License

This repository is licensed under the GNU Affero General Public License.

Author

  • Java (LIVR 2.0), maintainer vlbaluk (Vladislav Baluk)
  • javax annotation, maintainer Gábor Kolárovics

Версии библиотеки

Версия
1.0.0