From 492af97f28d2f05fedf5524902ed718980aa0830 Mon Sep 17 00:00:00 2001 From: Roman Fuerst Date: Mon, 12 Jun 2023 16:28:34 +0200 Subject: [PATCH 1/2] Add beanvalidation3 support. --- generator/Generator.scala | 143 +++--- pom.xml | 455 ++++++++---------- .../valueextraction/Tuple1Extractor.java | 46 -- .../valueextraction/Tuple2Extractor.java | 56 --- .../valueextraction/Tuple3Extractor.java | 66 --- .../valueextraction/Tuple4Extractor.java | 76 --- .../valueextraction/Tuple5Extractor.java | 86 ---- .../valueextraction/Tuple6Extractor.java | 96 ---- .../valueextraction/Tuple7Extractor.java | 106 ---- .../valueextraction/Tuple8Extractor.java | 116 ----- vavr-beanvalidation2/pom.xml | 153 ++++++ .../valueextraction/Tuple1Extractor.java | 39 ++ .../valueextraction/Tuple2Extractor.java | 46 ++ .../valueextraction/Tuple3Extractor.java | 53 ++ .../valueextraction/Tuple4Extractor.java | 60 +++ .../valueextraction/Tuple5Extractor.java | 67 +++ .../valueextraction/Tuple6Extractor.java | 74 +++ .../valueextraction/Tuple7Extractor.java | 81 ++++ .../valueextraction/Tuple8Extractor.java | 88 ++++ ....validation.valueextraction.ValueExtractor | 0 .../NotEmptyValidatorForValue.java | 0 .../SizeValidatorForTraversable.java | 0 .../valueextraction/EitherLeftExtractor.java | 0 .../valueextraction/EitherRightExtractor.java | 0 .../valueextraction/MapKeyExtractor.java | 0 .../valueextraction/MapValueExtractor.java | 0 .../valueextraction/MultimapKeyExtractor.java | 0 .../MultimapValueExtractor.java | 0 .../valueextraction/SeqValueExtractor.java | 0 .../resources/META-INF/constraints-vavr.xml | 0 .../beanvalidation2/ValidatorSupplier.java | 0 .../NotEmptyValidatorForValueTest.java | 0 .../SizeValidatorForTraversableTest.java | 0 .../ValidatorTestUtil.java | 0 .../valueextraction/EitherTest.java | 0 .../MapValueExtractorTest.java | 0 .../valueextraction/OptionTest.java | 0 .../SeqValueExtractorTest.java | 0 .../valueextraction/TraversableTest.java | 0 .../TupleValueExtractorTest.java | 0 .../test/resources/META-INF/validation.xml | 0 vavr-beanvalidation3/pom.xml | 153 ++++++ .../valueextraction/Tuple1Extractor.java | 39 ++ .../valueextraction/Tuple2Extractor.java | 46 ++ .../valueextraction/Tuple3Extractor.java | 53 ++ .../valueextraction/Tuple4Extractor.java | 60 +++ .../valueextraction/Tuple5Extractor.java | 67 +++ .../valueextraction/Tuple6Extractor.java | 74 +++ .../valueextraction/Tuple7Extractor.java | 81 ++++ .../valueextraction/Tuple8Extractor.java | 88 ++++ ....validation.valueextraction.ValueExtractor | 43 ++ .../NotEmptyValidatorForValue.java | 42 ++ .../SizeValidatorForTraversable.java | 51 ++ .../valueextraction/EitherLeftExtractor.java | 38 ++ .../valueextraction/EitherRightExtractor.java | 38 ++ .../valueextraction/MapKeyExtractor.java | 35 ++ .../valueextraction/MapValueExtractor.java | 35 ++ .../valueextraction/MultimapKeyExtractor.java | 36 ++ .../MultimapValueExtractor.java | 36 ++ .../valueextraction/SeqValueExtractor.java | 38 ++ .../resources/META-INF/constraints-vavr.xml | 22 + .../beanvalidation2/ValidatorSupplier.java | 43 ++ .../NotEmptyValidatorForValueTest.java | 161 +++++++ .../SizeValidatorForTraversableTest.java | 186 +++++++ .../ValidatorTestUtil.java | 42 ++ .../valueextraction/EitherTest.java | 152 ++++++ .../MapValueExtractorTest.java | 193 ++++++++ .../valueextraction/OptionTest.java | 107 ++++ .../SeqValueExtractorTest.java | 118 +++++ .../valueextraction/TraversableTest.java | 93 ++++ .../TupleValueExtractorTest.java | 131 +++++ .../test/resources/META-INF/validation.xml | 11 + 72 files changed, 3268 insertions(+), 951 deletions(-) delete mode 100644 src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple1Extractor.java delete mode 100644 src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple2Extractor.java delete mode 100644 src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple3Extractor.java delete mode 100644 src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple4Extractor.java delete mode 100644 src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple5Extractor.java delete mode 100644 src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple6Extractor.java delete mode 100644 src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple7Extractor.java delete mode 100644 src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple8Extractor.java create mode 100644 vavr-beanvalidation2/pom.xml create mode 100644 vavr-beanvalidation2/src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple1Extractor.java create mode 100644 vavr-beanvalidation2/src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple2Extractor.java create mode 100644 vavr-beanvalidation2/src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple3Extractor.java create mode 100644 vavr-beanvalidation2/src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple4Extractor.java create mode 100644 vavr-beanvalidation2/src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple5Extractor.java create mode 100644 vavr-beanvalidation2/src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple6Extractor.java create mode 100644 vavr-beanvalidation2/src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple7Extractor.java create mode 100644 vavr-beanvalidation2/src-gen/main/java/io/vavr/beanvalidation2/valueextraction/Tuple8Extractor.java rename {src-gen => vavr-beanvalidation2/src-gen}/main/resources/META-INF/services/javax.validation.valueextraction.ValueExtractor (100%) rename {src => vavr-beanvalidation2/src}/main/java/io/vavr/beanvalidation2/constraintvalidators/NotEmptyValidatorForValue.java (100%) rename {src => vavr-beanvalidation2/src}/main/java/io/vavr/beanvalidation2/constraintvalidators/SizeValidatorForTraversable.java (100%) rename {src => vavr-beanvalidation2/src}/main/java/io/vavr/beanvalidation2/valueextraction/EitherLeftExtractor.java (100%) rename {src => vavr-beanvalidation2/src}/main/java/io/vavr/beanvalidation2/valueextraction/EitherRightExtractor.java (100%) rename {src => vavr-beanvalidation2/src}/main/java/io/vavr/beanvalidation2/valueextraction/MapKeyExtractor.java (100%) rename {src => vavr-beanvalidation2/src}/main/java/io/vavr/beanvalidation2/valueextraction/MapValueExtractor.java (100%) rename {src => vavr-beanvalidation2/src}/main/java/io/vavr/beanvalidation2/valueextraction/MultimapKeyExtractor.java (100%) rename {src => vavr-beanvalidation2/src}/main/java/io/vavr/beanvalidation2/valueextraction/MultimapValueExtractor.java (100%) rename {src => vavr-beanvalidation2/src}/main/java/io/vavr/beanvalidation2/valueextraction/SeqValueExtractor.java (100%) rename {src => vavr-beanvalidation2/src}/main/resources/META-INF/constraints-vavr.xml (100%) rename {src => vavr-beanvalidation2/src}/test/java/io/vavr/beanvalidation2/ValidatorSupplier.java (100%) rename {src => vavr-beanvalidation2/src}/test/java/io/vavr/beanvalidation2/constraintvalidators/NotEmptyValidatorForValueTest.java (100%) rename {src => vavr-beanvalidation2/src}/test/java/io/vavr/beanvalidation2/constraintvalidators/SizeValidatorForTraversableTest.java (100%) rename {src => vavr-beanvalidation2/src}/test/java/io/vavr/beanvalidation2/constraintvalidators/ValidatorTestUtil.java (100%) rename {src => vavr-beanvalidation2/src}/test/java/io/vavr/beanvalidation2/valueextraction/EitherTest.java (100%) rename {src => vavr-beanvalidation2/src}/test/java/io/vavr/beanvalidation2/valueextraction/MapValueExtractorTest.java (100%) rename {src => vavr-beanvalidation2/src}/test/java/io/vavr/beanvalidation2/valueextraction/OptionTest.java (100%) rename {src => vavr-beanvalidation2/src}/test/java/io/vavr/beanvalidation2/valueextraction/SeqValueExtractorTest.java (100%) rename {src => vavr-beanvalidation2/src}/test/java/io/vavr/beanvalidation2/valueextraction/TraversableTest.java (100%) rename {src => vavr-beanvalidation2/src}/test/java/io/vavr/beanvalidation2/valueextraction/TupleValueExtractorTest.java (100%) rename {src => vavr-beanvalidation2/src}/test/resources/META-INF/validation.xml (100%) create mode 100644 vavr-beanvalidation3/pom.xml create mode 100644 vavr-beanvalidation3/src-gen/main/java/io/vavr/beanvalidation3/valueextraction/Tuple1Extractor.java create mode 100644 vavr-beanvalidation3/src-gen/main/java/io/vavr/beanvalidation3/valueextraction/Tuple2Extractor.java create mode 100644 vavr-beanvalidation3/src-gen/main/java/io/vavr/beanvalidation3/valueextraction/Tuple3Extractor.java create mode 100644 vavr-beanvalidation3/src-gen/main/java/io/vavr/beanvalidation3/valueextraction/Tuple4Extractor.java create mode 100644 vavr-beanvalidation3/src-gen/main/java/io/vavr/beanvalidation3/valueextraction/Tuple5Extractor.java create mode 100644 vavr-beanvalidation3/src-gen/main/java/io/vavr/beanvalidation3/valueextraction/Tuple6Extractor.java create mode 100644 vavr-beanvalidation3/src-gen/main/java/io/vavr/beanvalidation3/valueextraction/Tuple7Extractor.java create mode 100644 vavr-beanvalidation3/src-gen/main/java/io/vavr/beanvalidation3/valueextraction/Tuple8Extractor.java create mode 100644 vavr-beanvalidation3/src-gen/main/resources/META-INF/services/jakarta.validation.valueextraction.ValueExtractor create mode 100644 vavr-beanvalidation3/src/main/java/io/vavr/beanvalidation3/constraintvalidators/NotEmptyValidatorForValue.java create mode 100644 vavr-beanvalidation3/src/main/java/io/vavr/beanvalidation3/constraintvalidators/SizeValidatorForTraversable.java create mode 100644 vavr-beanvalidation3/src/main/java/io/vavr/beanvalidation3/valueextraction/EitherLeftExtractor.java create mode 100644 vavr-beanvalidation3/src/main/java/io/vavr/beanvalidation3/valueextraction/EitherRightExtractor.java create mode 100644 vavr-beanvalidation3/src/main/java/io/vavr/beanvalidation3/valueextraction/MapKeyExtractor.java create mode 100644 vavr-beanvalidation3/src/main/java/io/vavr/beanvalidation3/valueextraction/MapValueExtractor.java create mode 100644 vavr-beanvalidation3/src/main/java/io/vavr/beanvalidation3/valueextraction/MultimapKeyExtractor.java create mode 100644 vavr-beanvalidation3/src/main/java/io/vavr/beanvalidation3/valueextraction/MultimapValueExtractor.java create mode 100644 vavr-beanvalidation3/src/main/java/io/vavr/beanvalidation3/valueextraction/SeqValueExtractor.java create mode 100644 vavr-beanvalidation3/src/main/resources/META-INF/constraints-vavr.xml create mode 100644 vavr-beanvalidation3/src/test/java/io/vavr/beanvalidation2/ValidatorSupplier.java create mode 100644 vavr-beanvalidation3/src/test/java/io/vavr/beanvalidation2/constraintvalidators/NotEmptyValidatorForValueTest.java create mode 100644 vavr-beanvalidation3/src/test/java/io/vavr/beanvalidation2/constraintvalidators/SizeValidatorForTraversableTest.java create mode 100644 vavr-beanvalidation3/src/test/java/io/vavr/beanvalidation2/constraintvalidators/ValidatorTestUtil.java create mode 100644 vavr-beanvalidation3/src/test/java/io/vavr/beanvalidation2/valueextraction/EitherTest.java create mode 100644 vavr-beanvalidation3/src/test/java/io/vavr/beanvalidation2/valueextraction/MapValueExtractorTest.java create mode 100644 vavr-beanvalidation3/src/test/java/io/vavr/beanvalidation2/valueextraction/OptionTest.java create mode 100644 vavr-beanvalidation3/src/test/java/io/vavr/beanvalidation2/valueextraction/SeqValueExtractorTest.java create mode 100644 vavr-beanvalidation3/src/test/java/io/vavr/beanvalidation2/valueextraction/TraversableTest.java create mode 100644 vavr-beanvalidation3/src/test/java/io/vavr/beanvalidation2/valueextraction/TupleValueExtractorTest.java create mode 100644 vavr-beanvalidation3/src/test/resources/META-INF/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> { + + private static final String MAP_KEY_NODE_NAME = ""; + + @Override + public void extractValues(Map originalValue, ValueReceiver receiver) { + originalValue.forEach(e -> receiver.keyedValue(MAP_KEY_NODE_NAME, e._1, e._1)); + } +} diff --git a/vavr-beanvalidation3/src/main/java/io/vavr/beanvalidation3/valueextraction/MapValueExtractor.java b/vavr-beanvalidation3/src/main/java/io/vavr/beanvalidation3/valueextraction/MapValueExtractor.java new file mode 100644 index 0000000..ab06c32 --- /dev/null +++ b/vavr-beanvalidation3/src/main/java/io/vavr/beanvalidation3/valueextraction/MapValueExtractor.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 io.vavr.collection.Map; + +import jakarta.validation.valueextraction.ExtractedValue; +import jakarta.validation.valueextraction.ValueExtractor; + +public class MapValueExtractor implements ValueExtractor> { + + private static final String MAP_VALUE_NODE_NAME = ""; + + @Override + public void extractValues(Map originalValue, ValueReceiver receiver) { + originalValue.forEach(e -> receiver.keyedValue(MAP_VALUE_NODE_NAME, e._1, e._2)); + } +} diff --git a/vavr-beanvalidation3/src/main/java/io/vavr/beanvalidation3/valueextraction/MultimapKeyExtractor.java b/vavr-beanvalidation3/src/main/java/io/vavr/beanvalidation3/valueextraction/MultimapKeyExtractor.java new file mode 100644 index 0000000..da0dd77 --- /dev/null +++ b/vavr-beanvalidation3/src/main/java/io/vavr/beanvalidation3/valueextraction/MultimapKeyExtractor.java @@ -0,0 +1,36 @@ +/* __ __ __ __ __ ___ + * \ \ / / \ \ / / __/ + * \ \/ / /\ \ \/ / / + * \____/__/ \__\____/__/ + * + * 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.collection.Multimap; + +import jakarta.validation.valueextraction.ExtractedValue; +import jakarta.validation.valueextraction.ValueExtractor; + +public class MultimapKeyExtractor + implements ValueExtractor> { + + private static final String MAP_KEY_NODE_NAME = ""; + + @Override + public void extractValues(Multimap originalValue, ValueReceiver receiver) { + originalValue.forEach(e -> receiver.keyedValue(MAP_KEY_NODE_NAME, e._1, e._1)); + } +} diff --git a/vavr-beanvalidation3/src/main/java/io/vavr/beanvalidation3/valueextraction/MultimapValueExtractor.java b/vavr-beanvalidation3/src/main/java/io/vavr/beanvalidation3/valueextraction/MultimapValueExtractor.java new file mode 100644 index 0000000..81ae4c8 --- /dev/null +++ b/vavr-beanvalidation3/src/main/java/io/vavr/beanvalidation3/valueextraction/MultimapValueExtractor.java @@ -0,0 +1,36 @@ +/* __ __ __ __ __ ___ + * \ \ / / \ \ / / __/ + * \ \/ / /\ \ \/ / / + * \____/__/ \__\____/__/ + * + * 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.collection.Multimap; + +import jakarta.validation.valueextraction.ExtractedValue; +import jakarta.validation.valueextraction.ValueExtractor; + +public class MultimapValueExtractor + implements ValueExtractor> { + + private static final String MAP_VALUE_NODE_NAME = ""; + + @Override + public void extractValues(Multimap originalValue, ValueReceiver receiver) { + originalValue.forEach(e -> receiver.keyedValue(MAP_VALUE_NODE_NAME, e._1, e._2)); + } +} diff --git a/vavr-beanvalidation3/src/main/java/io/vavr/beanvalidation3/valueextraction/SeqValueExtractor.java b/vavr-beanvalidation3/src/main/java/io/vavr/beanvalidation3/valueextraction/SeqValueExtractor.java new file mode 100644 index 0000000..2a16325 --- /dev/null +++ b/vavr-beanvalidation3/src/main/java/io/vavr/beanvalidation3/valueextraction/SeqValueExtractor.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.collection.Seq; + +import jakarta.validation.valueextraction.ExtractedValue; +import jakarta.validation.valueextraction.ValueExtractor; + +public class SeqValueExtractor implements ValueExtractor> { + + private static final String SEQ_INDEX_NODE_NAME = ""; + + @Override + public void extractValues(Seq originalValue, ValueReceiver receiver) { + int index = 0; // avoid access by index because of O(n) performance of List + for (Object element : originalValue) { + receiver.indexedValue(SEQ_INDEX_NODE_NAME, index++, element); + } + } +} diff --git a/vavr-beanvalidation3/src/main/resources/META-INF/constraints-vavr.xml b/vavr-beanvalidation3/src/main/resources/META-INF/constraints-vavr.xml new file mode 100644 index 0000000..bb183ae --- /dev/null +++ b/vavr-beanvalidation3/src/main/resources/META-INF/constraints-vavr.xml @@ -0,0 +1,22 @@ + + + + + + io.vavr.beanvalidation3.constraintvalidators.SizeValidatorForTraversable + + + + + + io.vavr.beanvalidation3.constraintvalidators.NotEmptyValidatorForValue + + + + + \ No newline at end of file diff --git a/vavr-beanvalidation3/src/test/java/io/vavr/beanvalidation2/ValidatorSupplier.java b/vavr-beanvalidation3/src/test/java/io/vavr/beanvalidation2/ValidatorSupplier.java new file mode 100644 index 0000000..c1c6acf --- /dev/null +++ b/vavr-beanvalidation3/src/test/java/io/vavr/beanvalidation2/ValidatorSupplier.java @@ -0,0 +1,43 @@ +/* __ __ __ __ __ ___ + * \ \ / / \ \ / / __/ + * \ \/ / /\ \ \/ / / + * \____/__/ \__\____/__/ + * + * 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; + +import io.vavr.Lazy; + +import jakarta.validation.Validation; +import jakarta.validation.Validator; +import java.util.function.Supplier; + +public final class ValidatorSupplier implements Supplier { + public static final ValidatorSupplier INSTANCE = new ValidatorSupplier(); + + private final Supplier delegate = Lazy.of(() -> + Validation.buildDefaultValidatorFactory().getValidator() + ); + + private ValidatorSupplier() { + // nothing here + } + + @Override + public Validator get() { + return delegate.get(); + } +} diff --git a/vavr-beanvalidation3/src/test/java/io/vavr/beanvalidation2/constraintvalidators/NotEmptyValidatorForValueTest.java b/vavr-beanvalidation3/src/test/java/io/vavr/beanvalidation2/constraintvalidators/NotEmptyValidatorForValueTest.java new file mode 100644 index 0000000..86353a8 --- /dev/null +++ b/vavr-beanvalidation3/src/test/java/io/vavr/beanvalidation2/constraintvalidators/NotEmptyValidatorForValueTest.java @@ -0,0 +1,161 @@ +/* __ __ __ __ __ ___ + * \ \ / / \ \ / / __/ + * \ \/ / /\ \ \/ / / + * \____/__/ \__\____/__/ + * + * 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.beanvalidation3.ValidatorSupplier; +import io.vavr.collection.List; +import io.vavr.collection.Traversable; +import io.vavr.collection.Vector; +import io.vavr.control.Either; +import io.vavr.control.Option; +import io.vavr.control.Try; +import org.junit.Before; +import org.junit.Test; + +import jakarta.validation.ConstraintViolation; +import jakarta.validation.Validator; +import jakarta.validation.constraints.NotEmpty; +import java.util.Collection; + +import static io.vavr.beanvalidation3.constraintvalidators.ValidatorTestUtil.assertSingleViolation; +import static org.assertj.core.api.Assertions.assertThat; + +public class NotEmptyValidatorForValueTest { + + private Validator validator; + private TestBean bean = null; + + @Before + public void setUp() { + this.validator = ValidatorSupplier.INSTANCE.get(); + this.bean = new TestBean(); + } + + private void validateAndAssertNoViolations() { + Collection> violations = validator.validate(bean); + assertThat(violations).isEmpty(); + } + + private void validateAndAssertSingleOffendingProperty(TestBean bean, String property) { + Collection> violations = validator.validate(bean); + assertSingleViolation(violations, property, NotEmpty.class); + } + + @Test + public void testDefaultConstruction_shouldValidate() { + validateAndAssertNoViolations(); + } + + @Test + public void testNotEmptyTraversable_butIsEmpty_shouldNotValidate() { + bean.setNotEmptyTraversable(List.empty()); + validateAndAssertSingleOffendingProperty(bean, "notEmptyTraversable"); + } + + @Test + public void testNotEmptyTraversable_butIsNull_shouldNotValidate() { + bean.setNotEmptyTraversable(null); + validateAndAssertSingleOffendingProperty(bean, "notEmptyTraversable"); + } + + @Test + public void testNotEmptyOption_butIsNone_shouldNotValidate() { + bean.setNotEmptyOption(Option.none()); + validateAndAssertSingleOffendingProperty(bean, "notEmptyOption"); + } + + @Test + public void testNotEmptyOption_butIsNull_shouldNotValidate() { + bean.setNotEmptyOption(null); + validateAndAssertSingleOffendingProperty(bean, "notEmptyOption"); + } + + @Test + public void testNotEmptyTry_butIsFailure_shouldNotValidate() { + bean.setNotEmptyTry(Try.failure(new IllegalArgumentException())); + validateAndAssertSingleOffendingProperty(bean, "notEmptyTry"); + } + + @Test + public void testNotEmptyTry_butIsNull_shouldNotValidate() { + bean.setNotEmptyTry(null); + validateAndAssertSingleOffendingProperty(bean, "notEmptyTry"); + } + + @Test + public void testNotEmptyEither_butIsLeft_shouldNotValidate() { + bean.setNotEmptyEither(Either.left("ERROR")); + validateAndAssertSingleOffendingProperty(bean, "notEmptyEither"); + } + + @Test + public void testNotEmptyEither_butIsNull_shouldNotValidate() { + bean.setNotEmptyEither(null); + validateAndAssertSingleOffendingProperty(bean, "notEmptyEither"); + } + + private static class TestBean { + + @NotEmpty + private Traversable notEmptyTraversable = Vector.of(0); + + @NotEmpty + private Option notEmptyOption = Option.some(1); + + @NotEmpty + private Try notEmptyTry = Try.success(1); + + @NotEmpty + private Either notEmptyEither = Either.right(42); + + public Traversable getNotEmptyTraversable() { + return notEmptyTraversable; + } + + public void setNotEmptyTraversable(Traversable notEmptyTraversable) { + this.notEmptyTraversable = notEmptyTraversable; + } + + public Option getNotEmptyOption() { + return notEmptyOption; + } + + public void setNotEmptyOption(Option notEmptyOption) { + this.notEmptyOption = notEmptyOption; + } + + public Try getNotEmptyTry() { + return notEmptyTry; + } + + public void setNotEmptyTry(Try notEmptyTry) { + this.notEmptyTry = notEmptyTry; + } + + public Either getNotEmptyEither() { + return notEmptyEither; + } + + public void setNotEmptyEither(Either notEmptyEither) { + this.notEmptyEither = notEmptyEither; + } + } + +} \ No newline at end of file diff --git a/vavr-beanvalidation3/src/test/java/io/vavr/beanvalidation2/constraintvalidators/SizeValidatorForTraversableTest.java b/vavr-beanvalidation3/src/test/java/io/vavr/beanvalidation2/constraintvalidators/SizeValidatorForTraversableTest.java new file mode 100644 index 0000000..4732a74 --- /dev/null +++ b/vavr-beanvalidation3/src/test/java/io/vavr/beanvalidation2/constraintvalidators/SizeValidatorForTraversableTest.java @@ -0,0 +1,186 @@ +/* __ __ __ __ __ ___ + * \ \ / / \ \ / / __/ + * \ \/ / /\ \ \/ / / + * \____/__/ \__\____/__/ + * + * 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.beanvalidation3.ValidatorSupplier; +import io.vavr.collection.HashMap; +import io.vavr.collection.HashSet; +import io.vavr.collection.List; +import io.vavr.collection.Map; +import io.vavr.collection.Seq; +import io.vavr.collection.Set; +import org.junit.Before; +import org.junit.Test; + +import jakarta.validation.ConstraintViolation; +import jakarta.validation.Validator; +import jakarta.validation.constraints.Size; +import java.util.Collection; + +import static io.vavr.beanvalidation3.constraintvalidators.ValidatorTestUtil.assertSingleViolation; +import static org.assertj.core.api.Assertions.assertThat; + +public class SizeValidatorForTraversableTest { + + private Validator validator; + private TestBean bean = null; + + @Before + public void setUp() { + this.validator = ValidatorSupplier.INSTANCE.get(); + this.bean = new TestBean(); + } + + private void validateAndAssertNoViolations() { + Collection> violations = validator.validate(bean); + assertThat(violations).isEmpty(); + } + + private void validateAndAssertSingleOffendingProperty(TestBean bean, String property) { + Collection> violations = validator.validate(bean); + assertSingleViolation(violations, property, Size.class); + } + + @Test + public void testDefaultConstruction_shouldValidate() { + validateAndAssertNoViolations(); + } + + @Test + public void testAtLeastOne_butIsEmpty_shouldNotValidate() { + bean.setAtLeastOne(List.empty()); + validateAndAssertSingleOffendingProperty(bean, "atLeastOne"); + } + + @Test + public void testAtLeastOne_withOneEntry_shouldValidate() { + bean.setAtLeastOne(List.of(1)); + validateAndAssertNoViolations(); + } + + @Test + public void testAtLeastOne_withMoreThanOneEntry_shouldValidate() { + bean.setAtLeastOne(List.of(1, 2, 3)); + validateAndAssertNoViolations(); + } + + @Test + public void testMaxOne_butHasTwo_shouldNotValidate() { + bean.setMaxOne(List.of(1, 2)); + validateAndAssertSingleOffendingProperty(bean, "maxOne"); + } + + @Test + public void testMaxOne_withOneEntry_shouldValidate() { + bean.setMaxOne(List.of(1)); + validateAndAssertNoViolations(); + } + + @Test + public void testMaxOne_empty_shouldValidate() { + bean.setMaxOne(List.empty()); + validateAndAssertNoViolations(); + } + + @Test + public void testExactlyOne_butHasTwo_shouldNotValidate() { + bean.setExactlyOne(HashSet.of(1, 2)); + validateAndAssertSingleOffendingProperty(bean, "exactlyOne"); + } + + @Test + public void testExactlyOne_withOneEntry_shouldValidate() { + bean.setExactlyOne(HashSet.of(1)); + validateAndAssertNoViolations(); + } + + @Test + public void testExactlyOne_empty_shouldNotValidate() { + bean.setExactlyOne(HashSet.empty()); + validateAndAssertSingleOffendingProperty(bean, "exactlyOne"); + } + + @Test + public void testExactlyOneMap_butHasTwo_shouldNotValidate() { + bean.setExactlyOneMap(HashMap.of(1, "one", 2, "two")); + validateAndAssertSingleOffendingProperty(bean, "exactlyOneMap"); + } + + @Test + public void testExactlyOneMap_withOneEntry_shouldValidate() { + bean.setExactlyOneMap(HashMap.of(1, "one")); + validateAndAssertNoViolations(); + } + + @Test + public void testExactlyOneMap_empty_shouldNotValidate() { + bean.setExactlyOneMap(HashMap.empty()); + validateAndAssertSingleOffendingProperty(bean, "exactlyOneMap"); + } + + private static class TestBean { + + @Size(min = 1) + private List atLeastOne = null; + + @Size(max = 1) + private Seq maxOne = null; + + @Size(min = 1, max = 1) + private Set exactlyOne = null; + + @Size(min = 1, max = 1) + private Map exactlyOneMap = null; + + public List getAtLeastOne() { + return atLeastOne; + } + + public void setAtLeastOne(List atLeastOne) { + this.atLeastOne = atLeastOne; + } + + public Seq getMaxOne() { + return maxOne; + } + + public void setMaxOne(Seq maxOne) { + this.maxOne = maxOne; + } + + public Set getExactlyOne() { + return exactlyOne; + } + + public void setExactlyOne(Set exactlyOne) { + this.exactlyOne = exactlyOne; + } + + public Map getExactlyOneMap() { + return exactlyOneMap; + } + + public void setExactlyOneMap(Map exactlyOneMap) { + this.exactlyOneMap = exactlyOneMap; + } + + } + +} \ No newline at end of file diff --git a/vavr-beanvalidation3/src/test/java/io/vavr/beanvalidation2/constraintvalidators/ValidatorTestUtil.java b/vavr-beanvalidation3/src/test/java/io/vavr/beanvalidation2/constraintvalidators/ValidatorTestUtil.java new file mode 100644 index 0000000..06de95f --- /dev/null +++ b/vavr-beanvalidation3/src/test/java/io/vavr/beanvalidation2/constraintvalidators/ValidatorTestUtil.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 jakarta.validation.ConstraintViolation; +import jakarta.validation.Path; +import java.util.Collection; + +import static org.assertj.core.api.Assertions.assertThat; + +public class ValidatorTestUtil { + + public static void assertSingleViolation(Collection> violations, String property, Class constraint) { + assertThat(violations).isNotEmpty().hasSize(1); + + ConstraintViolation violation = violations.iterator().next(); + assertThat(violation.getPropertyPath()).isNotEmpty().hasSize(1); + + assertThat(violation.getConstraintDescriptor().getAnnotation()).isInstanceOf(constraint); + + Path.Node offendingNode = violation.getPropertyPath().iterator().next(); + assertThat(offendingNode.getName()).isEqualToIgnoringCase(property); + } + +} diff --git a/vavr-beanvalidation3/src/test/java/io/vavr/beanvalidation2/valueextraction/EitherTest.java b/vavr-beanvalidation3/src/test/java/io/vavr/beanvalidation2/valueextraction/EitherTest.java new file mode 100644 index 0000000..9c101f8 --- /dev/null +++ b/vavr-beanvalidation3/src/test/java/io/vavr/beanvalidation2/valueextraction/EitherTest.java @@ -0,0 +1,152 @@ +/* __ __ __ __ __ ___ + * \ \ / / \ \ / / __/ + * \ \/ / /\ \ \/ / / + * \____/__/ \__\____/__/ + * + * 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.beanvalidation3.ValidatorSupplier; +import io.vavr.collection.HashSet; +import io.vavr.collection.List; +import io.vavr.collection.Set; +import io.vavr.control.Either; +import org.junit.Before; +import org.junit.Test; + +import jakarta.validation.ConstraintViolation; +import jakarta.validation.ElementKind; +import jakarta.validation.Path; +import jakarta.validation.Validator; +import jakarta.validation.constraints.Pattern; +import jakarta.validation.constraints.Positive; + +import static org.assertj.core.api.Assertions.assertThat; + +public class EitherTest { + private static final String WORD = "^[a-z]{3,}$"; + private Validator validator; + + @Before + public void setUp() { + this.validator = ValidatorSupplier.INSTANCE.get(); + } + + @Test + public void testOnNone() { + // given + TestBean subject = new TestBean(); + + // when + Set> violations = + HashSet.ofAll(validator.validate(subject)); + + // then + assertThat(violations).hasSize(0); + } + + @Test + public void testOnValid() { + // given + TestBean subject = new TestBean(); + subject.ok("valid"); + + // when + Set> violations = + HashSet.ofAll(validator.validate(subject)); + + // then + assertThat(violations).hasSize(0); + } + + @Test + public void testOnValidRetcode() { + // given + TestBean subject = new TestBean(); + subject.fail(128); + + // when + Set> violations = + HashSet.ofAll(validator.validate(subject)); + + // then + assertThat(violations).hasSize(0); + } + + @Test + public void testOnInvalid() { + // given + TestBean subject = new TestBean(); + subject.ok(""); + + // when + Set> violations = + HashSet.ofAll(validator.validate(subject)); + + // then + assertThat(violations).hasSize(1); + List nodes = List.ofAll(violations.head().getPropertyPath()); + assertThat(nodes).hasSize(2); + + // head element -> container + assertThat(nodes.head().getKind()).isEqualTo(ElementKind.PROPERTY); + assertThat(nodes.head().getName()).isEqualTo("result"); + + // last element -> entry + assertThat(nodes.last().getKind()).isEqualTo(ElementKind.CONTAINER_ELEMENT); + assertThat(nodes.last().as(Path.ContainerElementNode.class).getContainerClass()) + .isEqualTo(Either.class); + assertThat(nodes.last().getName()).isEqualTo(""); + } + + @Test + public void testOnInvalidRetcode() { + // given + TestBean subject = new TestBean(); + subject.fail(-67); + + // when + Set> violations = + HashSet.ofAll(validator.validate(subject)); + + // then + assertThat(violations).hasSize(1); + List nodes = List.ofAll(violations.head().getPropertyPath()); + assertThat(nodes).hasSize(2); + + // head element -> container + assertThat(nodes.head().getKind()).isEqualTo(ElementKind.PROPERTY); + assertThat(nodes.head().getName()).isEqualTo("result"); + + // last element -> entry + assertThat(nodes.last().getKind()).isEqualTo(ElementKind.CONTAINER_ELEMENT); + assertThat(nodes.last().as(Path.ContainerElementNode.class).getContainerClass()) + .isEqualTo(Either.class); + assertThat(nodes.last().getName()).isEqualTo(""); + } + + private static final class TestBean { + private Either<@Positive Integer, @Pattern(regexp = WORD) String> result = + Either.right("success"); + + void ok(String text) { + this.result = Either.right(text); + } + void fail(Integer retcode) { + this.result = Either.left(retcode); + } + } +} diff --git a/vavr-beanvalidation3/src/test/java/io/vavr/beanvalidation2/valueextraction/MapValueExtractorTest.java b/vavr-beanvalidation3/src/test/java/io/vavr/beanvalidation2/valueextraction/MapValueExtractorTest.java new file mode 100644 index 0000000..b567980 --- /dev/null +++ b/vavr-beanvalidation3/src/test/java/io/vavr/beanvalidation2/valueextraction/MapValueExtractorTest.java @@ -0,0 +1,193 @@ +/* __ __ __ __ __ ___ + * \ \ / / \ \ / / __/ + * \ \/ / /\ \ \/ / / + * \____/__/ \__\____/__/ + * + * 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.beanvalidation3.ValidatorSupplier; +import io.vavr.collection.HashMap; +import io.vavr.collection.HashMultimap; +import io.vavr.collection.List; +import io.vavr.collection.Map; +import io.vavr.collection.Multimap; +import org.junit.Before; +import org.junit.Test; + +import jakarta.validation.ConstraintViolation; +import jakarta.validation.ElementKind; +import jakarta.validation.Path; +import jakarta.validation.Validator; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Pattern; +import java.util.Collection; + +import static org.assertj.core.api.Assertions.assertThat; + +public class MapValueExtractorTest { + + private static final String SINGLE_CHAR = "^[a-z]$"; + private Validator validator; + + @Before + public void setUp() { + this.validator = ValidatorSupplier.INSTANCE.get(); + } + + private void validateAndAssertNoViolations(T target) { + Collection> violations = validator.validate(target); + assertThat(violations).isEmpty(); + } + + private void validateAndAssertSingleViolation( + T target, Class constraint, + String position, + Class type, + String fieldName, + String entryName + ) { + Collection> violations = validator.validate(target); + + assertThat(violations).isNotEmpty().hasSize(1); + + ConstraintViolation violation = violations.iterator().next(); + assertThat(violation.getPropertyPath()).isNotEmpty().hasSize(2); + + assertThat(violation.getConstraintDescriptor().getAnnotation()).isInstanceOf(constraint); + validateMapPropertyPath( + violation.getPropertyPath(), type, position, + fieldName, entryName + ); + } + + private void validateMapPropertyPath( + Path propertyPath, Class type, String key, + String fieldName, String entryName + ) { + List nodes = List.ofAll(propertyPath); + assertThat(nodes).hasSize(2); + + // head element -> map + assertThat(nodes.head().getKind()).isEqualTo(ElementKind.PROPERTY); + assertThat(nodes.head().getName()).isEqualTo(fieldName); + + // last element -> entry + assertThat(nodes.last().getKind()).isEqualTo(ElementKind.CONTAINER_ELEMENT); + assertThat(nodes.last().getName()).isEqualTo(""); + assertThat(nodes.last().getKey()).isEqualTo(key); + assertThat(nodes.last().as(Path.ContainerElementNode.class).getContainerClass()).isEqualTo(type); + } + + @Test + public void defaultConstructionShouldValidate() { + validateAndAssertNoViolations(new TestBean()); + } + + @Test + public void havingEmptyValueShouldNotValidate() { + TestBean bean = new TestBean(); + bean.put("b", ""); + validateAndAssertSingleViolation( + bean, NotBlank.class, + "b", Map.class, "entries", "value" + ); + } + + @Test + public void havingEmptyValueForMultimapShouldNotValidate() { + TestBean bean = new TestBean(); + bean.add("a", ""); + validateAndAssertSingleViolation( + bean, NotBlank.class, + "a", Multimap.class, "multientries", "value" + ); + } + + @Test + public void havingComplexKeyShouldNotValidate() { + TestBean bean = new TestBean(); + bean.put("bad", "ok"); + validateAndAssertSingleViolation( + bean, Pattern.class, + "bad", Map.class, "entries", "key" + ); + } + + @Test + public void havingComplexKeyForMultimapShouldNotValidate() { + TestBean bean = new TestBean(); + bean.add("bad", "ok"); + validateAndAssertSingleViolation( + bean, Pattern.class, + "bad", Multimap.class, "multientries", "key" + ); + } + + @Test + public void defaultConstructionShouldValidateForJava() { + validateAndAssertNoViolations(new JavaTestBean()); + } + + @Test + public void havingEmptyValueShouldNotValidateForJava() { + JavaTestBean bean = new JavaTestBean(); + bean.put("b", ""); + validateAndAssertSingleViolation( + bean, NotBlank.class, + "b", java.util.Map.class, "entries", "value" + ); + } + + @Test + public void havingComplexKeyShouldNotValidateForJava() { + JavaTestBean bean = new JavaTestBean(); + bean.put("bad", "ok"); + validateAndAssertSingleViolation( + bean, Pattern.class, + "bad", java.util.Map.class,"entries", "key" + ); + } + + private static class TestBean { + private Map<@Pattern(regexp = SINGLE_CHAR) String, @NotBlank String> entries = + HashMap.of("a", "b"); + + private Multimap<@Pattern(regexp = SINGLE_CHAR) String, @NotBlank String> multientries = + HashMultimap.withSet().of(entries.head()); + + void put(String key, String value) { + entries = entries.put(key, value); + } + + void add(String key, String value) { + multientries = multientries.put(key, value); + } + } + + private static class JavaTestBean { + private java.util.Map<@Pattern(regexp = SINGLE_CHAR) String, @NotBlank String> entries = + new java.util.HashMap<>(); + + JavaTestBean() { + put("a", "b"); + } + + void put(String key, String value) { + entries.put(key, value); + } + } +} \ No newline at end of file diff --git a/vavr-beanvalidation3/src/test/java/io/vavr/beanvalidation2/valueextraction/OptionTest.java b/vavr-beanvalidation3/src/test/java/io/vavr/beanvalidation2/valueextraction/OptionTest.java new file mode 100644 index 0000000..c6d9d33 --- /dev/null +++ b/vavr-beanvalidation3/src/test/java/io/vavr/beanvalidation2/valueextraction/OptionTest.java @@ -0,0 +1,107 @@ +/* __ __ __ __ __ ___ + * \ \ / / \ \ / / __/ + * \ \/ / /\ \ \/ / / + * \____/__/ \__\____/__/ + * + * 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.beanvalidation3.ValidatorSupplier; +import io.vavr.collection.HashSet; +import io.vavr.collection.List; +import io.vavr.collection.Set; +import io.vavr.control.Option; +import org.junit.Before; +import org.junit.Test; + +import jakarta.validation.ConstraintViolation; +import jakarta.validation.ElementKind; +import jakarta.validation.Path; +import jakarta.validation.Validator; +import jakarta.validation.constraints.NotBlank; + +import static org.assertj.core.api.Assertions.assertThat; + +public class OptionTest { + private Validator validator; + + @Before + public void setUp() { + this.validator = ValidatorSupplier.INSTANCE.get(); + } + + @Test + public void testOnNone() { + // given + TestBean subject = new TestBean(); + + // when + Set> violations = + HashSet.ofAll(validator.validate(subject)); + + // then + assertThat(violations).hasSize(0); + } + + @Test + public void testOnValid() { + // given + TestBean subject = new TestBean(); + subject.set("valid"); + + // when + Set> violations = + HashSet.ofAll(validator.validate(subject)); + + // then + assertThat(violations).hasSize(0); + } + + @Test + public void testOnInvalid() { + // given + TestBean subject = new TestBean(); + subject.set(""); + + // when + Set> violations = + HashSet.ofAll(validator.validate(subject)); + + // then + assertThat(violations).hasSize(1); + List nodes = List.ofAll(violations.head().getPropertyPath()); + assertThat(nodes).hasSize(2); + + // head element -> container + assertThat(nodes.head().getKind()).isEqualTo(ElementKind.PROPERTY); + assertThat(nodes.head().getName()).isEqualTo("maybeText"); + + // last element -> entry + assertThat(nodes.last().getKind()).isEqualTo(ElementKind.CONTAINER_ELEMENT); + assertThat(nodes.last().as(Path.ContainerElementNode.class).getContainerClass()) + .isEqualTo(Option.class); + assertThat(nodes.last().getName()).isEqualTo(""); + } + + private static final class TestBean { + private Option<@NotBlank String> maybeText = Option.none(); + + void set(String text) { + this.maybeText = Option.of(text); + } + } +} diff --git a/vavr-beanvalidation3/src/test/java/io/vavr/beanvalidation2/valueextraction/SeqValueExtractorTest.java b/vavr-beanvalidation3/src/test/java/io/vavr/beanvalidation2/valueextraction/SeqValueExtractorTest.java new file mode 100644 index 0000000..6848273 --- /dev/null +++ b/vavr-beanvalidation3/src/test/java/io/vavr/beanvalidation2/valueextraction/SeqValueExtractorTest.java @@ -0,0 +1,118 @@ +/* __ __ __ __ __ ___ + * \ \ / / \ \ / / __/ + * \ \/ / /\ \ \/ / / + * \____/__/ \__\____/__/ + * + * 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.beanvalidation3.ValidatorSupplier; +import io.vavr.collection.List; +import io.vavr.collection.Seq; +import org.junit.Before; +import org.junit.Test; + +import jakarta.validation.ConstraintViolation; +import jakarta.validation.Path; +import jakarta.validation.Validator; +import jakarta.validation.constraints.NotBlank; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Iterator; + +import static org.assertj.core.api.Assertions.assertThat; + +public class SeqValueExtractorTest { + + private Validator validator; + + @Before + public void setUp() { + this.validator = ValidatorSupplier.INSTANCE.get(); + } + + private void validateAndAssertNoViolations(T target) { + Collection> violations = validator.validate(target); + assertThat(violations).isEmpty(); + } + + private void validateAndAssertSingleViolation( + T target, int position, String type + ) { + Collection> violations = validator.validate(target); + + assertThat(violations).isNotEmpty().hasSize(1); + + ConstraintViolation violation = violations.iterator().next(); + assertThat(violation.getPropertyPath()).isNotEmpty().hasSize(2); + + assertThat(violation.getConstraintDescriptor().getAnnotation()).isInstanceOf(NotBlank.class); + + Iterator iterator = violation.getPropertyPath().iterator(); + + assertThat(violation.getPropertyPath().toString()) + .isEqualTo("letters[2].<" + type + " element>"); + + Path.Node parent = iterator.next(); + assertThat(parent.getName()).isEqualToIgnoringCase("letters"); + + Path.Node child = iterator.next(); + assertThat(child.getName()).isEqualToIgnoringCase("<" + type + " element>"); + assertThat(child.getIndex()).isEqualTo(position); + } + + @Test + public void defaultConstructionShouldValidate() { + validateAndAssertNoViolations(new TestBean()); + } + + @Test + public void havingEmptyValueShouldNotValidate() { + TestBean bean = new TestBean(); + bean.add(""); + validateAndAssertSingleViolation(bean, 2, "sequence"); + } + + @Test + public void defaultConstructionShouldValidateForJava() { + validateAndAssertNoViolations(new JavaTestBean()); + } + + @Test + public void havingEmptyValueShouldNotValidateForJava() { + JavaTestBean bean = new JavaTestBean(); + bean.add(""); + validateAndAssertSingleViolation(bean, 2, "list"); + } + + private static class TestBean { + private Seq<@NotBlank String> letters = List.of("a", "b"); + + void add(String value) { + letters = letters.append(value); + } + } + + private static class JavaTestBean { + private java.util.List<@NotBlank String> letters = + new ArrayList<>(Arrays.asList("a", "b")); + + void add(String value) { + letters.add(value); + } + } +} \ No newline at end of file diff --git a/vavr-beanvalidation3/src/test/java/io/vavr/beanvalidation2/valueextraction/TraversableTest.java b/vavr-beanvalidation3/src/test/java/io/vavr/beanvalidation2/valueextraction/TraversableTest.java new file mode 100644 index 0000000..f31b401 --- /dev/null +++ b/vavr-beanvalidation3/src/test/java/io/vavr/beanvalidation2/valueextraction/TraversableTest.java @@ -0,0 +1,93 @@ +/* __ __ __ __ __ ___ + * \ \ / / \ \ / / __/ + * \ \/ / /\ \ \/ / / + * \____/__/ \__\____/__/ + * + * 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.beanvalidation3.ValidatorSupplier; +import io.vavr.collection.HashSet; +import io.vavr.collection.List; +import io.vavr.collection.Set; +import org.junit.Before; +import org.junit.Test; + +import jakarta.validation.ConstraintViolation; +import jakarta.validation.ElementKind; +import jakarta.validation.Path; +import jakarta.validation.Validator; +import jakarta.validation.constraints.Size; + +import static org.assertj.core.api.Assertions.assertThat; + +public class TraversableTest { + private Validator validator; + + @Before + public void setUp() { + this.validator = ValidatorSupplier.INSTANCE.get(); + } + + @Test + public void testOnValidBean() { + // given + TestBean subject = new TestBean(); + + // when + Set> violations = + HashSet.ofAll(validator.validate(subject)); + + // then + assertThat(violations).hasSize(0); + } + + @Test + public void testOnInvalidBean() { + // given + TestBean subject = new TestBean(); + subject.add("to-long-message-to-be-valid"); + + // when + Set> violations = + HashSet.ofAll(validator.validate(subject)); + + // then + assertThat(violations).hasSize(1); + ConstraintViolation violation = violations.head(); + List nodes = List.ofAll(violation.getPropertyPath()); + assertThat(nodes).hasSize(2); + + // head element -> map + assertThat(nodes.head().getKind()).isEqualTo(ElementKind.PROPERTY); + assertThat(nodes.head().getName()).isEqualTo("messages"); + + // last element -> entry + assertThat(nodes.last().getKind()).isEqualTo(ElementKind.CONTAINER_ELEMENT); + assertThat(nodes.last().getName()).isEqualTo(""); + assertThat(nodes.last().as(Path.ContainerElementNode.class).getContainerClass()) + .isEqualTo(Set.class); + } + + private static final class TestBean { + private Set<@Size(max = 10) String> messages = HashSet.of("valid", "elements"); + + void add(String message) { + messages = messages.add(message); + } + } +} diff --git a/vavr-beanvalidation3/src/test/java/io/vavr/beanvalidation2/valueextraction/TupleValueExtractorTest.java b/vavr-beanvalidation3/src/test/java/io/vavr/beanvalidation2/valueextraction/TupleValueExtractorTest.java new file mode 100644 index 0000000..c40c561 --- /dev/null +++ b/vavr-beanvalidation3/src/test/java/io/vavr/beanvalidation2/valueextraction/TupleValueExtractorTest.java @@ -0,0 +1,131 @@ +/* __ __ __ __ __ ___ + * \ \ / / \ \ / / __/ + * \ \/ / /\ \ \/ / / + * \____/__/ \__\____/__/ + * + * 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.valueextraction; + +import io.vavr.Tuple; +import io.vavr.Tuple0; +import io.vavr.Tuple1; +import io.vavr.Tuple3; +import io.vavr.beanvalidation3.ValidatorSupplier; +import org.junit.Before; +import org.junit.Test; + +import jakarta.validation.ConstraintViolation; +import jakarta.validation.Path; +import jakarta.validation.Validator; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import java.util.Collection; +import java.util.Iterator; + +import static org.assertj.core.api.Assertions.assertThat; + +public class TupleValueExtractorTest { + + private Validator validator; + private TestBean bean = null; + + @Before + public void setUp() { + this.validator = ValidatorSupplier.INSTANCE.get(); + this.bean = new TestBean(); + } + + private void validateAndAssertNoViolations() { + Collection> violations = validator.validate(bean); + assertThat(violations).isEmpty(); + } + + private void validateAndAssertSingleViolationAtIndex(String property, int index, Class constraint) { + Collection> violations = validator.validate(bean); + + assertThat(violations).isNotEmpty().hasSize(1); + + ConstraintViolation violation = violations.iterator().next(); + assertThat(violation.getPropertyPath()).isNotEmpty().hasSize(2); + + assertThat(violation.getConstraintDescriptor().getAnnotation()).isInstanceOf(constraint); + + Iterator iterator = violation.getPropertyPath().iterator(); + + Path.Node parent = iterator.next(); + assertThat(parent.getName()).isEqualToIgnoringCase(property); + + Path.Node offendingNode = iterator.next(); + assertThat(offendingNode.getIndex()).isEqualTo(index); + assertThat(offendingNode.getName()).isEqualTo(""); + } + + @Test + public void testDefaultConstruction_shouldValidate() { + validateAndAssertNoViolations(); + } + + @Test + public void testTuple1_firstHavingNullValue_shouldNotValidate() { + bean.setT1(Tuple.of(null)); + validateAndAssertSingleViolationAtIndex("t1", 1, NotBlank.class); + } + + @Test + public void testTuple3_firstHavingNullValue_shouldNotValidate() { + bean.setT3(bean.getT3().update1(null)); + validateAndAssertSingleViolationAtIndex("t3", 1, NotBlank.class); + } + + @Test + public void testTuple3_secondHavingEmptyValue_shouldNotValidate() { + bean.setT3(bean.getT3().update2("")); + validateAndAssertSingleViolationAtIndex("t3", 2, NotBlank.class); + } + + @Test + public void testTuple3_thirdHavingNullValue_shouldNotValidate() { + bean.setT3(bean.getT3().update3(null)); + validateAndAssertSingleViolationAtIndex("t3", 3, NotNull.class); + } + + + private static class TestBean { + + private Tuple0 t0; + + private Tuple1<@NotBlank String> t1 = Tuple.of("a"); + + private Tuple3<@NotBlank String, @NotBlank String, @NotNull Integer> t3 = Tuple.of("a", "x", 3); + + public Tuple1 getT1() { + return t1; + } + + public void setT1(Tuple1 t1) { + this.t1 = t1; + } + + public Tuple3 getT3() { + return t3; + } + + public void setT3(Tuple3 t3) { + this.t3 = t3; + } + } + +} \ No newline at end of file diff --git a/vavr-beanvalidation3/src/test/resources/META-INF/validation.xml b/vavr-beanvalidation3/src/test/resources/META-INF/validation.xml new file mode 100644 index 0000000..92d9834 --- /dev/null +++ b/vavr-beanvalidation3/src/test/resources/META-INF/validation.xml @@ -0,0 +1,11 @@ + + + + META-INF/constraints-vavr.xml + + \ No newline at end of file From 9ff31c8e9dec7b7d31a89ab7e81ce690d794ed67 Mon Sep 17 00:00:00 2001 From: Roman Fuerst Date: Mon, 12 Jun 2023 16:34:41 +0200 Subject: [PATCH 2/2] Update readme. --- README.md | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index fff51af..b2d65e0 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,9 @@ [![Build Status](https://travis-ci.org/vavr-io/vavr-beanvalidation2.png)](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`: