Skip to content

Commit 9c9ef4f

Browse files
authored
Merge branch 'quarkusio:main' into IDC_whitepaper
2 parents cf8f0e8 + 1763f61 commit 9c9ef4f

10 files changed

+115
-14
lines changed

_generated-doc/main/config/quarkus-all-config.adoc

+23-2
Original file line numberDiff line numberDiff line change
@@ -3630,7 +3630,7 @@ Environment variable: `+++QUARKUS_OPENSHIFT_BASE_NATIVE_IMAGE+++`
36303630
endif::add-copy-button-to-env-var[]
36313631
--
36323632
|string
3633-
|`quay.io/quarkus/ubi-quarkus-native-binary-s2i:2.0`
3633+
|`quay.io/quarkus/ubi9-quarkus-native-binary-s2i:2.0`
36343634

36353635
a|icon:lock[title=Fixed at build time] [[quarkus-container-image-openshift_quarkus-openshift-jvm-dockerfile]] [.property-path]##link:#quarkus-container-image-openshift_quarkus-openshift-jvm-dockerfile[`quarkus.openshift.jvm-dockerfile`]##
36363636
ifdef::add-copy-button-to-config-props[]
@@ -57148,6 +57148,27 @@ endif::add-copy-button-to-env-var[]
5714857148
|boolean
5714957149
|`true`
5715057150

57151+
a| [[quarkus-liquibase-mongodb_quarkus-liquibase-mongodb-mongo-client-name]] [.property-path]##link:#quarkus-liquibase-mongodb_quarkus-liquibase-mongodb-mongo-client-name[`quarkus.liquibase-mongodb.mongo-client-name`]##
57152+
ifdef::add-copy-button-to-config-props[]
57153+
config_property_copy_button:+++quarkus.liquibase-mongodb.mongo-client-name+++[]
57154+
endif::add-copy-button-to-config-props[]
57155+
57156+
57157+
[.description]
57158+
--
57159+
Mongodb client name to use to connect to database, defaults to the default mongodb client.
57160+
57161+
57162+
ifdef::add-copy-button-to-env-var[]
57163+
Environment variable: env_var_with_copy_button:+++QUARKUS_LIQUIBASE_MONGODB_MONGO_CLIENT_NAME+++[]
57164+
endif::add-copy-button-to-env-var[]
57165+
ifndef::add-copy-button-to-env-var[]
57166+
Environment variable: `+++QUARKUS_LIQUIBASE_MONGODB_MONGO_CLIENT_NAME+++`
57167+
endif::add-copy-button-to-env-var[]
57168+
--
57169+
|string
57170+
|
57171+
5715157172
a| [[quarkus-liquibase-mongodb_quarkus-liquibase-mongodb-migrate-at-start]] [.property-path]##link:#quarkus-liquibase-mongodb_quarkus-liquibase-mongodb-migrate-at-start[`quarkus.liquibase-mongodb.migrate-at-start`]##
5715257173
ifdef::add-copy-button-to-config-props[]
5715357174
config_property_copy_button:+++quarkus.liquibase-mongodb.migrate-at-start+++[]
@@ -92977,7 +92998,7 @@ endif::add-copy-button-to-config-props[]
9297792998

9297892999
[.description]
9297993000
--
92980-
Set the list of DNS server addresses, an address is the IP of the dns server, followed by an optional colon and a port, e.g `8.8.8.8` or ++{++code 192.168.0.1:40000++}++. When the list is empty, the resolver will use the list of the system DNS server addresses from the environment, if that list cannot be retrieved it will use Google's public DNS servers `"8.8.8.8"` and `"8.8.4.4"`.
93001+
Set the list of DNS server addresses, an address is the IP of the dns server, followed by an optional colon and a port, e.g `8.8.8.8` or `192.168.0.1:40000`. When the list is empty, the resolver will use the list of the system DNS server addresses from the environment, if that list cannot be retrieved it will use Google's public DNS servers `"8.8.8.8"` and `"8.8.4.4"`.
9298193002

9298293003

9298393004
ifdef::add-copy-button-to-env-var[]

_generated-doc/main/config/quarkus-container-image-openshift.adoc

+1-1
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ Environment variable: `+++QUARKUS_OPENSHIFT_BASE_NATIVE_IMAGE+++`
6868
endif::add-copy-button-to-env-var[]
6969
--
7070
|string
71-
|`quay.io/quarkus/ubi-quarkus-native-binary-s2i:2.0`
71+
|`quay.io/quarkus/ubi9-quarkus-native-binary-s2i:2.0`
7272

7373
a|icon:lock[title=Fixed at build time] [[quarkus-container-image-openshift_quarkus-openshift-jvm-dockerfile]] [.property-path]##link:#quarkus-container-image-openshift_quarkus-openshift-jvm-dockerfile[`quarkus.openshift.jvm-dockerfile`]##
7474
ifdef::add-copy-button-to-config-props[]

_generated-doc/main/config/quarkus-container-image-openshift_quarkus.openshift.adoc

+1-1
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ Environment variable: `+++QUARKUS_OPENSHIFT_BASE_NATIVE_IMAGE+++`
6868
endif::add-copy-button-to-env-var[]
6969
--
7070
|string
71-
|`quay.io/quarkus/ubi-quarkus-native-binary-s2i:2.0`
71+
|`quay.io/quarkus/ubi9-quarkus-native-binary-s2i:2.0`
7272

7373
a|icon:lock[title=Fixed at build time] [[quarkus-container-image-openshift_quarkus-openshift-jvm-dockerfile]] [.property-path]##link:#quarkus-container-image-openshift_quarkus-openshift-jvm-dockerfile[`quarkus.openshift.jvm-dockerfile`]##
7474
ifdef::add-copy-button-to-config-props[]

_generated-doc/main/config/quarkus-liquibase-mongodb.adoc

+21
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,27 @@ endif::add-copy-button-to-env-var[]
7070
|boolean
7171
|`true`
7272

73+
a| [[quarkus-liquibase-mongodb_quarkus-liquibase-mongodb-mongo-client-name]] [.property-path]##link:#quarkus-liquibase-mongodb_quarkus-liquibase-mongodb-mongo-client-name[`quarkus.liquibase-mongodb.mongo-client-name`]##
74+
ifdef::add-copy-button-to-config-props[]
75+
config_property_copy_button:+++quarkus.liquibase-mongodb.mongo-client-name+++[]
76+
endif::add-copy-button-to-config-props[]
77+
78+
79+
[.description]
80+
--
81+
Mongodb client name to use to connect to database, defaults to the default mongodb client.
82+
83+
84+
ifdef::add-copy-button-to-env-var[]
85+
Environment variable: env_var_with_copy_button:+++QUARKUS_LIQUIBASE_MONGODB_MONGO_CLIENT_NAME+++[]
86+
endif::add-copy-button-to-env-var[]
87+
ifndef::add-copy-button-to-env-var[]
88+
Environment variable: `+++QUARKUS_LIQUIBASE_MONGODB_MONGO_CLIENT_NAME+++`
89+
endif::add-copy-button-to-env-var[]
90+
--
91+
|string
92+
|
93+
7394
a| [[quarkus-liquibase-mongodb_quarkus-liquibase-mongodb-migrate-at-start]] [.property-path]##link:#quarkus-liquibase-mongodb_quarkus-liquibase-mongodb-migrate-at-start[`quarkus.liquibase-mongodb.migrate-at-start`]##
7495
ifdef::add-copy-button-to-config-props[]
7596
config_property_copy_button:+++quarkus.liquibase-mongodb.migrate-at-start+++[]

_generated-doc/main/config/quarkus-liquibase-mongodb_quarkus.liquibase-mongodb.adoc

+21
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,27 @@ endif::add-copy-button-to-env-var[]
7070
|boolean
7171
|`true`
7272

73+
a| [[quarkus-liquibase-mongodb_quarkus-liquibase-mongodb-mongo-client-name]] [.property-path]##link:#quarkus-liquibase-mongodb_quarkus-liquibase-mongodb-mongo-client-name[`quarkus.liquibase-mongodb.mongo-client-name`]##
74+
ifdef::add-copy-button-to-config-props[]
75+
config_property_copy_button:+++quarkus.liquibase-mongodb.mongo-client-name+++[]
76+
endif::add-copy-button-to-config-props[]
77+
78+
79+
[.description]
80+
--
81+
Mongodb client name to use to connect to database, defaults to the default mongodb client.
82+
83+
84+
ifdef::add-copy-button-to-env-var[]
85+
Environment variable: env_var_with_copy_button:+++QUARKUS_LIQUIBASE_MONGODB_MONGO_CLIENT_NAME+++[]
86+
endif::add-copy-button-to-env-var[]
87+
ifndef::add-copy-button-to-env-var[]
88+
Environment variable: `+++QUARKUS_LIQUIBASE_MONGODB_MONGO_CLIENT_NAME+++`
89+
endif::add-copy-button-to-env-var[]
90+
--
91+
|string
92+
|
93+
7394
a| [[quarkus-liquibase-mongodb_quarkus-liquibase-mongodb-migrate-at-start]] [.property-path]##link:#quarkus-liquibase-mongodb_quarkus-liquibase-mongodb-migrate-at-start[`quarkus.liquibase-mongodb.migrate-at-start`]##
7495
ifdef::add-copy-button-to-config-props[]
7596
config_property_copy_button:+++quarkus.liquibase-mongodb.migrate-at-start+++[]

_generated-doc/main/config/quarkus-vertx.adoc

+1-1
Original file line numberDiff line numberDiff line change
@@ -1285,7 +1285,7 @@ endif::add-copy-button-to-config-props[]
12851285

12861286
[.description]
12871287
--
1288-
Set the list of DNS server addresses, an address is the IP of the dns server, followed by an optional colon and a port, e.g `8.8.8.8` or ++{++code 192.168.0.1:40000++}++. When the list is empty, the resolver will use the list of the system DNS server addresses from the environment, if that list cannot be retrieved it will use Google's public DNS servers `"8.8.8.8"` and `"8.8.4.4"`.
1288+
Set the list of DNS server addresses, an address is the IP of the dns server, followed by an optional colon and a port, e.g `8.8.8.8` or `192.168.0.1:40000`. When the list is empty, the resolver will use the list of the system DNS server addresses from the environment, if that list cannot be retrieved it will use Google's public DNS servers `"8.8.8.8"` and `"8.8.4.4"`.
12891289

12901290

12911291
ifdef::add-copy-button-to-env-var[]

_generated-doc/main/config/quarkus-vertx_quarkus.vertx.adoc

+1-1
Original file line numberDiff line numberDiff line change
@@ -1285,7 +1285,7 @@ endif::add-copy-button-to-config-props[]
12851285

12861286
[.description]
12871287
--
1288-
Set the list of DNS server addresses, an address is the IP of the dns server, followed by an optional colon and a port, e.g `8.8.8.8` or ++{++code 192.168.0.1:40000++}++. When the list is empty, the resolver will use the list of the system DNS server addresses from the environment, if that list cannot be retrieved it will use Google's public DNS servers `"8.8.8.8"` and `"8.8.4.4"`.
1288+
Set the list of DNS server addresses, an address is the IP of the dns server, followed by an optional colon and a port, e.g `8.8.8.8` or `192.168.0.1:40000`. When the list is empty, the resolver will use the list of the system DNS server addresses from the environment, if that list cannot be retrieved it will use Google's public DNS servers `"8.8.8.8"` and `"8.8.4.4"`.
12891289

12901290

12911291
ifdef::add-copy-button-to-env-var[]

_versions/main/guides/liquibase-mongodb.adoc

+3-2
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ The following is an example for the `{config-file}` file:
6666
[source,properties]
6767
----
6868
# configure MongoDB
69-
quarkus.mongodb.connection-string = mongodb://localhost:27017
69+
quarkus.mongodb.connection-string = mongodb://localhost:27017/mydatabase
7070
7171
# Liquibase MongoDB minimal config properties
7272
quarkus.liquibase-mongodb.migrate-at-start=true
@@ -80,8 +80,9 @@ quarkus.liquibase-mongodb.migrate-at-start=true
8080
# quarkus.liquibase-mongodb.default-catalog-name=DefaultCatalog
8181
# quarkus.liquibase-mongodb.default-schema-name=DefaultSchema
8282
----
83+
NOTE: Liquibase needs a database either in the connection string or with the `quarkus.mongodb.database` property.
8384

84-
NOTE: Liquibase MongoDB is configured using a connection string, we do our best to craft a connection string that matches the MongoDB client configuration but if some configuration properties are not working you may consider adding them directly into the `quarkus.mongodb.connection-string` config property.
85+
NOTE: By default, Liquibase MongoDB is configured to use the default MongoDB client Quarkus creates, but you can configure the extension to use a named client by setting `quarkus.liquibase-mongodb.mongo-client-name`.
8586

8687
Add a changeLog file to the default folder following the Liquibase naming conventions: `{change-log}`
8788
YAML, JSON and XML formats are supported for the changeLog.

_versions/main/guides/qute-reference.adoc

+25-3
Original file line numberDiff line numberDiff line change
@@ -2367,12 +2367,34 @@ TIP: A list element can be accessed directly via an index: `{list.10}` or even `
23672367
* `fmt` or `format`: Formats the string instance via `java.lang.String.format()`
23682368
** `{myStr.fmt("arg1","arg2")}`
23692369
** `{myStr.format(locale,arg1)}`
2370+
2371+
* `+`: Infix notation for concatenation, works with `String` and `StringBuilder` base objects
2372+
** `{item.name + '_' + mySuffix}`
2373+
** `{name + 10}`
2374+
2375+
* `str:['<value>']`: Returns the string value, e.g. to easily concatenate another string value
2376+
** `{str:['/path/to/'] + fileName}`
2377+
23702378
* `str:fmt` or `str:format`: Formats the supplied string value via `java.lang.String.format()`
23712379
** `{str:format("Hello %s!",name)}`
23722380
** `{str:fmt(locale,'%tA',now)}`
2373-
* `+`: Concatenation
2374-
** `{item.name + '_' + mySuffix}`
2375-
** `{name + 10}`
2381+
** `{str:fmt('/path/to/%s', fileName)}`
2382+
2383+
* `str:concat`: Concatenates the string representations of the specified arguments.
2384+
** `{str:concat("Hello ",name,"!")}` yields `Hello Foo!` if `name` resolves to `Foo`
2385+
** `{str:concat('/path/to/', fileName)}`
2386+
2387+
* `str:join`: Joins the string representations of the specified arguments together with a delimiter.
2388+
** `{str:join('_','Qute','is','cool')}` yields `Qute_is_cool`
2389+
2390+
* `str:builder`: Returns a new string builder.
2391+
** `{str:builder('Qute').append("is").append("cool!")}` yields `Qute is cool!`
2392+
** `{str:builder('Qute') + "is" + whatisqute + "!"}` yields `Qute is cool!` if `whatisqute` resolves to `cool`
2393+
2394+
* `str:eval`: Evaluates the string representation of the first argument as a template in the <<current_context_object,current context>>.
2395+
** `{str:eval('Hello {name}!')` yields `Hello lovely!` if `name` resolves to `lovely`
2396+
** `{str:eval(myTemplate)}` yields `Hello lovely!` if `myTemplate` resolves to `Hello {name}!` and `name` resolves to `lovely`
2397+
** `{str:eval('/path/to/{fileName}')}` yields `/path/to/file.txt` if `fileName` resolves to `file.txt`
23762398

23772399
===== Config
23782400

_versions/main/guides/rest.adoc

+18-3
Original file line numberDiff line numberDiff line change
@@ -1627,11 +1627,26 @@ public User userPrivate() {
16271627
When the result the `userPublic` method is serialized, the `id` field will not be contained in the response as the `Public` view does not include it.
16281628
The result of `userPrivate` however will include the `id` as expected when serialized.
16291629

1630-
===== Reflection-free Jackson serialization
1630+
===== Reflection-free Jackson serialization and deserialization
16311631

1632-
Out-of-the-box Jackson serialization converts objects into their JSON representation by introspecting them through a heavy use of reflection. However, the general Quarkus philosophy is to avoid reflection as much as possible, often replacing it with build time code generation. For this reason it is possible to automatically generate at build time implementations of the Jackson `StdSerializer`, one for each class to be converted in JSON. These generated serializers can be subsequently used by Quarkus at runtime to perform the JSON serialization of the objects returned by a REST endpoint without any use of reflection.
1632+
By default, Jackson uses reflection to convert objects to and from JSON.
1633+
However, {project-name} follows a build-time optimization philosophy.
1634+
To align with this approach, configure your application to minimize reflection by using the link:https://quarkus.io/extensions/io.quarkus/quarkus-rest-jackson[`quarkus-rest-jackson`] extension.
16331635

1634-
This feature is turned off by default, but it can be enabled by setting the configuration property `quarkus.rest.jackson.optimization.enable-reflection-free-serializers=true`.
1636+
This feature is introduced as a Technology Preview and is disabled by default.
1637+
1638+
By eliminating reliance on reflection during deserialization, applications can achieve better performance and reduced memory consumption, particularly for native applications where reflection can introduce overhead.
1639+
If you implement this feature, run tests to assess its effect on your applications.
1640+
1641+
To enable this feature, set the following configuration property to `true`:
1642+
1643+
`quarkus.rest.jackson.optimization.enable-reflection-free-serializers=true`.
1644+
1645+
Setting this property applies reflection-free optimization to deserialization and serialization.
1646+
1647+
When enabled, {project-name} generates `StdSerializer` and `StdDeserializer` implementations at build time for each class requiring JSON conversion. The application then processes objects returned by REST endpoints using these generated serializers and deserializers, eliminating reliance on reflection and improving performance.
1648+
1649+
Developers can further customize JSON processing by implementing the `ObjectMapperCustomizer` interface. This interface allows fine-grained control over the `ObjectMapper`, enabling the registration of custom serializers and deserializers while ensuring compatibility with the reflection-free optimization. If additional configuration is needed, implement an `ObjectMapperCustomizer` bean and register any necessary modules or settings.
16351650

16361651
===== Completely customized per method serialization/deserialization
16371652

0 commit comments

Comments
 (0)