-
Notifications
You must be signed in to change notification settings - Fork 3k
Migration Guide 2.5
We upgraded the Flyway dependency from 7.15 to version 8.0. Please refer to the Flyway release notes to see all the changes.
One important breaking change is that Flyway deprecated the Community support for database versions older than 5 years, for example: MySQL 5.7 and PostgreSQL 9.6. Therefore, users using the Flyway community and an unsupported database will have a failure at startup similar to:
Caused by: org.flywaydb.core.internal.license.FlywayEditionUpgradeRequiredException: Flyway Teams Edition or MySQL upgrade required:
MySQL 5.7 is no longer supported by Flyway Community Edition, but still supported by Flyway Teams Edition.
To avoid split packages, the following classes was deprecated in 2.1 and are now removed:
-
io.quarkus.hibernate.orm.panache.ProjectedFieldNamehas been removed in favor ofio.quarkus.hibernate.orm.panache.common.ProjectedFieldName.
To avoid split packages, the following classes was deprecated in 2.1 and are now removed:
-
io.quarkus.mongodb.panache.MongoEntityhas been removed in favor ofio.quarkus.mongodb.panache.common.MongoEntity. -
io.quarkus.mongodb.panache.ProjectionForhas been removed in favor ofio.quarkus.mongodb.panache.common.ProjectionFor. -
io.quarkus.mongodb.panache.PanacheUpdatehas been removed in favor ofio.quarkus.mongodb.panache.common.PanacheUpdate. -
io.quarkus.mongodb.panache.reactive.ReactivePanacheUpdatehas been removed in favor ofio.quarkus.mongodb.panache.common.reactive.ReactivePanacheUpdate.
The quarkus-vertx extension no longer depends on the quarkus-jackson extension.
As a result, if your application depends on quarkus-vertx and makes use of the io.vertx.core.json.JsonObject.mapFrom() or the io.vertx.core.json.JsonObject.mapTo() methods then the quarkus-jackson extension should be added (either manually or as a transient dependency) to the project dependencies.
Quarkus 2.5 uses Vert.x 4.2.1. This release contains a few breaking changes. While some of them have been mitigated, you may use removed APIs:
| Element | Classification | Description |
|---|---|---|
Uni<MessageConsumer<T>> MessageConsumer<T>::registration() |
BREAKING | Method was removed. |
MessageConsumer<T> MessageConsumer<T>::registrationAndAwait() |
BREAKING | Method was removed. |
MessageConsumer<T> MessageConsumer<T>::registrationAndForget() |
BREAKING | Method was removed. |
| Element | Classification | Description |
|---|---|---|
SchemaRouter SchemaRouter::create(HttpClient, FileSystem, SchemaRouterOptions) |
BREAKING | The number of parameters of the method have changed. |
If you use the Quarkus Redis extension, these changes have been mitigated. However, the underlying Redis client contains the following breaking changes:
| Element | Classification | Description |
|---|---|---|
Uni<Response> RedisAPI::lpop(===String===) |
BREAKING | The type of the parameter changed from 'String' to 'List'. |
Response RedisAPI::lpopAndAwait(===String===) |
BREAKING | The type of the parameter changed from 'String' to 'List'. |
void RedisAPI::lpopAndForget(===String===) |
BREAKING | The type of the parameter changed from 'String' to 'List'. |
Uni<Response> RedisAPI::psync(===String===) |
BREAKING | The type of the parameter changed from 'String' to 'List'. |
Response RedisAPI::psyncAndAwait(===String===) |
BREAKING | The type of the parameter changed from 'String' to 'List'. |
void RedisAPI::psyncAndForget(===String===) |
BREAKING | The type of the parameter changed from 'String' to 'List'. |
Uni<Response> RedisAPI::rpop(===String===) |
BREAKING | The type of the parameter changed from 'String' to 'List'. |
Response RedisAPI::rpopAndAwait(===String===) |
BREAKING | The type of the parameter changed from 'String' to 'List'. |
void RedisAPI::rpopAndForget(===java.lang.String===) |
BREAKING | The type of the parameter changed from 'String' to 'List'. |
void RedisConnection::close() |
BREAKING | The return type changed from 'void' to Uni<Void>. |
| Element | Classification | Description |
|---|---|---|
class AccessToken
|
BREAKING | The class has been removed |
class KeycloakHelper
|
BREAKING | The class has been removed |
class OAuth2RBAC
|
BREAKING | The class has been removed |
class OAuth2Response
|
BREAKING | The class has been removed |
class KeycloakRBAC
|
BREAKING | The class has been removed |
class MicroProfileRBAC
|
BREAKING | The class has been removed |
OAuth2FlowType OAuth2Auth::getFlowType() |
BREAKING | Method was removed |
OAuth2FlowType OAuth2Auth::introspectToken(String) |
BREAKING | Method was removed |
Uni<AccessToken> OAuth2Auth::introspectToken(String, String) |
BREAKING | Method was removed |
Uni<AccessToken> OAuth2Auth::introspectToken(String) |
BREAKING | Method was removed |
AccessToken OAuth2Auth::introspectTokenAndAwait(String, String) |
BREAKING | Method was removed |
AccessToken OAuth2Auth::introspectTokenAndAwait(String) |
BREAKING | Method was removed |
OAuth2Auth OAuth2Auth::introspectTokenAndForget(String, String) |
BREAKING | Method was removed |
OAuth2Auth OAuth2Auth::introspectTokenAndForget(String) |
BREAKING | Method was removed |
Uni<Void> OAuth2Auth::loadJWK(String) |
BREAKING | Method was removed |
void OAuth2Auth::loadJWKAndAwait(String) |
BREAKING | Method was removed |
OAuth2Auth OAuth2Auth::loadJWKAndForget(String) |
BREAKING | Method was removed |
OAuth2Auth OAuth2Auth::rbacHandler(OAuth2RBAC) |
BREAKING | Method was removed |
| Element | Classification | Description |
|---|---|---|
ValidationHandlerBuilder ValidationHandler::builder(SchemaParser) |
BREAKING | The return type changed from 'io.vertx.ext.web.validation.builder.ValidationHandlerBuilder' to 'io.vertx.mutiny.ext.web.validation.builder.ValidationHandlerBuilder'. |
The templates directories are also scanned in all application archives and in extension runtime modules.
Previously, only the templates directory from the application root was considered.
Note that it's possible to exclude any file from any templates directory via the quarkus.qute.template-path-exclude configuration property.
Excluded files are neither parsed nor validated during build and are not automatically available at runtime.
The keys used to access the iteration metadata inside a loop cannot be used directly anymore.
Instead, a prefix is used to avoid possible collisions with variables from the outer scope.
By default, the alias of an iterated element suffixed with an underscore is used as a prefix.
For example, the hasNext key must be prefixed with it_ inside an {#each} section: {it_hasNext}.
And must be used in a form of {item_hasNext} inside a {#for} section with the item element alias.
The prefix is configurable either via EngineBuilder.iterationMetadataPrefix() for standalone Qute or via the quarkus.qute.iteration-metadata-prefix configuration property in a Quarkus application. Three special constants can be used:
-
<alias_>- the alias of an iterated element suffixed with an underscore is used (default); e.g.{item_hasNext} -
<alias?>- the alias of an iterated element suffixed with a question mark is used; e.g.{item?hasNext} -
<none>- no prefix is used - the default behavior in previous versions; e.g.{hasNext}
quarkus-hibernate-orm-rest-data-panache, quarkus-spring-data-rest and quarkus-mongodb-rest-data-panache can now work with both RESTEasy Classic (i.e. quarkus-resteasy) and RESTEasy Reactive (i.e. quarkus-resteasy-reactive) and this no longer have a hard dependency on quarkus-resteasy.
Users of these dependencies will now have to explicitly add quarkus-resteasy or quarkus-resteasy-reactive to their applications.
quarkus-spring-web now works with both RESTEasy Classic (i.e. quarkus-resteasy) and RESTEasy Reactive (i.e. quarkus-resteasy-reactive) and this no longer have a hard dependency on quarkus-resteasy-jackson.
Users of quarkus-spring-web will now have to explicitly add quarkus-resteasy-jackson or quarkus-resteasy-reactive-jackson to their applications.