diff --git a/README.md b/README.md
index fff51af..b2d65e0 100644
--- a/README.md
+++ b/README.md
@@ -1,8 +1,9 @@
[](https://travis-ci.org/vavr-io/vavr-beanvalidation2)
-# Vavr-Beanvalidation 2.0
+# Vavr-Beanvalidation
-This module provides support for bean validation 2.0 (JSR380). Can be used with any service provider of the bean validation spec
+This module provides support for bean validation 2.0 (JSR380) and bean validation 3.0. Can be used with any service
+provider of the bean validation spec
e.g. `org.hibernate.validator:hibernate-validator`
Features:
@@ -17,7 +18,11 @@ as to where violations occurred (index for `Seq`s and key for `Map`s)
# Using the module
-Add the dependency to your classpath. For maven:
+## Dependencies
+
+Depending on the version of bean validation add one of the dependencies to your classpath. For maven:
+
+### Bean validation 2
```xml
@@ -27,6 +32,18 @@ Add the dependency to your classpath. For maven:
```
+### Bean validation 3
+
+```xml
+
+ io.vavr
+ vavr-beanvalidation3
+ 0.10.0
+
+```
+
+## Configuration
+
For the bean validation service provider to pick it up the constraints must be registered.
Add the following to your `validation.xml`:
diff --git a/generator/Generator.scala b/generator/Generator.scala
index e4c0d5c..02fe730 100644
--- a/generator/Generator.scala
+++ b/generator/Generator.scala
@@ -29,43 +29,73 @@ val TUPLE_NODE_NAME = ""
val TARGET_MAIN = s"${project.getBasedir()}/src-gen/main/java"
val TARGET_TEST = s"${project.getBasedir()}/src-gen/test/java"
val TARGET_MAIN_RES = s"${project.getBasedir()}/src-gen/main/resources"
+val VALIDATION_VERSION = s"${project.getArtifactId()}"
val CHARSET = java.nio.charset.StandardCharsets.UTF_8
val collectionValueExtractors =
- """io.vavr.beanvalidation2.valueextraction.SeqValueExtractor
- |io.vavr.beanvalidation2.valueextraction.MapKeyExtractor
- |io.vavr.beanvalidation2.valueextraction.MapValueExtractor
- |io.vavr.beanvalidation2.valueextraction.MultimapKeyExtractor
- |io.vavr.beanvalidation2.valueextraction.MultimapValueExtractor
- |io.vavr.beanvalidation2.valueextraction.EitherLeftExtractor
- |io.vavr.beanvalidation2.valueextraction.EitherRightExtractor
+ s"""io.vavr.${getBeanValidationVersionName(VALIDATION_VERSION)}.valueextraction.SeqValueExtractor
+ |io.vavr.${getBeanValidationVersionName(VALIDATION_VERSION)}.valueextraction.MapKeyExtractor
+ |io.vavr.${getBeanValidationVersionName(VALIDATION_VERSION)}.valueextraction.MapValueExtractor
+ |io.vavr.${getBeanValidationVersionName(VALIDATION_VERSION)}.valueextraction.MultimapKeyExtractor
+ |io.vavr.${getBeanValidationVersionName(VALIDATION_VERSION)}.valueextraction.MultimapValueExtractor
+ |io.vavr.${getBeanValidationVersionName(VALIDATION_VERSION)}.valueextraction.EitherLeftExtractor
+ |io.vavr.${getBeanValidationVersionName(VALIDATION_VERSION)}.valueextraction.EitherRightExtractor
|""".stripMargin
// generate extractors
-for (t <- 1 to N) genVavrFile("io.vavr.beanvalidation2.valueextraction", s"Tuple${t}Extractor")(genExtractor(t))
+for (t <- 1 to N) genVavrFile(
+ s"io.vavr.${getBeanValidationVersionName(VALIDATION_VERSION)}.valueextraction",
+ s"Tuple${t}Extractor")(genExtractor(t)
+)
// generate service loader file
-genFile(TARGET_MAIN_RES, "META-INF/services", "javax.validation.valueextraction.ValueExtractor"){
+genFile(TARGET_MAIN_RES, "META-INF/services", getServiceLoaderName(VALIDATION_VERSION)){
collectionValueExtractors + (for {
a <- 1 to N
p <- 1 to a
- } yield s"""io.vavr.beanvalidation2.valueextraction.Tuple${a}Extractor$$${getNameForPosition(p)}Extractor""").mkString("\n")
+ } yield s"""io.vavr.${getBeanValidationVersionName(VALIDATION_VERSION)}.valueextraction.Tuple${a}Extractor$$${getNameForPosition(p)}Extractor""").mkString("\n")
}
-def genExtractor(arity: Int): (String, String) => String = (packageName: String, className: String) => { raw"""
-import io.vavr.Tuple$arity;
-
-import javax.validation.valueextraction.ExtractedValue;
-import javax.validation.valueextraction.ValueExtractor;
+def getBeanValidationVersionName(validationVersion: String): String = {
+ validationVersion match {
+ case "vavr-beanvalidation2" => "beanvalidation2"
+ case "vavr-beanvalidation3" => "beanvalidation3"
+ }
+}
+def getServiceLoaderName(validationVersion: String): String = {
+ validationVersion match {
+ case "vavr-beanvalidation2" => "javax.validation.valueextraction.ValueExtractor"
+ case "vavr-beanvalidation3" => "jakarta.validation.valueextraction.ValueExtractor"
+ }
+}
-public interface $className {
+def genExtractor(arity: Int): (String, String) => String = (packageName: String, className: String) => {
+ val validationImports = genValidationImports(VALIDATION_VERSION);
+ val extractors = (for (pos <- 1 to arity) yield genExtractorForPosition(arity, pos)).mkString("\n")
+
+ raw"""import io.vavr.Tuple$arity;
+ |
+ |$validationImports
+ |
+ |
+ |public interface $className {
+ |$extractors
+ |}""".stripMargin
+}
-""" + (for (pos <- 1 to arity) yield genExtractorForPosition(arity, pos)).mkString("\n\n") + """
- }"""
+def genValidationImports(validationVersion: String): String = {
+ validationVersion match {
+ case "vavr-beanvalidation2" =>
+ """import javax.validation.valueextraction.ExtractedValue;
+ |import javax.validation.valueextraction.ValueExtractor;""".stripMargin
+ case "vavr-beanvalidation3" =>
+ """import jakarta.validation.valueextraction.ExtractedValue;
+ |import jakarta.validation.valueextraction.ValueExtractor;""".stripMargin
+ }
}
-def genExtractorForPosition(arity: Int, pos: Int)= {
+def genExtractorForPosition(arity: Int, pos: Int) = {
val tupleClass = s"""Tuple$arity"""
val tupleClassWithWildcardTypeParameter = tupleClass + "<" + (1 to arity).map(_ => "?").mkString(", ") + ">"
@@ -74,14 +104,12 @@ def genExtractorForPosition(arity: Int, pos: Int)= {
val typeParameter = s"""$tupleClass<${typeParamResult.mkString(", ")}>"""
s"""
- class ${getNameForPosition(pos)}Extractor implements ValueExtractor<$typeParameter> {
-
- @Override
- public void extractValues($tupleClassWithWildcardTypeParameter originalValue, ValueReceiver receiver) {
- receiver.indexedValue("$TUPLE_NODE_NAME", $pos, originalValue._$pos);
- }
-
- }"""
+ | class ${getNameForPosition(pos)}Extractor implements ValueExtractor<$typeParameter> {
+ | @Override
+ | public void extractValues($tupleClassWithWildcardTypeParameter originalValue, ValueReceiver receiver) {
+ | receiver.indexedValue("$TUPLE_NODE_NAME", $pos, originalValue._$pos);
+ | }
+ | }""".stripMargin
}
/**
@@ -92,27 +120,27 @@ def genExtractorForPosition(arity: Int, pos: Int)= {
* @param gen A generator which produces a String.
*/
def genVavrFile(packageName: String, className: String, baseDir: String = TARGET_MAIN)(gen: (String, String) => String, knownSimpleClassNames: List[String] = List()) =
- genJavaFile(baseDir, packageName, className)(raw"""
-/* __ __ __ __ __ ___
- * \ \ / / \ \ / / __/
- * \ \/ / /\ \ \/ / /
- * \____/__/ \__\____/__/
- *
- * Copyright 2014-2018 Vavr, http://vavr.io
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- """)(gen)(CHARSET)
+ genJavaFile(baseDir, packageName, className)(
+ raw"""|/* __ __ __ __ __ ___
+ | * \ \ / / \ \ / / __/
+ | * \ \/ / /\ \ \/ / /
+ | * \____/__/ \__\____/__/
+ | *
+ | * Copyright 2014-2018 Vavr, http://vavr.io
+ | *
+ | * Licensed under the Apache License, Version 2.0 (the "License");
+ | * you may not use this file except in compliance with the License.
+ | * You may obtain a copy of the License at
+ | *
+ | * http://www.apache.org/licenses/LICENSE-2.0
+ | *
+ | * Unless required by applicable law or agreed to in writing, software
+ | * distributed under the License is distributed on an "AS IS" BASIS,
+ | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ | * See the License for the specific language governing permissions and
+ | * limitations under the License.
+ | */""".stripMargin
+ )(gen)(CHARSET)
/**
@@ -130,15 +158,16 @@ def genJavaFile(baseDir: String, packageName: String, className: String)(classHe
val fileName = className + ".java"
val classBody = gen.apply(packageName, className)
- genFile(baseDir, dirName, fileName)(raw"""
-$classHeader
-package $packageName;
-/*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*\
- G E N E R A T O R C R A F T E D
-\*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-$classBody
-""")
- }
+ genFile(baseDir, dirName, fileName)(
+ raw"""$classHeader
+ |package $packageName;
+ |/*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*\
+ | G E N E R A T O R C R A F T E D
+ |\*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
+ |
+ |$classBody""".stripMargin
+ )
+}
/**
diff --git a/pom.xml b/pom.xml
index 5465909..f2bc988 100644
--- a/pom.xml
+++ b/pom.xml
@@ -2,16 +2,17 @@
4.0.0
- io.vavr
- vavr-beanvalidation2
- 1.0.0-SNAPSHOT
org.sonatype.oss
oss-parent
9
- jar
- Integrates vavr with bean validation 2.x frameworks (JSR 380)
+
+ io.vavr
+ vavr-beanvalidation-parent
+ 1.0.0-SNAPSHOT
+ pom
+ Integrates vavr with bean validation 2.x and 3.x frameworks (JSR 380)
@@ -35,269 +36,230 @@
- 0.10.0
- 1.8
+ 0.10.4
- 2.0.1.Final
- 6.0.17.Final
- 2.3.0
- 3.0.0
+ 4.13.2
+ 3.24.2
- 4.12
- 3.12.2
-
- 3.8.1
+ 3.11.0
3.0.0-M1
3.0.0
- 4.0.0
- 3.1.0
+ 5.1.9
+ 3.2.0
2.5.2
- 2.8.2
- 1.6
+ 3.1.1
+ 3.1.0
0.8.4
- 3.1.2
- 3.1.1
- 2.5.3
- 3.1.0
- 3.3.2
- 2.12.3
- 2.12
+ 3.3.0
+ 3.5.0
+ 3.0.1
+ 3.3.0
+ 4.8.1
+ 2.13.11
+ 2.13
-
-
- io.vavr
- vavr
- ${vavr.version}
-
-
- javax.validation
- validation-api
- ${validation.version}
-
-
-
-
- org.hibernate.validator
- hibernate-validator
- ${hibernate.validator.version}
- test
-
-
-
- javax.xml.bind
- jaxb-api
- ${javax.xml.version}
- test
-
-
- com.sun.xml.bind
- jaxb-core
- ${javax.xml.version}
- test
-
-
- com.sun.xml.bind
- jaxb-impl
- ${javax.xml.version}
- test
-
-
- javax.activation
- activation
- 1.1.1
- test
-
-
-
- org.glassfish
- javax.el
- ${javax.el.version}
- test
-
-
-
- junit
- junit
- ${test.junit.version}
- test
-
-
- org.assertj
- assertj-core
- ${test.assertj.version}
- test
-
-
+
+ vavr-beanvalidation2
+ vavr-beanvalidation3
+
+
+
+
+ org.apache.maven.plugins
+ maven-source-plugin
+ ${maven.source.version}
+
+
+ attach-sources
+ prepare-package
+
+ jar-no-fork
+ test-jar-no-fork
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-clean-plugin
+ ${maven.clean.version}
+
+
+ clean-generated-sources
+ generate-sources
+
+ clean
+
+
+
+
+ ${project.basedir}/src-gen
+
+
+
+
+
+
+
+ net.alchim31.maven
+ scala-maven-plugin
+ ${scala.maven.version}
+
+ ${scala.version}
+ ${scala.compat.version}
+ true
+
+
+
+ generate-sources
+
+ script
+
+
+ plugin
+ ${project.basedir}/../generator/Generator.scala
+
+ -DbeanvalidationVersion=2
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-release-plugin
+ ${maven.release.version}
+
+
+ v@{project.version}
+
+ forked-path
+ false
+
+ ${arguments} -Psonatype-oss-release
+
+
+
+
+ org.codehaus.mojo
+ build-helper-maven-plugin
+ ${maven.build-helper.version}
+
+
+ add-source
+ generate-sources
+
+ add-source
+
+
+
+ ${project.basedir}/src-gen/main/java
+
+
+
+
+ add-test-source
+ generate-sources
+
+ add-resource
+
+
+
+
+ ${project.basedir}/src-gen/main/resources
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ ${maven.compiler.version}
+
+ ${java.version}
+ ${java.version}
+ true
+ true
+
+ -Werror
+ -Xlint:all
+
+ -Xlint:-processing
+
+ -Xlint:-options
+
+
+
+
+ org.apache.maven.plugins
+ maven-deploy-plugin
+ ${maven.deploy.version}
+
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+ ${maven.jar.version}
+
+
+
+ io.vavr.beanvalidation2
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-javadoc-plugin
+ ${maven.javadoc.version}
+
+
+ https://docs.oracle.com/javase/8/docs/api/
+
+
+
+
+ org.apache.felix
+ maven-bundle-plugin
+ ${maven.bundle.version}
+
+
+ bundle-manifest
+ process-classes
+
+ manifest
+
+
+
+
+
+
+
org.apache.maven.plugins
- maven-source-plugin
- ${maven.source.version}
+ maven-enforcer-plugin
+ ${maven.enforcer.version}
- attach-sources
- prepare-package
+ enforce-maven
- jar-no-fork
- test-jar-no-fork
-
-
-
-
-
- org.apache.maven.plugins
- maven-clean-plugin
- ${maven.clean.version}
-
-
- clean-generated-sources
- generate-sources
-
- clean
+ enforce
-
-
- ${project.basedir}/src-gen
-
-
+
+
+ 3.3.9
+
+
-
- net.alchim31.maven
- scala-maven-plugin
- ${scala.maven.version}
-
- ${scala.version}
- ${scala.compat.version}
- true
-
-
-
- generate-sources
-
- script
-
-
- plugin
- ${project.basedir}/generator/Generator.scala
-
-
-
-
-
- org.apache.maven.plugins
- maven-release-plugin
- ${maven.release.version}
-
-
- v@{project.version}
-
- forked-path
- false
-
- ${arguments} -Psonatype-oss-release
-
-
-
-
- org.codehaus.mojo
- build-helper-maven-plugin
- ${maven.build-helper.version}
-
-
- add-source
- generate-sources
-
- add-source
-
-
-
- ${project.basedir}/src-gen/main/java
-
-
-
-
- add-test-source
- generate-sources
-
- add-resource
-
-
-
-
- ${project.basedir}/src-gen/main/resources
-
-
-
-
-
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
- ${maven.compiler.version}
-
- ${java.version}
- ${java.version}
- true
- true
-
- -Werror
- -Xlint:all
-
- -Xlint:-processing
-
- -Xlint:-options
-
-
-
-
- org.apache.maven.plugins
- maven-deploy-plugin
- ${maven.deploy.version}
-
-
- org.apache.maven.plugins
- maven-jar-plugin
- ${maven.jar.version}
-
-
-
- io.vavr.beanvalidation2
-
-
-
-
-
- org.apache.maven.plugins
- maven-javadoc-plugin
- ${maven.javadoc.version}
-
-
- https://docs.oracle.com/javase/8/docs/api/
-
-
-
-
- org.apache.felix
- maven-bundle-plugin
- ${maven.bundle.version}
-
-
- bundle-manifest
- process-classes
-
- manifest
-
-
-
-
@@ -334,6 +296,7 @@
+
release-sign-artifacts
diff --git a/src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple1Extractor.java b/src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple1Extractor.java
deleted file mode 100644
index 3a5f888..0000000
--- a/src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple1Extractor.java
+++ /dev/null
@@ -1,46 +0,0 @@
-
-
- /* __ __ __ __ __ ___
- * \ \ / / \ \ / / __/
- * \ \/ / /\ \ \/ / /
- * \____/__/ \__\____/__/
- *
- * Copyright 2014-2018 Vavr, http://vavr.io
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
- package io.vavr.beanvalidation2.valueextraction;
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*\
- G E N E R A T O R C R A F T E D
- \*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- import io.vavr.Tuple1;
-
- import javax.validation.valueextraction.ExtractedValue;
- import javax.validation.valueextraction.ValueExtractor;
-
-
- public interface Tuple1Extractor {
-
-
- class FirstExtractor implements ValueExtractor> {
-
- @Override
- public void extractValues(Tuple1> originalValue, ValueReceiver receiver) {
- receiver.indexedValue("", 1, originalValue._1);
- }
-
- }
- }
-
\ No newline at end of file
diff --git a/src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple2Extractor.java b/src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple2Extractor.java
deleted file mode 100644
index 4cb8a76..0000000
--- a/src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple2Extractor.java
+++ /dev/null
@@ -1,56 +0,0 @@
-
-
- /* __ __ __ __ __ ___
- * \ \ / / \ \ / / __/
- * \ \/ / /\ \ \/ / /
- * \____/__/ \__\____/__/
- *
- * Copyright 2014-2018 Vavr, http://vavr.io
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
- package io.vavr.beanvalidation2.valueextraction;
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*\
- G E N E R A T O R C R A F T E D
- \*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- import io.vavr.Tuple2;
-
- import javax.validation.valueextraction.ExtractedValue;
- import javax.validation.valueextraction.ValueExtractor;
-
-
- public interface Tuple2Extractor {
-
-
- class FirstExtractor implements ValueExtractor> {
-
- @Override
- public void extractValues(Tuple2, ?> originalValue, ValueReceiver receiver) {
- receiver.indexedValue("", 1, originalValue._1);
- }
-
- }
-
-
- class SecondExtractor implements ValueExtractor> {
-
- @Override
- public void extractValues(Tuple2, ?> originalValue, ValueReceiver receiver) {
- receiver.indexedValue("", 2, originalValue._2);
- }
-
- }
- }
-
\ No newline at end of file
diff --git a/src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple3Extractor.java b/src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple3Extractor.java
deleted file mode 100644
index 75c75ac..0000000
--- a/src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple3Extractor.java
+++ /dev/null
@@ -1,66 +0,0 @@
-
-
- /* __ __ __ __ __ ___
- * \ \ / / \ \ / / __/
- * \ \/ / /\ \ \/ / /
- * \____/__/ \__\____/__/
- *
- * Copyright 2014-2018 Vavr, http://vavr.io
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
- package io.vavr.beanvalidation2.valueextraction;
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*\
- G E N E R A T O R C R A F T E D
- \*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- import io.vavr.Tuple3;
-
- import javax.validation.valueextraction.ExtractedValue;
- import javax.validation.valueextraction.ValueExtractor;
-
-
- public interface Tuple3Extractor {
-
-
- class FirstExtractor implements ValueExtractor> {
-
- @Override
- public void extractValues(Tuple3, ?, ?> originalValue, ValueReceiver receiver) {
- receiver.indexedValue("", 1, originalValue._1);
- }
-
- }
-
-
- class SecondExtractor implements ValueExtractor> {
-
- @Override
- public void extractValues(Tuple3, ?, ?> originalValue, ValueReceiver receiver) {
- receiver.indexedValue("", 2, originalValue._2);
- }
-
- }
-
-
- class ThirdExtractor implements ValueExtractor> {
-
- @Override
- public void extractValues(Tuple3, ?, ?> originalValue, ValueReceiver receiver) {
- receiver.indexedValue("", 3, originalValue._3);
- }
-
- }
- }
-
\ No newline at end of file
diff --git a/src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple4Extractor.java b/src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple4Extractor.java
deleted file mode 100644
index 0068428..0000000
--- a/src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple4Extractor.java
+++ /dev/null
@@ -1,76 +0,0 @@
-
-
- /* __ __ __ __ __ ___
- * \ \ / / \ \ / / __/
- * \ \/ / /\ \ \/ / /
- * \____/__/ \__\____/__/
- *
- * Copyright 2014-2018 Vavr, http://vavr.io
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
- package io.vavr.beanvalidation2.valueextraction;
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*\
- G E N E R A T O R C R A F T E D
- \*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- import io.vavr.Tuple4;
-
- import javax.validation.valueextraction.ExtractedValue;
- import javax.validation.valueextraction.ValueExtractor;
-
-
- public interface Tuple4Extractor {
-
-
- class FirstExtractor implements ValueExtractor> {
-
- @Override
- public void extractValues(Tuple4, ?, ?, ?> originalValue, ValueReceiver receiver) {
- receiver.indexedValue("", 1, originalValue._1);
- }
-
- }
-
-
- class SecondExtractor implements ValueExtractor> {
-
- @Override
- public void extractValues(Tuple4, ?, ?, ?> originalValue, ValueReceiver receiver) {
- receiver.indexedValue("", 2, originalValue._2);
- }
-
- }
-
-
- class ThirdExtractor implements ValueExtractor> {
-
- @Override
- public void extractValues(Tuple4, ?, ?, ?> originalValue, ValueReceiver receiver) {
- receiver.indexedValue("", 3, originalValue._3);
- }
-
- }
-
-
- class FourthExtractor implements ValueExtractor> {
-
- @Override
- public void extractValues(Tuple4, ?, ?, ?> originalValue, ValueReceiver receiver) {
- receiver.indexedValue("", 4, originalValue._4);
- }
-
- }
- }
-
\ No newline at end of file
diff --git a/src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple5Extractor.java b/src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple5Extractor.java
deleted file mode 100644
index e7de771..0000000
--- a/src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple5Extractor.java
+++ /dev/null
@@ -1,86 +0,0 @@
-
-
- /* __ __ __ __ __ ___
- * \ \ / / \ \ / / __/
- * \ \/ / /\ \ \/ / /
- * \____/__/ \__\____/__/
- *
- * Copyright 2014-2018 Vavr, http://vavr.io
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
- package io.vavr.beanvalidation2.valueextraction;
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*\
- G E N E R A T O R C R A F T E D
- \*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- import io.vavr.Tuple5;
-
- import javax.validation.valueextraction.ExtractedValue;
- import javax.validation.valueextraction.ValueExtractor;
-
-
- public interface Tuple5Extractor {
-
-
- class FirstExtractor implements ValueExtractor> {
-
- @Override
- public void extractValues(Tuple5, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
- receiver.indexedValue("", 1, originalValue._1);
- }
-
- }
-
-
- class SecondExtractor implements ValueExtractor> {
-
- @Override
- public void extractValues(Tuple5, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
- receiver.indexedValue("", 2, originalValue._2);
- }
-
- }
-
-
- class ThirdExtractor implements ValueExtractor> {
-
- @Override
- public void extractValues(Tuple5, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
- receiver.indexedValue("", 3, originalValue._3);
- }
-
- }
-
-
- class FourthExtractor implements ValueExtractor> {
-
- @Override
- public void extractValues(Tuple5, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
- receiver.indexedValue("", 4, originalValue._4);
- }
-
- }
-
-
- class FifthExtractor implements ValueExtractor> {
-
- @Override
- public void extractValues(Tuple5, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
- receiver.indexedValue("", 5, originalValue._5);
- }
-
- }
- }
-
\ No newline at end of file
diff --git a/src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple6Extractor.java b/src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple6Extractor.java
deleted file mode 100644
index aa1d4e2..0000000
--- a/src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple6Extractor.java
+++ /dev/null
@@ -1,96 +0,0 @@
-
-
- /* __ __ __ __ __ ___
- * \ \ / / \ \ / / __/
- * \ \/ / /\ \ \/ / /
- * \____/__/ \__\____/__/
- *
- * Copyright 2014-2018 Vavr, http://vavr.io
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
- package io.vavr.beanvalidation2.valueextraction;
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*\
- G E N E R A T O R C R A F T E D
- \*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- import io.vavr.Tuple6;
-
- import javax.validation.valueextraction.ExtractedValue;
- import javax.validation.valueextraction.ValueExtractor;
-
-
- public interface Tuple6Extractor {
-
-
- class FirstExtractor implements ValueExtractor> {
-
- @Override
- public void extractValues(Tuple6, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
- receiver.indexedValue("", 1, originalValue._1);
- }
-
- }
-
-
- class SecondExtractor implements ValueExtractor> {
-
- @Override
- public void extractValues(Tuple6, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
- receiver.indexedValue("", 2, originalValue._2);
- }
-
- }
-
-
- class ThirdExtractor implements ValueExtractor> {
-
- @Override
- public void extractValues(Tuple6, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
- receiver.indexedValue("", 3, originalValue._3);
- }
-
- }
-
-
- class FourthExtractor implements ValueExtractor> {
-
- @Override
- public void extractValues(Tuple6, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
- receiver.indexedValue("", 4, originalValue._4);
- }
-
- }
-
-
- class FifthExtractor implements ValueExtractor> {
-
- @Override
- public void extractValues(Tuple6, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
- receiver.indexedValue("", 5, originalValue._5);
- }
-
- }
-
-
- class SixthExtractor implements ValueExtractor> {
-
- @Override
- public void extractValues(Tuple6, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
- receiver.indexedValue("", 6, originalValue._6);
- }
-
- }
- }
-
\ No newline at end of file
diff --git a/src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple7Extractor.java b/src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple7Extractor.java
deleted file mode 100644
index ec60d6d..0000000
--- a/src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple7Extractor.java
+++ /dev/null
@@ -1,106 +0,0 @@
-
-
- /* __ __ __ __ __ ___
- * \ \ / / \ \ / / __/
- * \ \/ / /\ \ \/ / /
- * \____/__/ \__\____/__/
- *
- * Copyright 2014-2018 Vavr, http://vavr.io
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
- package io.vavr.beanvalidation2.valueextraction;
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*\
- G E N E R A T O R C R A F T E D
- \*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- import io.vavr.Tuple7;
-
- import javax.validation.valueextraction.ExtractedValue;
- import javax.validation.valueextraction.ValueExtractor;
-
-
- public interface Tuple7Extractor {
-
-
- class FirstExtractor implements ValueExtractor> {
-
- @Override
- public void extractValues(Tuple7, ?, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
- receiver.indexedValue("", 1, originalValue._1);
- }
-
- }
-
-
- class SecondExtractor implements ValueExtractor> {
-
- @Override
- public void extractValues(Tuple7, ?, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
- receiver.indexedValue("", 2, originalValue._2);
- }
-
- }
-
-
- class ThirdExtractor implements ValueExtractor> {
-
- @Override
- public void extractValues(Tuple7, ?, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
- receiver.indexedValue("", 3, originalValue._3);
- }
-
- }
-
-
- class FourthExtractor implements ValueExtractor> {
-
- @Override
- public void extractValues(Tuple7, ?, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
- receiver.indexedValue("", 4, originalValue._4);
- }
-
- }
-
-
- class FifthExtractor implements ValueExtractor> {
-
- @Override
- public void extractValues(Tuple7, ?, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
- receiver.indexedValue("", 5, originalValue._5);
- }
-
- }
-
-
- class SixthExtractor implements ValueExtractor> {
-
- @Override
- public void extractValues(Tuple7, ?, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
- receiver.indexedValue("", 6, originalValue._6);
- }
-
- }
-
-
- class SeventhExtractor implements ValueExtractor> {
-
- @Override
- public void extractValues(Tuple7, ?, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
- receiver.indexedValue("", 7, originalValue._7);
- }
-
- }
- }
-
\ No newline at end of file
diff --git a/src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple8Extractor.java b/src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple8Extractor.java
deleted file mode 100644
index 2854caf..0000000
--- a/src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple8Extractor.java
+++ /dev/null
@@ -1,116 +0,0 @@
-
-
- /* __ __ __ __ __ ___
- * \ \ / / \ \ / / __/
- * \ \/ / /\ \ \/ / /
- * \____/__/ \__\____/__/
- *
- * Copyright 2014-2018 Vavr, http://vavr.io
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
- package io.vavr.beanvalidation2.valueextraction;
- /*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*\
- G E N E R A T O R C R A F T E D
- \*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
- import io.vavr.Tuple8;
-
- import javax.validation.valueextraction.ExtractedValue;
- import javax.validation.valueextraction.ValueExtractor;
-
-
- public interface Tuple8Extractor {
-
-
- class FirstExtractor implements ValueExtractor> {
-
- @Override
- public void extractValues(Tuple8, ?, ?, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
- receiver.indexedValue("", 1, originalValue._1);
- }
-
- }
-
-
- class SecondExtractor implements ValueExtractor> {
-
- @Override
- public void extractValues(Tuple8, ?, ?, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
- receiver.indexedValue("", 2, originalValue._2);
- }
-
- }
-
-
- class ThirdExtractor implements ValueExtractor> {
-
- @Override
- public void extractValues(Tuple8, ?, ?, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
- receiver.indexedValue("", 3, originalValue._3);
- }
-
- }
-
-
- class FourthExtractor implements ValueExtractor> {
-
- @Override
- public void extractValues(Tuple8, ?, ?, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
- receiver.indexedValue("", 4, originalValue._4);
- }
-
- }
-
-
- class FifthExtractor implements ValueExtractor> {
-
- @Override
- public void extractValues(Tuple8, ?, ?, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
- receiver.indexedValue("", 5, originalValue._5);
- }
-
- }
-
-
- class SixthExtractor implements ValueExtractor> {
-
- @Override
- public void extractValues(Tuple8, ?, ?, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
- receiver.indexedValue("", 6, originalValue._6);
- }
-
- }
-
-
- class SeventhExtractor implements ValueExtractor> {
-
- @Override
- public void extractValues(Tuple8, ?, ?, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
- receiver.indexedValue("", 7, originalValue._7);
- }
-
- }
-
-
- class EighthExtractor implements ValueExtractor> {
-
- @Override
- public void extractValues(Tuple8, ?, ?, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
- receiver.indexedValue("", 8, originalValue._8);
- }
-
- }
- }
-
\ No newline at end of file
diff --git a/vavr-beanvalidation2/pom.xml b/vavr-beanvalidation2/pom.xml
new file mode 100644
index 0000000..94cb7b5
--- /dev/null
+++ b/vavr-beanvalidation2/pom.xml
@@ -0,0 +1,153 @@
+
+
+ 4.0.0
+
+
+ io.vavr
+ vavr-beanvalidation-parent
+ 1.0.0-SNAPSHOT
+
+
+ vavr-beanvalidation2
+ 1.0.0-SNAPSHOT
+ jar
+ Integrates vavr with bean validation 2.x frameworks (JSR 380)
+
+
+ 1.8
+
+ 2.0.1.Final
+ 6.2.5.Final
+ 3.0.0
+ 1.1.1
+ 2.3.1
+ 4.0.3
+ 4.0.3
+
+
+
+
+ io.vavr
+ vavr
+ ${vavr.version}
+
+
+ javax.validation
+ validation-api
+ ${validation.version}
+
+
+
+
+ org.hibernate.validator
+ hibernate-validator
+ ${hibernate.validator.version}
+ test
+
+
+
+
+ javax.xml.bind
+ jaxb-api
+ ${javax.xml.version}
+ test
+
+
+
+ com.sun.xml.bind
+ jaxb-core
+ ${jaxb-core.version}
+ test
+
+
+
+ com.sun.xml.bind
+ jaxb-impl
+ ${jaxb-impl.version}
+ test
+
+
+
+ javax.activation
+ activation
+ ${javax.activation.version}
+ test
+
+
+
+ org.glassfish
+ javax.el
+ ${javax.el.version}
+ test
+
+
+
+ junit
+ junit
+ ${test.junit.version}
+ test
+
+
+
+ org.assertj
+ assertj-core
+ ${test.assertj.version}
+ test
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-source-plugin
+
+
+
+ org.apache.maven.plugins
+ maven-clean-plugin
+
+
+
+ net.alchim31.maven
+ scala-maven-plugin
+
+
+
+ org.apache.maven.plugins
+ maven-release-plugin
+
+
+
+
+ org.codehaus.mojo
+ build-helper-maven-plugin
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+
+
+ org.apache.maven.plugins
+ maven-deploy-plugin
+
+
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+
+
+
+ org.apache.maven.plugins
+ maven-javadoc-plugin
+
+
+
+ org.apache.felix
+ maven-bundle-plugin
+
+
+
+
diff --git a/vavr-beanvalidation2/src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple1Extractor.java b/vavr-beanvalidation2/src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple1Extractor.java
new file mode 100644
index 0000000..a3434a7
--- /dev/null
+++ b/vavr-beanvalidation2/src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple1Extractor.java
@@ -0,0 +1,39 @@
+/* __ __ __ __ __ ___
+ * \ \ / / \ \ / / __/
+ * \ \/ / /\ \ \/ / /
+ * \____/__/ \__\____/__/
+ *
+ * Copyright 2014-2018 Vavr, http://vavr.io
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package io.vavr.beanvalidation2.valueextraction;
+/*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*\
+ G E N E R A T O R C R A F T E D
+\*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
+
+import io.vavr.Tuple1;
+
+import javax.validation.valueextraction.ExtractedValue;
+import javax.validation.valueextraction.ValueExtractor;
+
+
+public interface Tuple1Extractor {
+
+ class FirstExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple1> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 1, originalValue._1);
+ }
+ }
+}
\ No newline at end of file
diff --git a/vavr-beanvalidation2/src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple2Extractor.java b/vavr-beanvalidation2/src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple2Extractor.java
new file mode 100644
index 0000000..8e6e24e
--- /dev/null
+++ b/vavr-beanvalidation2/src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple2Extractor.java
@@ -0,0 +1,46 @@
+/* __ __ __ __ __ ___
+ * \ \ / / \ \ / / __/
+ * \ \/ / /\ \ \/ / /
+ * \____/__/ \__\____/__/
+ *
+ * Copyright 2014-2018 Vavr, http://vavr.io
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package io.vavr.beanvalidation2.valueextraction;
+/*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*\
+ G E N E R A T O R C R A F T E D
+\*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
+
+import io.vavr.Tuple2;
+
+import javax.validation.valueextraction.ExtractedValue;
+import javax.validation.valueextraction.ValueExtractor;
+
+
+public interface Tuple2Extractor {
+
+ class FirstExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple2, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 1, originalValue._1);
+ }
+ }
+
+ class SecondExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple2, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 2, originalValue._2);
+ }
+ }
+}
\ No newline at end of file
diff --git a/vavr-beanvalidation2/src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple3Extractor.java b/vavr-beanvalidation2/src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple3Extractor.java
new file mode 100644
index 0000000..e5a2351
--- /dev/null
+++ b/vavr-beanvalidation2/src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple3Extractor.java
@@ -0,0 +1,53 @@
+/* __ __ __ __ __ ___
+ * \ \ / / \ \ / / __/
+ * \ \/ / /\ \ \/ / /
+ * \____/__/ \__\____/__/
+ *
+ * Copyright 2014-2018 Vavr, http://vavr.io
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package io.vavr.beanvalidation2.valueextraction;
+/*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*\
+ G E N E R A T O R C R A F T E D
+\*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
+
+import io.vavr.Tuple3;
+
+import javax.validation.valueextraction.ExtractedValue;
+import javax.validation.valueextraction.ValueExtractor;
+
+
+public interface Tuple3Extractor {
+
+ class FirstExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple3, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 1, originalValue._1);
+ }
+ }
+
+ class SecondExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple3, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 2, originalValue._2);
+ }
+ }
+
+ class ThirdExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple3, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 3, originalValue._3);
+ }
+ }
+}
\ No newline at end of file
diff --git a/vavr-beanvalidation2/src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple4Extractor.java b/vavr-beanvalidation2/src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple4Extractor.java
new file mode 100644
index 0000000..265e946
--- /dev/null
+++ b/vavr-beanvalidation2/src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple4Extractor.java
@@ -0,0 +1,60 @@
+/* __ __ __ __ __ ___
+ * \ \ / / \ \ / / __/
+ * \ \/ / /\ \ \/ / /
+ * \____/__/ \__\____/__/
+ *
+ * Copyright 2014-2018 Vavr, http://vavr.io
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package io.vavr.beanvalidation2.valueextraction;
+/*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*\
+ G E N E R A T O R C R A F T E D
+\*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
+
+import io.vavr.Tuple4;
+
+import javax.validation.valueextraction.ExtractedValue;
+import javax.validation.valueextraction.ValueExtractor;
+
+
+public interface Tuple4Extractor {
+
+ class FirstExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple4, ?, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 1, originalValue._1);
+ }
+ }
+
+ class SecondExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple4, ?, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 2, originalValue._2);
+ }
+ }
+
+ class ThirdExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple4, ?, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 3, originalValue._3);
+ }
+ }
+
+ class FourthExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple4, ?, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 4, originalValue._4);
+ }
+ }
+}
\ No newline at end of file
diff --git a/vavr-beanvalidation2/src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple5Extractor.java b/vavr-beanvalidation2/src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple5Extractor.java
new file mode 100644
index 0000000..45cc69a
--- /dev/null
+++ b/vavr-beanvalidation2/src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple5Extractor.java
@@ -0,0 +1,67 @@
+/* __ __ __ __ __ ___
+ * \ \ / / \ \ / / __/
+ * \ \/ / /\ \ \/ / /
+ * \____/__/ \__\____/__/
+ *
+ * Copyright 2014-2018 Vavr, http://vavr.io
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package io.vavr.beanvalidation2.valueextraction;
+/*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*\
+ G E N E R A T O R C R A F T E D
+\*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
+
+import io.vavr.Tuple5;
+
+import javax.validation.valueextraction.ExtractedValue;
+import javax.validation.valueextraction.ValueExtractor;
+
+
+public interface Tuple5Extractor {
+
+ class FirstExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple5, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 1, originalValue._1);
+ }
+ }
+
+ class SecondExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple5, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 2, originalValue._2);
+ }
+ }
+
+ class ThirdExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple5, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 3, originalValue._3);
+ }
+ }
+
+ class FourthExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple5, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 4, originalValue._4);
+ }
+ }
+
+ class FifthExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple5, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 5, originalValue._5);
+ }
+ }
+}
\ No newline at end of file
diff --git a/vavr-beanvalidation2/src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple6Extractor.java b/vavr-beanvalidation2/src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple6Extractor.java
new file mode 100644
index 0000000..032c46b
--- /dev/null
+++ b/vavr-beanvalidation2/src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple6Extractor.java
@@ -0,0 +1,74 @@
+/* __ __ __ __ __ ___
+ * \ \ / / \ \ / / __/
+ * \ \/ / /\ \ \/ / /
+ * \____/__/ \__\____/__/
+ *
+ * Copyright 2014-2018 Vavr, http://vavr.io
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package io.vavr.beanvalidation2.valueextraction;
+/*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*\
+ G E N E R A T O R C R A F T E D
+\*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
+
+import io.vavr.Tuple6;
+
+import javax.validation.valueextraction.ExtractedValue;
+import javax.validation.valueextraction.ValueExtractor;
+
+
+public interface Tuple6Extractor {
+
+ class FirstExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple6, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 1, originalValue._1);
+ }
+ }
+
+ class SecondExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple6, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 2, originalValue._2);
+ }
+ }
+
+ class ThirdExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple6, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 3, originalValue._3);
+ }
+ }
+
+ class FourthExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple6, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 4, originalValue._4);
+ }
+ }
+
+ class FifthExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple6, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 5, originalValue._5);
+ }
+ }
+
+ class SixthExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple6, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 6, originalValue._6);
+ }
+ }
+}
\ No newline at end of file
diff --git a/vavr-beanvalidation2/src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple7Extractor.java b/vavr-beanvalidation2/src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple7Extractor.java
new file mode 100644
index 0000000..594535b
--- /dev/null
+++ b/vavr-beanvalidation2/src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple7Extractor.java
@@ -0,0 +1,81 @@
+/* __ __ __ __ __ ___
+ * \ \ / / \ \ / / __/
+ * \ \/ / /\ \ \/ / /
+ * \____/__/ \__\____/__/
+ *
+ * Copyright 2014-2018 Vavr, http://vavr.io
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package io.vavr.beanvalidation2.valueextraction;
+/*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*\
+ G E N E R A T O R C R A F T E D
+\*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
+
+import io.vavr.Tuple7;
+
+import javax.validation.valueextraction.ExtractedValue;
+import javax.validation.valueextraction.ValueExtractor;
+
+
+public interface Tuple7Extractor {
+
+ class FirstExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple7, ?, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 1, originalValue._1);
+ }
+ }
+
+ class SecondExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple7, ?, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 2, originalValue._2);
+ }
+ }
+
+ class ThirdExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple7, ?, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 3, originalValue._3);
+ }
+ }
+
+ class FourthExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple7, ?, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 4, originalValue._4);
+ }
+ }
+
+ class FifthExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple7, ?, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 5, originalValue._5);
+ }
+ }
+
+ class SixthExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple7, ?, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 6, originalValue._6);
+ }
+ }
+
+ class SeventhExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple7, ?, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 7, originalValue._7);
+ }
+ }
+}
\ No newline at end of file
diff --git a/vavr-beanvalidation2/src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple8Extractor.java b/vavr-beanvalidation2/src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple8Extractor.java
new file mode 100644
index 0000000..8598495
--- /dev/null
+++ b/vavr-beanvalidation2/src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple8Extractor.java
@@ -0,0 +1,88 @@
+/* __ __ __ __ __ ___
+ * \ \ / / \ \ / / __/
+ * \ \/ / /\ \ \/ / /
+ * \____/__/ \__\____/__/
+ *
+ * Copyright 2014-2018 Vavr, http://vavr.io
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package io.vavr.beanvalidation2.valueextraction;
+/*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*\
+ G E N E R A T O R C R A F T E D
+\*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
+
+import io.vavr.Tuple8;
+
+import javax.validation.valueextraction.ExtractedValue;
+import javax.validation.valueextraction.ValueExtractor;
+
+
+public interface Tuple8Extractor {
+
+ class FirstExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple8, ?, ?, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 1, originalValue._1);
+ }
+ }
+
+ class SecondExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple8, ?, ?, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 2, originalValue._2);
+ }
+ }
+
+ class ThirdExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple8, ?, ?, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 3, originalValue._3);
+ }
+ }
+
+ class FourthExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple8, ?, ?, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 4, originalValue._4);
+ }
+ }
+
+ class FifthExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple8, ?, ?, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 5, originalValue._5);
+ }
+ }
+
+ class SixthExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple8, ?, ?, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 6, originalValue._6);
+ }
+ }
+
+ class SeventhExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple8, ?, ?, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 7, originalValue._7);
+ }
+ }
+
+ class EighthExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple8, ?, ?, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 8, originalValue._8);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src-gen/main/resources/META-INF/services/javax.validation.valueextraction.ValueExtractor b/vavr-beanvalidation2/src-gen/main/resources/META-INF/services/javax.validation.valueextraction.ValueExtractor
similarity index 100%
rename from src-gen/main/resources/META-INF/services/javax.validation.valueextraction.ValueExtractor
rename to vavr-beanvalidation2/src-gen/main/resources/META-INF/services/javax.validation.valueextraction.ValueExtractor
diff --git a/src/main/java/io/vavr/beanvalidation2/constraintvalidators/NotEmptyValidatorForValue.java b/vavr-beanvalidation2/src/main/java/io/vavr/beanvalidation2/constraintvalidators/NotEmptyValidatorForValue.java
similarity index 100%
rename from src/main/java/io/vavr/beanvalidation2/constraintvalidators/NotEmptyValidatorForValue.java
rename to vavr-beanvalidation2/src/main/java/io/vavr/beanvalidation2/constraintvalidators/NotEmptyValidatorForValue.java
diff --git a/src/main/java/io/vavr/beanvalidation2/constraintvalidators/SizeValidatorForTraversable.java b/vavr-beanvalidation2/src/main/java/io/vavr/beanvalidation2/constraintvalidators/SizeValidatorForTraversable.java
similarity index 100%
rename from src/main/java/io/vavr/beanvalidation2/constraintvalidators/SizeValidatorForTraversable.java
rename to vavr-beanvalidation2/src/main/java/io/vavr/beanvalidation2/constraintvalidators/SizeValidatorForTraversable.java
diff --git a/src/main/java/io/vavr/beanvalidation2/valueextraction/EitherLeftExtractor.java b/vavr-beanvalidation2/src/main/java/io/vavr/beanvalidation2/valueextraction/EitherLeftExtractor.java
similarity index 100%
rename from src/main/java/io/vavr/beanvalidation2/valueextraction/EitherLeftExtractor.java
rename to vavr-beanvalidation2/src/main/java/io/vavr/beanvalidation2/valueextraction/EitherLeftExtractor.java
diff --git a/src/main/java/io/vavr/beanvalidation2/valueextraction/EitherRightExtractor.java b/vavr-beanvalidation2/src/main/java/io/vavr/beanvalidation2/valueextraction/EitherRightExtractor.java
similarity index 100%
rename from src/main/java/io/vavr/beanvalidation2/valueextraction/EitherRightExtractor.java
rename to vavr-beanvalidation2/src/main/java/io/vavr/beanvalidation2/valueextraction/EitherRightExtractor.java
diff --git a/src/main/java/io/vavr/beanvalidation2/valueextraction/MapKeyExtractor.java b/vavr-beanvalidation2/src/main/java/io/vavr/beanvalidation2/valueextraction/MapKeyExtractor.java
similarity index 100%
rename from src/main/java/io/vavr/beanvalidation2/valueextraction/MapKeyExtractor.java
rename to vavr-beanvalidation2/src/main/java/io/vavr/beanvalidation2/valueextraction/MapKeyExtractor.java
diff --git a/src/main/java/io/vavr/beanvalidation2/valueextraction/MapValueExtractor.java b/vavr-beanvalidation2/src/main/java/io/vavr/beanvalidation2/valueextraction/MapValueExtractor.java
similarity index 100%
rename from src/main/java/io/vavr/beanvalidation2/valueextraction/MapValueExtractor.java
rename to vavr-beanvalidation2/src/main/java/io/vavr/beanvalidation2/valueextraction/MapValueExtractor.java
diff --git a/src/main/java/io/vavr/beanvalidation2/valueextraction/MultimapKeyExtractor.java b/vavr-beanvalidation2/src/main/java/io/vavr/beanvalidation2/valueextraction/MultimapKeyExtractor.java
similarity index 100%
rename from src/main/java/io/vavr/beanvalidation2/valueextraction/MultimapKeyExtractor.java
rename to vavr-beanvalidation2/src/main/java/io/vavr/beanvalidation2/valueextraction/MultimapKeyExtractor.java
diff --git a/src/main/java/io/vavr/beanvalidation2/valueextraction/MultimapValueExtractor.java b/vavr-beanvalidation2/src/main/java/io/vavr/beanvalidation2/valueextraction/MultimapValueExtractor.java
similarity index 100%
rename from src/main/java/io/vavr/beanvalidation2/valueextraction/MultimapValueExtractor.java
rename to vavr-beanvalidation2/src/main/java/io/vavr/beanvalidation2/valueextraction/MultimapValueExtractor.java
diff --git a/src/main/java/io/vavr/beanvalidation2/valueextraction/SeqValueExtractor.java b/vavr-beanvalidation2/src/main/java/io/vavr/beanvalidation2/valueextraction/SeqValueExtractor.java
similarity index 100%
rename from src/main/java/io/vavr/beanvalidation2/valueextraction/SeqValueExtractor.java
rename to vavr-beanvalidation2/src/main/java/io/vavr/beanvalidation2/valueextraction/SeqValueExtractor.java
diff --git a/src/main/resources/META-INF/constraints-vavr.xml b/vavr-beanvalidation2/src/main/resources/META-INF/constraints-vavr.xml
similarity index 100%
rename from src/main/resources/META-INF/constraints-vavr.xml
rename to vavr-beanvalidation2/src/main/resources/META-INF/constraints-vavr.xml
diff --git a/src/test/java/io/vavr/beanvalidation2/ValidatorSupplier.java b/vavr-beanvalidation2/src/test/java/io/vavr/beanvalidation2/ValidatorSupplier.java
similarity index 100%
rename from src/test/java/io/vavr/beanvalidation2/ValidatorSupplier.java
rename to vavr-beanvalidation2/src/test/java/io/vavr/beanvalidation2/ValidatorSupplier.java
diff --git a/src/test/java/io/vavr/beanvalidation2/constraintvalidators/NotEmptyValidatorForValueTest.java b/vavr-beanvalidation2/src/test/java/io/vavr/beanvalidation2/constraintvalidators/NotEmptyValidatorForValueTest.java
similarity index 100%
rename from src/test/java/io/vavr/beanvalidation2/constraintvalidators/NotEmptyValidatorForValueTest.java
rename to vavr-beanvalidation2/src/test/java/io/vavr/beanvalidation2/constraintvalidators/NotEmptyValidatorForValueTest.java
diff --git a/src/test/java/io/vavr/beanvalidation2/constraintvalidators/SizeValidatorForTraversableTest.java b/vavr-beanvalidation2/src/test/java/io/vavr/beanvalidation2/constraintvalidators/SizeValidatorForTraversableTest.java
similarity index 100%
rename from src/test/java/io/vavr/beanvalidation2/constraintvalidators/SizeValidatorForTraversableTest.java
rename to vavr-beanvalidation2/src/test/java/io/vavr/beanvalidation2/constraintvalidators/SizeValidatorForTraversableTest.java
diff --git a/src/test/java/io/vavr/beanvalidation2/constraintvalidators/ValidatorTestUtil.java b/vavr-beanvalidation2/src/test/java/io/vavr/beanvalidation2/constraintvalidators/ValidatorTestUtil.java
similarity index 100%
rename from src/test/java/io/vavr/beanvalidation2/constraintvalidators/ValidatorTestUtil.java
rename to vavr-beanvalidation2/src/test/java/io/vavr/beanvalidation2/constraintvalidators/ValidatorTestUtil.java
diff --git a/src/test/java/io/vavr/beanvalidation2/valueextraction/EitherTest.java b/vavr-beanvalidation2/src/test/java/io/vavr/beanvalidation2/valueextraction/EitherTest.java
similarity index 100%
rename from src/test/java/io/vavr/beanvalidation2/valueextraction/EitherTest.java
rename to vavr-beanvalidation2/src/test/java/io/vavr/beanvalidation2/valueextraction/EitherTest.java
diff --git a/src/test/java/io/vavr/beanvalidation2/valueextraction/MapValueExtractorTest.java b/vavr-beanvalidation2/src/test/java/io/vavr/beanvalidation2/valueextraction/MapValueExtractorTest.java
similarity index 100%
rename from src/test/java/io/vavr/beanvalidation2/valueextraction/MapValueExtractorTest.java
rename to vavr-beanvalidation2/src/test/java/io/vavr/beanvalidation2/valueextraction/MapValueExtractorTest.java
diff --git a/src/test/java/io/vavr/beanvalidation2/valueextraction/OptionTest.java b/vavr-beanvalidation2/src/test/java/io/vavr/beanvalidation2/valueextraction/OptionTest.java
similarity index 100%
rename from src/test/java/io/vavr/beanvalidation2/valueextraction/OptionTest.java
rename to vavr-beanvalidation2/src/test/java/io/vavr/beanvalidation2/valueextraction/OptionTest.java
diff --git a/src/test/java/io/vavr/beanvalidation2/valueextraction/SeqValueExtractorTest.java b/vavr-beanvalidation2/src/test/java/io/vavr/beanvalidation2/valueextraction/SeqValueExtractorTest.java
similarity index 100%
rename from src/test/java/io/vavr/beanvalidation2/valueextraction/SeqValueExtractorTest.java
rename to vavr-beanvalidation2/src/test/java/io/vavr/beanvalidation2/valueextraction/SeqValueExtractorTest.java
diff --git a/src/test/java/io/vavr/beanvalidation2/valueextraction/TraversableTest.java b/vavr-beanvalidation2/src/test/java/io/vavr/beanvalidation2/valueextraction/TraversableTest.java
similarity index 100%
rename from src/test/java/io/vavr/beanvalidation2/valueextraction/TraversableTest.java
rename to vavr-beanvalidation2/src/test/java/io/vavr/beanvalidation2/valueextraction/TraversableTest.java
diff --git a/src/test/java/io/vavr/beanvalidation2/valueextraction/TupleValueExtractorTest.java b/vavr-beanvalidation2/src/test/java/io/vavr/beanvalidation2/valueextraction/TupleValueExtractorTest.java
similarity index 100%
rename from src/test/java/io/vavr/beanvalidation2/valueextraction/TupleValueExtractorTest.java
rename to vavr-beanvalidation2/src/test/java/io/vavr/beanvalidation2/valueextraction/TupleValueExtractorTest.java
diff --git a/src/test/resources/META-INF/validation.xml b/vavr-beanvalidation2/src/test/resources/META-INF/validation.xml
similarity index 100%
rename from src/test/resources/META-INF/validation.xml
rename to vavr-beanvalidation2/src/test/resources/META-INF/validation.xml
diff --git a/vavr-beanvalidation3/pom.xml b/vavr-beanvalidation3/pom.xml
new file mode 100644
index 0000000..6f79d1b
--- /dev/null
+++ b/vavr-beanvalidation3/pom.xml
@@ -0,0 +1,153 @@
+
+
+ 4.0.0
+
+
+ io.vavr
+ vavr-beanvalidation-parent
+ 1.0.0-SNAPSHOT
+
+
+ vavr-beanvalidation3
+ 1.0.0-SNAPSHOT
+ jar
+ Integrates vavr with bean validation 3.x frameworks (JSR 380)
+
+
+ 11
+
+ 3.0.2
+ 8.0.0.Final
+ 4.0.2
+ 2.1.2
+ 4.0.0
+ 4.0.3
+ 4.0.3
+
+
+
+
+ io.vavr
+ vavr
+ ${vavr.version}
+
+
+ jakarta.validation
+ jakarta.validation-api
+ ${validation.version}
+
+
+
+
+ org.hibernate.validator
+ hibernate-validator
+ ${hibernate.validator.version}
+ test
+
+
+
+
+ jakarta.xml.bind
+ jakarta.xml.bind-api
+ ${jakarta.xml.version}
+ test
+
+
+
+ com.sun.xml.bind
+ jaxb-core
+ ${jakarta.xml.version}
+ test
+
+
+
+ com.sun.xml.bind
+ jaxb-impl
+ ${jakarta.xml.version}
+ test
+
+
+
+ jakarta.activation
+ jakarta.activation-api
+ ${jakarta.activation.version}
+ test
+
+
+
+ org.glassfish
+ jakarta.el
+ ${jakarta.el.version}
+ test
+
+
+
+ junit
+ junit
+ ${test.junit.version}
+ test
+
+
+
+ org.assertj
+ assertj-core
+ ${test.assertj.version}
+ test
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-source-plugin
+
+
+
+ org.apache.maven.plugins
+ maven-clean-plugin
+
+
+
+ net.alchim31.maven
+ scala-maven-plugin
+
+
+
+ org.apache.maven.plugins
+ maven-release-plugin
+
+
+
+
+ org.codehaus.mojo
+ build-helper-maven-plugin
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+
+
+ org.apache.maven.plugins
+ maven-deploy-plugin
+
+
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+
+
+
+ org.apache.maven.plugins
+ maven-javadoc-plugin
+
+
+
+ org.apache.felix
+ maven-bundle-plugin
+
+
+
+
diff --git a/vavr-beanvalidation3/src-gen/main/java/io/vavr/beanvalidation3/valueextraction/Tuple1Extractor.java b/vavr-beanvalidation3/src-gen/main/java/io/vavr/beanvalidation3/valueextraction/Tuple1Extractor.java
new file mode 100644
index 0000000..d838b62
--- /dev/null
+++ b/vavr-beanvalidation3/src-gen/main/java/io/vavr/beanvalidation3/valueextraction/Tuple1Extractor.java
@@ -0,0 +1,39 @@
+/* __ __ __ __ __ ___
+ * \ \ / / \ \ / / __/
+ * \ \/ / /\ \ \/ / /
+ * \____/__/ \__\____/__/
+ *
+ * Copyright 2014-2018 Vavr, http://vavr.io
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package io.vavr.beanvalidation3.valueextraction;
+/*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*\
+ G E N E R A T O R C R A F T E D
+\*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
+
+import io.vavr.Tuple1;
+
+import jakarta.validation.valueextraction.ExtractedValue;
+import jakarta.validation.valueextraction.ValueExtractor;
+
+
+public interface Tuple1Extractor {
+
+ class FirstExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple1> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 1, originalValue._1);
+ }
+ }
+}
\ No newline at end of file
diff --git a/vavr-beanvalidation3/src-gen/main/java/io/vavr/beanvalidation3/valueextraction/Tuple2Extractor.java b/vavr-beanvalidation3/src-gen/main/java/io/vavr/beanvalidation3/valueextraction/Tuple2Extractor.java
new file mode 100644
index 0000000..f0046cb
--- /dev/null
+++ b/vavr-beanvalidation3/src-gen/main/java/io/vavr/beanvalidation3/valueextraction/Tuple2Extractor.java
@@ -0,0 +1,46 @@
+/* __ __ __ __ __ ___
+ * \ \ / / \ \ / / __/
+ * \ \/ / /\ \ \/ / /
+ * \____/__/ \__\____/__/
+ *
+ * Copyright 2014-2018 Vavr, http://vavr.io
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package io.vavr.beanvalidation3.valueextraction;
+/*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*\
+ G E N E R A T O R C R A F T E D
+\*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
+
+import io.vavr.Tuple2;
+
+import jakarta.validation.valueextraction.ExtractedValue;
+import jakarta.validation.valueextraction.ValueExtractor;
+
+
+public interface Tuple2Extractor {
+
+ class FirstExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple2, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 1, originalValue._1);
+ }
+ }
+
+ class SecondExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple2, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 2, originalValue._2);
+ }
+ }
+}
\ No newline at end of file
diff --git a/vavr-beanvalidation3/src-gen/main/java/io/vavr/beanvalidation3/valueextraction/Tuple3Extractor.java b/vavr-beanvalidation3/src-gen/main/java/io/vavr/beanvalidation3/valueextraction/Tuple3Extractor.java
new file mode 100644
index 0000000..4d71e84
--- /dev/null
+++ b/vavr-beanvalidation3/src-gen/main/java/io/vavr/beanvalidation3/valueextraction/Tuple3Extractor.java
@@ -0,0 +1,53 @@
+/* __ __ __ __ __ ___
+ * \ \ / / \ \ / / __/
+ * \ \/ / /\ \ \/ / /
+ * \____/__/ \__\____/__/
+ *
+ * Copyright 2014-2018 Vavr, http://vavr.io
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package io.vavr.beanvalidation3.valueextraction;
+/*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*\
+ G E N E R A T O R C R A F T E D
+\*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
+
+import io.vavr.Tuple3;
+
+import jakarta.validation.valueextraction.ExtractedValue;
+import jakarta.validation.valueextraction.ValueExtractor;
+
+
+public interface Tuple3Extractor {
+
+ class FirstExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple3, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 1, originalValue._1);
+ }
+ }
+
+ class SecondExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple3, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 2, originalValue._2);
+ }
+ }
+
+ class ThirdExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple3, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 3, originalValue._3);
+ }
+ }
+}
\ No newline at end of file
diff --git a/vavr-beanvalidation3/src-gen/main/java/io/vavr/beanvalidation3/valueextraction/Tuple4Extractor.java b/vavr-beanvalidation3/src-gen/main/java/io/vavr/beanvalidation3/valueextraction/Tuple4Extractor.java
new file mode 100644
index 0000000..0c28a46
--- /dev/null
+++ b/vavr-beanvalidation3/src-gen/main/java/io/vavr/beanvalidation3/valueextraction/Tuple4Extractor.java
@@ -0,0 +1,60 @@
+/* __ __ __ __ __ ___
+ * \ \ / / \ \ / / __/
+ * \ \/ / /\ \ \/ / /
+ * \____/__/ \__\____/__/
+ *
+ * Copyright 2014-2018 Vavr, http://vavr.io
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package io.vavr.beanvalidation3.valueextraction;
+/*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*\
+ G E N E R A T O R C R A F T E D
+\*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
+
+import io.vavr.Tuple4;
+
+import jakarta.validation.valueextraction.ExtractedValue;
+import jakarta.validation.valueextraction.ValueExtractor;
+
+
+public interface Tuple4Extractor {
+
+ class FirstExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple4, ?, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 1, originalValue._1);
+ }
+ }
+
+ class SecondExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple4, ?, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 2, originalValue._2);
+ }
+ }
+
+ class ThirdExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple4, ?, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 3, originalValue._3);
+ }
+ }
+
+ class FourthExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple4, ?, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 4, originalValue._4);
+ }
+ }
+}
\ No newline at end of file
diff --git a/vavr-beanvalidation3/src-gen/main/java/io/vavr/beanvalidation3/valueextraction/Tuple5Extractor.java b/vavr-beanvalidation3/src-gen/main/java/io/vavr/beanvalidation3/valueextraction/Tuple5Extractor.java
new file mode 100644
index 0000000..ade138d
--- /dev/null
+++ b/vavr-beanvalidation3/src-gen/main/java/io/vavr/beanvalidation3/valueextraction/Tuple5Extractor.java
@@ -0,0 +1,67 @@
+/* __ __ __ __ __ ___
+ * \ \ / / \ \ / / __/
+ * \ \/ / /\ \ \/ / /
+ * \____/__/ \__\____/__/
+ *
+ * Copyright 2014-2018 Vavr, http://vavr.io
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package io.vavr.beanvalidation3.valueextraction;
+/*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*\
+ G E N E R A T O R C R A F T E D
+\*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
+
+import io.vavr.Tuple5;
+
+import jakarta.validation.valueextraction.ExtractedValue;
+import jakarta.validation.valueextraction.ValueExtractor;
+
+
+public interface Tuple5Extractor {
+
+ class FirstExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple5, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 1, originalValue._1);
+ }
+ }
+
+ class SecondExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple5, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 2, originalValue._2);
+ }
+ }
+
+ class ThirdExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple5, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 3, originalValue._3);
+ }
+ }
+
+ class FourthExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple5, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 4, originalValue._4);
+ }
+ }
+
+ class FifthExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple5, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 5, originalValue._5);
+ }
+ }
+}
\ No newline at end of file
diff --git a/vavr-beanvalidation3/src-gen/main/java/io/vavr/beanvalidation3/valueextraction/Tuple6Extractor.java b/vavr-beanvalidation3/src-gen/main/java/io/vavr/beanvalidation3/valueextraction/Tuple6Extractor.java
new file mode 100644
index 0000000..386cdf0
--- /dev/null
+++ b/vavr-beanvalidation3/src-gen/main/java/io/vavr/beanvalidation3/valueextraction/Tuple6Extractor.java
@@ -0,0 +1,74 @@
+/* __ __ __ __ __ ___
+ * \ \ / / \ \ / / __/
+ * \ \/ / /\ \ \/ / /
+ * \____/__/ \__\____/__/
+ *
+ * Copyright 2014-2018 Vavr, http://vavr.io
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package io.vavr.beanvalidation3.valueextraction;
+/*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*\
+ G E N E R A T O R C R A F T E D
+\*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
+
+import io.vavr.Tuple6;
+
+import jakarta.validation.valueextraction.ExtractedValue;
+import jakarta.validation.valueextraction.ValueExtractor;
+
+
+public interface Tuple6Extractor {
+
+ class FirstExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple6, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 1, originalValue._1);
+ }
+ }
+
+ class SecondExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple6, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 2, originalValue._2);
+ }
+ }
+
+ class ThirdExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple6, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 3, originalValue._3);
+ }
+ }
+
+ class FourthExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple6, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 4, originalValue._4);
+ }
+ }
+
+ class FifthExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple6, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 5, originalValue._5);
+ }
+ }
+
+ class SixthExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple6, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 6, originalValue._6);
+ }
+ }
+}
\ No newline at end of file
diff --git a/vavr-beanvalidation3/src-gen/main/java/io/vavr/beanvalidation3/valueextraction/Tuple7Extractor.java b/vavr-beanvalidation3/src-gen/main/java/io/vavr/beanvalidation3/valueextraction/Tuple7Extractor.java
new file mode 100644
index 0000000..22b155a
--- /dev/null
+++ b/vavr-beanvalidation3/src-gen/main/java/io/vavr/beanvalidation3/valueextraction/Tuple7Extractor.java
@@ -0,0 +1,81 @@
+/* __ __ __ __ __ ___
+ * \ \ / / \ \ / / __/
+ * \ \/ / /\ \ \/ / /
+ * \____/__/ \__\____/__/
+ *
+ * Copyright 2014-2018 Vavr, http://vavr.io
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package io.vavr.beanvalidation3.valueextraction;
+/*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*\
+ G E N E R A T O R C R A F T E D
+\*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
+
+import io.vavr.Tuple7;
+
+import jakarta.validation.valueextraction.ExtractedValue;
+import jakarta.validation.valueextraction.ValueExtractor;
+
+
+public interface Tuple7Extractor {
+
+ class FirstExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple7, ?, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 1, originalValue._1);
+ }
+ }
+
+ class SecondExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple7, ?, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 2, originalValue._2);
+ }
+ }
+
+ class ThirdExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple7, ?, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 3, originalValue._3);
+ }
+ }
+
+ class FourthExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple7, ?, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 4, originalValue._4);
+ }
+ }
+
+ class FifthExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple7, ?, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 5, originalValue._5);
+ }
+ }
+
+ class SixthExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple7, ?, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 6, originalValue._6);
+ }
+ }
+
+ class SeventhExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple7, ?, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 7, originalValue._7);
+ }
+ }
+}
\ No newline at end of file
diff --git a/vavr-beanvalidation3/src-gen/main/java/io/vavr/beanvalidation3/valueextraction/Tuple8Extractor.java b/vavr-beanvalidation3/src-gen/main/java/io/vavr/beanvalidation3/valueextraction/Tuple8Extractor.java
new file mode 100644
index 0000000..7a11ac1
--- /dev/null
+++ b/vavr-beanvalidation3/src-gen/main/java/io/vavr/beanvalidation3/valueextraction/Tuple8Extractor.java
@@ -0,0 +1,88 @@
+/* __ __ __ __ __ ___
+ * \ \ / / \ \ / / __/
+ * \ \/ / /\ \ \/ / /
+ * \____/__/ \__\____/__/
+ *
+ * Copyright 2014-2018 Vavr, http://vavr.io
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package io.vavr.beanvalidation3.valueextraction;
+/*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*\
+ G E N E R A T O R C R A F T E D
+\*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
+
+import io.vavr.Tuple8;
+
+import jakarta.validation.valueextraction.ExtractedValue;
+import jakarta.validation.valueextraction.ValueExtractor;
+
+
+public interface Tuple8Extractor {
+
+ class FirstExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple8, ?, ?, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 1, originalValue._1);
+ }
+ }
+
+ class SecondExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple8, ?, ?, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 2, originalValue._2);
+ }
+ }
+
+ class ThirdExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple8, ?, ?, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 3, originalValue._3);
+ }
+ }
+
+ class FourthExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple8, ?, ?, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 4, originalValue._4);
+ }
+ }
+
+ class FifthExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple8, ?, ?, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 5, originalValue._5);
+ }
+ }
+
+ class SixthExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple8, ?, ?, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 6, originalValue._6);
+ }
+ }
+
+ class SeventhExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple8, ?, ?, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 7, originalValue._7);
+ }
+ }
+
+ class EighthExtractor implements ValueExtractor> {
+ @Override
+ public void extractValues(Tuple8, ?, ?, ?, ?, ?, ?, ?> originalValue, ValueReceiver receiver) {
+ receiver.indexedValue("", 8, originalValue._8);
+ }
+ }
+}
\ No newline at end of file
diff --git a/vavr-beanvalidation3/src-gen/main/resources/META-INF/services/jakarta.validation.valueextraction.ValueExtractor b/vavr-beanvalidation3/src-gen/main/resources/META-INF/services/jakarta.validation.valueextraction.ValueExtractor
new file mode 100644
index 0000000..10959b1
--- /dev/null
+++ b/vavr-beanvalidation3/src-gen/main/resources/META-INF/services/jakarta.validation.valueextraction.ValueExtractor
@@ -0,0 +1,43 @@
+io.vavr.beanvalidation3.valueextraction.SeqValueExtractor
+io.vavr.beanvalidation3.valueextraction.MapKeyExtractor
+io.vavr.beanvalidation3.valueextraction.MapValueExtractor
+io.vavr.beanvalidation3.valueextraction.MultimapKeyExtractor
+io.vavr.beanvalidation3.valueextraction.MultimapValueExtractor
+io.vavr.beanvalidation3.valueextraction.EitherLeftExtractor
+io.vavr.beanvalidation3.valueextraction.EitherRightExtractor
+io.vavr.beanvalidation3.valueextraction.Tuple1Extractor$FirstExtractor
+io.vavr.beanvalidation3.valueextraction.Tuple2Extractor$FirstExtractor
+io.vavr.beanvalidation3.valueextraction.Tuple2Extractor$SecondExtractor
+io.vavr.beanvalidation3.valueextraction.Tuple3Extractor$FirstExtractor
+io.vavr.beanvalidation3.valueextraction.Tuple3Extractor$SecondExtractor
+io.vavr.beanvalidation3.valueextraction.Tuple3Extractor$ThirdExtractor
+io.vavr.beanvalidation3.valueextraction.Tuple4Extractor$FirstExtractor
+io.vavr.beanvalidation3.valueextraction.Tuple4Extractor$SecondExtractor
+io.vavr.beanvalidation3.valueextraction.Tuple4Extractor$ThirdExtractor
+io.vavr.beanvalidation3.valueextraction.Tuple4Extractor$FourthExtractor
+io.vavr.beanvalidation3.valueextraction.Tuple5Extractor$FirstExtractor
+io.vavr.beanvalidation3.valueextraction.Tuple5Extractor$SecondExtractor
+io.vavr.beanvalidation3.valueextraction.Tuple5Extractor$ThirdExtractor
+io.vavr.beanvalidation3.valueextraction.Tuple5Extractor$FourthExtractor
+io.vavr.beanvalidation3.valueextraction.Tuple5Extractor$FifthExtractor
+io.vavr.beanvalidation3.valueextraction.Tuple6Extractor$FirstExtractor
+io.vavr.beanvalidation3.valueextraction.Tuple6Extractor$SecondExtractor
+io.vavr.beanvalidation3.valueextraction.Tuple6Extractor$ThirdExtractor
+io.vavr.beanvalidation3.valueextraction.Tuple6Extractor$FourthExtractor
+io.vavr.beanvalidation3.valueextraction.Tuple6Extractor$FifthExtractor
+io.vavr.beanvalidation3.valueextraction.Tuple6Extractor$SixthExtractor
+io.vavr.beanvalidation3.valueextraction.Tuple7Extractor$FirstExtractor
+io.vavr.beanvalidation3.valueextraction.Tuple7Extractor$SecondExtractor
+io.vavr.beanvalidation3.valueextraction.Tuple7Extractor$ThirdExtractor
+io.vavr.beanvalidation3.valueextraction.Tuple7Extractor$FourthExtractor
+io.vavr.beanvalidation3.valueextraction.Tuple7Extractor$FifthExtractor
+io.vavr.beanvalidation3.valueextraction.Tuple7Extractor$SixthExtractor
+io.vavr.beanvalidation3.valueextraction.Tuple7Extractor$SeventhExtractor
+io.vavr.beanvalidation3.valueextraction.Tuple8Extractor$FirstExtractor
+io.vavr.beanvalidation3.valueextraction.Tuple8Extractor$SecondExtractor
+io.vavr.beanvalidation3.valueextraction.Tuple8Extractor$ThirdExtractor
+io.vavr.beanvalidation3.valueextraction.Tuple8Extractor$FourthExtractor
+io.vavr.beanvalidation3.valueextraction.Tuple8Extractor$FifthExtractor
+io.vavr.beanvalidation3.valueextraction.Tuple8Extractor$SixthExtractor
+io.vavr.beanvalidation3.valueextraction.Tuple8Extractor$SeventhExtractor
+io.vavr.beanvalidation3.valueextraction.Tuple8Extractor$EighthExtractor
\ No newline at end of file
diff --git a/vavr-beanvalidation3/src/main/java/io/vavr/beanvalidation3/constraintvalidators/NotEmptyValidatorForValue.java b/vavr-beanvalidation3/src/main/java/io/vavr/beanvalidation3/constraintvalidators/NotEmptyValidatorForValue.java
new file mode 100644
index 0000000..5f2795e
--- /dev/null
+++ b/vavr-beanvalidation3/src/main/java/io/vavr/beanvalidation3/constraintvalidators/NotEmptyValidatorForValue.java
@@ -0,0 +1,42 @@
+/* __ __ __ __ __ ___
+ * \ \ / / \ \ / / __/
+ * \ \/ / /\ \ \/ / /
+ * \____/__/ \__\____/__/
+ *
+ * Copyright 2014-2017 Vavr, http://vavr.io
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package io.vavr.beanvalidation3.constraintvalidators;
+
+import io.vavr.Value;
+
+import jakarta.validation.ConstraintValidator;
+import jakarta.validation.ConstraintValidatorContext;
+import jakarta.validation.constraints.NotEmpty;
+
+
+public class NotEmptyValidatorForValue implements ConstraintValidator> {
+
+
+ @Override
+ public void initialize(NotEmpty constraintAnnotation) {
+ // no-op
+ }
+
+ @Override
+ public boolean isValid(Value> value, ConstraintValidatorContext context) {
+ return value != null && !value.isEmpty();
+ }
+}
+
diff --git a/vavr-beanvalidation3/src/main/java/io/vavr/beanvalidation3/constraintvalidators/SizeValidatorForTraversable.java b/vavr-beanvalidation3/src/main/java/io/vavr/beanvalidation3/constraintvalidators/SizeValidatorForTraversable.java
new file mode 100644
index 0000000..c7f0039
--- /dev/null
+++ b/vavr-beanvalidation3/src/main/java/io/vavr/beanvalidation3/constraintvalidators/SizeValidatorForTraversable.java
@@ -0,0 +1,51 @@
+/* __ __ __ __ __ ___
+ * \ \ / / \ \ / / __/
+ * \ \/ / /\ \ \/ / /
+ * \____/__/ \__\____/__/
+ *
+ * Copyright 2014-2017 Vavr, http://vavr.io
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package io.vavr.beanvalidation3.constraintvalidators;
+
+import io.vavr.collection.Traversable;
+
+import jakarta.validation.ConstraintValidator;
+import jakarta.validation.ConstraintValidatorContext;
+import jakarta.validation.constraints.Size;
+
+
+public class SizeValidatorForTraversable implements ConstraintValidator> {
+
+ private int min;
+ private int max;
+
+ @Override
+ public void initialize(Size constraintAnnotation) {
+ min = constraintAnnotation.min();
+ max = constraintAnnotation.max();
+
+ if (min < 0) {
+ throw new IllegalArgumentException("The min parameter cannot be negative.");
+ } else if (max < min) {
+ throw new IllegalArgumentException("The max parameter cannot be less than the min parameter");
+ }
+ }
+
+ @Override
+ public boolean isValid(Traversable> value, ConstraintValidatorContext context) {
+ return value == null || value.size() >= min && value.size() <= max;
+ }
+}
+
diff --git a/vavr-beanvalidation3/src/main/java/io/vavr/beanvalidation3/valueextraction/EitherLeftExtractor.java b/vavr-beanvalidation3/src/main/java/io/vavr/beanvalidation3/valueextraction/EitherLeftExtractor.java
new file mode 100644
index 0000000..0b764c8
--- /dev/null
+++ b/vavr-beanvalidation3/src/main/java/io/vavr/beanvalidation3/valueextraction/EitherLeftExtractor.java
@@ -0,0 +1,38 @@
+/* __ __ __ __ __ ___
+ * \ \ / / \ \ / / __/
+ * \ \/ / /\ \ \/ / /
+ * \____/__/ \__\____/__/
+ *
+ * Copyright 2014-2019 Vavr, http://vavr.io
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package io.vavr.beanvalidation3.valueextraction;
+
+import io.vavr.control.Either;
+
+import jakarta.validation.valueextraction.ExtractedValue;
+import jakarta.validation.valueextraction.ValueExtractor;
+
+public class EitherLeftExtractor implements ValueExtractor> {
+ private static final String NODE_NAME = "";
+
+ @Override
+ public void extractValues(Either, ?> originalValue, ValueReceiver receiver) {
+ if (originalValue.isLeft()) {
+ receiver.value(NODE_NAME, originalValue.getLeft());
+ } else {
+ receiver.value(NODE_NAME, null);
+ }
+ }
+}
diff --git a/vavr-beanvalidation3/src/main/java/io/vavr/beanvalidation3/valueextraction/EitherRightExtractor.java b/vavr-beanvalidation3/src/main/java/io/vavr/beanvalidation3/valueextraction/EitherRightExtractor.java
new file mode 100644
index 0000000..9f2f47a
--- /dev/null
+++ b/vavr-beanvalidation3/src/main/java/io/vavr/beanvalidation3/valueextraction/EitherRightExtractor.java
@@ -0,0 +1,38 @@
+/* __ __ __ __ __ ___
+ * \ \ / / \ \ / / __/
+ * \ \/ / /\ \ \/ / /
+ * \____/__/ \__\____/__/
+ *
+ * Copyright 2014-2019 Vavr, http://vavr.io
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package io.vavr.beanvalidation3.valueextraction;
+
+import io.vavr.control.Either;
+
+import jakarta.validation.valueextraction.ExtractedValue;
+import jakarta.validation.valueextraction.ValueExtractor;
+
+public class EitherRightExtractor implements ValueExtractor> {
+ private static final String NODE_NAME = "";
+
+ @Override
+ public void extractValues(Either, ?> originalValue, ValueReceiver receiver) {
+ if (originalValue.isRight()) {
+ receiver.value(NODE_NAME, originalValue.get());
+ } else {
+ receiver.value(NODE_NAME, null);
+ }
+ }
+}
diff --git a/vavr-beanvalidation3/src/main/java/io/vavr/beanvalidation3/valueextraction/MapKeyExtractor.java b/vavr-beanvalidation3/src/main/java/io/vavr/beanvalidation3/valueextraction/MapKeyExtractor.java
new file mode 100644
index 0000000..9627cc5
--- /dev/null
+++ b/vavr-beanvalidation3/src/main/java/io/vavr/beanvalidation3/valueextraction/MapKeyExtractor.java
@@ -0,0 +1,35 @@
+/* __ __ __ __ __ ___
+ * \ \ / / \ \ / / __/
+ * \ \/ / /\ \ \/ / /
+ * \____/__/ \__\____/__/
+ *
+ * Copyright 2014-2019 Vavr, http://vavr.io
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package io.vavr.beanvalidation3.valueextraction;
+
+import jakarta.validation.valueextraction.ExtractedValue;
+import jakarta.validation.valueextraction.ValueExtractor;
+
+import io.vavr.collection.Map;
+
+public class MapKeyExtractor implements ValueExtractor