From 4e2cf3ef57e28e09f24fc7f2bd5b6d395f27ee6f Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Tue, 31 Oct 2023 01:55:35 +0000 Subject: [PATCH] Sync documentation of main branch --- .../io.quarkus.qute.runtime.QuteDevModeConfig | 1 + .../io.quarkus.qute.runtime.QuteConfig | 2 +- .../main/config/quarkus-all-config.adoc | 22 ++++++++++ ...ute-config-group-qute-dev-mode-config.adoc | 34 +++++++++++++++ .../quarkus-qute-general-config-items.adoc | 34 +++++++++++++++ .../main/config/quarkus-qute-qute-config.adoc | 22 ++++++++++ _generated-doc/main/config/quarkus-qute.adoc | 22 ++++++++++ .../main/guides/building-native-image.adoc | 3 +- .../main/guides/grpc-getting-started.adoc | 4 -- .../main/guides/grpc-virtual-threads.adoc | 21 ++++------ _versions/main/guides/kafka.adoc | 7 ++++ .../guides/messaging-virtual-threads.adoc | 25 ++++------- _versions/main/guides/qute-reference.adoc | 8 +++- .../resteasy-reactive-virtual-threads.adoc | 41 ++++++------------- _versions/main/guides/security-jpa.adoc | 7 ++++ _versions/main/guides/virtual-threads.adoc | 15 +++---- 16 files changed, 193 insertions(+), 75 deletions(-) create mode 100644 _generated-doc/main/config/all-configuration-groups-generated-doc/io.quarkus.qute.runtime.QuteDevModeConfig create mode 100644 _generated-doc/main/config/quarkus-qute-config-group-qute-dev-mode-config.adoc create mode 100644 _generated-doc/main/config/quarkus-qute-general-config-items.adoc diff --git a/_generated-doc/main/config/all-configuration-groups-generated-doc/io.quarkus.qute.runtime.QuteDevModeConfig b/_generated-doc/main/config/all-configuration-groups-generated-doc/io.quarkus.qute.runtime.QuteDevModeConfig new file mode 100644 index 0000000000..4b2e4c91bf --- /dev/null +++ b/_generated-doc/main/config/all-configuration-groups-generated-doc/io.quarkus.qute.runtime.QuteDevModeConfig @@ -0,0 +1 @@ +[{"configDocKey":{"type":"java.util.regex.Pattern","key":".no-restart-templates","additionalKeys":[],"configDoc":"By default, a template modification results in an application restart that triggers build-time validations.\n\nThis regular expression can be used to specify the templates for which the application is not restarted. I.e. the templates are reloaded and only runtime validations are performed.\n\nThe matched input is the template path relative from the `templates` directory and the `/` is used as a path separator. For example, `templates/foo.html`.","withinAMap":false,"defaultValue":"","javaDocSiteLink":"https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html","docMapKey":"no-restart-templates","configPhase":"BUILD_TIME","acceptedValues":null,"optional":true,"list":false,"passThroughMap":false,"withinAConfigGroup":true,"topLevelGrouping":"","enum":false}}] \ No newline at end of file diff --git a/_generated-doc/main/config/all-configuration-roots-generated-doc/io.quarkus.qute.runtime.QuteConfig b/_generated-doc/main/config/all-configuration-roots-generated-doc/io.quarkus.qute.runtime.QuteConfig index e8d24b5687..daf86338df 100644 --- a/_generated-doc/main/config/all-configuration-roots-generated-doc/io.quarkus.qute.runtime.QuteConfig +++ b/_generated-doc/main/config/all-configuration-roots-generated-doc/io.quarkus.qute.runtime.QuteConfig @@ -1 +1 @@ -[{"configDocKey":{"type":"string","key":"quarkus.qute.suffixes","additionalKeys":[],"configDoc":"The list of suffixes used when attempting to locate a template file.\n\nBy default, `engine.getTemplate(\"foo\")` would result in several lookups: `foo`, `foo.html`, `foo.txt`, etc.","withinAMap":false,"defaultValue":"qute.html,qute.txt,html,txt","javaDocSiteLink":"","docMapKey":"suffixes","configPhase":"BUILD_AND_RUN_TIME_FIXED","acceptedValues":null,"optional":false,"list":true,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.qute","enum":false}},{"configDocKey":{"type":"`Map`","key":"quarkus.qute.content-types","additionalKeys":[],"configDoc":"The additional map of suffixes to content types. This map is used when working with template variants. By default, the `java.net.URLConnection++#++getFileNameMap()` is used to determine the content type of a template file.","withinAMap":true,"defaultValue":"","javaDocSiteLink":"","docMapKey":"content-types","configPhase":"BUILD_AND_RUN_TIME_FIXED","acceptedValues":null,"optional":true,"list":false,"passThroughMap":true,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.qute","enum":false}},{"configDocKey":{"type":"string","key":"quarkus.qute.type-check-excludes","additionalKeys":[],"configDoc":"The list of exclude rules used to intentionally ignore some parts of an expression when performing type-safe validation.\n\nAn element value must have at least two parts separated by dot. The last part is used to match the property/method name. The prepended parts are used to match the class name. The value `++*++` can be used to match any name.\n\nExamples:\n\n - `org.acme.Foo.name` - exclude the property/method `name` on the `org.acme.Foo` class\n - `org.acme.Foo.++*++` - exclude any property/method on the `org.acme.Foo` class\n - `++*++.age` - exclude the property/method `age` on any class","withinAMap":false,"defaultValue":"","javaDocSiteLink":"","docMapKey":"type-check-excludes","configPhase":"BUILD_AND_RUN_TIME_FIXED","acceptedValues":null,"optional":true,"list":true,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.qute","enum":false}},{"configDocKey":{"type":"java.util.regex.Pattern","key":"quarkus.qute.template-path-exclude","additionalKeys":[],"configDoc":"This regular expression is used to exclude template files from the `templates` directory. Excluded templates are neither parsed nor validated during build and are not available at runtime.\n\nThe matched input is the file path relative from the `templates` directory and the `/` is used as a path separator.\n\nBy default, the hidden files are excluded. The name of a hidden file starts with a dot.","withinAMap":false,"defaultValue":"^\\..*|.*\\/\\..*$","javaDocSiteLink":"https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html","docMapKey":"template-path-exclude","configPhase":"BUILD_AND_RUN_TIME_FIXED","acceptedValues":null,"optional":false,"list":false,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.qute","enum":false}},{"configDocKey":{"type":"string","key":"quarkus.qute.iteration-metadata-prefix","additionalKeys":[],"configDoc":"The prefix is used to access the iteration metadata inside a loop section.\n\nA valid prefix consists of alphanumeric characters and underscores. Three special constants can be used:\n\n - `` - the alias of an iterated element suffixed with an underscore is used, e.g. `item_hasNext` and `it_count`\n - `` - the alias of an iterated element suffixed with a question mark is used, e.g. `item?hasNext` and `it?count`\n - `` - no prefix is used, e.g. `hasNext` and `count` By default, the `` constant is set.","withinAMap":false,"defaultValue":"","javaDocSiteLink":"","docMapKey":"iteration-metadata-prefix","configPhase":"BUILD_AND_RUN_TIME_FIXED","acceptedValues":null,"optional":false,"list":false,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.qute","enum":false}},{"configDocKey":{"type":"string","key":"quarkus.qute.escape-content-types","additionalKeys":[],"configDoc":"The list of content types for which the `'`, `\"`, `<`, `>` and `&` characters are escaped if a template variant is set.","withinAMap":false,"defaultValue":"text/html,text/xml,application/xml,application/xhtml+xml","javaDocSiteLink":"","docMapKey":"escape-content-types","configPhase":"BUILD_AND_RUN_TIME_FIXED","acceptedValues":null,"optional":false,"list":true,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.qute","enum":false}},{"configDocKey":{"type":"java.nio.charset.Charset","key":"quarkus.qute.default-charset","additionalKeys":[],"configDoc":"The default charset of the templates files.","withinAMap":false,"defaultValue":"UTF-8","javaDocSiteLink":"https://docs.oracle.com/javase/8/docs/api/java/nio/charset/Charset.html","docMapKey":"default-charset","configPhase":"BUILD_AND_RUN_TIME_FIXED","acceptedValues":null,"optional":false,"list":false,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.qute","enum":false}}] \ No newline at end of file +[{"configDocKey":{"type":"string","key":"quarkus.qute.suffixes","additionalKeys":[],"configDoc":"The list of suffixes used when attempting to locate a template file.\n\nBy default, `engine.getTemplate(\"foo\")` would result in several lookups: `foo`, `foo.html`, `foo.txt`, etc.","withinAMap":false,"defaultValue":"qute.html,qute.txt,html,txt","javaDocSiteLink":"","docMapKey":"suffixes","configPhase":"BUILD_AND_RUN_TIME_FIXED","acceptedValues":null,"optional":false,"list":true,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.qute","enum":false}},{"configDocKey":{"type":"`Map`","key":"quarkus.qute.content-types","additionalKeys":[],"configDoc":"The additional map of suffixes to content types. This map is used when working with template variants. By default, the `java.net.URLConnection++#++getFileNameMap()` is used to determine the content type of a template file.","withinAMap":true,"defaultValue":"","javaDocSiteLink":"","docMapKey":"content-types","configPhase":"BUILD_AND_RUN_TIME_FIXED","acceptedValues":null,"optional":true,"list":false,"passThroughMap":true,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.qute","enum":false}},{"configDocKey":{"type":"string","key":"quarkus.qute.type-check-excludes","additionalKeys":[],"configDoc":"The list of exclude rules used to intentionally ignore some parts of an expression when performing type-safe validation.\n\nAn element value must have at least two parts separated by dot. The last part is used to match the property/method name. The prepended parts are used to match the class name. The value `++*++` can be used to match any name.\n\nExamples:\n\n - `org.acme.Foo.name` - exclude the property/method `name` on the `org.acme.Foo` class\n - `org.acme.Foo.++*++` - exclude any property/method on the `org.acme.Foo` class\n - `++*++.age` - exclude the property/method `age` on any class","withinAMap":false,"defaultValue":"","javaDocSiteLink":"","docMapKey":"type-check-excludes","configPhase":"BUILD_AND_RUN_TIME_FIXED","acceptedValues":null,"optional":true,"list":true,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.qute","enum":false}},{"configDocKey":{"type":"java.util.regex.Pattern","key":"quarkus.qute.template-path-exclude","additionalKeys":[],"configDoc":"This regular expression is used to exclude template files from the `templates` directory. Excluded templates are neither parsed nor validated during build and are not available at runtime.\n\nThe matched input is the file path relative from the `templates` directory and the `/` is used as a path separator.\n\nBy default, the hidden files are excluded. The name of a hidden file starts with a dot.","withinAMap":false,"defaultValue":"^\\..*|.*\\/\\..*$","javaDocSiteLink":"https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html","docMapKey":"template-path-exclude","configPhase":"BUILD_AND_RUN_TIME_FIXED","acceptedValues":null,"optional":false,"list":false,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.qute","enum":false}},{"configDocKey":{"type":"string","key":"quarkus.qute.iteration-metadata-prefix","additionalKeys":[],"configDoc":"The prefix is used to access the iteration metadata inside a loop section.\n\nA valid prefix consists of alphanumeric characters and underscores. Three special constants can be used:\n\n - `` - the alias of an iterated element suffixed with an underscore is used, e.g. `item_hasNext` and `it_count`\n - `` - the alias of an iterated element suffixed with a question mark is used, e.g. `item?hasNext` and `it?count`\n - `` - no prefix is used, e.g. `hasNext` and `count` By default, the `` constant is set.","withinAMap":false,"defaultValue":"","javaDocSiteLink":"","docMapKey":"iteration-metadata-prefix","configPhase":"BUILD_AND_RUN_TIME_FIXED","acceptedValues":null,"optional":false,"list":false,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.qute","enum":false}},{"configDocKey":{"type":"string","key":"quarkus.qute.escape-content-types","additionalKeys":[],"configDoc":"The list of content types for which the `'`, `\"`, `<`, `>` and `&` characters are escaped if a template variant is set.","withinAMap":false,"defaultValue":"text/html,text/xml,application/xml,application/xhtml+xml","javaDocSiteLink":"","docMapKey":"escape-content-types","configPhase":"BUILD_AND_RUN_TIME_FIXED","acceptedValues":null,"optional":false,"list":true,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.qute","enum":false}},{"configDocKey":{"type":"java.nio.charset.Charset","key":"quarkus.qute.default-charset","additionalKeys":[],"configDoc":"The default charset of the templates files.","withinAMap":false,"defaultValue":"UTF-8","javaDocSiteLink":"https://docs.oracle.com/javase/8/docs/api/java/nio/charset/Charset.html","docMapKey":"default-charset","configPhase":"BUILD_AND_RUN_TIME_FIXED","acceptedValues":null,"optional":false,"list":false,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.qute","enum":false}},{"configDocKey":{"type":"java.util.regex.Pattern","key":"quarkus.qute.dev-mode.no-restart-templates","additionalKeys":[],"configDoc":"By default, a template modification results in an application restart that triggers build-time validations.\n\nThis regular expression can be used to specify the templates for which the application is not restarted. I.e. the templates are reloaded and only runtime validations are performed.\n\nThe matched input is the template path relative from the `templates` directory and the `/` is used as a path separator. For example, `templates/foo.html`.","withinAMap":false,"defaultValue":"","javaDocSiteLink":"https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html","docMapKey":"no-restart-templates","configPhase":"BUILD_AND_RUN_TIME_FIXED","acceptedValues":null,"optional":true,"list":false,"passThroughMap":false,"withinAConfigGroup":true,"topLevelGrouping":"quarkus.qute","enum":false}}] \ No newline at end of file diff --git a/_generated-doc/main/config/quarkus-all-config.adoc b/_generated-doc/main/config/quarkus-all-config.adoc index 7f7c4617ce..268efa9cfe 100644 --- a/_generated-doc/main/config/quarkus-all-config.adoc +++ b/_generated-doc/main/config/quarkus-all-config.adoc @@ -57223,6 +57223,28 @@ endif::add-copy-button-to-env-var[] |`UTF-8` +a|icon:lock[title=Fixed at build time] [[quarkus-qute_quarkus.qute.dev-mode.no-restart-templates]]`link:#quarkus-qute_quarkus.qute.dev-mode.no-restart-templates[quarkus.qute.dev-mode.no-restart-templates]` + + +[.description] +-- +By default, a template modification results in an application restart that triggers build-time validations. + +This regular expression can be used to specify the templates for which the application is not restarted. I.e. the templates are reloaded and only runtime validations are performed. + +The matched input is the template path relative from the `templates` directory and the `/` is used as a path separator. For example, `templates/foo.html`. + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_QUTE_DEV_MODE_NO_RESTART_TEMPLATES+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_QUTE_DEV_MODE_NO_RESTART_TEMPLATES+++` +endif::add-copy-button-to-env-var[] +--|link:https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html[Pattern] + +| + + a| [[quarkus-qute_quarkus.qute.property-not-found-strategy]]`link:#quarkus-qute_quarkus.qute.property-not-found-strategy[quarkus.qute.property-not-found-strategy]` diff --git a/_generated-doc/main/config/quarkus-qute-config-group-qute-dev-mode-config.adoc b/_generated-doc/main/config/quarkus-qute-config-group-qute-dev-mode-config.adoc new file mode 100644 index 0000000000..969880c35d --- /dev/null +++ b/_generated-doc/main/config/quarkus-qute-config-group-qute-dev-mode-config.adoc @@ -0,0 +1,34 @@ + +:summaryTableId: quarkus-qute-config-group-qute-dev-mode-config +[.configuration-legend] +icon:lock[title=Fixed at build time] Configuration property fixed at build time - All other configuration properties are overridable at runtime +[.configuration-reference, cols="80,.^10,.^10"] +|=== + +h|[[quarkus-qute-config-group-qute-dev-mode-config_configuration]]link:#quarkus-qute-config-group-qute-dev-mode-config_configuration[Configuration property] + +h|Type +h|Default + +a|icon:lock[title=Fixed at build time] [[quarkus-qute-config-group-qute-dev-mode-config_quarkus.qute.dev-mode.no-restart-templates]]`link:#quarkus-qute-config-group-qute-dev-mode-config_quarkus.qute.dev-mode.no-restart-templates[quarkus.qute.dev-mode.no-restart-templates]` + + +[.description] +-- +By default, a template modification results in an application restart that triggers build-time validations. + +This regular expression can be used to specify the templates for which the application is not restarted. I.e. the templates are reloaded and only runtime validations are performed. + +The matched input is the template path relative from the `templates` directory and the `/` is used as a path separator. For example, `templates/foo.html`. + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_QUTE_DEV_MODE_NO_RESTART_TEMPLATES+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_QUTE_DEV_MODE_NO_RESTART_TEMPLATES+++` +endif::add-copy-button-to-env-var[] +--|link:https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html[Pattern] + +| + +|=== \ No newline at end of file diff --git a/_generated-doc/main/config/quarkus-qute-general-config-items.adoc b/_generated-doc/main/config/quarkus-qute-general-config-items.adoc new file mode 100644 index 0000000000..1ff07119e3 --- /dev/null +++ b/_generated-doc/main/config/quarkus-qute-general-config-items.adoc @@ -0,0 +1,34 @@ + +:summaryTableId: quarkus-qute-general-config-items +[.configuration-legend] +icon:lock[title=Fixed at build time] Configuration property fixed at build time - All other configuration properties are overridable at runtime +[.configuration-reference, cols="80,.^10,.^10"] +|=== + +h|[[quarkus-qute-general-config-items_configuration]]link:#quarkus-qute-general-config-items_configuration[Configuration property] + +h|Type +h|Default + +a|icon:lock[title=Fixed at build time] [[quarkus-qute-general-config-items_quarkus.qute.dev-mode.no-restart-templates]]`link:#quarkus-qute-general-config-items_quarkus.qute.dev-mode.no-restart-templates[quarkus.qute.dev-mode.no-restart-templates]` + + +[.description] +-- +By default, a template modification results in an application restart that triggers build-time validations. + +This regular expression can be used to specify the templates for which the application is not restarted. I.e. the templates are reloaded and only runtime validations are performed. + +The matched input is the template path relative from the `templates` directory and the `/` is used as a path separator. For example, `templates/foo.html`. + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_QUTE_DEV_MODE_NO_RESTART_TEMPLATES+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_QUTE_DEV_MODE_NO_RESTART_TEMPLATES+++` +endif::add-copy-button-to-env-var[] +--|link:https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html[Pattern] + +| + +|=== \ No newline at end of file diff --git a/_generated-doc/main/config/quarkus-qute-qute-config.adoc b/_generated-doc/main/config/quarkus-qute-qute-config.adoc index 8fc90b21e7..0b867db660 100644 --- a/_generated-doc/main/config/quarkus-qute-qute-config.adoc +++ b/_generated-doc/main/config/quarkus-qute-qute-config.adoc @@ -134,6 +134,28 @@ endif::add-copy-button-to-env-var[] |`UTF-8` +a|icon:lock[title=Fixed at build time] [[quarkus-qute-qute-config_quarkus.qute.dev-mode.no-restart-templates]]`link:#quarkus-qute-qute-config_quarkus.qute.dev-mode.no-restart-templates[quarkus.qute.dev-mode.no-restart-templates]` + + +[.description] +-- +By default, a template modification results in an application restart that triggers build-time validations. + +This regular expression can be used to specify the templates for which the application is not restarted. I.e. the templates are reloaded and only runtime validations are performed. + +The matched input is the template path relative from the `templates` directory and the `/` is used as a path separator. For example, `templates/foo.html`. + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_QUTE_DEV_MODE_NO_RESTART_TEMPLATES+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_QUTE_DEV_MODE_NO_RESTART_TEMPLATES+++` +endif::add-copy-button-to-env-var[] +--|link:https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html[Pattern] + +| + + a|icon:lock[title=Fixed at build time] [[quarkus-qute-qute-config_quarkus.qute.content-types-content-types]]`link:#quarkus-qute-qute-config_quarkus.qute.content-types-content-types[quarkus.qute.content-types]` diff --git a/_generated-doc/main/config/quarkus-qute.adoc b/_generated-doc/main/config/quarkus-qute.adoc index 942117066a..a1220cb042 100644 --- a/_generated-doc/main/config/quarkus-qute.adoc +++ b/_generated-doc/main/config/quarkus-qute.adoc @@ -134,6 +134,28 @@ endif::add-copy-button-to-env-var[] |`UTF-8` +a|icon:lock[title=Fixed at build time] [[quarkus-qute_quarkus.qute.dev-mode.no-restart-templates]]`link:#quarkus-qute_quarkus.qute.dev-mode.no-restart-templates[quarkus.qute.dev-mode.no-restart-templates]` + + +[.description] +-- +By default, a template modification results in an application restart that triggers build-time validations. + +This regular expression can be used to specify the templates for which the application is not restarted. I.e. the templates are reloaded and only runtime validations are performed. + +The matched input is the template path relative from the `templates` directory and the `/` is used as a path separator. For example, `templates/foo.html`. + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_QUTE_DEV_MODE_NO_RESTART_TEMPLATES+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_QUTE_DEV_MODE_NO_RESTART_TEMPLATES+++` +endif::add-copy-button-to-env-var[] +--|link:https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html[Pattern] + +| + + a| [[quarkus-qute_quarkus.qute.property-not-found-strategy]]`link:#quarkus-qute_quarkus.qute.property-not-found-strategy[quarkus.qute.property-not-found-strategy]` diff --git a/_versions/main/guides/building-native-image.adoc b/_versions/main/guides/building-native-image.adoc index ac5765a171..98c4a6182d 100644 --- a/_versions/main/guides/building-native-image.adoc +++ b/_versions/main/guides/building-native-image.adoc @@ -103,7 +103,8 @@ GraalVM {graalvm-version} is required. 1. Install GraalVM if you haven't already. You have a few options for this: ** Download the appropriate archive from or , and unpack it like you would any other JDK. -** Use platform-specific install tools like https://sdkman.io/jdks#Oracle[sdkman], https://github.com/graalvm/homebrew-tap[homebrew], or https://github.com/ScoopInstaller/Java[scoop]. +** Use platform-specific installer tools like https://sdkman.io/jdks#graalce[sdkman], https://github.com/graalvm/homebrew-tap[homebrew], or https://github.com/ScoopInstaller/Java[scoop]. +We recommend the _community edition_ of GraalVM. For example, install it with `sdk install java 21-graalce`. 2. Configure the runtime environment. Set `GRAALVM_HOME` environment variable to the GraalVM installation directory, for example: + [source,bash] diff --git a/_versions/main/guides/grpc-getting-started.adoc b/_versions/main/guides/grpc-getting-started.adoc index fb200895b5..32d8d0a91f 100644 --- a/_versions/main/guides/grpc-getting-started.adoc +++ b/_versions/main/guides/grpc-getting-started.adoc @@ -99,10 +99,6 @@ If this retrieved version does not work in your context, you can either force to You can also download the suitable binary and specify the location via `-Dquarkus.grpc.protoc-path=/path/to/protoc`. - -Alternatively to using the `generate-code` goal of the `quarkus-maven-plugin`, you can use `protobuf-maven-plugin` to generate these files. -See the xref:grpc-generation-reference.adoc#protobuf-maven-plugin[Generating Java files from proto with the protobuf-maven-plugin] section for more information. - Let's start with a simple _Hello_ service. Create the `src/main/proto/helloworld.proto` file with the following content: diff --git a/_versions/main/guides/grpc-virtual-threads.adoc b/_versions/main/guides/grpc-virtual-threads.adoc index 0b3d657ddb..61d805a9fa 100644 --- a/_versions/main/guides/grpc-virtual-threads.adoc +++ b/_versions/main/guides/grpc-virtual-threads.adoc @@ -26,7 +26,7 @@ But, you can also use the link:{blocking_annotation}[@Blocking] annotation to in The idea behind Quarkus Virtual Thread support for gRPC services is to offload the service method invocation on virtual threads, instead of running it on an event-loop thread or a worker thread. To enable virtual thread support on a service method, simply add the link:{runonvthread}[@RunOnVirtualThread] annotation to the method. -If the JDK is compatible (Java 19 or later versions) then the invocation will be offloaded to a new virtual thread. +If the JDK is compatible (Java 19 or later versions - we recommend 21+) then the invocation will be offloaded to a new virtual thread. It will then be possible to perform blocking operations without blocking the platform thread upon which the virtual thread is mounted. == Configuring gRPC services to use virtual threads @@ -49,22 +49,22 @@ First, make sure to have the gRPC extension dependency in your build file: implementation("io.quarkus:quarkus-grpc") ---- -You also need to make sure that you are using Java 19 or later, this can be enforced in your `pom.xml` file with the following: +You also need to make sure that you are using Java 19 or later (we recommend 21+), this can be enforced in your `pom.xml` file with the following: [source,xml,role="primary asciidoc-tabs-target-sync-cli asciidoc-tabs-target-sync-maven"] .pom.xml ---- - 19 - 19 + 21 + 21 ---- -Virtual threads are still a preview feature, so you need to start your application with the `--enable-preview` flag: +Run your application with: [source, bash] ---- -java --enable-preview -jar target/quarkus-app/quarkus-run.jar +java -jar target/quarkus-app/quarkus-run.jar ---- or to use the Quarkus Dev mode, insert the following to the `quarkus-maven-plugin` configuration: @@ -86,17 +86,12 @@ or to use the Quarkus Dev mode, insert the following to the `quarkus-maven-plugi - 19 - 19 - - --enable-preview - + 21 + 21 ---- -NOTE: The `--enable-preview` flag is not necessary with Java 21+. - Then you can start using the annotation `@RunOnVirtualThread` in your service implementation: [source, java] diff --git a/_versions/main/guides/kafka.adoc b/_versions/main/guides/kafka.adoc index 41160e03eb..55b6ca51e7 100644 --- a/_versions/main/guides/kafka.adoc +++ b/_versions/main/guides/kafka.adoc @@ -1971,12 +1971,19 @@ First, add the following dependency to your application: io.strimzi kafka-oauth-client + + + io.strimzi + kafka-oauth-common + ---- [source,gradle,role="secondary asciidoc-tabs-target-sync-gradle"] .build.gradle ---- implementation("io.strimzi:kafka-oauth-client") +// if compiling to native you'd need also the following dependency +implementation("io.strimzi:kafka-oauth-common") ---- This dependency provides the callback handler required to handle the OAuth workflow. diff --git a/_versions/main/guides/messaging-virtual-threads.adoc b/_versions/main/guides/messaging-virtual-threads.adoc index 2612dcb742..0e45e064e4 100644 --- a/_versions/main/guides/messaging-virtual-threads.adoc +++ b/_versions/main/guides/messaging-virtual-threads.adoc @@ -34,7 +34,7 @@ The idea behind Quarkus Virtual Thread support for Reactive Messaging is to offl instead of running it on an event-loop thread or a worker thread. To enable virtual thread support on a message consumer method, simply add the link:{runonvthread}[@RunOnVirtualThread] annotation to the method. -If the JDK is compatible (Java 19 or later versions) then each incoming message will be offloaded to a new virtual thread. +If the JDK is compatible (Java 19 or later versions, we recommend 21+) then each incoming message will be offloaded to a new virtual thread. It will then be possible to perform blocking operations without blocking the platform thread upon which the virtual thread is mounted. == Example using the Reactive Messaging Kafka extension @@ -57,22 +57,22 @@ First, make sure to have a reactive messaging extension dependency to your build implementation("io.quarkus:quarkus-smallrye-reactive-messaging-kafka") ---- -You also need to make sure that you are using Java 19 or later, this can be enforced in your `pom.xml` file with the following: +You also need to make sure that you are using Java 19 or later (we recommend 21+), this can be enforced in your `pom.xml` file with the following: [source,xml,role="primary asciidoc-tabs-target-sync-cli asciidoc-tabs-target-sync-maven"] .pom.xml ---- - 20 - 20 + 21 + 21 ---- -Virtual threads are still a preview feature, so you need to start your application with the `--enable-preview` flag: +Run the application with: [source, bash] ---- -java --enable-preview -jar target/quarkus-app/quarkus-run.jar +java -jar target/quarkus-app/quarkus-run.jar ---- or to use the Quarkus Dev mode, insert the following to the `quarkus-maven-plugin` configuration: @@ -80,18 +80,7 @@ or to use the Quarkus Dev mode, insert the following to the `quarkus-maven-plugi [source,xml,role="primary asciidoc-tabs-target-sync-cli asciidoc-tabs-target-sync-maven"] .pom.xml ---- -20 - - - maven-compiler-plugin - ${compiler-plugin.version} - - - -parameters - --enable-preview - - - +21 ---- Then you can start using the annotation `@RunOnVirtualThread` on your consumer methods also annotated with `@Incoming`. diff --git a/_versions/main/guides/qute-reference.adoc b/_versions/main/guides/qute-reference.adoc index 935d410a49..1278224a5d 100644 --- a/_versions/main/guides/qute-reference.adoc +++ b/_versions/main/guides/qute-reference.adoc @@ -2632,7 +2632,13 @@ WARNING: Unlike with `@Inject` the templates obtained via `RestTemplate` are not === Development Mode -In the development mode, all files located in `src/main/resources/templates` are watched for changes and modifications are immediately visible. +In the development mode, all files located in `src/main/resources/templates` are watched for changes. +By default, a template modification results in an application restart that also triggers build-time validations. + +However, it's possible to use the `quarkus.qute.dev-mode.no-restart-templates` configuration property to specify the templates for which the application is not restarted. +The configration value is a regular expression that matches the template path relative from the `templates` directory and `/` is used as a path separator. +For example, `quarkus.qute.dev-mode.no-restart-templates=templates/foo.html` matches the template `src/main/resources/templates/foo.html`. +The matching templates are reloaded and only runtime validations are performed. [[type-safe-message-bundles]] === Type-safe Message Bundles diff --git a/_versions/main/guides/resteasy-reactive-virtual-threads.adoc b/_versions/main/guides/resteasy-reactive-virtual-threads.adoc index 9c807b08e0..2004c6a7d9 100644 --- a/_versions/main/guides/resteasy-reactive-virtual-threads.adoc +++ b/_versions/main/guides/resteasy-reactive-virtual-threads.adoc @@ -73,26 +73,10 @@ We need to customize the `pom.xml` file to use virtual threads. [source, xml] ---- - 20 + 21 ---- -2) In the maven-compiler-plugin configuration, add the `--enable-preview` arg (only if you use Java 19 or Java 20) - -[source, xml] ----- - - maven-compiler-plugin - ${compiler-plugin.version} - - - -parameters - --enable-preview - - - ----- - -3) In the maven-surefire-plugin and maven-failsafe-plugin configurations, add the following `argLine` parameter: +2) In the maven-surefire-plugin and maven-failsafe-plugin configurations, add the following `argLine` parameter: [source, xml] ---- @@ -104,7 +88,7 @@ We need to customize the `pom.xml` file to use virtual threads. org.jboss.logmanager.LogManager ${maven.home} - --enable-preview -Djdk.tracePinnedThreads + -Djdk.tracePinnedThreads @@ -122,7 +106,7 @@ We need to customize the `pom.xml` file to use virtual threads. org.jboss.logmanager.LogManager ${maven.home} - --enable-preview -Djdk.tracePinnedThreads + -Djdk.tracePinnedThreads @@ -133,9 +117,10 @@ We need to customize the `pom.xml` file to use virtual threads. The `-Djdk.tracePinnedThreads` will detect pinned carrier threads while running tests (See xref:./virtual-threads.adoc#pinning[the virtual thread reference guide for details]). [IMPORTANT] -.--enable-preview and Java 21 +.--enable-preview on Java 19 and 20 ==== -The `--enable-preview` flag is only required if you use Java 19 or 20. +If you are using a Java 19 or 20, add the `--enable-preview` flag in the `argLine` and as `parameters` of the maven compiler plugin. +Note that we strongly recommend Java 21. ==== == Create the weather client @@ -202,7 +187,7 @@ public class TheBestPlaceToBeResource { @RestClient WeatherService service; @GET - @RunOnVirtualThread <1> + @RunOnVirtualThread // <1> public String getTheBestPlaceToBe() { var valence = service.getWeather(VALENCE_LATITUDE, VALENCE_LONGITUDE).weather().temperature(); var athens = service.getWeather(ATHENS_LATITUDE, ATHENS_LONGITUDE).weather().temperature(); @@ -227,13 +212,13 @@ Make sure that you use OpenJDK and JVM versions supporting virtual thread and la [source, shell] ---- > java --version -openjdk 20.0.1 2023-04-18 <1> -OpenJDK Runtime Environment Temurin-20.0.1+9 (build 20.0.1+9) -OpenJDK 64-Bit Server VM Temurin-20.0.1+9 (build 20.0.1+9, mixed mode) +openjdk 21 2023-09-19 LTS <1> +OpenJDK Runtime Environment Temurin-21+35 (build 21+35-LTS) +OpenJDK 64-Bit Server VM Temurin-21+35 (build 21+35-LTS, mixed mode) > ./mvnw quarkus:dev <2> ---- -<1> Must be 19+ +<1> Must be 19+, we recommend 21+ <2> Launch the dev mode Then, in a browser, open http://localhost:8080. @@ -262,7 +247,7 @@ In the `pom.xml,` we added an `argLine` argument to the surefire and failsafe pl [source, xml] ---- ---enable-preview -Djdk.tracePinnedThreads +-Djdk.tracePinnedThreads ---- The `-Djdk.tracePinnedThreads` dumps the stack trace if a virtual thread cannot be _unmounted_ smoothly (meaning that it blocks the carrier thread). diff --git a/_versions/main/guides/security-jpa.adoc b/_versions/main/guides/security-jpa.adoc index e93fd32110..4735b1ea11 100644 --- a/_versions/main/guides/security-jpa.adoc +++ b/_versions/main/guides/security-jpa.adoc @@ -185,6 +185,13 @@ For applications running in a production environment, do not store passwords as However, it is possible to store passwords as plain text with the `@Password(PasswordType.CLEAR)` annotation when operating in a test environment. ==== +[TIP] +==== +The xref:hibernate-orm.adoc#multitenancy[Hibernate Multitenancy] is supported and you can store the user entity in a persistence unit with enabled multitenancy. +However, if your `io.quarkus.hibernate.orm.runtime.tenant.TenantResolver` must access the `io.vertx.ext.web.RoutingContext` to resolve request details, you must disable proactive authentication. +For more information about proactive authentication, please see the Quarkus xref:security-proactive-authentication.adoc[Proactive authentication] guide. +==== + include::{generated-dir}/config/quarkus-security-jpa.adoc[opts=optional, leveloffset=+2] == References diff --git a/_versions/main/guides/virtual-threads.adoc b/_versions/main/guides/virtual-threads.adoc index 12f931d4f8..732931232d 100644 --- a/_versions/main/guides/virtual-threads.adoc +++ b/_versions/main/guides/virtual-threads.adoc @@ -321,22 +321,21 @@ If would not fail the tests, but at least dump start traces if the code pins the org.jboss.logmanager.LogManager ${maven.home} - --enable-preview -Djdk.tracePinnedThreads + -Djdk.tracePinnedThreads ---- -NOTE: The `--enable-preview` flag is not necessary with Java 21. - == Run application using virtual threads -Prior to Java 21, virtual threads are still an experimental feature, you need to start your application with the `--enable-preview` flag: [source, bash] ---- -java --enable-preview -jar target/quarkus-app/quarkus-run.jar +java -jar target/quarkus-app/quarkus-run.jar ---- +TIP: Prior to Java 21, virtual threads were still an experimental feature, you need to start your application with the `--enable-preview` flag. + == Build containers for application using virtual threads When running your application in JVM mode (so not compiled into native, for native check xref:native[the dedicated section]), you can follow the xref:./container-image.adoc[containerization guide] to build a container. @@ -351,13 +350,11 @@ To containerize your Quarkus application that use `@RunOnVirtualThread`, add the quarkus.container-image.build=true quarkus.container-image.group= quarkus.container-image.name= -quarkus.jib.base-jvm-image=eclipse-temurin:20.0.1_9-jre-ubi9-minimal <1> +quarkus.jib.base-jvm-image=eclipse-temurin:21-ubi9-minimal <1> quarkus.jib.platforms=linux/amd64,linux/arm64 <2> -quarkus.jib.jvm-arguments=--enable-preview <3> ---- -<1> Make sure you use a base image supporting virtual threads. Here we use an image providing Java 20. +<1> Make sure you use a base image supporting virtual threads. Here we use an image providing Java 21. <2> Select the target architecture. You can select more than one to build multi-archs images. -<3> Don't forget to use the `--enable-preview` flag if you are not using Java 21+. Then, build your container as you would do usually. For example, if you are using Maven, run: