This is an automated email from the ASF dual-hosted git repository. jamesnetherton pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
commit ce860720074c8ebc1419f35e8624cf0acbb48856 Author: James Netherton <[email protected]> AuthorDate: Fri Jul 23 11:44:38 2021 +0100 Automate the generation of documentation for the transferException option --- .../ROOT/pages/reference/extensions/activemq.adoc | 11 +++++++++++ .../ROOT/pages/reference/extensions/ahc-ws.adoc | 11 +++++++++++ .../ROOT/pages/reference/extensions/ahc.adoc | 11 +++++++++++ .../ROOT/pages/reference/extensions/amqp.adoc | 11 +++++++++++ .../ROOT/pages/reference/extensions/core.adoc | 4 +--- .../ROOT/pages/reference/extensions/http.adoc | 11 +++++++++++ .../ROOT/pages/reference/extensions/jms.adoc | 11 +++++++++++ .../pages/reference/extensions/netty-http.adoc | 11 +++++++++++ .../ROOT/pages/reference/extensions/rabbitmq.adoc | 11 +++++++++++ .../ROOT/pages/reference/extensions/servlet.adoc | 11 +++++++++++ .../ROOT/pages/reference/extensions/sjms.adoc | 11 +++++++++++ .../ROOT/pages/reference/extensions/sjms2.adoc | 11 +++++++++++ .../pages/reference/extensions/vertx-http.adoc | 11 +++++++++++ .../org/apache/camel/quarkus/core/CamelConfig.java | 22 ++++------------------ .../quarkus/maven/UpdateExtensionDocPageMojo.java | 13 ++++++++----- .../doc-templates/extension-doc-page.adoc | 13 +++++++++++++ 16 files changed, 158 insertions(+), 26 deletions(-) diff --git a/docs/modules/ROOT/pages/reference/extensions/activemq.adoc b/docs/modules/ROOT/pages/reference/extensions/activemq.adoc index d3db74d..63a2acc 100644 --- a/docs/modules/ROOT/pages/reference/extensions/activemq.adoc +++ b/docs/modules/ROOT/pages/reference/extensions/activemq.adoc @@ -63,3 +63,14 @@ is excluded from the dependency tree, since none of the ActiveMQ broker function This extension auto-enables SSL support in native mode. Hence you do not need to add `quarkus.ssl.native=true` to your `application.properties` yourself. See also https://quarkus.io/guides/native-and-ssl[Quarkus SSL guide]. + +== transferException option in native mode + +To use the `transferException` option in native mode, you must enable support for object serialization. Refer to the xref:user-guide/native-mode.adoc#serialization[native mode user guide] +for more information. + +You will also need to enable serialization for the exception classes that you intend to serialize. For example. +[source,java] +---- +@RegisterForReflection(targets = { IllegalStateException.class, MyCustomException.class }, serialization = true) +---- diff --git a/docs/modules/ROOT/pages/reference/extensions/ahc-ws.adoc b/docs/modules/ROOT/pages/reference/extensions/ahc-ws.adoc index c70eccb..000fe04 100644 --- a/docs/modules/ROOT/pages/reference/extensions/ahc-ws.adoc +++ b/docs/modules/ROOT/pages/reference/extensions/ahc-ws.adoc @@ -45,3 +45,14 @@ Check the xref:user-guide/index.adoc[User guide] for more information about writ This extension auto-enables SSL support in native mode. Hence you do not need to add `quarkus.ssl.native=true` to your `application.properties` yourself. See also https://quarkus.io/guides/native-and-ssl[Quarkus SSL guide]. + +== transferException option in native mode + +To use the `transferException` option in native mode, you must enable support for object serialization. Refer to the xref:user-guide/native-mode.adoc#serialization[native mode user guide] +for more information. + +You will also need to enable serialization for the exception classes that you intend to serialize. For example. +[source,java] +---- +@RegisterForReflection(targets = { IllegalStateException.class, MyCustomException.class }, serialization = true) +---- diff --git a/docs/modules/ROOT/pages/reference/extensions/ahc.adoc b/docs/modules/ROOT/pages/reference/extensions/ahc.adoc index 89b3785..2d291dd 100644 --- a/docs/modules/ROOT/pages/reference/extensions/ahc.adoc +++ b/docs/modules/ROOT/pages/reference/extensions/ahc.adoc @@ -45,6 +45,17 @@ This extension auto-enables SSL support in native mode. Hence you do not need to `quarkus.ssl.native=true` to your `application.properties` yourself. See also https://quarkus.io/guides/native-and-ssl[Quarkus SSL guide]. +== transferException option in native mode + +To use the `transferException` option in native mode, you must enable support for object serialization. Refer to the xref:user-guide/native-mode.adoc#serialization[native mode user guide] +for more information. + +You will also need to enable serialization for the exception classes that you intend to serialize. For example. +[source,java] +---- +@RegisterForReflection(targets = { IllegalStateException.class, MyCustomException.class }, serialization = true) +---- + == Additional Camel Quarkus configuration * Check the xref:user-guide/native-mode.adoc#charsets[Character encodings section] of the Native mode guide if you expect diff --git a/docs/modules/ROOT/pages/reference/extensions/amqp.adoc b/docs/modules/ROOT/pages/reference/extensions/amqp.adoc index ddb3e1a..a778a1c 100644 --- a/docs/modules/ROOT/pages/reference/extensions/amqp.adoc +++ b/docs/modules/ROOT/pages/reference/extensions/amqp.adoc @@ -52,6 +52,17 @@ When sending JMS message payloads as `javax.jms.ObjectMessage`, you must annotat Note that this extension automatically sets `quarkus.camel.native.reflection.serialization-enabled = true` for you. Refer to the xref:user-guide/native-mode.adoc#serialization[native mode user guide] for more information. +== transferException option in native mode + +To use the `transferException` option in native mode, you must enable support for object serialization. Refer to the xref:user-guide/native-mode.adoc#serialization[native mode user guide] +for more information. + +You will also need to enable serialization for the exception classes that you intend to serialize. For example. +[source,java] +---- +@RegisterForReflection(targets = { IllegalStateException.class, MyCustomException.class }, serialization = true) +---- + == Additional Camel Quarkus configuration The extension leverages the https://github.com/amqphub/quarkus-qpid-jms/[Quarkus Qpid JMS] extension. A ConnectionFactory bean is automatically created diff --git a/docs/modules/ROOT/pages/reference/extensions/core.adoc b/docs/modules/ROOT/pages/reference/extensions/core.adoc index d04c38a..ce38e53 100644 --- a/docs/modules/ROOT/pages/reference/extensions/core.adoc +++ b/docs/modules/ROOT/pages/reference/extensions/core.adoc @@ -226,9 +226,7 @@ A comma separated list of Ant-path style patterns to match class names that shou |icon:lock[title=Fixed at build time] [[quarkus.camel.native.reflection.serialization-enabled]]`link:#quarkus.camel.native.reflection.serialization-enabled[quarkus.camel.native.reflection.serialization-enabled]` -If `true`, basic classes are registered for serialization; otherwise basic classes won't be registered automatically for serialization in native mode. - List of basic classes: `java.lang.Boolean` `java.lang.Byte` `java.lang.Character` `java.lang.Float` `java.lang.Double` `java.lang.Integer` `java.lang.Long` `java.lang.Number` `java.lang.String` `java.math.BigInteger` `java.util.Date` `java.util.HashMap` `java.util.LinkedHashMap` `org.apache.camel.support.DefaultExchangeHolder` - Setting this to `false` helps to reduce the size of the native image. In JVM mode, there is no real benefit of setting this flag to `true` except for making the behavior consistent with native mode. +If `true`, basic classes are registered for serialization; otherwise basic classes won't be registered automatically for serialization in native mode. The list of classes automatically registered for serialization can be found in link:https://github.com/apache/camel-quarkus/blob/main/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelSerializationProcessor.java[CamelSerializationProcessor.BASE_SERIALIZATION_CLASSES]. Setting this to `false` helps [...] | `boolean` | `false` diff --git a/docs/modules/ROOT/pages/reference/extensions/http.adoc b/docs/modules/ROOT/pages/reference/extensions/http.adoc index f2c6e0c..63e7eb4 100644 --- a/docs/modules/ROOT/pages/reference/extensions/http.adoc +++ b/docs/modules/ROOT/pages/reference/extensions/http.adoc @@ -46,6 +46,17 @@ This extension auto-enables SSL support in native mode. Hence you do not need to `quarkus.ssl.native=true` to your `application.properties` yourself. See also https://quarkus.io/guides/native-and-ssl[Quarkus SSL guide]. +== transferException option in native mode + +To use the `transferException` option in native mode, you must enable support for object serialization. Refer to the xref:user-guide/native-mode.adoc#serialization[native mode user guide] +for more information. + +You will also need to enable serialization for the exception classes that you intend to serialize. For example. +[source,java] +---- +@RegisterForReflection(targets = { IllegalStateException.class, MyCustomException.class }, serialization = true) +---- + == Additional Camel Quarkus configuration * Check the xref:user-guide/native-mode.adoc#charsets[Character encodings section] of the Native mode guide if you expect diff --git a/docs/modules/ROOT/pages/reference/extensions/jms.adoc b/docs/modules/ROOT/pages/reference/extensions/jms.adoc index 2db5e96..9f98034 100644 --- a/docs/modules/ROOT/pages/reference/extensions/jms.adoc +++ b/docs/modules/ROOT/pages/reference/extensions/jms.adoc @@ -51,3 +51,14 @@ you must ensure that the `camel-quarkus-jaxp` extension is present on the classp When sending JMS message payloads as `javax.jms.ObjectMessage`, you must annotate the relevant classes to be registered for serialization with `@RegisterForReflection(serialization = true)`. Note that this extension automatically sets `quarkus.camel.native.reflection.serialization-enabled = true` for you. Refer to the xref:user-guide/native-mode.adoc#serialization[native mode user guide] for more information. + +== transferException option in native mode + +To use the `transferException` option in native mode, you must enable support for object serialization. Refer to the xref:user-guide/native-mode.adoc#serialization[native mode user guide] +for more information. + +You will also need to enable serialization for the exception classes that you intend to serialize. For example. +[source,java] +---- +@RegisterForReflection(targets = { IllegalStateException.class, MyCustomException.class }, serialization = true) +---- diff --git a/docs/modules/ROOT/pages/reference/extensions/netty-http.adoc b/docs/modules/ROOT/pages/reference/extensions/netty-http.adoc index 67dc543..c36f9a4 100644 --- a/docs/modules/ROOT/pages/reference/extensions/netty-http.adoc +++ b/docs/modules/ROOT/pages/reference/extensions/netty-http.adoc @@ -40,6 +40,17 @@ Or add the coordinates to your existing project: Check the xref:user-guide/index.adoc[User guide] for more information about writing Camel Quarkus applications. +== transferException option in native mode + +To use the `transferException` option in native mode, you must enable support for object serialization. Refer to the xref:user-guide/native-mode.adoc#serialization[native mode user guide] +for more information. + +You will also need to enable serialization for the exception classes that you intend to serialize. For example. +[source,java] +---- +@RegisterForReflection(targets = { IllegalStateException.class, MyCustomException.class }, serialization = true) +---- + == Additional Camel Quarkus configuration * Check the xref:user-guide/native-mode.adoc#charsets[Character encodings section] of the Native mode guide if you expect diff --git a/docs/modules/ROOT/pages/reference/extensions/rabbitmq.adoc b/docs/modules/ROOT/pages/reference/extensions/rabbitmq.adoc index 33a9281..f0c6534 100644 --- a/docs/modules/ROOT/pages/reference/extensions/rabbitmq.adoc +++ b/docs/modules/ROOT/pages/reference/extensions/rabbitmq.adoc @@ -38,3 +38,14 @@ Or add the coordinates to your existing project: ---- Check the xref:user-guide/index.adoc[User guide] for more information about writing Camel Quarkus applications. + +== transferException option in native mode + +To use the `transferException` option in native mode, you must enable support for object serialization. Refer to the xref:user-guide/native-mode.adoc#serialization[native mode user guide] +for more information. + +You will also need to enable serialization for the exception classes that you intend to serialize. For example. +[source,java] +---- +@RegisterForReflection(targets = { IllegalStateException.class, MyCustomException.class }, serialization = true) +---- diff --git a/docs/modules/ROOT/pages/reference/extensions/servlet.adoc b/docs/modules/ROOT/pages/reference/extensions/servlet.adoc index c27f993..01c933b 100644 --- a/docs/modules/ROOT/pages/reference/extensions/servlet.adoc +++ b/docs/modules/ROOT/pages/reference/extensions/servlet.adoc @@ -39,6 +39,17 @@ Or add the coordinates to your existing project: Check the xref:user-guide/index.adoc[User guide] for more information about writing Camel Quarkus applications. +== transferException option in native mode + +To use the `transferException` option in native mode, you must enable support for object serialization. Refer to the xref:user-guide/native-mode.adoc#serialization[native mode user guide] +for more information. + +You will also need to enable serialization for the exception classes that you intend to serialize. For example. +[source,java] +---- +@RegisterForReflection(targets = { IllegalStateException.class, MyCustomException.class }, serialization = true) +---- + == Additional Camel Quarkus configuration [width="100%",cols="80,5,15",options="header"] diff --git a/docs/modules/ROOT/pages/reference/extensions/sjms.adoc b/docs/modules/ROOT/pages/reference/extensions/sjms.adoc index d029fec..2cb6c05 100644 --- a/docs/modules/ROOT/pages/reference/extensions/sjms.adoc +++ b/docs/modules/ROOT/pages/reference/extensions/sjms.adoc @@ -51,3 +51,14 @@ you must ensure that the `camel-quarkus-jaxp` extension is present on the classp When sending JMS message payloads as `javax.jms.ObjectMessage`, you must annotate the relevant classes to be registered for serialization with `@RegisterForReflection(serialization = true)`. Note that this extension automatically sets `quarkus.camel.native.reflection.serialization-enabled = true` for you. Refer to the xref:user-guide/native-mode.adoc#serialization[native mode user guide] for more information. + +== transferException option in native mode + +To use the `transferException` option in native mode, you must enable support for object serialization. Refer to the xref:user-guide/native-mode.adoc#serialization[native mode user guide] +for more information. + +You will also need to enable serialization for the exception classes that you intend to serialize. For example. +[source,java] +---- +@RegisterForReflection(targets = { IllegalStateException.class, MyCustomException.class }, serialization = true) +---- diff --git a/docs/modules/ROOT/pages/reference/extensions/sjms2.adoc b/docs/modules/ROOT/pages/reference/extensions/sjms2.adoc index dd5569c..fbee92a 100644 --- a/docs/modules/ROOT/pages/reference/extensions/sjms2.adoc +++ b/docs/modules/ROOT/pages/reference/extensions/sjms2.adoc @@ -51,3 +51,14 @@ you must ensure that the `camel-quarkus-jaxp` extension is present on the classp When sending JMS message payloads as `javax.jms.ObjectMessage`, you must annotate the relevant classes to be registered for serialization with `@RegisterForReflection(serialization = true)`. Note that this extension automatically sets `quarkus.camel.native.reflection.serialization-enabled = true` for you. Refer to the xref:user-guide/native-mode.adoc#serialization[native mode user guide] for more information. + +== transferException option in native mode + +To use the `transferException` option in native mode, you must enable support for object serialization. Refer to the xref:user-guide/native-mode.adoc#serialization[native mode user guide] +for more information. + +You will also need to enable serialization for the exception classes that you intend to serialize. For example. +[source,java] +---- +@RegisterForReflection(targets = { IllegalStateException.class, MyCustomException.class }, serialization = true) +---- diff --git a/docs/modules/ROOT/pages/reference/extensions/vertx-http.adoc b/docs/modules/ROOT/pages/reference/extensions/vertx-http.adoc index 81f329c..c70d6a0 100644 --- a/docs/modules/ROOT/pages/reference/extensions/vertx-http.adoc +++ b/docs/modules/ROOT/pages/reference/extensions/vertx-http.adoc @@ -37,3 +37,14 @@ Or add the coordinates to your existing project: ---- Check the xref:user-guide/index.adoc[User guide] for more information about writing Camel Quarkus applications. + +== transferException option in native mode + +To use the `transferException` option in native mode, you must enable support for object serialization. Refer to the xref:user-guide/native-mode.adoc#serialization[native mode user guide] +for more information. + +You will also need to enable serialization for the exception classes that you intend to serialize. For example. +[source,java] +---- +@RegisterForReflection(targets = { IllegalStateException.class, MyCustomException.class }, serialization = true) +---- diff --git a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelConfig.java b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelConfig.java index a413fbf..0d8a6bc 100644 --- a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelConfig.java +++ b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelConfig.java @@ -284,24 +284,10 @@ public class CamelConfig { /** * If {@code true}, basic classes are registered for serialization; otherwise basic classes won't be registered * automatically for serialization in native mode. - * <p> - * List of basic classes: - * {@code java.lang.Boolean} - * {@code java.lang.Byte} - * {@code java.lang.Character} - * {@code java.lang.Float} - * {@code java.lang.Double} - * {@code java.lang.Integer} - * {@code java.lang.Long} - * {@code java.lang.Number} - * {@code java.lang.String} - * {@code java.math.BigInteger} - * {@code java.util.Date} - * {@code java.util.HashMap} - * {@code java.util.LinkedHashMap} - * {@code org.apache.camel.support.DefaultExchangeHolder} - * - * <p> + * + * The list of classes automatically registered for serialization can be found in <a href= + * "https://github.com/apache/camel-quarkus/blob/main/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelSerializationProcessor.java">CamelSerializationProcessor.BASE_SERIALIZATION_CLASSES</a>. + * * Setting this to {@code false} helps to reduce the size of the native image. In JVM mode, there is no real * benefit of setting this flag to {@code true} except for making the behavior consistent with native mode. */ diff --git a/tooling/maven-plugin/src/main/java/org/apache/camel/quarkus/maven/UpdateExtensionDocPageMojo.java b/tooling/maven-plugin/src/main/java/org/apache/camel/quarkus/maven/UpdateExtensionDocPageMojo.java index e57da0f..c69e764 100644 --- a/tooling/maven-plugin/src/main/java/org/apache/camel/quarkus/maven/UpdateExtensionDocPageMojo.java +++ b/tooling/maven-plugin/src/main/java/org/apache/camel/quarkus/maven/UpdateExtensionDocPageMojo.java @@ -129,7 +129,11 @@ public class UpdateExtensionDocPageMojo extends AbstractDocGeneratorMojo { model.put("activatesNativeSsl", ext.isNativeSupported() && detectNativeSsl(multiModuleProjectDirectory.toPath(), basePath, ext.getRuntimeArtifactId(), ext.getDependencies(), nativeSslActivators)); model.put("activatesContextMapAll", - ext.isNativeSupported() && detectAllowContextMapAll(catalog, ext.getRuntimeArtifactIdBase())); + ext.isNativeSupported() + && detectComponentOrEndpointOption(catalog, ext.getRuntimeArtifactIdBase(), "allowContextMapAll")); + model.put("activatesTransferException", + ext.isNativeSupported() + && detectComponentOrEndpointOption(catalog, ext.getRuntimeArtifactIdBase(), "transferException")); model.put("configOptions", listConfigOptions(basePath, multiModuleProjectDirectory.toPath())); model.put("humanReadableKind", new TemplateMethodModelEx() { @Override @@ -326,20 +330,19 @@ public class UpdateExtensionDocPageMojo extends AbstractDocGeneratorMojo { } } - static boolean detectAllowContextMapAll(CqCatalog catalog, String artifactId) { - final String allowContextMapAll = "allowContextMapAll"; + static boolean detectComponentOrEndpointOption(CqCatalog catalog, String artifactId, String option) { return catalog.filterModels(artifactId) .filter(m -> m instanceof ComponentModel) .map(m -> (ComponentModel) m) .anyMatch(componentModel -> { for (ComponentModel.ComponentOptionModel model : componentModel.getOptions()) { - if (model.getName().equals(allowContextMapAll)) { + if (model.getName().equals(option)) { return true; } } for (ComponentModel.EndpointOptionModel model : componentModel.getEndpointOptions()) { - if (model.getName().equals(allowContextMapAll)) { + if (model.getName().equals(option)) { return true; } } diff --git a/tooling/maven-plugin/src/main/resources/doc-templates/extension-doc-page.adoc b/tooling/maven-plugin/src/main/resources/doc-templates/extension-doc-page.adoc index ed689e0..92c2e71 100644 --- a/tooling/maven-plugin/src/main/resources/doc-templates/extension-doc-page.adoc +++ b/tooling/maven-plugin/src/main/resources/doc-templates/extension-doc-page.adoc @@ -68,6 +68,19 @@ https://quarkus.io/guides/native-and-ssl[Quarkus SSL guide]. The `allowContextMapAll` option is not supported in native mode as it requires reflective access to security sensitive camel core classes such as `CamelContext` & `Exchange`. This is considered a security risk and thus access to the feature is not provided by default. [/#if] +[#if activatesTransferException ] + +== transferException option in native mode + +To use the `transferException` option in native mode, you must enable support for object serialization. Refer to the xref:user-guide/native-mode.adoc#serialization[native mode user guide] +for more information. + +You will also need to enable serialization for the exception classes that you intend to serialize. For example. +[source,java] +---- +@RegisterForReflection(targets = { IllegalStateException.class, MyCustomException.class }, serialization = true) +---- +[/#if] [#if configuration?? || configOptions?size != 0 ] == Additional Camel Quarkus configuration
