Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Migrate to Jakarta and add TCK #49

Merged
merged 1 commit into from
Mar 9, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
// If you don't need any common settings/dependencies/... for everything, remove this convention plugin and the reference to it in `io.micronaut.build.internal.project-template-module.gradle` file
repositories {
repositories {
mavenCentral()
maven { url "https://s01.oss.sonatype.org/content/repositories/snapshots/" }
}
mavenCentral()
maven { url "https://s01.oss.sonatype.org/content/repositories/snapshots/" }
}

configurations.all {
resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
}
7 changes: 5 additions & 2 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,16 @@ kotlin = "1.7.20"
kotest = "5.5.5"
spotbugs = "4.7.3"

managed-validation = "2.0.1.Final"
managed-validation = "3.0.2"

# Gradle plugins

micronaut-gradle-plugin = "3.7.4"
kotlin-gradle-plugin = "1.8.10"
ksp-gradle-plugin = "1.8.10-1.0.9"

jakarta-validation-tck = "3.0.1"

[libraries]

# BOMS
Expand All @@ -41,7 +43,8 @@ spotbugs = { module = "com.github.spotbugs:spotbugs-annotations", version.ref =

# MANAGED DEPENDENCIES

managed-validation = { module = "javax.validation:validation-api", version.ref = "managed-validation" }
managed-validation = { module = "jakarta.validation:jakarta.validation-api", version.ref = "managed-validation" }
jakarta-validation-tck-tests = { module = 'jakarta.validation:beanvalidation-tck-tests', version.ref = "jakarta-validation-tck" }

# GRADLE PLUGINS

Expand Down
4 changes: 4 additions & 0 deletions settings.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ plugins {
id 'io.micronaut.build.shared.settings' version '6.3.1'
}

enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS")

dependencyResolutionManagement {
repositories {
mavenCentral()
Expand All @@ -25,6 +27,8 @@ include 'test-suite'
include 'test-suite-groovy'
include 'test-suite-kotlin'

include 'tests:jakarta-validation-tck'

micronautBuild {
importMicronautCatalog()
importMicronautCatalog("micronaut-reactor")
Expand Down
2 changes: 1 addition & 1 deletion src/main/docs/guide/additionalConstraints.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ To define additional constraints, create a new annotation, for example:
.Example Constraint Annotation
snippet::io.micronaut.docs.validation.custom.DurationPattern[tags="imports,class", indent="0"]

<1> The annotation should be annotated with `javax.validation.Constraint`
<1> The annotation should be annotated with `jakarta.validation.Constraint`
<2> A `message` template can be provided in a hard-coded manner as above. If none is specified, Micronaut tries to find a message using `ClassName.message` using the api:context.MessageSource[] interface (optional)
<3> To support repeated annotations you can define an inner annotation (optional)

Expand Down
2 changes: 1 addition & 1 deletion src/main/docs/guide/compileTimeValidation.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ Micronaut Validation validates annotation elements at compile time with `microna

dependency:micronaut-validation-processor[groupId="io.micronaut.validation",scope="annotationProcessor"]

Micronaut Validation will, at compile time, validate annotation values that are themselves annotated with `javax.validation`.
Micronaut Validation will, at compile time, validate annotation values that are themselves annotated with `jakarta.validation`.
For example consider the following annotation:

.Annotation Validation
Expand Down
2 changes: 1 addition & 1 deletion src/main/docs/guide/dataClassesValidation.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ snippet::io.micronaut.docs.validation.pojo.PersonServiceSpec[tags="validator", i
<1> The validator validates the person
<2> The constraint violations are verified

Alternatively on Bean methods you can use `javax.validation.Valid` to trigger cascading validation:
Alternatively on Bean methods you can use `jakarta.validation.Valid` to trigger cascading validation:

.ConstraintViolationException Example
snippet::io.micronaut.docs.validation.pojo.PersonService[tags="class",indent="0"]
Expand Down
4 changes: 2 additions & 2 deletions src/main/docs/guide/methodsValidation.adoc
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
You can validate methods of any class declared as a Micronaut bean by applying `javax.validation` annotations to arguments:
You can validate methods of any class declared as a Micronaut bean by applying `jakarta.validation` annotations to arguments:

.Validating Methods
snippet::io.micronaut.docs.validation.PersonService[tags="imports,class",indent=0]
Expand All @@ -7,7 +7,7 @@ The above example declares that the `@NotBlank` annotation will be validated whe

WARNING: If you use Kotlin, the class and method must be declared `open` so Micronaut can create a compile-time subclass. Alternatively you can annotate the class with ann:validation.Validated[] and configure the Kotlin `all-open` plugin to open classes annotated with this type. See the https://kotlinlang.org/docs/reference/compiler-plugins.html[Compiler plugins] section.

A `javax.validation.ConstraintViolationException` is thrown if a validation error occurs. For example:
A `jakarta.validation.ConstraintViolationException` is thrown if a validation error occurs. For example:

.ConstraintViolationException Example
snippet::io.micronaut.docs.validation.PersonServiceSpec[tags="imports,test",indent=0]
Expand Down
6 changes: 3 additions & 3 deletions src/main/docs/guide/quickStart.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ dependency:micronaut-validation-processor[scope="annotationProcessor",groupId="i

dependency:micronaut-validation[groupId="io.micronaut.validation"]

You can validate types, fields and parameters by applying `javax.validation` annotations to arguments. Include the following dependency for annotations:
You can validate types, fields and parameters by applying `jakarta.validation` annotations to arguments. Include the following dependency for annotations:

dependency:javax.validation:validation-api[]
dependency:jakarta.validation:validation-api[]

== Supported Features

Expand All @@ -16,7 +16,7 @@ The following features are unsupported at this time:

* Any interaction with the https://beanvalidation.org/2.0/spec/#constraintmetadata[constraint metadata API], since Micronaut uses compile-time generated metadata.
* XML-based configuration
* Instead of using `javax.validation.ConstraintValidator`, use api:validation.validator.constraints.ConstraintValidator[] (io.micronaut.validation.validator.constraints.ConstraintValidator) to define custom constraints, which supports validating annotations at compile time.
* Instead of using `jakarta.validation.ConstraintValidator`, use api:validation.validator.constraints.ConstraintValidator[] (io.micronaut.validation.validator.constraints.ConstraintValidator) to define custom constraints, which supports validating annotations at compile time.

Micronaut's implementation includes the following benefits:

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ package io.micronaut.docs.validation
// tag::class[]
import io.micronaut.core.annotation.Introspected

import javax.validation.constraints.Min
import javax.validation.constraints.NotBlank
import jakarta.validation.constraints.Min
import jakarta.validation.constraints.NotBlank

@Introspected
class Person {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ package io.micronaut.docs.validation

// tag::imports[]
import jakarta.inject.Singleton
import javax.validation.constraints.NotBlank
import jakarta.validation.constraints.NotBlank
// end::imports[]

// tag::class[]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import io.micronaut.test.extensions.spock.annotation.MicronautTest
import spock.lang.Specification

import jakarta.inject.Inject
import javax.validation.ConstraintViolationException
import jakarta.validation.ConstraintViolationException
// end::imports[]

// tag::test[]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
package io.micronaut.docs.validation.custom

// tag::imports[]
import javax.validation.Constraint
import jakarta.validation.Constraint
import java.lang.annotation.Retention

import static java.lang.annotation.RetentionPolicy.RUNTIME
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import io.micronaut.test.extensions.spock.annotation.MicronautTest
import spock.lang.Specification

import jakarta.inject.Inject
import javax.validation.ConstraintViolationException
import jakarta.validation.ConstraintViolationException

@MicronautTest
class DurationPatternValidatorSpec extends Specification {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
package io.micronaut.docs.validation.custom

import jakarta.inject.Singleton
import javax.validation.constraints.NotBlank
import jakarta.validation.constraints.NotBlank
import java.time.Duration

// tag::class[]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ package io.micronaut.docs.validation.pojo
import io.micronaut.docs.validation.Person

import jakarta.inject.Singleton
import javax.validation.Valid
import jakarta.validation.Valid
// end::imports[]

// tag::class[]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import io.micronaut.validation.validator.Validator
import spock.lang.Specification

import jakarta.inject.Inject
import javax.validation.ConstraintViolationException
import jakarta.validation.ConstraintViolationException
// end::imports[]

// tag::test[]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,12 @@ package io.micronaut.docs.ioc.validation

// tag::class[]
import io.micronaut.core.annotation.Introspected
import javax.validation.constraints.Min
import javax.validation.constraints.NotBlank
import jakarta.validation.constraints.Min
import jakarta.validation.constraints.NotBlank

@Introspected
data class Person(
@field:NotBlank var name: String,
@field:Min(18) var age: Int
)
// end::class[]
// end::class[]
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ package io.micronaut.docs.ioc.validation

// tag::imports[]
import jakarta.inject.Singleton
import javax.validation.constraints.NotBlank
import jakarta.validation.constraints.NotBlank
// end::imports[]

// tag::class[]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Assertions.assertThrows
import org.junit.jupiter.api.Test
import jakarta.inject.Inject
import javax.validation.ConstraintViolationException
import jakarta.validation.ConstraintViolationException
// end::imports[]

// tag::test[]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
package io.micronaut.docs.ioc.validation.custom

// tag::imports[]
import javax.validation.Constraint
import jakarta.validation.Constraint
import kotlin.annotation.AnnotationRetention.RUNTIME
// end::imports[]

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Assertions.assertThrows
import org.junit.jupiter.api.Test
import jakarta.inject.Inject
import javax.validation.ConstraintViolationException
import jakarta.validation.ConstraintViolationException

@MicronautTest
internal class DurationPatternValidatorSpec {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ package io.micronaut.docs.ioc.validation.custom

import java.time.Duration
import jakarta.inject.Singleton
import javax.validation.constraints.NotBlank
import jakarta.validation.constraints.NotBlank

// tag::class[]
@Singleton
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ package io.micronaut.docs.ioc.validation.pojo
import io.micronaut.docs.ioc.validation.Person

import jakarta.inject.Singleton
import javax.validation.Valid
import jakarta.validation.Valid

// end::imports[]

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Assertions.assertThrows
import org.junit.jupiter.api.Test
import jakarta.inject.Inject
import javax.validation.ConstraintViolationException
import jakarta.validation.ConstraintViolationException
// end::imports[]

// tag::test[]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@
// tag::class[]
import io.micronaut.core.annotation.Introspected;

import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotBlank;

@Introspected
public class Person {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@

import jakarta.inject.Singleton;

import javax.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotBlank;
// end::imports[]

// tag::class[]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
import jakarta.inject.Inject;
import org.junit.jupiter.api.Test;

import javax.validation.ConstraintViolationException;
import jakarta.validation.ConstraintViolationException;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
package io.micronaut.docs.validation.custom;

// tag::imports[]
import javax.validation.Constraint;
import jakarta.validation.Constraint;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@
import jakarta.inject.Inject;
import org.junit.jupiter.api.Test;

import javax.validation.ConstraintViolation;
import javax.validation.ConstraintViolationException;
import jakarta.validation.ConstraintViolation;
import jakarta.validation.ConstraintViolationException;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
import io.micronaut.context.annotation.Executable;
import jakarta.inject.Singleton;

import javax.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotBlank;
import java.time.Duration;

// tag::class[]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@

// tag::object[]

import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotBlank;

public class BookInfo {
private List<@NotBlank String> authors; // <1>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

import jakarta.inject.Singleton;

import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotBlank;
import java.util.List;
import java.util.Map;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import jakarta.inject.Inject;
import org.junit.jupiter.api.Test;

import javax.validation.ConstraintViolationException;
import jakarta.validation.ConstraintViolationException;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
import io.micronaut.docs.validation.Person;
import jakarta.inject.Singleton;

import javax.validation.Valid;
import jakarta.validation.Valid;
// end::imports[]

// tag::class[]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@
import jakarta.inject.Inject;
import org.junit.jupiter.api.Test;

import javax.validation.ConstraintViolation;
import javax.validation.ConstraintViolationException;
import jakarta.validation.ConstraintViolation;
import jakarta.validation.ConstraintViolationException;
import java.util.Set;

import static org.junit.jupiter.api.Assertions.assertEquals;
Expand Down
Loading