You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by al...@apache.org on 2023/02/16 13:32:56 UTC

[camel-quarkus] 01/03: Split json dataformats to different modules

This is an automated email from the ASF dual-hosted git repository.

aldettinger pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit a5776c711d6fd0f1aa35447782e40c9470c762c9
Author: Lucia Drozdova <ld...@redhat.com>
AuthorDate: Wed Feb 15 15:21:35 2023 +0100

    Split json dataformats to different modules
---
 .../dataformats-json/json-gson}/pom.xml            | 102 ++--------------
 .../json/gson/JsonGsonDataformatsResource.java     | 104 +++++++++++++++++
 .../json/gson/JsonGsonDataformatsRoute.java        |  48 +++-----
 .../json/gson}/model/AnotherObject.java            |   2 +-
 .../dataformats/json/gson}/model/DummyObject.java  |   4 +-
 .../dataformats/json/gson}/model/ExcludeField.java |   2 +-
 .../dataformats/json/gson}/model/PojoA.java        |   2 +-
 .../dataformats/json/gson}/model/PojoB.java        |   2 +-
 .../dataformats/json}/gson/GsonJsonIT.java         |   2 +-
 .../dataformats/json/gson/GsonJsonTest.java        |  50 ++++----
 .../dataformats-json/json-jackson}/pom.xml         |  53 ++-------
 .../json/jackson}/JacksonJsonResource.java         |  27 +----
 .../json/jackson}/JacksonJsonRoute.java            |  14 +--
 .../json/jackson}/NamingStrategyCustomizer.java    |   2 +-
 .../json/jackson}/model/AnotherObject.java         |   2 +-
 .../json/jackson}/model/DummyObject.java           |   5 +-
 .../dataformats/json/jackson}/model/MyModule.java  |   2 +-
 .../dataformats/json/jackson}/model/Order.java     |   2 +-
 .../dataformats/json/jackson}/model/Person.java    |   2 +-
 .../dataformats/json/jackson}/model/Pojo.java      |   2 +-
 .../dataformats/json/jackson}/model/PojoA.java     |   2 +-
 .../json/jackson}/model/TestJAXBPojo.java          |   2 +-
 .../json/jackson}/model/TestOtherPojo.java         |   2 +-
 .../dataformats/json/jackson}/model/TestPojo.java  |   2 +-
 .../json/jackson}/model/TestPojoView.java          |   2 +-
 .../dataformats/json/jackson}/model/Views.java     |   2 +-
 .../json}/jackson/xml/JacksonXmlResource.java      |  31 ++---
 .../json}/jackson/xml/JacksonXmlRoute.java         |  12 +-
 .../src/main/resources/application.properties      |   4 +-
 .../src/main/resources/routes/jackson-routes.xml   |  18 +--
 .../dataformats/json/jackson}/JacksonJsonIT.java   |   2 +-
 .../dataformats/json/jackson}/JacksonJsonTest.java |  67 +++++------
 .../json}/jackson/xml/JacksonXmlIT.java            |   2 +-
 .../json}/jackson/xml/JacksonXmlTest.java          |  71 ++++--------
 .../dataformats-json/json-jsonb}/pom.xml           |  70 ++---------
 .../json/jsonb/JsonJsonbDataformatsResource.java   | 104 +++++++++++++++++
 .../json/jsonb/JsonJsonbDataformatsRoute.java      |  72 +++---------
 .../dataformats/json/jsonb}/ParamType.java         |   2 +-
 .../json/jsonb}/model/AnotherObject.java           |   2 +-
 .../dataformats/json/jsonb}/model/DummyObject.java |   5 +-
 .../dataformats/json/jsonb}/model/PojoA.java       |   2 +-
 .../dataformats/json/jsonb}/model/PojoB.java       |   2 +-
 .../dataformats/json}/jsonb/JsonbJsonIT.java       |   2 +-
 .../dataformats/json/jsonb/JsonbJsonTest.java      |  50 ++++----
 .../{ => dataformats-json}/pom.xml                 |  33 +++---
 integration-test-groups/pom.xml                    |   1 +
 .../pom.xml                                        | 112 +++++++++++-------
 .../dataformats/json/JsonDataformatsResource.java  | 128 ---------------------
 .../json/RegisterSnakeCaseCustomizer.java          |  35 ------
 .../src/main/resources/routes/gson-routes.xml      |  43 -------
 .../src/main/resources/routes/jsonb-routes.xml     |  43 -------
 .../component/dataformats/gson/GsonJsonTest.java   |  46 --------
 .../component/dataformats/jsonb/JsonbJsonTest.java |  44 -------
 integration-tests/pom.xml                          |   2 +-
 tooling/scripts/test-categories.yaml               |   1 +
 55 files changed, 526 insertions(+), 921 deletions(-)

diff --git a/integration-tests/dataformats-json/pom.xml b/integration-test-groups/dataformats-json/json-gson/pom.xml
similarity index 67%
copy from integration-tests/dataformats-json/pom.xml
copy to integration-test-groups/dataformats-json/json-gson/pom.xml
index 049ef3c77b..d960280bdf 100644
--- a/integration-tests/dataformats-json/pom.xml
+++ b/integration-test-groups/dataformats-json/json-gson/pom.xml
@@ -17,18 +17,21 @@
     limitations under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
+
     <parent>
         <groupId>org.apache.camel.quarkus</groupId>
         <artifactId>camel-quarkus-build-parent-it</artifactId>
         <version>3.0.0-SNAPSHOT</version>
-        <relativePath>../../poms/build-parent-it/pom.xml</relativePath>
+        <relativePath>../../../poms/build-parent-it/pom.xml</relativePath>
     </parent>
 
-    <artifactId>camel-quarkus-integration-test-dataformats-json</artifactId>
-    <name>Camel Quarkus :: Integration Tests :: DataFormats JSON</name>
-    <description>Integration tests for Camel Quarkus extension providing JSON related data formats</description>
+    <artifactId>camel-quarkus-integration-tests-dataformats-json-gson</artifactId>
+    <name>Camel Quarkus :: Integration Tests :: Json Dataformat Gson</name>
+    <description>Integration tests for Gson Json Dataformat</description>
 
     <dependencies>
         <dependency>
@@ -39,14 +42,6 @@
             <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-xml-jaxb</artifactId>
         </dependency>
-        <dependency>
-            <groupId>org.apache.camel.quarkus</groupId>
-            <artifactId>camel-quarkus-jackson</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.camel.quarkus</groupId>
-            <artifactId>camel-quarkus-jsonb</artifactId>
-        </dependency>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-direct</artifactId>
@@ -63,32 +58,10 @@
             <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-gson</artifactId>
         </dependency>
-        <dependency>
-            <groupId>org.apache.camel.quarkus</groupId>
-            <artifactId>camel-quarkus-jacksonxml</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.camel.quarkus</groupId>
-            <artifactId>camel-quarkus-mock</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>io.quarkus</groupId>
-            <artifactId>quarkus-resteasy</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>io.quarkus</groupId>
-            <artifactId>quarkus-jaxb</artifactId>
-        </dependency>
         <dependency>
             <groupId>io.quarkus</groupId>
             <artifactId>quarkus-resteasy-jsonb</artifactId>
         </dependency>
-        <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter-api</artifactId>
-        </dependency>
-
         <!-- test dependencies -->
         <dependency>
             <groupId>io.quarkus</groupId>
@@ -111,7 +84,6 @@
                 </exclusion>
             </exclusions>
         </dependency>
-
     </dependencies>
 
     <build>
@@ -160,7 +132,6 @@
             </activation>
             <dependencies>
                 <!-- The following dependencies guarantee that this module is built after them. You can update them by running `mvn process-resources -Pformat -N` from the source tree root directory -->
-
                 <dependency>
                     <groupId>org.apache.camel.quarkus</groupId>
                     <artifactId>camel-quarkus-direct-deployment</artifactId>
@@ -187,45 +158,6 @@
                         </exclusion>
                     </exclusions>
                 </dependency>
-                <dependency>
-                    <groupId>org.apache.camel.quarkus</groupId>
-                    <artifactId>camel-quarkus-jackson-deployment</artifactId>
-                    <version>${project.version}</version>
-                    <type>pom</type>
-                    <scope>test</scope>
-                    <exclusions>
-                        <exclusion>
-                            <groupId>*</groupId>
-                            <artifactId>*</artifactId>
-                        </exclusion>
-                    </exclusions>
-                </dependency>
-                <dependency>
-                    <groupId>org.apache.camel.quarkus</groupId>
-                    <artifactId>camel-quarkus-jacksonxml-deployment</artifactId>
-                    <version>${project.version}</version>
-                    <type>pom</type>
-                    <scope>test</scope>
-                    <exclusions>
-                        <exclusion>
-                            <groupId>*</groupId>
-                            <artifactId>*</artifactId>
-                        </exclusion>
-                    </exclusions>
-                </dependency>
-                <dependency>
-                    <groupId>org.apache.camel.quarkus</groupId>
-                    <artifactId>camel-quarkus-jsonb-deployment</artifactId>
-                    <version>${project.version}</version>
-                    <type>pom</type>
-                    <scope>test</scope>
-                    <exclusions>
-                        <exclusion>
-                            <groupId>*</groupId>
-                            <artifactId>*</artifactId>
-                        </exclusion>
-                    </exclusions>
-                </dependency>
                 <dependency>
                     <groupId>org.apache.camel.quarkus</groupId>
                     <artifactId>camel-quarkus-log-deployment</artifactId>
@@ -239,19 +171,6 @@
                         </exclusion>
                     </exclusions>
                 </dependency>
-                <dependency>
-                    <groupId>org.apache.camel.quarkus</groupId>
-                    <artifactId>camel-quarkus-mock-deployment</artifactId>
-                    <version>${project.version}</version>
-                    <type>pom</type>
-                    <scope>test</scope>
-                    <exclusions>
-                        <exclusion>
-                            <groupId>*</groupId>
-                            <artifactId>*</artifactId>
-                        </exclusion>
-                    </exclusions>
-                </dependency>
                 <dependency>
                     <groupId>org.apache.camel.quarkus</groupId>
                     <artifactId>camel-quarkus-vm-deployment</artifactId>
@@ -294,6 +213,5 @@
             </dependencies>
         </profile>
     </profiles>
-
-
-</project>
+    
+</project>
\ No newline at end of file
diff --git a/integration-test-groups/dataformats-json/json-gson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/gson/JsonGsonDataformatsResource.java b/integration-test-groups/dataformats-json/json-gson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/gson/JsonGsonDataformatsResource.java
new file mode 100644
index 0000000000..58af7c6d03
--- /dev/null
+++ b/integration-test-groups/dataformats-json/json-gson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/gson/JsonGsonDataformatsResource.java
@@ -0,0 +1,104 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.quarkus.component.dataformats.json.gson;
+
+import jakarta.enterprise.context.ApplicationScoped;
+import jakarta.inject.Inject;
+import jakarta.json.bind.JsonbBuilder;
+import jakarta.ws.rs.*;
+import jakarta.ws.rs.core.MediaType;
+import org.apache.camel.CamelContext;
+import org.apache.camel.ConsumerTemplate;
+import org.apache.camel.ProducerTemplate;
+import org.jboss.logging.Logger;
+
+@Path("/dataformats-json-gson")
+@ApplicationScoped
+public class JsonGsonDataformatsResource {
+
+    private static final Logger LOG = Logger.getLogger(JsonGsonDataformatsResource.class);
+    @Inject
+    ProducerTemplate producerTemplate;
+    @Inject
+    ConsumerTemplate consumerTemplate;
+    @Inject
+    CamelContext context;
+
+    @Path("/in")
+    @POST
+    @Consumes(MediaType.TEXT_PLAIN)
+    @Produces(MediaType.TEXT_PLAIN)
+    public String processOrder(String statement) {
+        LOG.infof("Invoking processOrder Gson", statement);
+        return producerTemplate.requestBody("direct:Gson-in", statement, String.class);
+    }
+
+    @Path("/out")
+    @POST
+    @Produces(MediaType.APPLICATION_JSON)
+    public String testOrder() {
+        LOG.infof("Invoking testOrder Gson");
+        return consumerTemplate.receive("vm:Gson-out").getMessage().getBody().toString();
+    }
+
+    @Path("/in-a")
+    @POST
+    @Consumes(MediaType.TEXT_PLAIN)
+    @Produces(MediaType.TEXT_PLAIN)
+    public String processPojoA(String statement) {
+        LOG.infof("Invoking processPojoA Gson", statement);
+        return producerTemplate.requestBody("direct:Gson-in-a", statement, String.class);
+    }
+
+    @Path("/in-b")
+    @POST
+    @Consumes(MediaType.TEXT_PLAIN)
+    @Produces(MediaType.TEXT_PLAIN)
+    public String processPojoB(String statement) {
+        LOG.infof("Invoking processPojoB Gson", statement);
+        return producerTemplate.requestBody("direct:Gson-in-b", statement, String.class);
+    }
+
+    @Path("/out-a")
+    @POST
+    @Produces(MediaType.TEXT_PLAIN)
+    public String testPojoA() {
+        LOG.infof("Invoking testPojoA Gson");
+        return consumerTemplate.receive("vm:Gson-out-a").getMessage().getBody().toString();
+    }
+
+    @Path("/out-b")
+    @POST
+    @Produces(MediaType.TEXT_PLAIN)
+    public String testPojoB() {
+        LOG.infof("Invoking testPojoB Gson");
+        return consumerTemplate.receive("vm:Gson-out-b").getMessage().getBody().toString();
+    }
+
+    @Path("/unmarshal/{direct-id}")
+    @POST
+    @Consumes(MediaType.TEXT_PLAIN)
+    @Produces(MediaType.APPLICATION_JSON)
+    public String testXmlUnmarshalDefinition(@PathParam("direct-id") String directId, String statement) {
+        LOG.infof("Invoking testXmlUnmarshalDefinition(%s, %s)", directId, statement);
+        Object object = producerTemplate.requestBody("direct:" + directId, statement);
+        String answer = JsonbBuilder.create().toJson(object);
+
+        return answer;
+    }
+
+}
diff --git a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/JsonDataformatsRoute.java b/integration-test-groups/dataformats-json/json-gson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/gson/JsonGsonDataformatsRoute.java
similarity index 68%
copy from integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/JsonDataformatsRoute.java
copy to integration-test-groups/dataformats-json/json-gson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/gson/JsonGsonDataformatsRoute.java
index 083bc2810b..4cf13b0ded 100644
--- a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/JsonDataformatsRoute.java
+++ b/integration-test-groups/dataformats-json/json-gson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/gson/JsonGsonDataformatsRoute.java
@@ -14,51 +14,34 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.quarkus.component.dataformats.json;
+package org.apache.camel.quarkus.component.dataformats.json.gson;
 
 import java.lang.reflect.Type;
-import java.util.Arrays;
 import java.util.List;
 
-import com.fasterxml.jackson.databind.ObjectMapper;
 import com.google.gson.ExclusionStrategy;
 import com.google.gson.FieldAttributes;
 import com.google.gson.FieldNamingPolicy;
 import com.google.gson.reflect.TypeToken;
 import jakarta.enterprise.context.ApplicationScoped;
-import jakarta.inject.Inject;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.gson.GsonDataFormat;
-import org.apache.camel.component.jackson.JacksonDataFormat;
-import org.apache.camel.component.jsonb.JsonbDataFormat;
 import org.apache.camel.model.dataformat.JsonLibrary;
-import org.apache.camel.quarkus.component.dataformats.json.model.DummyObject;
-import org.apache.camel.quarkus.component.dataformats.json.model.ExcludeField;
-import org.apache.camel.quarkus.component.dataformats.json.model.PojoA;
-import org.apache.camel.quarkus.component.dataformats.json.model.PojoB;
+import org.apache.camel.quarkus.component.dataformats.json.gson.model.*;
 import org.apache.camel.spi.DataFormat;
 
 @ApplicationScoped
-public class JsonDataformatsRoute extends RouteBuilder {
-
-    @Inject
-    ObjectMapper jacksonObjectMapper;
+public class JsonGsonDataformatsRoute extends RouteBuilder {
 
     @Override
     public void configure() {
-        JacksonDataFormat jacksonDummyObjectDataFormat = new JacksonDataFormat(DummyObject.class);
-        jacksonDummyObjectDataFormat.useList();
-        jacksonDummyObjectDataFormat.setObjectMapper(jacksonObjectMapper);
-        configureJsonRoutes(JsonLibrary.Jackson, jacksonDummyObjectDataFormat, new JacksonDataFormat(PojoA.class),
-                new JacksonDataFormat(PojoB.class));
-
         GsonDataFormat gsonDummyObjectDataFormat = new GsonDataFormat();
         Type genericType = new TypeToken<List<DummyObject>>() {
         }.getType();
         gsonDummyObjectDataFormat.setUnmarshalGenericType(genericType);
         gsonDummyObjectDataFormat.setDateFormatPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
         gsonDummyObjectDataFormat.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES);
-        gsonDummyObjectDataFormat.setExclusionStrategies(Arrays.<ExclusionStrategy> asList(new ExclusionStrategy() {
+        gsonDummyObjectDataFormat.setExclusionStrategies(List.<ExclusionStrategy> of(new ExclusionStrategy() {
             @Override
             public boolean shouldSkipField(FieldAttributes f) {
                 return f.getAnnotation(ExcludeField.class) != null;
@@ -72,22 +55,9 @@ public class JsonDataformatsRoute extends RouteBuilder {
 
         GsonDataFormat unmarshalByTypeNameGsonDataFormat = new GsonDataFormat();
         unmarshalByTypeNameGsonDataFormat
-                .setUnmarshalTypeName("org.apache.camel.quarkus.component.dataformats.json.model.PojoA");
+                .setUnmarshalTypeName("org.apache.camel.quarkus.component.dataformats.json.gson.model.PojoA");
         configureJsonRoutes(JsonLibrary.Gson, gsonDummyObjectDataFormat, unmarshalByTypeNameGsonDataFormat,
                 new GsonDataFormat(PojoB.class));
-
-        JsonbDataFormat jsonBDummyObjectDataFormat = new JsonbDataFormat(new ParamType(List.class, DummyObject.class));
-        configureJsonRoutes(JsonLibrary.Jsonb, jsonBDummyObjectDataFormat, new JsonbDataFormat(PojoA.class),
-                new JsonbDataFormat(PojoB.class));
-
-        from("direct:jacksonxml-marshal")
-                .marshal()
-                .jacksonXml(true);
-
-        from("direct:jacksonxml-unmarshal")
-                .unmarshal()
-                .jacksonXml(PojoA.class);
-
     }
 
     public void configureJsonRoutes(JsonLibrary library, DataFormat dummyObjectDataFormat, DataFormat pojoADataFormat,
@@ -126,5 +96,13 @@ public class JsonDataformatsRoute extends RouteBuilder {
                 .marshal(pojoBDataFormat)
                 .convertBodyTo(String.class)
                 .toF("vm:%s-out-b", library);
+
+        from("direct:Gson-type-as-attribute")
+                .unmarshal().json(library, AnotherObject.class);
+
+        from("direct:Gson-type-as-header")
+                .setHeader("CamelGsonUnmarshalType")
+                .constant("org.apache.camel.quarkus.component.dataformats.json.gson.model.AnotherObject")
+                .unmarshal().json(library);
     }
 }
diff --git a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/AnotherObject.java b/integration-test-groups/dataformats-json/json-gson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/gson/model/AnotherObject.java
similarity index 94%
copy from integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/AnotherObject.java
copy to integration-test-groups/dataformats-json/json-gson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/gson/model/AnotherObject.java
index 07464ca982..47f0c87b59 100644
--- a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/AnotherObject.java
+++ b/integration-test-groups/dataformats-json/json-gson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/gson/model/AnotherObject.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.quarkus.component.dataformats.json.model;
+package org.apache.camel.quarkus.component.dataformats.json.gson.model;
 
 import io.quarkus.runtime.annotations.RegisterForReflection;
 
diff --git a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/DummyObject.java b/integration-test-groups/dataformats-json/json-gson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/gson/model/DummyObject.java
similarity index 93%
copy from integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/DummyObject.java
copy to integration-test-groups/dataformats-json/json-gson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/gson/model/DummyObject.java
index 94531f06a6..d05cecca3e 100644
--- a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/DummyObject.java
+++ b/integration-test-groups/dataformats-json/json-gson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/gson/model/DummyObject.java
@@ -14,11 +14,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.quarkus.component.dataformats.json.model;
+package org.apache.camel.quarkus.component.dataformats.json.gson.model;
 
 import java.util.Date;
 
-import com.fasterxml.jackson.annotation.JsonIgnore;
 import io.quarkus.runtime.annotations.RegisterForReflection;
 import jakarta.json.bind.annotation.JsonbProperty;
 import jakarta.json.bind.annotation.JsonbTransient;
@@ -29,7 +28,6 @@ public class DummyObject {
     @JsonbProperty("dummy_string")
     private String dummyString;
 
-    @JsonIgnore
     @ExcludeField
     @JsonbTransient
     private int ignored;
diff --git a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/ExcludeField.java b/integration-test-groups/dataformats-json/json-gson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/gson/model/ExcludeField.java
similarity index 93%
rename from integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/ExcludeField.java
rename to integration-test-groups/dataformats-json/json-gson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/gson/model/ExcludeField.java
index 505c000b75..554b5f23d8 100644
--- a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/ExcludeField.java
+++ b/integration-test-groups/dataformats-json/json-gson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/gson/model/ExcludeField.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.quarkus.component.dataformats.json.model;
+package org.apache.camel.quarkus.component.dataformats.json.gson.model;
 
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Retention;
diff --git a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/PojoA.java b/integration-test-groups/dataformats-json/json-gson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/gson/model/PojoA.java
similarity index 94%
copy from integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/PojoA.java
copy to integration-test-groups/dataformats-json/json-gson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/gson/model/PojoA.java
index 366c9f59a9..ac33ebf16e 100644
--- a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/PojoA.java
+++ b/integration-test-groups/dataformats-json/json-gson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/gson/model/PojoA.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.quarkus.component.dataformats.json.model;
+package org.apache.camel.quarkus.component.dataformats.json.gson.model;
 
 import io.quarkus.runtime.annotations.RegisterForReflection;
 
diff --git a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/PojoB.java b/integration-test-groups/dataformats-json/json-gson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/gson/model/PojoB.java
similarity index 94%
copy from integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/PojoB.java
copy to integration-test-groups/dataformats-json/json-gson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/gson/model/PojoB.java
index b591044c21..9c8f39e9da 100644
--- a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/PojoB.java
+++ b/integration-test-groups/dataformats-json/json-gson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/gson/model/PojoB.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.quarkus.component.dataformats.json.model;
+package org.apache.camel.quarkus.component.dataformats.json.gson.model;
 
 import io.quarkus.runtime.annotations.RegisterForReflection;
 
diff --git a/integration-tests/dataformats-json/src/test/java/org/apache/camel/quarkus/component/dataformats/gson/GsonJsonIT.java b/integration-test-groups/dataformats-json/json-gson/src/test/java/org/apache/camel/quarkus/component/dataformats/json/gson/GsonJsonIT.java
similarity index 93%
rename from integration-tests/dataformats-json/src/test/java/org/apache/camel/quarkus/component/dataformats/gson/GsonJsonIT.java
rename to integration-test-groups/dataformats-json/json-gson/src/test/java/org/apache/camel/quarkus/component/dataformats/json/gson/GsonJsonIT.java
index f6d146d599..868d20ada0 100644
--- a/integration-tests/dataformats-json/src/test/java/org/apache/camel/quarkus/component/dataformats/gson/GsonJsonIT.java
+++ b/integration-test-groups/dataformats-json/json-gson/src/test/java/org/apache/camel/quarkus/component/dataformats/json/gson/GsonJsonIT.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.quarkus.component.dataformats.gson;
+package org.apache.camel.quarkus.component.dataformats.json.gson;
 
 import io.quarkus.test.junit.QuarkusIntegrationTest;
 
diff --git a/integration-tests/dataformats-json/src/test/java/org/apache/camel/quarkus/component/dataformats/json/JsonBaseTest.java b/integration-test-groups/dataformats-json/json-gson/src/test/java/org/apache/camel/quarkus/component/dataformats/json/gson/GsonJsonTest.java
similarity index 66%
copy from integration-tests/dataformats-json/src/test/java/org/apache/camel/quarkus/component/dataformats/json/JsonBaseTest.java
copy to integration-test-groups/dataformats-json/json-gson/src/test/java/org/apache/camel/quarkus/component/dataformats/json/gson/GsonJsonTest.java
index 703c1d7400..a46f4f1572 100644
--- a/integration-tests/dataformats-json/src/test/java/org/apache/camel/quarkus/component/dataformats/json/JsonBaseTest.java
+++ b/integration-test-groups/dataformats-json/json-gson/src/test/java/org/apache/camel/quarkus/component/dataformats/json/gson/GsonJsonTest.java
@@ -14,59 +14,68 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.quarkus.component.dataformats.json;
+package org.apache.camel.quarkus.component.dataformats.json.gson;
 
+import io.quarkus.test.junit.QuarkusTest;
 import io.restassured.RestAssured;
 import io.restassured.http.ContentType;
 import jakarta.json.bind.JsonbBuilder;
-import org.apache.camel.quarkus.component.dataformats.json.model.AnotherObject;
+import org.apache.camel.quarkus.component.dataformats.json.gson.model.AnotherObject;
+import org.junit.jupiter.api.Test;
 
 import static org.hamcrest.Matchers.*;
 
-public class JsonBaseTest {
-    public void testMarshallAndUnmarshall(String jsonComponent) {
+@QuarkusTest
+public class GsonJsonTest {
+
+    @Test
+    public void testMarshallAndUnmarshall() {
         RestAssured.given().contentType(ContentType.TEXT)
-                .queryParam("json-component", jsonComponent)
                 .body("[{\"dummy_string\": \"value1\"}, {\"dummy_string\": \"value2\"}]")
-                .post("/dataformats-json/in");
+                .post("/dataformats-json-gson/in");
         RestAssured.given()
-                .queryParam("json-component", jsonComponent)
-                .post("/dataformats-json/out")
+                .post("/dataformats-json-gson/out")
                 .then()
                 .body("dummy_string", equalTo("value1"))
                 .body("date", containsString("1970"));
         RestAssured.given()
-                .queryParam("json-component", jsonComponent)
-                .post("/dataformats-json/out")
+                .post("/dataformats-json-gson/out")
                 .then()
                 .body("dummy_string", equalTo("value2"))
                 .body("date", containsString("1970"));
     }
 
-    public void testUnmarshallingDifferentPojos(String jsonComponent) {
+    @Test
+    public void testUnmarshallingDifferentPojos() {
         String bodyA = "{\"name\":\"name A\"}";
         String bodyB = "{\"value\":1.0}";
 
         RestAssured.given().contentType(ContentType.TEXT)
-                .queryParam("json-component", jsonComponent)
                 .body(bodyA)
-                .post("/dataformats-json/in-a");
+                .post("/dataformats-json-gson/in-a");
         RestAssured.given().contentType(ContentType.TEXT)
-                .queryParam("json-component", jsonComponent)
                 .body(bodyB)
-                .post("/dataformats-json/in-b");
+                .post("/dataformats-json-gson/in-b");
         RestAssured.given()
-                .queryParam("json-component", jsonComponent)
-                .post("/dataformats-json/out-a")
+                .post("/dataformats-json-gson/out-a")
                 .then()
                 .body(equalTo(bodyA));
         RestAssured.given()
-                .queryParam("json-component", jsonComponent)
-                .post("/dataformats-json/out-b")
+                .post("/dataformats-json-gson/out-b")
                 .then()
                 .body(equalTo(bodyB));
     }
 
+    @Test
+    public void testUnmarshallTypeAsAttribute() {
+        testUnmarshal("Gson-type-as-attribute");
+    }
+
+    @Test
+    public void testUnmarshallTypeAsHeader() {
+        testUnmarshal("Gson-type-as-header");
+    }
+
     public void testUnmarshal(String directId) {
         AnotherObject object = new AnotherObject();
         object.setDummyString("95f669ce-d287-4519-b212-4450bc791867");
@@ -74,8 +83,9 @@ public class JsonBaseTest {
         RestAssured.given()
                 .contentType(ContentType.TEXT)
                 .body(JsonbBuilder.create().toJson(object))
-                .post("/dataformats-json/unmarshal/{direct-id}", directId)
+                .post("/dataformats-json-gson/unmarshal/{direct-id}", directId)
                 .then()
                 .body("dummyString", is(object.getDummyString()));
     }
+
 }
diff --git a/integration-tests/dataformats-json/pom.xml b/integration-test-groups/dataformats-json/json-jackson/pom.xml
similarity index 83%
copy from integration-tests/dataformats-json/pom.xml
copy to integration-test-groups/dataformats-json/json-jackson/pom.xml
index 049ef3c77b..da42dd459b 100644
--- a/integration-tests/dataformats-json/pom.xml
+++ b/integration-test-groups/dataformats-json/json-jackson/pom.xml
@@ -17,18 +17,21 @@
     limitations under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
+
     <parent>
         <groupId>org.apache.camel.quarkus</groupId>
         <artifactId>camel-quarkus-build-parent-it</artifactId>
         <version>3.0.0-SNAPSHOT</version>
-        <relativePath>../../poms/build-parent-it/pom.xml</relativePath>
+        <relativePath>../../../poms/build-parent-it/pom.xml</relativePath>
     </parent>
 
-    <artifactId>camel-quarkus-integration-test-dataformats-json</artifactId>
-    <name>Camel Quarkus :: Integration Tests :: DataFormats JSON</name>
-    <description>Integration tests for Camel Quarkus extension providing JSON related data formats</description>
+    <artifactId>camel-quarkus-integration-tests-dataformats-json-jackson</artifactId>
+    <name>Camel Quarkus :: Integration Tests :: DataFormats JSON Jackson</name>
+    <description>Integration tests for Gson Jackson Dataformat</description>
 
     <dependencies>
         <dependency>
@@ -43,10 +46,6 @@
             <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-jackson</artifactId>
         </dependency>
-        <dependency>
-            <groupId>org.apache.camel.quarkus</groupId>
-            <artifactId>camel-quarkus-jsonb</artifactId>
-        </dependency>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-direct</artifactId>
@@ -59,10 +58,6 @@
             <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-vm</artifactId>
         </dependency>
-        <dependency>
-            <groupId>org.apache.camel.quarkus</groupId>
-            <artifactId>camel-quarkus-gson</artifactId>
-        </dependency>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-jacksonxml</artifactId>
@@ -111,7 +106,6 @@
                 </exclusion>
             </exclusions>
         </dependency>
-
     </dependencies>
 
     <build>
@@ -174,19 +168,6 @@
                         </exclusion>
                     </exclusions>
                 </dependency>
-                <dependency>
-                    <groupId>org.apache.camel.quarkus</groupId>
-                    <artifactId>camel-quarkus-gson-deployment</artifactId>
-                    <version>${project.version}</version>
-                    <type>pom</type>
-                    <scope>test</scope>
-                    <exclusions>
-                        <exclusion>
-                            <groupId>*</groupId>
-                            <artifactId>*</artifactId>
-                        </exclusion>
-                    </exclusions>
-                </dependency>
                 <dependency>
                     <groupId>org.apache.camel.quarkus</groupId>
                     <artifactId>camel-quarkus-jackson-deployment</artifactId>
@@ -213,19 +194,6 @@
                         </exclusion>
                     </exclusions>
                 </dependency>
-                <dependency>
-                    <groupId>org.apache.camel.quarkus</groupId>
-                    <artifactId>camel-quarkus-jsonb-deployment</artifactId>
-                    <version>${project.version}</version>
-                    <type>pom</type>
-                    <scope>test</scope>
-                    <exclusions>
-                        <exclusion>
-                            <groupId>*</groupId>
-                            <artifactId>*</artifactId>
-                        </exclusion>
-                    </exclusions>
-                </dependency>
                 <dependency>
                     <groupId>org.apache.camel.quarkus</groupId>
                     <artifactId>camel-quarkus-log-deployment</artifactId>
@@ -294,6 +262,5 @@
             </dependencies>
         </profile>
     </profiles>
-
-
-</project>
+    
+</project>
\ No newline at end of file
diff --git a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/jackson/json/JacksonJsonResource.java b/integration-test-groups/dataformats-json/json-jackson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jackson/JacksonJsonResource.java
similarity index 95%
rename from integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/jackson/json/JacksonJsonResource.java
rename to integration-test-groups/dataformats-json/json-jackson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jackson/JacksonJsonResource.java
index 9990ebbf8b..5e04196ef3 100644
--- a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/jackson/json/JacksonJsonResource.java
+++ b/integration-test-groups/dataformats-json/json-jackson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jackson/JacksonJsonResource.java
@@ -14,15 +14,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.quarkus.component.dataformats.jackson.json;
-
-import java.util.Calendar;
-import java.util.GregorianCalendar;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.TimeZone;
+package org.apache.camel.quarkus.component.dataformats.json.jackson;
+
+import java.util.*;
 import java.util.concurrent.Callable;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
@@ -40,21 +34,12 @@ import org.apache.camel.Exchange;
 import org.apache.camel.ProducerTemplate;
 import org.apache.camel.component.jackson.JacksonConstants;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.quarkus.component.dataformats.json.model.DummyObject;
-import org.apache.camel.quarkus.component.dataformats.json.model.Order;
-import org.apache.camel.quarkus.component.dataformats.json.model.Person;
-import org.apache.camel.quarkus.component.dataformats.json.model.Pojo;
-import org.apache.camel.quarkus.component.dataformats.json.model.TestJAXBPojo;
-import org.apache.camel.quarkus.component.dataformats.json.model.TestOtherPojo;
-import org.apache.camel.quarkus.component.dataformats.json.model.TestPojo;
-import org.apache.camel.quarkus.component.dataformats.json.model.TestPojoView;
+import org.apache.camel.quarkus.component.dataformats.json.jackson.model.*;
 import org.jboss.logging.Logger;
 
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.*;
 
-@Path("/dataformats-json")
+@Path("/dataformats-json-jackson")
 @ApplicationScoped
 public class JacksonJsonResource {
 
diff --git a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/jackson/json/JacksonJsonRoute.java b/integration-test-groups/dataformats-json/json-jackson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jackson/JacksonJsonRoute.java
similarity index 92%
rename from integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/jackson/json/JacksonJsonRoute.java
rename to integration-test-groups/dataformats-json/json-jackson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jackson/JacksonJsonRoute.java
index 867354c55e..d84fe89d0c 100644
--- a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/jackson/json/JacksonJsonRoute.java
+++ b/integration-test-groups/dataformats-json/json-jackson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jackson/JacksonJsonRoute.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.camel.quarkus.component.dataformats.jackson.json;
+package org.apache.camel.quarkus.component.dataformats.json.jackson;
 
 import java.util.TimeZone;
 
@@ -27,14 +27,7 @@ import org.apache.camel.component.jackson.JacksonConstants;
 import org.apache.camel.component.jackson.JacksonDataFormat;
 import org.apache.camel.component.jackson.ListJacksonDataFormat;
 import org.apache.camel.model.dataformat.JsonLibrary;
-import org.apache.camel.quarkus.component.dataformats.json.model.DummyObject;
-import org.apache.camel.quarkus.component.dataformats.json.model.MyModule;
-import org.apache.camel.quarkus.component.dataformats.json.model.Person;
-import org.apache.camel.quarkus.component.dataformats.json.model.Pojo;
-import org.apache.camel.quarkus.component.dataformats.json.model.TestJAXBPojo;
-import org.apache.camel.quarkus.component.dataformats.json.model.TestPojo;
-import org.apache.camel.quarkus.component.dataformats.json.model.TestPojoView;
-import org.apache.camel.quarkus.component.dataformats.json.model.Views;
+import org.apache.camel.quarkus.component.dataformats.json.jackson.model.*;
 
 public class JacksonJsonRoute extends RouteBuilder {
 
@@ -91,7 +84,8 @@ public class JacksonJsonRoute extends RouteBuilder {
 
         JacksonDataFormat jacksonJsonModuleFormat = new JacksonDataFormat();
         jacksonJsonModuleFormat.setInclude("NON_NULL");
-        jacksonJsonModuleFormat.setModuleClassNames("org.apache.camel.quarkus.component.dataformats.json.model.MyModule");
+        jacksonJsonModuleFormat
+                .setModuleClassNames("org.apache.camel.quarkus.component.dataformats.json.jackson.model.MyModule");
         from("direct:jackson-module-marshal").marshal(jacksonJsonModuleFormat).to("mock:jackson-module-marshal");
 
         JacksonDataFormat jacksonNotUseDefaultMapper = new JacksonDataFormat();
diff --git a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/jackson/json/NamingStrategyCustomizer.java b/integration-test-groups/dataformats-json/json-jackson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jackson/NamingStrategyCustomizer.java
similarity index 95%
rename from integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/jackson/json/NamingStrategyCustomizer.java
rename to integration-test-groups/dataformats-json/json-jackson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jackson/NamingStrategyCustomizer.java
index a8b3ec2a74..d9824a80e5 100644
--- a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/jackson/json/NamingStrategyCustomizer.java
+++ b/integration-test-groups/dataformats-json/json-jackson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jackson/NamingStrategyCustomizer.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.quarkus.component.dataformats.jackson.json;
+package org.apache.camel.quarkus.component.dataformats.json.jackson;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.PropertyNamingStrategies;
diff --git a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/AnotherObject.java b/integration-test-groups/dataformats-json/json-jackson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jackson/model/AnotherObject.java
similarity index 93%
copy from integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/AnotherObject.java
copy to integration-test-groups/dataformats-json/json-jackson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jackson/model/AnotherObject.java
index 07464ca982..9071952135 100644
--- a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/AnotherObject.java
+++ b/integration-test-groups/dataformats-json/json-jackson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jackson/model/AnotherObject.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.quarkus.component.dataformats.json.model;
+package org.apache.camel.quarkus.component.dataformats.json.jackson.model;
 
 import io.quarkus.runtime.annotations.RegisterForReflection;
 
diff --git a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/DummyObject.java b/integration-test-groups/dataformats-json/json-jackson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jackson/model/DummyObject.java
similarity index 92%
copy from integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/DummyObject.java
copy to integration-test-groups/dataformats-json/json-jackson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jackson/model/DummyObject.java
index 94531f06a6..0f96e2374a 100644
--- a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/DummyObject.java
+++ b/integration-test-groups/dataformats-json/json-jackson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jackson/model/DummyObject.java
@@ -14,14 +14,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.quarkus.component.dataformats.json.model;
+package org.apache.camel.quarkus.component.dataformats.json.jackson.model;
 
 import java.util.Date;
 
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import io.quarkus.runtime.annotations.RegisterForReflection;
 import jakarta.json.bind.annotation.JsonbProperty;
-import jakarta.json.bind.annotation.JsonbTransient;
 
 @RegisterForReflection
 public class DummyObject {
@@ -30,8 +29,6 @@ public class DummyObject {
     private String dummyString;
 
     @JsonIgnore
-    @ExcludeField
-    @JsonbTransient
     private int ignored;
 
     private Date date = new Date(1645026373);
diff --git a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/MyModule.java b/integration-test-groups/dataformats-json/json-jackson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jackson/model/MyModule.java
similarity index 95%
rename from integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/MyModule.java
rename to integration-test-groups/dataformats-json/json-jackson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jackson/model/MyModule.java
index 0af321ca15..60c4874f42 100644
--- a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/MyModule.java
+++ b/integration-test-groups/dataformats-json/json-jackson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jackson/model/MyModule.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.quarkus.component.dataformats.json.model;
+package org.apache.camel.quarkus.component.dataformats.json.jackson.model;
 
 import com.fasterxml.jackson.core.Version;
 import com.fasterxml.jackson.databind.Module;
diff --git a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/Order.java b/integration-test-groups/dataformats-json/json-jackson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jackson/model/Order.java
similarity index 96%
rename from integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/Order.java
rename to integration-test-groups/dataformats-json/json-jackson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jackson/model/Order.java
index b302a94043..cbb8e1c159 100644
--- a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/Order.java
+++ b/integration-test-groups/dataformats-json/json-jackson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jackson/model/Order.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.quarkus.component.dataformats.json.model;
+package org.apache.camel.quarkus.component.dataformats.json.jackson.model;
 
 import io.quarkus.runtime.annotations.RegisterForReflection;
 import jakarta.xml.bind.annotation.XmlAccessType;
diff --git a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/Person.java b/integration-test-groups/dataformats-json/json-jackson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jackson/model/Person.java
similarity index 96%
rename from integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/Person.java
rename to integration-test-groups/dataformats-json/json-jackson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jackson/model/Person.java
index 1d2068e2f7..953b7999e9 100644
--- a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/Person.java
+++ b/integration-test-groups/dataformats-json/json-jackson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jackson/model/Person.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.quarkus.component.dataformats.json.model;
+package org.apache.camel.quarkus.component.dataformats.json.jackson.model;
 
 import java.util.Objects;
 
diff --git a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/Pojo.java b/integration-test-groups/dataformats-json/json-jackson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jackson/model/Pojo.java
similarity index 93%
rename from integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/Pojo.java
rename to integration-test-groups/dataformats-json/json-jackson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jackson/model/Pojo.java
index 6700c4594b..d099f4de91 100644
--- a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/Pojo.java
+++ b/integration-test-groups/dataformats-json/json-jackson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jackson/model/Pojo.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.quarkus.component.dataformats.json.model;
+package org.apache.camel.quarkus.component.dataformats.json.jackson.model;
 
 import io.quarkus.runtime.annotations.RegisterForReflection;
 
diff --git a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/PojoA.java b/integration-test-groups/dataformats-json/json-jackson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jackson/model/PojoA.java
similarity index 94%
copy from integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/PojoA.java
copy to integration-test-groups/dataformats-json/json-jackson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jackson/model/PojoA.java
index 366c9f59a9..ccb7e69779 100644
--- a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/PojoA.java
+++ b/integration-test-groups/dataformats-json/json-jackson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jackson/model/PojoA.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.quarkus.component.dataformats.json.model;
+package org.apache.camel.quarkus.component.dataformats.json.jackson.model;
 
 import io.quarkus.runtime.annotations.RegisterForReflection;
 
diff --git a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/TestJAXBPojo.java b/integration-test-groups/dataformats-json/json-jackson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jackson/model/TestJAXBPojo.java
similarity index 95%
rename from integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/TestJAXBPojo.java
rename to integration-test-groups/dataformats-json/json-jackson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jackson/model/TestJAXBPojo.java
index 2ca2c9fb51..7597ec259a 100644
--- a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/TestJAXBPojo.java
+++ b/integration-test-groups/dataformats-json/json-jackson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jackson/model/TestJAXBPojo.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.quarkus.component.dataformats.json.model;
+package org.apache.camel.quarkus.component.dataformats.json.jackson.model;
 
 import io.quarkus.runtime.annotations.RegisterForReflection;
 import jakarta.xml.bind.annotation.XmlElement;
diff --git a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/TestOtherPojo.java b/integration-test-groups/dataformats-json/json-jackson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jackson/model/TestOtherPojo.java
similarity index 94%
rename from integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/TestOtherPojo.java
rename to integration-test-groups/dataformats-json/json-jackson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jackson/model/TestOtherPojo.java
index 24e1fd01aa..4f9e9d999a 100644
--- a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/TestOtherPojo.java
+++ b/integration-test-groups/dataformats-json/json-jackson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jackson/model/TestOtherPojo.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.quarkus.component.dataformats.json.model;
+package org.apache.camel.quarkus.component.dataformats.json.jackson.model;
 
 import io.quarkus.runtime.annotations.RegisterForReflection;
 
diff --git a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/TestPojo.java b/integration-test-groups/dataformats-json/json-jackson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jackson/model/TestPojo.java
similarity index 94%
rename from integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/TestPojo.java
rename to integration-test-groups/dataformats-json/json-jackson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jackson/model/TestPojo.java
index 5d2b8b76a4..c95b283d62 100644
--- a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/TestPojo.java
+++ b/integration-test-groups/dataformats-json/json-jackson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jackson/model/TestPojo.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.quarkus.component.dataformats.json.model;
+package org.apache.camel.quarkus.component.dataformats.json.jackson.model;
 
 import io.quarkus.runtime.annotations.RegisterForReflection;
 
diff --git a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/TestPojoView.java b/integration-test-groups/dataformats-json/json-jackson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jackson/model/TestPojoView.java
similarity index 96%
rename from integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/TestPojoView.java
rename to integration-test-groups/dataformats-json/json-jackson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jackson/model/TestPojoView.java
index aefdd53ce0..03213e0be8 100644
--- a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/TestPojoView.java
+++ b/integration-test-groups/dataformats-json/json-jackson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jackson/model/TestPojoView.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.quarkus.component.dataformats.json.model;
+package org.apache.camel.quarkus.component.dataformats.json.jackson.model;
 
 import com.fasterxml.jackson.annotation.JsonView;
 import io.quarkus.runtime.annotations.RegisterForReflection;
diff --git a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/Views.java b/integration-test-groups/dataformats-json/json-jackson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jackson/model/Views.java
similarity index 93%
rename from integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/Views.java
rename to integration-test-groups/dataformats-json/json-jackson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jackson/model/Views.java
index d308eb337e..81bc8e3553 100644
--- a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/Views.java
+++ b/integration-test-groups/dataformats-json/json-jackson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jackson/model/Views.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.quarkus.component.dataformats.json.model;
+package org.apache.camel.quarkus.component.dataformats.json.jackson.model;
 
 import io.quarkus.runtime.annotations.RegisterForReflection;
 
diff --git a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/jackson/xml/JacksonXmlResource.java b/integration-test-groups/dataformats-json/json-jackson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jackson/xml/JacksonXmlResource.java
similarity index 96%
rename from integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/jackson/xml/JacksonXmlResource.java
rename to integration-test-groups/dataformats-json/json-jackson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jackson/xml/JacksonXmlResource.java
index acf7814406..274de9ac59 100644
--- a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/jackson/xml/JacksonXmlResource.java
+++ b/integration-test-groups/dataformats-json/json-jackson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jackson/xml/JacksonXmlResource.java
@@ -14,25 +14,16 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.quarkus.component.dataformats.jackson.xml;
-
-import java.util.Calendar;
-import java.util.GregorianCalendar;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.TimeZone;
+package org.apache.camel.quarkus.component.dataformats.json.jackson.xml;
+
+import java.util.*;
 import java.util.concurrent.Callable;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 
 import jakarta.enterprise.context.ApplicationScoped;
 import jakarta.inject.Inject;
-import jakarta.ws.rs.Consumes;
-import jakarta.ws.rs.GET;
-import jakarta.ws.rs.POST;
-import jakarta.ws.rs.Path;
-import jakarta.ws.rs.Produces;
+import jakarta.ws.rs.*;
 import jakarta.ws.rs.core.MediaType;
 import org.apache.camel.CamelContext;
 import org.apache.camel.ConsumerTemplate;
@@ -40,17 +31,15 @@ import org.apache.camel.Exchange;
 import org.apache.camel.ProducerTemplate;
 import org.apache.camel.component.jacksonxml.JacksonXMLConstants;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.quarkus.component.dataformats.json.model.TestJAXBPojo;
-import org.apache.camel.quarkus.component.dataformats.json.model.TestOtherPojo;
-import org.apache.camel.quarkus.component.dataformats.json.model.TestPojo;
-import org.apache.camel.quarkus.component.dataformats.json.model.TestPojoView;
+import org.apache.camel.quarkus.component.dataformats.json.jackson.model.TestJAXBPojo;
+import org.apache.camel.quarkus.component.dataformats.json.jackson.model.TestOtherPojo;
+import org.apache.camel.quarkus.component.dataformats.json.jackson.model.TestPojo;
+import org.apache.camel.quarkus.component.dataformats.json.jackson.model.TestPojoView;
 import org.jboss.logging.Logger;
 
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.*;
 
-@Path("/dataformats-json")
+@Path("/dataformats-json-jackson")
 @ApplicationScoped
 public class JacksonXmlResource {
 
diff --git a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/jackson/xml/JacksonXmlRoute.java b/integration-test-groups/dataformats-json/json-jackson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jackson/xml/JacksonXmlRoute.java
similarity index 91%
rename from integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/jackson/xml/JacksonXmlRoute.java
rename to integration-test-groups/dataformats-json/json-jackson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jackson/xml/JacksonXmlRoute.java
index 98f82c33a1..560bd510ff 100644
--- a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/jackson/xml/JacksonXmlRoute.java
+++ b/integration-test-groups/dataformats-json/json-jackson/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jackson/xml/JacksonXmlRoute.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.camel.quarkus.component.dataformats.jackson.xml;
+package org.apache.camel.quarkus.component.dataformats.json.jackson.xml;
 
 import java.util.TimeZone;
 
@@ -23,12 +23,7 @@ import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.jacksonxml.JacksonXMLConstants;
 import org.apache.camel.component.jacksonxml.JacksonXMLDataFormat;
 import org.apache.camel.component.jacksonxml.ListJacksonXMLDataFormat;
-import org.apache.camel.quarkus.component.dataformats.json.model.DummyObject;
-import org.apache.camel.quarkus.component.dataformats.json.model.MyModule;
-import org.apache.camel.quarkus.component.dataformats.json.model.TestJAXBPojo;
-import org.apache.camel.quarkus.component.dataformats.json.model.TestPojo;
-import org.apache.camel.quarkus.component.dataformats.json.model.TestPojoView;
-import org.apache.camel.quarkus.component.dataformats.json.model.Views;
+import org.apache.camel.quarkus.component.dataformats.json.jackson.model.*;
 
 public class JacksonXmlRoute extends RouteBuilder {
 
@@ -74,7 +69,8 @@ public class JacksonXmlRoute extends RouteBuilder {
 
         JacksonXMLDataFormat jacksonXmlMarshalModuleformat = new JacksonXMLDataFormat();
         jacksonXmlMarshalModuleformat.setInclude("NON_NULL");
-        jacksonXmlMarshalModuleformat.setModuleClassNames("org.apache.camel.quarkus.component.dataformats.json.model.MyModule");
+        jacksonXmlMarshalModuleformat
+                .setModuleClassNames("org.apache.camel.quarkus.component.dataformats.json.jackson.model.MyModule");
         from("direct:jacksonxml-marshal-module").marshal(jacksonXmlMarshalModuleformat).to("mock:jacksonxml-marshal-module");
 
         from("direct:jacksonxml-marshal-concurrent-start").marshal().jacksonXml().to("log:marshalled")
diff --git a/integration-tests/dataformats-json/src/main/resources/application.properties b/integration-test-groups/dataformats-json/json-jackson/src/main/resources/application.properties
similarity index 87%
rename from integration-tests/dataformats-json/src/main/resources/application.properties
rename to integration-test-groups/dataformats-json/json-jackson/src/main/resources/application.properties
index b250477e7a..f3e7832907 100644
--- a/integration-tests/dataformats-json/src/main/resources/application.properties
+++ b/integration-test-groups/dataformats-json/json-jackson/src/main/resources/application.properties
@@ -18,9 +18,9 @@
 #
 # Camel
 #
-camel.context.name = camel-quarkus-integration-tests-dataformats-json
+camel.context.name = camel-quarkus-integration-tests-dataformats-json-jackson
 
 #
 # Main
 #
-camel.main.routes-include-pattern = classpath:routes/jsonb-routes.xml,classpath:routes/jackson-routes.xml,classpath:routes/gson-routes.xml
+camel.main.routes-include-pattern = classpath:routes/jackson-routes.xml
diff --git a/integration-tests/dataformats-json/src/main/resources/routes/jackson-routes.xml b/integration-test-groups/dataformats-json/json-jackson/src/main/resources/routes/jackson-routes.xml
similarity index 81%
rename from integration-tests/dataformats-json/src/main/resources/routes/jackson-routes.xml
rename to integration-test-groups/dataformats-json/json-jackson/src/main/resources/routes/jackson-routes.xml
index b1d48464a2..0b87174396 100644
--- a/integration-tests/dataformats-json/src/main/resources/routes/jackson-routes.xml
+++ b/integration-test-groups/dataformats-json/json-jackson/src/main/resources/routes/jackson-routes.xml
@@ -26,7 +26,7 @@
     <route>
         <from uri="direct:Jackson-type-as-attribute"/>
         <unmarshal>
-            <json library="Jackson" unmarshalType="org.apache.camel.quarkus.component.dataformats.json.model.AnotherObject"/>
+            <json library="Jackson" unmarshalType="org.apache.camel.quarkus.component.dataformats.json.jackson.model.AnotherObject"/>
         </unmarshal>
     </route>
 
@@ -42,14 +42,14 @@
 
     <route>
         <from uri="direct:jacksonxml-unmarshal-spring-list-backPojo"/>
-        <unmarshal><jacksonXml useList="true" unmarshalType="org.apache.camel.quarkus.component.dataformats.json.model.TestPojo"/></unmarshal>
+        <unmarshal><jacksonXml useList="true" unmarshalType="org.apache.camel.quarkus.component.dataformats.json.jackson.model.TestPojo"/></unmarshal>
         <to uri="mock:jacksonxml-unmarshal-spring-list-reversePojo"/>
     </route>
 
     <route>
       <from uri="direct:jacksonxml-marshal-spring-enablefeature"/>
       <marshal>
-        <jacksonXml unmarshalType="org.apache.camel.quarkus.component.dataformats.json.model.TestPojo"
+        <jacksonXml unmarshalType="org.apache.camel.quarkus.component.dataformats.json.jackson.model.TestPojo"
             enableFeatures="WRAP_ROOT_VALUE"/>
       </marshal>
     </route>
@@ -72,35 +72,35 @@
 
     <route>
       <from uri="direct:jacksonxml-xml-inPojo"/>
-      <marshal><jacksonXml unmarshalType="org.apache.camel.quarkus.component.dataformats.json.model.TestPojo"/></marshal>
+      <marshal><jacksonXml unmarshalType="org.apache.camel.quarkus.component.dataformats.json.jackson.model.TestPojo"/></marshal>
     </route>
 
     <route>
       <from uri="direct:jacksonxml-xml-backPojo"/>
-      <unmarshal><jacksonXml unmarshalType="org.apache.camel.quarkus.component.dataformats.json.model.TestPojo"/></unmarshal>
+      <unmarshal><jacksonXml unmarshalType="org.apache.camel.quarkus.component.dataformats.json.jackson.model.TestPojo"/></unmarshal>
       <to uri="mock:jacksonxml-xml-reversePojo"/>
     </route>
 
     <route>
       <from uri="direct:jacksonxml-xml-inAgeView"/>
-      <marshal><jacksonXml unmarshalType="org.apache.camel.quarkus.component.dataformats.json.model.TestPojoView" jsonView="org.apache.camel.quarkus.component.dataformats.json.model.Views$Age"/></marshal>
+      <marshal><jacksonXml unmarshalType="org.apache.camel.quarkus.component.dataformats.json.jackson.model.TestPojoView" jsonView="org.apache.camel.quarkus.component.dataformats.json.jackson.model.Views$Age"/></marshal>
     </route>
 
     <route>
       <from uri="direct:jacksonxml-xml-backAgeView"/>
-      <unmarshal><jacksonXml unmarshalType="org.apache.camel.quarkus.component.dataformats.json.model.TestPojoView" jsonView="org.apache.camel.quarkus.component.dataformats.json.model.Views$Age"/></unmarshal>
+      <unmarshal><jacksonXml unmarshalType="org.apache.camel.quarkus.component.dataformats.json.jackson.model.TestPojoView" jsonView="org.apache.camel.quarkus.component.dataformats.json.jackson.model.Views$Age"/></unmarshal>
       <to uri="mock:jacksonxml-xml-reverseAgeView"/>
     </route>
 
     <route>
       <from uri="direct:jackson-xml-unmarshal-list-backPojo"/>
-      <unmarshal><json library="Jackson" useList="true" unmarshalType="org.apache.camel.quarkus.component.dataformats.json.model.TestPojo"/></unmarshal>
+      <unmarshal><json library="Jackson" useList="true" unmarshalType="org.apache.camel.quarkus.component.dataformats.json.jackson.model.TestPojo"/></unmarshal>
       <to uri="mock:jackson-xml-unmarshal-list-reversePojo"/>
     </route>
 
     <route>
       <from uri="direct:jackson-enablefeature-in"/>
-      <marshal><json library="Jackson" unmarshalType="org.apache.camel.quarkus.component.dataformats.json.model.TestPojo"
+      <marshal><json library="Jackson" unmarshalType="org.apache.camel.quarkus.component.dataformats.json.jackson.model.TestPojo"
             enableFeatures="WRAP_ROOT_VALUE"/></marshal>
     </route>
 </routes>
diff --git a/integration-tests/dataformats-json/src/test/java/org/apache/camel/quarkus/component/dataformats/jackson/json/JacksonJsonIT.java b/integration-test-groups/dataformats-json/json-jackson/src/test/java/org/apache/camel/quarkus/component/dataformats/json/jackson/JacksonJsonIT.java
similarity index 93%
rename from integration-tests/dataformats-json/src/test/java/org/apache/camel/quarkus/component/dataformats/jackson/json/JacksonJsonIT.java
rename to integration-test-groups/dataformats-json/json-jackson/src/test/java/org/apache/camel/quarkus/component/dataformats/json/jackson/JacksonJsonIT.java
index 020efe3bab..18d68d6b4e 100644
--- a/integration-tests/dataformats-json/src/test/java/org/apache/camel/quarkus/component/dataformats/jackson/json/JacksonJsonIT.java
+++ b/integration-test-groups/dataformats-json/json-jackson/src/test/java/org/apache/camel/quarkus/component/dataformats/json/jackson/JacksonJsonIT.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.quarkus.component.dataformats.jackson.json;
+package org.apache.camel.quarkus.component.dataformats.json.jackson;
 
 import io.quarkus.test.junit.QuarkusIntegrationTest;
 
diff --git a/integration-tests/dataformats-json/src/test/java/org/apache/camel/quarkus/component/dataformats/jackson/json/JacksonJsonTest.java b/integration-test-groups/dataformats-json/json-jackson/src/test/java/org/apache/camel/quarkus/component/dataformats/json/jackson/JacksonJsonTest.java
similarity index 63%
rename from integration-tests/dataformats-json/src/test/java/org/apache/camel/quarkus/component/dataformats/jackson/json/JacksonJsonTest.java
rename to integration-test-groups/dataformats-json/json-jackson/src/test/java/org/apache/camel/quarkus/component/dataformats/json/jackson/JacksonJsonTest.java
index 34e59414f3..eeaa66c8a8 100644
--- a/integration-tests/dataformats-json/src/test/java/org/apache/camel/quarkus/component/dataformats/jackson/json/JacksonJsonTest.java
+++ b/integration-test-groups/dataformats-json/json-jackson/src/test/java/org/apache/camel/quarkus/component/dataformats/json/jackson/JacksonJsonTest.java
@@ -14,51 +14,40 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.quarkus.component.dataformats.jackson.json;
+package org.apache.camel.quarkus.component.dataformats.json.jackson;
 
 import io.quarkus.test.junit.QuarkusTest;
 import io.restassured.RestAssured;
-import org.apache.camel.quarkus.component.dataformats.json.JsonBaseTest;
 import org.junit.jupiter.api.Test;
 
 import static org.hamcrest.Matchers.equalTo;
 
 @QuarkusTest
-public class JacksonJsonTest extends JsonBaseTest {
+public class JacksonJsonTest {
     @Test
     void jacksonUnmarshalTypeHeader() {
-        RestAssured.get("/dataformats-json/jackson/unmarshal-typeheader")
+        RestAssured.get("/dataformats-json-jackson/jackson/unmarshal-typeheader")
                 .then()
                 .statusCode(204);
     }
 
-    @Test
-    public void jacksonUnmarshallTypeAttribute() {
-        testUnmarshal("Jackson-type-as-attribute");
-    }
-
-    @Test
-    public void jacksonUnmarshallingDifferentPojos() {
-        testUnmarshallingDifferentPojos("Jackson");
-    }
-
     @Test
     void jacksonUnmarshalList() {
-        RestAssured.get("/dataformats-json/jackson/unmarshal-list")
+        RestAssured.get("/dataformats-json-jackson/jackson/unmarshal-list")
                 .then()
                 .statusCode(204);
     }
 
     @Test
     void jacksonUnmarshalListSplit() {
-        RestAssured.get("/dataformats-json/jackson/unmarshal-listsplit")
+        RestAssured.get("/dataformats-json-jackson/jackson/unmarshal-listsplit")
                 .then()
                 .statusCode(204);
     }
 
     @Test
     void jacksonMarshalIncludeDefault() {
-        RestAssured.get("/dataformats-json/jackson/marshal-includedefault")
+        RestAssured.get("/dataformats-json-jackson/jackson/marshal-includedefault")
                 .then()
                 .statusCode(200)
                 .body(equalTo("{\"name\":\"Camel\",\"country\":null}"));
@@ -66,154 +55,154 @@ public class JacksonJsonTest extends JsonBaseTest {
 
     @Test
     void jacksonUnmarshalArray() {
-        RestAssured.get("/dataformats-json/jackson/unmarshal-array")
+        RestAssured.get("/dataformats-json-jackson/jackson/unmarshal-array")
                 .then()
                 .statusCode(204);
     }
 
     @Test
     void jacksonMarshalContentTypeHeader() {
-        RestAssured.get("/dataformats-json/jackson/marshal-contenttype-header")
+        RestAssured.get("/dataformats-json-jackson/jackson/marshal-contenttype-header")
                 .then()
                 .statusCode(204);
     }
 
     @Test
     void jacksonMarshalGeneral() {
-        RestAssured.get("/dataformats-json/jackson/marshal-general")
+        RestAssured.get("/dataformats-json-jackson/jackson/marshal-general")
                 .then()
                 .statusCode(204);
     }
 
     @Test
     void jacksonObjectMapperNoReg() {
-        RestAssured.get("/dataformats-json/jackson/object-mapper-noreg")
+        RestAssured.get("/dataformats-json-jackson/jackson/object-mapper-noreg")
                 .then()
                 .statusCode(204);
     }
 
     @Test
     void jacksonAllowJmsType() {
-        RestAssured.get("/dataformats-json/jackson/allowjmstype")
+        RestAssured.get("/dataformats-json-jackson/jackson/allowjmstype")
                 .then()
                 .statusCode(204);
     }
 
     @Test
     void jacksonMarshalModule() {
-        RestAssured.get("/dataformats-json/jackson/marshal-module")
+        RestAssured.get("/dataformats-json-jackson/jackson/marshal-module")
                 .then()
                 .statusCode(204);
     }
 
     @Test
     void jacksonNotUseDefaultMapper() {
-        RestAssured.get("/dataformats-json/jackson/not-use-default-mapper")
+        RestAssured.get("/dataformats-json-jackson/jackson/not-use-default-mapper")
                 .then()
                 .statusCode(204);
     }
 
     @Test
     void jacksonUnmarshalListXmlConfigure() {
-        RestAssured.get("/dataformats-json/jackson/unmarshal-list-xml-configure")
+        RestAssured.get("/dataformats-json-jackson/jackson/unmarshal-list-xml-configure")
                 .then()
                 .statusCode(204);
     }
 
     @Test
     void jacksonObjectMapper() {
-        RestAssured.get("/dataformats-json/jackson/object-mapper")
+        RestAssured.get("/dataformats-json-jackson/jackson/object-mapper")
                 .then()
                 .statusCode(204);
     }
 
     @Test
     void jacksonPojoArray() {
-        RestAssured.get("/dataformats-json/jackson/pojo-array")
+        RestAssured.get("/dataformats-json-jackson/jackson/pojo-array")
                 .then()
                 .statusCode(204);
     }
 
     @Test
     void jacksonEnableFeature() {
-        RestAssured.get("/dataformats-json/jackson/enablefeature")
+        RestAssured.get("/dataformats-json-jackson/jackson/enablefeature")
                 .then()
                 .statusCode(204);
     }
 
     @Test
     void jacksonConcurrent() {
-        RestAssured.get("/dataformats-json/jackson/concurrent")
+        RestAssured.get("/dataformats-json-jackson/jackson/concurrent")
                 .then()
                 .statusCode(204);
     }
 
     @Test
     void jacksonUnmarshalListJackson() {
-        RestAssured.get("/dataformats-json/jackson/unmarshal-listjackson")
+        RestAssured.get("/dataformats-json-jackson/jackson/unmarshal-listjackson")
                 .then()
                 .statusCode(204);
     }
 
     @Test
     void jacksonConversionPojo() {
-        RestAssured.get("/dataformats-json/jackson/conversion-pojo")
+        RestAssured.get("/dataformats-json-jackson/jackson/conversion-pojo")
                 .then()
                 .statusCode(204);
     }
 
     @Test
     void jacksonConversion() {
-        RestAssured.get("/dataformats-json/jackson/conversion")
+        RestAssured.get("/dataformats-json-jackson/jackson/conversion")
                 .then()
                 .statusCode(204);
     }
 
     @Test
     void jacksonJaxbAnnotation() {
-        RestAssured.get("/dataformats-json/jackson/jaxb-annotation")
+        RestAssured.get("/dataformats-json-jackson/jackson/jaxb-annotation")
                 .then()
                 .statusCode(204);
     }
 
     @Test
     void jacksonView() {
-        RestAssured.get("/dataformats-json/jackson/view")
+        RestAssured.get("/dataformats-json-jackson/jackson/view")
                 .then()
                 .statusCode(204);
     }
 
     @Test
     void jacksonModuleRef() {
-        RestAssured.get("/dataformats-json/jackson/moduleref")
+        RestAssured.get("/dataformats-json-jackson/jackson/moduleref")
                 .then()
                 .statusCode(204);
     }
 
     @Test
     void jacksonIncludeNoNull() {
-        RestAssured.get("/dataformats-json/jackson/include-no-null")
+        RestAssured.get("/dataformats-json-jackson/jackson/include-no-null")
                 .then()
                 .statusCode(204);
     }
 
     @Test
     void jacksonTypeHeaderNotAllowed() {
-        RestAssured.get("/dataformats-json/jackson/typeheader-not-allowed")
+        RestAssured.get("/dataformats-json-jackson/jackson/typeheader-not-allowed")
                 .then()
                 .statusCode(204);
     }
 
     @Test
     void jacksonDateTimezone() {
-        RestAssured.get("/dataformats-json/jackson/datetimezone")
+        RestAssured.get("/dataformats-json-jackson/jackson/datetimezone")
                 .then()
                 .statusCode(204);
     }
 
     @Test
     void jacksonUnmarshalJsonNode() {
-        RestAssured.get("/dataformats-json/jackson/json-node")
+        RestAssured.get("/dataformats-json-jackson/jackson/json-node")
                 .then()
                 .statusCode(200)
                 .body(equalTo("Camel"));
diff --git a/integration-tests/dataformats-json/src/test/java/org/apache/camel/quarkus/component/dataformats/jackson/xml/JacksonXmlIT.java b/integration-test-groups/dataformats-json/json-jackson/src/test/java/org/apache/camel/quarkus/component/dataformats/json/jackson/xml/JacksonXmlIT.java
similarity index 92%
rename from integration-tests/dataformats-json/src/test/java/org/apache/camel/quarkus/component/dataformats/jackson/xml/JacksonXmlIT.java
rename to integration-test-groups/dataformats-json/json-jackson/src/test/java/org/apache/camel/quarkus/component/dataformats/json/jackson/xml/JacksonXmlIT.java
index d7e44c4fc6..d2275ec5f4 100644
--- a/integration-tests/dataformats-json/src/test/java/org/apache/camel/quarkus/component/dataformats/jackson/xml/JacksonXmlIT.java
+++ b/integration-test-groups/dataformats-json/json-jackson/src/test/java/org/apache/camel/quarkus/component/dataformats/json/jackson/xml/JacksonXmlIT.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.quarkus.component.dataformats.jackson.xml;
+package org.apache.camel.quarkus.component.dataformats.json.jackson.xml;
 
 import io.quarkus.test.junit.QuarkusIntegrationTest;
 
diff --git a/integration-tests/dataformats-json/src/test/java/org/apache/camel/quarkus/component/dataformats/jackson/xml/JacksonXmlTest.java b/integration-test-groups/dataformats-json/json-jackson/src/test/java/org/apache/camel/quarkus/component/dataformats/json/jackson/xml/JacksonXmlTest.java
similarity index 65%
rename from integration-tests/dataformats-json/src/test/java/org/apache/camel/quarkus/component/dataformats/jackson/xml/JacksonXmlTest.java
rename to integration-test-groups/dataformats-json/json-jackson/src/test/java/org/apache/camel/quarkus/component/dataformats/json/jackson/xml/JacksonXmlTest.java
index 9bc67fd943..e26b230278 100644
--- a/integration-tests/dataformats-json/src/test/java/org/apache/camel/quarkus/component/dataformats/jackson/xml/JacksonXmlTest.java
+++ b/integration-test-groups/dataformats-json/json-jackson/src/test/java/org/apache/camel/quarkus/component/dataformats/json/jackson/xml/JacksonXmlTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.quarkus.component.dataformats.jackson.xml;
+package org.apache.camel.quarkus.component.dataformats.json.jackson.xml;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -22,11 +22,9 @@ import java.util.concurrent.TimeUnit;
 
 import io.quarkus.test.junit.QuarkusTest;
 import io.restassured.RestAssured;
-import io.restassured.http.ContentType;
 import jakarta.json.bind.JsonbBuilder;
-import org.apache.camel.quarkus.component.dataformats.json.model.DummyObject;
-import org.apache.camel.quarkus.component.dataformats.json.model.PojoA;
-import org.apache.camel.quarkus.component.dataformats.json.model.TestPojo;
+import org.apache.camel.quarkus.component.dataformats.json.jackson.model.DummyObject;
+import org.apache.camel.quarkus.component.dataformats.json.jackson.model.TestPojo;
 import org.junit.jupiter.api.Test;
 
 import static org.awaitility.Awaitility.await;
@@ -35,27 +33,6 @@ import static org.hamcrest.Matchers.equalTo;
 @QuarkusTest
 public class JacksonXmlTest {
 
-    @Test
-    void jacksonXmlMarshalAndUnmarshal() {
-        final String xml = "<PojoA><name>Joe</name></PojoA>";
-        final String json = JsonbBuilder.create().toJson(new PojoA("Joe"));
-        RestAssured.given()
-                .contentType(ContentType.JSON)
-                .body(json)
-                .post("/dataformats-json/jacksonxml/marshal")
-                .then()
-                .statusCode(200)
-                .body("PojoA.name", equalTo("Joe"));
-
-        RestAssured.given()
-                .contentType("text/xml")
-                .body(xml)
-                .post("/dataformats-json/jacksonxml/unmarshal")
-                .then()
-                .statusCode(200)
-                .body(equalTo(json));
-    }
-
     @Test
     void jacksonXmlUnmarshalTypeHeader() {
         final String testPojoXml = "<pojo name=\"Camel\"/>";
@@ -65,7 +42,7 @@ public class JacksonXmlTest {
         RestAssured.given()
                 .contentType("text/xml")
                 .body(testPojoXml)
-                .post("/dataformats-json/jacksonxml/unmarshal-type-header")
+                .post("/dataformats-json-jackson/jacksonxml/unmarshal-type-header")
                 .then()
                 .statusCode(200)
                 .body(equalTo(testPojoJson));
@@ -73,7 +50,7 @@ public class JacksonXmlTest {
 
     @Test
     void jacksonXmlUnmarshalList() {
-        RestAssured.get("/dataformats-json/jacksonxml/unmarshal-list")
+        RestAssured.get("/dataformats-json-jackson/jacksonxml/unmarshal-list")
                 .then()
                 .statusCode(204);
     }
@@ -92,7 +69,7 @@ public class JacksonXmlTest {
         RestAssured.given()
                 .contentType("text/xml")
                 .body(json)
-                .post("/dataformats-json/jacksonxml/unmarshal-listsplit")
+                .post("/dataformats-json-jackson/jacksonxml/unmarshal-listsplit")
                 .then()
                 .statusCode(200)
                 .body(equalTo(listJson));
@@ -100,7 +77,7 @@ public class JacksonXmlTest {
             List<?> records = RestAssured.given()
                     .contentType("text/xml")
                     .body(json)
-                    .post("/dataformats-json/jacksonxml/unmarshal-listsplit")
+                    .post("/dataformats-json-jackson/jacksonxml/unmarshal-listsplit")
                     .then()
                     .statusCode(200)
                     .extract().as(List.class);
@@ -111,7 +88,7 @@ public class JacksonXmlTest {
 
     @Test
     void jacksonXmlMarshalIncludeDefault() {
-        RestAssured.get("/dataformats-json/jacksonxml/marshal-includedefault")
+        RestAssured.get("/dataformats-json-jackson/jacksonxml/marshal-includedefault")
                 .then()
                 .statusCode(200)
                 .body(equalTo("<TestOtherPojo><name>Camel</name><country/></TestOtherPojo>"));
@@ -119,7 +96,7 @@ public class JacksonXmlTest {
 
     @Test
     void jacksonXmlMarshalContentTypeHeader() {
-        RestAssured.get("/dataformats-json/jacksonxml/marshal-contenttype-header")
+        RestAssured.get("/dataformats-json-jackson/jacksonxml/marshal-contenttype-header")
                 .then()
                 .statusCode(204);
 
@@ -127,7 +104,7 @@ public class JacksonXmlTest {
 
     @Test
     void jacksonXmlMarshalGeneral() {
-        RestAssured.get("/dataformats-json/jacksonxml/marshal-general")
+        RestAssured.get("/dataformats-json-jackson/jacksonxml/marshal-general")
                 .then()
                 .statusCode(204);
 
@@ -135,7 +112,7 @@ public class JacksonXmlTest {
 
     @Test
     void jacksonXmlMarshalAllowJmsType() {
-        RestAssured.get("/dataformats-json/jacksonxml/marshal-allowjmstype")
+        RestAssured.get("/dataformats-json-jackson/jacksonxml/marshal-allowjmstype")
                 .then()
                 .statusCode(204);
 
@@ -143,7 +120,7 @@ public class JacksonXmlTest {
 
     @Test
     void jacksonXmlMarshalModule() {
-        RestAssured.get("/dataformats-json/jacksonxml/marshal-module")
+        RestAssured.get("/dataformats-json-jackson/jacksonxml/marshal-module")
                 .then()
                 .statusCode(204);
 
@@ -151,7 +128,7 @@ public class JacksonXmlTest {
 
     @Test
     void jacksonXmlUnmarshalSpringList() {
-        RestAssured.get("/dataformats-json/jacksonxml/unmarshal-springlist")
+        RestAssured.get("/dataformats-json-jackson/jacksonxml/unmarshal-springlist")
                 .then()
                 .statusCode(204);
 
@@ -159,7 +136,7 @@ public class JacksonXmlTest {
 
     @Test
     void jacksonXmlMarshalSpringEnableFeature() {
-        RestAssured.get("/dataformats-json/jacksonxml/marshal-spring-enablefeature")
+        RestAssured.get("/dataformats-json-jackson/jacksonxml/marshal-spring-enablefeature")
                 .then()
                 .statusCode(204);
 
@@ -167,7 +144,7 @@ public class JacksonXmlTest {
 
     @Test
     void jacksonXmlMarshalConcurrent() {
-        RestAssured.get("/dataformats-json/jacksonxml/marshal-concurrent")
+        RestAssured.get("/dataformats-json-jackson/jacksonxml/marshal-concurrent")
                 .then()
                 .statusCode(204);
 
@@ -175,7 +152,7 @@ public class JacksonXmlTest {
 
     @Test
     void jacksonXmlMarshalConversion() {
-        RestAssured.get("/dataformats-json/jacksonxml/marshal-conversion")
+        RestAssured.get("/dataformats-json-jackson/jacksonxml/marshal-conversion")
                 .then()
                 .statusCode(204);
 
@@ -183,7 +160,7 @@ public class JacksonXmlTest {
 
     @Test
     void jacksonXmlUnmarshalListJackson() {
-        RestAssured.get("/dataformats-json/jacksonxml/unmarshal-listjackson")
+        RestAssured.get("/dataformats-json-jackson/jacksonxml/unmarshal-listjackson")
                 .then()
                 .statusCode(204);
 
@@ -191,7 +168,7 @@ public class JacksonXmlTest {
 
     @Test
     void jacksonXmlSpringJackson() {
-        RestAssured.get("/dataformats-json/jacksonxml/springjackson")
+        RestAssured.get("/dataformats-json-jackson/jacksonxml/springjackson")
                 .then()
                 .statusCode(204);
 
@@ -199,7 +176,7 @@ public class JacksonXmlTest {
 
     @Test
     void jacksonXmlJaxbAnnotation() {
-        RestAssured.get("/dataformats-json/jacksonxml/jaxb-annotation")
+        RestAssured.get("/dataformats-json-jackson/jacksonxml/jaxb-annotation")
                 .then()
                 .statusCode(204);
 
@@ -207,7 +184,7 @@ public class JacksonXmlTest {
 
     @Test
     void jacksonXmlJsonView() {
-        RestAssured.get("/dataformats-json/jacksonxml/jsonview")
+        RestAssured.get("/dataformats-json-jackson/jacksonxml/jsonview")
                 .then()
                 .statusCode(204);
 
@@ -215,7 +192,7 @@ public class JacksonXmlTest {
 
     @Test
     void jacksonXmlModuleRef() {
-        RestAssured.get("/dataformats-json/jacksonxml/moduleref")
+        RestAssured.get("/dataformats-json-jackson/jacksonxml/moduleref")
                 .then()
                 .statusCode(204);
 
@@ -223,7 +200,7 @@ public class JacksonXmlTest {
 
     @Test
     void jacksonXmlIncludeNoNull() {
-        RestAssured.get("/dataformats-json/jacksonxml/include-no-null")
+        RestAssured.get("/dataformats-json-jackson/jacksonxml/include-no-null")
                 .then()
                 .statusCode(204);
 
@@ -231,7 +208,7 @@ public class JacksonXmlTest {
 
     @Test
     void jacksonXmlTypeHeaderNotAllowed() {
-        RestAssured.get("/dataformats-json/jacksonxml/typeheader-not-allowed")
+        RestAssured.get("/dataformats-json-jackson/jacksonxml/typeheader-not-allowed")
                 .then()
                 .statusCode(204);
 
@@ -239,7 +216,7 @@ public class JacksonXmlTest {
 
     @Test
     void jacksonXmlDateTimezone() {
-        RestAssured.get("/dataformats-json/jacksonxml/datetimezone")
+        RestAssured.get("/dataformats-json-jackson/jacksonxml/datetimezone")
                 .then()
                 .statusCode(204);
 
diff --git a/integration-tests/dataformats-json/pom.xml b/integration-test-groups/dataformats-json/json-jsonb/pom.xml
similarity index 77%
copy from integration-tests/dataformats-json/pom.xml
copy to integration-test-groups/dataformats-json/json-jsonb/pom.xml
index 049ef3c77b..9730cd63d5 100644
--- a/integration-tests/dataformats-json/pom.xml
+++ b/integration-test-groups/dataformats-json/json-jsonb/pom.xml
@@ -17,18 +17,21 @@
     limitations under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
+
     <parent>
         <groupId>org.apache.camel.quarkus</groupId>
         <artifactId>camel-quarkus-build-parent-it</artifactId>
         <version>3.0.0-SNAPSHOT</version>
-        <relativePath>../../poms/build-parent-it/pom.xml</relativePath>
+        <relativePath>../../../poms/build-parent-it/pom.xml</relativePath>
     </parent>
 
-    <artifactId>camel-quarkus-integration-test-dataformats-json</artifactId>
-    <name>Camel Quarkus :: Integration Tests :: DataFormats JSON</name>
-    <description>Integration tests for Camel Quarkus extension providing JSON related data formats</description>
+    <artifactId>camel-quarkus-integration-tests-dataformats-json-jsonb</artifactId>
+    <name>Camel Quarkus :: Integration Tests :: Json Dataformat Jsonb</name>
+    <description>Integration tests for Jsonb Json Dataformat</description>
 
     <dependencies>
         <dependency>
@@ -39,10 +42,6 @@
             <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-xml-jaxb</artifactId>
         </dependency>
-        <dependency>
-            <groupId>org.apache.camel.quarkus</groupId>
-            <artifactId>camel-quarkus-jackson</artifactId>
-        </dependency>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-jsonb</artifactId>
@@ -59,14 +58,6 @@
             <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-vm</artifactId>
         </dependency>
-        <dependency>
-            <groupId>org.apache.camel.quarkus</groupId>
-            <artifactId>camel-quarkus-gson</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.camel.quarkus</groupId>
-            <artifactId>camel-quarkus-jacksonxml</artifactId>
-        </dependency>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-mock</artifactId>
@@ -111,7 +102,6 @@
                 </exclusion>
             </exclusions>
         </dependency>
-
     </dependencies>
 
     <build>
@@ -174,45 +164,6 @@
                         </exclusion>
                     </exclusions>
                 </dependency>
-                <dependency>
-                    <groupId>org.apache.camel.quarkus</groupId>
-                    <artifactId>camel-quarkus-gson-deployment</artifactId>
-                    <version>${project.version}</version>
-                    <type>pom</type>
-                    <scope>test</scope>
-                    <exclusions>
-                        <exclusion>
-                            <groupId>*</groupId>
-                            <artifactId>*</artifactId>
-                        </exclusion>
-                    </exclusions>
-                </dependency>
-                <dependency>
-                    <groupId>org.apache.camel.quarkus</groupId>
-                    <artifactId>camel-quarkus-jackson-deployment</artifactId>
-                    <version>${project.version}</version>
-                    <type>pom</type>
-                    <scope>test</scope>
-                    <exclusions>
-                        <exclusion>
-                            <groupId>*</groupId>
-                            <artifactId>*</artifactId>
-                        </exclusion>
-                    </exclusions>
-                </dependency>
-                <dependency>
-                    <groupId>org.apache.camel.quarkus</groupId>
-                    <artifactId>camel-quarkus-jacksonxml-deployment</artifactId>
-                    <version>${project.version}</version>
-                    <type>pom</type>
-                    <scope>test</scope>
-                    <exclusions>
-                        <exclusion>
-                            <groupId>*</groupId>
-                            <artifactId>*</artifactId>
-                        </exclusion>
-                    </exclusions>
-                </dependency>
                 <dependency>
                     <groupId>org.apache.camel.quarkus</groupId>
                     <artifactId>camel-quarkus-jsonb-deployment</artifactId>
@@ -294,6 +245,5 @@
             </dependencies>
         </profile>
     </profiles>
-
-
-</project>
+    
+</project>
\ No newline at end of file
diff --git a/integration-test-groups/dataformats-json/json-jsonb/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jsonb/JsonJsonbDataformatsResource.java b/integration-test-groups/dataformats-json/json-jsonb/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jsonb/JsonJsonbDataformatsResource.java
new file mode 100644
index 0000000000..cbfeb81853
--- /dev/null
+++ b/integration-test-groups/dataformats-json/json-jsonb/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jsonb/JsonJsonbDataformatsResource.java
@@ -0,0 +1,104 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.quarkus.component.dataformats.json.jsonb;
+
+import jakarta.enterprise.context.ApplicationScoped;
+import jakarta.inject.Inject;
+import jakarta.json.bind.JsonbBuilder;
+import jakarta.ws.rs.*;
+import jakarta.ws.rs.core.MediaType;
+import org.apache.camel.CamelContext;
+import org.apache.camel.ConsumerTemplate;
+import org.apache.camel.ProducerTemplate;
+import org.jboss.logging.Logger;
+
+@Path("/dataformats-json-jsonb")
+@ApplicationScoped
+public class JsonJsonbDataformatsResource {
+
+    private static final Logger LOG = Logger.getLogger(JsonJsonbDataformatsResource.class);
+    @Inject
+    ProducerTemplate producerTemplate;
+    @Inject
+    ConsumerTemplate consumerTemplate;
+    @Inject
+    CamelContext context;
+
+    @Path("/in")
+    @POST
+    @Consumes(MediaType.TEXT_PLAIN)
+    @Produces(MediaType.TEXT_PLAIN)
+    public String processOrder(String statement) {
+        LOG.infof("Invoking processOrder Jsonb", statement);
+        return producerTemplate.requestBody("direct:Jsonb-in", statement, String.class);
+    }
+
+    @Path("/out")
+    @POST
+    @Produces(MediaType.APPLICATION_JSON)
+    public String testOrder() {
+        LOG.infof("Invoking testOrder Jsonb");
+        return consumerTemplate.receive("vm:Jsonb-out").getMessage().getBody().toString();
+    }
+
+    @Path("/in-a")
+    @POST
+    @Consumes(MediaType.TEXT_PLAIN)
+    @Produces(MediaType.TEXT_PLAIN)
+    public String processPojoA(String statement) {
+        LOG.infof("Invoking processPojoA Jsonb", statement);
+        return producerTemplate.requestBody("direct:Jsonb-in-a", statement, String.class);
+    }
+
+    @Path("/in-b")
+    @POST
+    @Consumes(MediaType.TEXT_PLAIN)
+    @Produces(MediaType.TEXT_PLAIN)
+    public String processPojoB(String statement) {
+        LOG.infof("Invoking processPojoB Jsonb", statement);
+        return producerTemplate.requestBody("direct:Jsonb-in-b", statement, String.class);
+    }
+
+    @Path("/out-a")
+    @POST
+    @Produces(MediaType.TEXT_PLAIN)
+    public String testPojoA() {
+        LOG.infof("Invoking testPojoA Jsonb");
+        return consumerTemplate.receive("vm:Jsonb-out-a").getMessage().getBody().toString();
+    }
+
+    @Path("/out-b")
+    @POST
+    @Produces(MediaType.TEXT_PLAIN)
+    public String testPojoB() {
+        LOG.infof("Invoking testPojoB Jsonb");
+        return consumerTemplate.receive("vm:Jsonb-out-b").getMessage().getBody().toString();
+    }
+
+    @Path("/unmarshal/{direct-id}")
+    @POST
+    @Consumes(MediaType.TEXT_PLAIN)
+    @Produces(MediaType.APPLICATION_JSON)
+    public String testXmlUnmarshalDefinition(@PathParam("direct-id") String directId, String statement) {
+        LOG.infof("Invoking testXmlUnmarshalDefinition(%s, %s)", directId, statement);
+        Object object = producerTemplate.requestBody("direct:" + directId, statement);
+        String answer = JsonbBuilder.create().toJson(object);
+
+        return answer;
+    }
+
+}
diff --git a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/JsonDataformatsRoute.java b/integration-test-groups/dataformats-json/json-jsonb/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jsonb/JsonJsonbDataformatsRoute.java
similarity index 51%
rename from integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/JsonDataformatsRoute.java
rename to integration-test-groups/dataformats-json/json-jsonb/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jsonb/JsonJsonbDataformatsRoute.java
index 083bc2810b..2fcb2b9f0b 100644
--- a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/JsonDataformatsRoute.java
+++ b/integration-test-groups/dataformats-json/json-jsonb/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jsonb/JsonJsonbDataformatsRoute.java
@@ -14,80 +14,28 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.quarkus.component.dataformats.json;
+package org.apache.camel.quarkus.component.dataformats.json.jsonb;
 
-import java.lang.reflect.Type;
-import java.util.Arrays;
 import java.util.List;
 
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.gson.ExclusionStrategy;
-import com.google.gson.FieldAttributes;
-import com.google.gson.FieldNamingPolicy;
-import com.google.gson.reflect.TypeToken;
 import jakarta.enterprise.context.ApplicationScoped;
-import jakarta.inject.Inject;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.gson.GsonDataFormat;
-import org.apache.camel.component.jackson.JacksonDataFormat;
 import org.apache.camel.component.jsonb.JsonbDataFormat;
 import org.apache.camel.model.dataformat.JsonLibrary;
-import org.apache.camel.quarkus.component.dataformats.json.model.DummyObject;
-import org.apache.camel.quarkus.component.dataformats.json.model.ExcludeField;
-import org.apache.camel.quarkus.component.dataformats.json.model.PojoA;
-import org.apache.camel.quarkus.component.dataformats.json.model.PojoB;
+import org.apache.camel.quarkus.component.dataformats.json.jsonb.model.AnotherObject;
+import org.apache.camel.quarkus.component.dataformats.json.jsonb.model.DummyObject;
+import org.apache.camel.quarkus.component.dataformats.json.jsonb.model.PojoA;
+import org.apache.camel.quarkus.component.dataformats.json.jsonb.model.PojoB;
 import org.apache.camel.spi.DataFormat;
 
 @ApplicationScoped
-public class JsonDataformatsRoute extends RouteBuilder {
-
-    @Inject
-    ObjectMapper jacksonObjectMapper;
+public class JsonJsonbDataformatsRoute extends RouteBuilder {
 
     @Override
     public void configure() {
-        JacksonDataFormat jacksonDummyObjectDataFormat = new JacksonDataFormat(DummyObject.class);
-        jacksonDummyObjectDataFormat.useList();
-        jacksonDummyObjectDataFormat.setObjectMapper(jacksonObjectMapper);
-        configureJsonRoutes(JsonLibrary.Jackson, jacksonDummyObjectDataFormat, new JacksonDataFormat(PojoA.class),
-                new JacksonDataFormat(PojoB.class));
-
-        GsonDataFormat gsonDummyObjectDataFormat = new GsonDataFormat();
-        Type genericType = new TypeToken<List<DummyObject>>() {
-        }.getType();
-        gsonDummyObjectDataFormat.setUnmarshalGenericType(genericType);
-        gsonDummyObjectDataFormat.setDateFormatPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
-        gsonDummyObjectDataFormat.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES);
-        gsonDummyObjectDataFormat.setExclusionStrategies(Arrays.<ExclusionStrategy> asList(new ExclusionStrategy() {
-            @Override
-            public boolean shouldSkipField(FieldAttributes f) {
-                return f.getAnnotation(ExcludeField.class) != null;
-            }
-
-            @Override
-            public boolean shouldSkipClass(Class<?> clazz) {
-                return false;
-            }
-        }));
-
-        GsonDataFormat unmarshalByTypeNameGsonDataFormat = new GsonDataFormat();
-        unmarshalByTypeNameGsonDataFormat
-                .setUnmarshalTypeName("org.apache.camel.quarkus.component.dataformats.json.model.PojoA");
-        configureJsonRoutes(JsonLibrary.Gson, gsonDummyObjectDataFormat, unmarshalByTypeNameGsonDataFormat,
-                new GsonDataFormat(PojoB.class));
-
         JsonbDataFormat jsonBDummyObjectDataFormat = new JsonbDataFormat(new ParamType(List.class, DummyObject.class));
         configureJsonRoutes(JsonLibrary.Jsonb, jsonBDummyObjectDataFormat, new JsonbDataFormat(PojoA.class),
                 new JsonbDataFormat(PojoB.class));
-
-        from("direct:jacksonxml-marshal")
-                .marshal()
-                .jacksonXml(true);
-
-        from("direct:jacksonxml-unmarshal")
-                .unmarshal()
-                .jacksonXml(PojoA.class);
-
     }
 
     public void configureJsonRoutes(JsonLibrary library, DataFormat dummyObjectDataFormat, DataFormat pojoADataFormat,
@@ -126,5 +74,13 @@ public class JsonDataformatsRoute extends RouteBuilder {
                 .marshal(pojoBDataFormat)
                 .convertBodyTo(String.class)
                 .toF("vm:%s-out-b", library);
+
+        from("direct:Jsonb-type-as-attribute")
+                .unmarshal().json(library, AnotherObject.class);
+
+        from("direct:Jsonb-type-as-header")
+                .setHeader("CamelGsonUnmarshalType")
+                .constant("org.apache.camel.quarkus.component.dataformats.json.jsonb.model.AnotherObject")
+                .unmarshal().json(library);
     }
 }
diff --git a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/ParamType.java b/integration-test-groups/dataformats-json/json-jsonb/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jsonb/ParamType.java
similarity index 98%
rename from integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/ParamType.java
rename to integration-test-groups/dataformats-json/json-jsonb/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jsonb/ParamType.java
index 275ec024d8..d5918b9545 100644
--- a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/ParamType.java
+++ b/integration-test-groups/dataformats-json/json-jsonb/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jsonb/ParamType.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.quarkus.component.dataformats.json;
+package org.apache.camel.quarkus.component.dataformats.json.jsonb;
 
 import java.lang.reflect.ParameterizedType;
 import java.lang.reflect.Type;
diff --git a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/AnotherObject.java b/integration-test-groups/dataformats-json/json-jsonb/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jsonb/model/AnotherObject.java
similarity index 94%
rename from integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/AnotherObject.java
rename to integration-test-groups/dataformats-json/json-jsonb/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jsonb/model/AnotherObject.java
index 07464ca982..981b1c67d7 100644
--- a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/AnotherObject.java
+++ b/integration-test-groups/dataformats-json/json-jsonb/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jsonb/model/AnotherObject.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.quarkus.component.dataformats.json.model;
+package org.apache.camel.quarkus.component.dataformats.json.jsonb.model;
 
 import io.quarkus.runtime.annotations.RegisterForReflection;
 
diff --git a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/DummyObject.java b/integration-test-groups/dataformats-json/json-jsonb/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jsonb/model/DummyObject.java
similarity index 92%
rename from integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/DummyObject.java
rename to integration-test-groups/dataformats-json/json-jsonb/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jsonb/model/DummyObject.java
index 94531f06a6..47ca07f806 100644
--- a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/DummyObject.java
+++ b/integration-test-groups/dataformats-json/json-jsonb/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jsonb/model/DummyObject.java
@@ -14,11 +14,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.quarkus.component.dataformats.json.model;
+package org.apache.camel.quarkus.component.dataformats.json.jsonb.model;
 
 import java.util.Date;
 
-import com.fasterxml.jackson.annotation.JsonIgnore;
 import io.quarkus.runtime.annotations.RegisterForReflection;
 import jakarta.json.bind.annotation.JsonbProperty;
 import jakarta.json.bind.annotation.JsonbTransient;
@@ -29,8 +28,6 @@ public class DummyObject {
     @JsonbProperty("dummy_string")
     private String dummyString;
 
-    @JsonIgnore
-    @ExcludeField
     @JsonbTransient
     private int ignored;
 
diff --git a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/PojoA.java b/integration-test-groups/dataformats-json/json-jsonb/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jsonb/model/PojoA.java
similarity index 94%
rename from integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/PojoA.java
rename to integration-test-groups/dataformats-json/json-jsonb/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jsonb/model/PojoA.java
index 366c9f59a9..023c9c37aa 100644
--- a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/PojoA.java
+++ b/integration-test-groups/dataformats-json/json-jsonb/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jsonb/model/PojoA.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.quarkus.component.dataformats.json.model;
+package org.apache.camel.quarkus.component.dataformats.json.jsonb.model;
 
 import io.quarkus.runtime.annotations.RegisterForReflection;
 
diff --git a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/PojoB.java b/integration-test-groups/dataformats-json/json-jsonb/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jsonb/model/PojoB.java
similarity index 94%
rename from integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/PojoB.java
rename to integration-test-groups/dataformats-json/json-jsonb/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jsonb/model/PojoB.java
index b591044c21..5db6aad64b 100644
--- a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/PojoB.java
+++ b/integration-test-groups/dataformats-json/json-jsonb/src/main/java/org/apache/camel/quarkus/component/dataformats/json/jsonb/model/PojoB.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.quarkus.component.dataformats.json.model;
+package org.apache.camel.quarkus.component.dataformats.json.jsonb.model;
 
 import io.quarkus.runtime.annotations.RegisterForReflection;
 
diff --git a/integration-tests/dataformats-json/src/test/java/org/apache/camel/quarkus/component/dataformats/jsonb/JsonbJsonIT.java b/integration-test-groups/dataformats-json/json-jsonb/src/test/java/org/apache/camel/quarkus/component/dataformats/json/jsonb/JsonbJsonIT.java
similarity index 93%
rename from integration-tests/dataformats-json/src/test/java/org/apache/camel/quarkus/component/dataformats/jsonb/JsonbJsonIT.java
rename to integration-test-groups/dataformats-json/json-jsonb/src/test/java/org/apache/camel/quarkus/component/dataformats/json/jsonb/JsonbJsonIT.java
index 448165e714..31ff6babcb 100644
--- a/integration-tests/dataformats-json/src/test/java/org/apache/camel/quarkus/component/dataformats/jsonb/JsonbJsonIT.java
+++ b/integration-test-groups/dataformats-json/json-jsonb/src/test/java/org/apache/camel/quarkus/component/dataformats/json/jsonb/JsonbJsonIT.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.quarkus.component.dataformats.jsonb;
+package org.apache.camel.quarkus.component.dataformats.json.jsonb;
 
 import io.quarkus.test.junit.QuarkusIntegrationTest;
 
diff --git a/integration-tests/dataformats-json/src/test/java/org/apache/camel/quarkus/component/dataformats/json/JsonBaseTest.java b/integration-test-groups/dataformats-json/json-jsonb/src/test/java/org/apache/camel/quarkus/component/dataformats/json/jsonb/JsonbJsonTest.java
similarity index 66%
rename from integration-tests/dataformats-json/src/test/java/org/apache/camel/quarkus/component/dataformats/json/JsonBaseTest.java
rename to integration-test-groups/dataformats-json/json-jsonb/src/test/java/org/apache/camel/quarkus/component/dataformats/json/jsonb/JsonbJsonTest.java
index 703c1d7400..a892b3f981 100644
--- a/integration-tests/dataformats-json/src/test/java/org/apache/camel/quarkus/component/dataformats/json/JsonBaseTest.java
+++ b/integration-test-groups/dataformats-json/json-jsonb/src/test/java/org/apache/camel/quarkus/component/dataformats/json/jsonb/JsonbJsonTest.java
@@ -14,59 +14,68 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.quarkus.component.dataformats.json;
+package org.apache.camel.quarkus.component.dataformats.json.jsonb;
 
+import io.quarkus.test.junit.QuarkusTest;
 import io.restassured.RestAssured;
 import io.restassured.http.ContentType;
 import jakarta.json.bind.JsonbBuilder;
-import org.apache.camel.quarkus.component.dataformats.json.model.AnotherObject;
+import org.apache.camel.quarkus.component.dataformats.json.jsonb.model.AnotherObject;
+import org.junit.jupiter.api.Test;
 
 import static org.hamcrest.Matchers.*;
 
-public class JsonBaseTest {
-    public void testMarshallAndUnmarshall(String jsonComponent) {
+@QuarkusTest
+public class JsonbJsonTest {
+
+    @Test
+    public void testMarshallAndUnmarshall() {
         RestAssured.given().contentType(ContentType.TEXT)
-                .queryParam("json-component", jsonComponent)
                 .body("[{\"dummy_string\": \"value1\"}, {\"dummy_string\": \"value2\"}]")
-                .post("/dataformats-json/in");
+                .post("/dataformats-json-jsonb/in");
         RestAssured.given()
-                .queryParam("json-component", jsonComponent)
-                .post("/dataformats-json/out")
+                .post("/dataformats-json-jsonb/out")
                 .then()
                 .body("dummy_string", equalTo("value1"))
                 .body("date", containsString("1970"));
         RestAssured.given()
-                .queryParam("json-component", jsonComponent)
-                .post("/dataformats-json/out")
+                .post("/dataformats-json-jsonb/out")
                 .then()
                 .body("dummy_string", equalTo("value2"))
                 .body("date", containsString("1970"));
     }
 
-    public void testUnmarshallingDifferentPojos(String jsonComponent) {
+    @Test
+    public void testUnmarshallingDifferentPojos() {
         String bodyA = "{\"name\":\"name A\"}";
         String bodyB = "{\"value\":1.0}";
 
         RestAssured.given().contentType(ContentType.TEXT)
-                .queryParam("json-component", jsonComponent)
                 .body(bodyA)
-                .post("/dataformats-json/in-a");
+                .post("/dataformats-json-jsonb/in-a");
         RestAssured.given().contentType(ContentType.TEXT)
-                .queryParam("json-component", jsonComponent)
                 .body(bodyB)
-                .post("/dataformats-json/in-b");
+                .post("/dataformats-json-jsonb/in-b");
         RestAssured.given()
-                .queryParam("json-component", jsonComponent)
-                .post("/dataformats-json/out-a")
+                .post("/dataformats-json-jsonb/out-a")
                 .then()
                 .body(equalTo(bodyA));
         RestAssured.given()
-                .queryParam("json-component", jsonComponent)
-                .post("/dataformats-json/out-b")
+                .post("/dataformats-json-jsonb/out-b")
                 .then()
                 .body(equalTo(bodyB));
     }
 
+    @Test
+    public void testUnmarshallTypeAsAttribute() {
+        testUnmarshal("Jsonb-type-as-attribute");
+    }
+
+    @Test
+    public void testUnmarshallTypeAsHeader() {
+        testUnmarshal("Jsonb-type-as-header");
+    }
+
     public void testUnmarshal(String directId) {
         AnotherObject object = new AnotherObject();
         object.setDummyString("95f669ce-d287-4519-b212-4450bc791867");
@@ -74,8 +83,9 @@ public class JsonBaseTest {
         RestAssured.given()
                 .contentType(ContentType.TEXT)
                 .body(JsonbBuilder.create().toJson(object))
-                .post("/dataformats-json/unmarshal/{direct-id}", directId)
+                .post("/dataformats-json-jsonb/unmarshal/{direct-id}", directId)
                 .then()
                 .body("dummyString", is(object.getDummyString()));
     }
+
 }
diff --git a/integration-test-groups/pom.xml b/integration-test-groups/dataformats-json/pom.xml
similarity index 54%
copy from integration-test-groups/pom.xml
copy to integration-test-groups/dataformats-json/pom.xml
index 427b1d410b..c4acfc3aa1 100644
--- a/integration-test-groups/pom.xml
+++ b/integration-test-groups/dataformats-json/pom.xml
@@ -17,34 +17,27 @@
     limitations under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
+
     <parent>
         <groupId>org.apache.camel.quarkus</groupId>
-        <artifactId>camel-quarkus</artifactId>
+        <artifactId>camel-quarkus-integration-test-groups</artifactId>
         <version>3.0.0-SNAPSHOT</version>
-        <relativePath>../pom.xml</relativePath>
     </parent>
 
-    <artifactId>camel-quarkus-integration-test-groups</artifactId>
+    <artifactId>camel-quarkus-integration-tests-dataformats-json</artifactId>
     <packaging>pom</packaging>
 
-    <name>Camel Quarkus :: Integration Test Groups</name>
-
-    <properties>
-        <quarkus.banner.enabled>false</quarkus.banner.enabled>
-    </properties>
+    <name>Camel Quarkus :: Json Dataformats Tests</name>
 
     <modules>
-        <!-- test groups a..z; do not remove this comment, it is important when sorting via  mvn process-resources -Pformat -->
-        <module>aws2</module>
-        <module>aws2-quarkus-client</module>
-        <module>azure</module>
-        <module>compression</module>
-        <!--<module>cxf-soap</module>-->
-        <module>foundation</module>
-        <module>mongodb</module>
+        <!-- extensions a..z; do not remove this comment, it is important when sorting via  mvn process-resources -Pformat -->
+        <module>json-gson</module>
+        <module>json-jackson</module>
+        <module>json-jsonb</module>
     </modules>
-
-</project>
+    
+</project>
\ No newline at end of file
diff --git a/integration-test-groups/pom.xml b/integration-test-groups/pom.xml
index 427b1d410b..4320974af8 100644
--- a/integration-test-groups/pom.xml
+++ b/integration-test-groups/pom.xml
@@ -43,6 +43,7 @@
         <module>azure</module>
         <module>compression</module>
         <!--<module>cxf-soap</module>-->
+        <module>dataformats-json</module>
         <module>foundation</module>
         <module>mongodb</module>
     </modules>
diff --git a/integration-tests/dataformats-json/pom.xml b/integration-tests/dataformats-json-grouped/pom.xml
similarity index 77%
rename from integration-tests/dataformats-json/pom.xml
rename to integration-tests/dataformats-json-grouped/pom.xml
index 049ef3c77b..a0e335e374 100644
--- a/integration-tests/dataformats-json/pom.xml
+++ b/integration-tests/dataformats-json-grouped/pom.xml
@@ -1,24 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    Licensed to the Apache Software Foundation (ASF) under one or more
-    contributor license agreements.  See the NOTICE file distributed with
-    this work for additional information regarding copyright ownership.
-    The ASF licenses this file to You under the Apache License, Version 2.0
-    (the "License"); you may not use this file except in compliance with
-    the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
-
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
+
     <parent>
         <groupId>org.apache.camel.quarkus</groupId>
         <artifactId>camel-quarkus-build-parent-it</artifactId>
@@ -26,10 +11,11 @@
         <relativePath>../../poms/build-parent-it/pom.xml</relativePath>
     </parent>
 
-    <artifactId>camel-quarkus-integration-test-dataformats-json</artifactId>
-    <name>Camel Quarkus :: Integration Tests :: DataFormats JSON</name>
-    <description>Integration tests for Camel Quarkus extension providing JSON related data formats</description>
+    <artifactId>camel-quarkus-integration-test-dataformats-json-grouped</artifactId>
+    <name>Camel Quarkus :: Integration Tests :: Dataformats Json Grouped</name>
+    <description>Dataformats Json tests from ../integration-test-groups/dataformats-json merged together</description>
 
+    <!-- Regenerate the dependencies via `mvn process-resources -Pformat -N` from the source tree root directory -->
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
@@ -43,6 +29,10 @@
             <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-jackson</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-gson</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-jsonb</artifactId>
@@ -59,10 +49,6 @@
             <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-vm</artifactId>
         </dependency>
-        <dependency>
-            <groupId>org.apache.camel.quarkus</groupId>
-            <artifactId>camel-quarkus-gson</artifactId>
-        </dependency>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-jacksonxml</artifactId>
@@ -115,14 +101,60 @@
     </dependencies>
 
     <build>
-        <resources>
-            <resource>
-                <directory>src/main/resources</directory>
-                <filtering>true</filtering>
-            </resource>
-        </resources>
+        <plugins>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>build-helper-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>add-sources</id>
+                        <phase>generate-sources</phase>
+                        <goals>
+                            <goal>add-source</goal>
+                        </goals>
+                        <configuration>
+                            <sources>
+                                <source>${basedir}/target/src/main/java</source>
+                            </sources>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>add-test-sources</id>
+                        <phase>generate-sources</phase>
+                        <goals>
+                            <goal>add-test-source</goal>
+                        </goals>
+                        <configuration>
+                            <sources>
+                                <source>${basedir}/target/src/test/java</source>
+                            </sources>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.codehaus.gmaven</groupId>
+                <artifactId>groovy-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>group-sources</id>
+                        <goals>
+                            <goal>execute</goal>
+                        </goals>
+                        <phase>generate-sources</phase>
+                        <configuration>
+                            <source>file:${maven.multiModuleProjectDirectory}/tooling/scripts/group-tests.groovy</source>
+                            <properties>
+                                <group-tests.source.dir>${maven.multiModuleProjectDirectory}/integration-test-groups/dataformats-json</group-tests.source.dir>
+                                <group-tests.dest.module.dir>${project.basedir}</group-tests.dest.module.dir>
+                                <group-tests.concat.rel.paths>src/main/resources/application.properties</group-tests.concat.rel.paths>
+                            </properties>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
     </build>
-
     <profiles>
         <profile>
             <id>native</id>
@@ -160,7 +192,6 @@
             </activation>
             <dependencies>
                 <!-- The following dependencies guarantee that this module is built after them. You can update them by running `mvn process-resources -Pformat -N` from the source tree root directory -->
-
                 <dependency>
                     <groupId>org.apache.camel.quarkus</groupId>
                     <artifactId>camel-quarkus-direct-deployment</artifactId>
@@ -176,7 +207,7 @@
                 </dependency>
                 <dependency>
                     <groupId>org.apache.camel.quarkus</groupId>
-                    <artifactId>camel-quarkus-gson-deployment</artifactId>
+                    <artifactId>camel-quarkus-jackson-deployment</artifactId>
                     <version>${project.version}</version>
                     <type>pom</type>
                     <scope>test</scope>
@@ -189,7 +220,7 @@
                 </dependency>
                 <dependency>
                     <groupId>org.apache.camel.quarkus</groupId>
-                    <artifactId>camel-quarkus-jackson-deployment</artifactId>
+                    <artifactId>camel-quarkus-gson-deployment</artifactId>
                     <version>${project.version}</version>
                     <type>pom</type>
                     <scope>test</scope>
@@ -202,7 +233,7 @@
                 </dependency>
                 <dependency>
                     <groupId>org.apache.camel.quarkus</groupId>
-                    <artifactId>camel-quarkus-jacksonxml-deployment</artifactId>
+                    <artifactId>camel-quarkus-jsonb-deployment</artifactId>
                     <version>${project.version}</version>
                     <type>pom</type>
                     <scope>test</scope>
@@ -215,7 +246,7 @@
                 </dependency>
                 <dependency>
                     <groupId>org.apache.camel.quarkus</groupId>
-                    <artifactId>camel-quarkus-jsonb-deployment</artifactId>
+                    <artifactId>camel-quarkus-jacksonxml-deployment</artifactId>
                     <version>${project.version}</version>
                     <type>pom</type>
                     <scope>test</scope>
@@ -294,6 +325,5 @@
             </dependencies>
         </profile>
     </profiles>
-
-
-</project>
+    
+</project>
\ No newline at end of file
diff --git a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/JsonDataformatsResource.java b/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/JsonDataformatsResource.java
deleted file mode 100644
index 92b78bb4ca..0000000000
--- a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/JsonDataformatsResource.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.quarkus.component.dataformats.json;
-
-import jakarta.enterprise.context.ApplicationScoped;
-import jakarta.inject.Inject;
-import jakarta.json.bind.JsonbBuilder;
-import jakarta.ws.rs.Consumes;
-import jakarta.ws.rs.POST;
-import jakarta.ws.rs.Path;
-import jakarta.ws.rs.PathParam;
-import jakarta.ws.rs.Produces;
-import jakarta.ws.rs.QueryParam;
-import jakarta.ws.rs.core.MediaType;
-import org.apache.camel.CamelContext;
-import org.apache.camel.ConsumerTemplate;
-import org.apache.camel.ProducerTemplate;
-import org.apache.camel.quarkus.component.dataformats.json.model.PojoA;
-import org.jboss.logging.Logger;
-
-@Path("/dataformats-json")
-@ApplicationScoped
-public class JsonDataformatsResource {
-
-    private static final Logger LOG = Logger.getLogger(JsonDataformatsResource.class);
-    @Inject
-    ProducerTemplate producerTemplate;
-    @Inject
-    ConsumerTemplate consumerTemplate;
-    @Inject
-    CamelContext context;
-
-    @Path("/in")
-    @POST
-    @Consumes(MediaType.TEXT_PLAIN)
-    @Produces(MediaType.TEXT_PLAIN)
-    public String processOrder(@QueryParam("json-component") String jsonComponent, String statement) {
-        LOG.infof("Invoking processOrder(%s)", jsonComponent, statement);
-        return producerTemplate.requestBody("direct:" + jsonComponent + "-in", statement, String.class);
-    }
-
-    @Path("/out")
-    @POST
-    @Produces(MediaType.APPLICATION_JSON)
-    public String testOrder(@QueryParam("json-component") String jsonComponent) {
-        LOG.infof("Invoking testOrder(%s)", jsonComponent);
-        return consumerTemplate.receive("vm:" + jsonComponent + "-out").getMessage().getBody().toString();
-    }
-
-    @Path("/in-a")
-    @POST
-    @Consumes(MediaType.TEXT_PLAIN)
-    @Produces(MediaType.TEXT_PLAIN)
-    public String processPojoA(@QueryParam("json-component") String jsonComponent, String statement) {
-        LOG.infof("Invoking processPojoA(%s, %s)", jsonComponent, statement);
-        return producerTemplate.requestBody("direct:" + jsonComponent + "-in-a", statement, String.class);
-    }
-
-    @Path("/in-b")
-    @POST
-    @Consumes(MediaType.TEXT_PLAIN)
-    @Produces(MediaType.TEXT_PLAIN)
-    public String processPojoB(@QueryParam("json-component") String jsonComponent, String statement) {
-        LOG.infof("Invoking processPojoB(%s, %s)", jsonComponent, statement);
-        return producerTemplate.requestBody("direct:" + jsonComponent + "-in-b", statement, String.class);
-    }
-
-    @Path("/out-a")
-    @POST
-    @Produces(MediaType.TEXT_PLAIN)
-    public String testPojoA(@QueryParam("json-component") String jsonComponent) {
-        LOG.infof("Invoking testPojoA(%s)", jsonComponent);
-        return consumerTemplate.receive("vm:" + jsonComponent + "-out-a").getMessage().getBody().toString();
-    }
-
-    @Path("/out-b")
-    @POST
-    @Produces(MediaType.TEXT_PLAIN)
-    public String testPojoB(@QueryParam("json-component") String jsonComponent) {
-        LOG.infof("Invoking testPojoB(%s)", jsonComponent);
-        return consumerTemplate.receive("vm:" + jsonComponent + "-out-b").getMessage().getBody().toString();
-    }
-
-    @Path("/unmarshal/{direct-id}")
-    @POST
-    @Consumes(MediaType.TEXT_PLAIN)
-    @Produces(MediaType.APPLICATION_JSON)
-    public String testXmlUnmarshalDefinition(@PathParam("direct-id") String directId, String statement) {
-        LOG.infof("Invoking testXmlUnmarshalDefinition(%s, %s)", directId, statement);
-        Object object = producerTemplate.requestBody("direct:" + directId, statement);
-        String answer = JsonbBuilder.create().toJson(object);
-
-        return answer;
-    }
-
-    @Path("jacksonxml/marshal")
-    @POST
-    @Consumes(MediaType.APPLICATION_JSON)
-    @Produces(MediaType.TEXT_XML)
-    public String jacksonXmlMarshal(PojoA pojo) {
-
-        return producerTemplate.requestBody("direct:jacksonxml-marshal", pojo, String.class);
-    }
-
-    @Path("jacksonxml/unmarshal")
-    @POST
-    @Consumes(MediaType.TEXT_XML)
-    @Produces(MediaType.APPLICATION_JSON)
-    public PojoA jacksonXmlMarshal(String body) {
-
-        return producerTemplate.requestBody("direct:jacksonxml-unmarshal", body, PojoA.class);
-    }
-
-}
diff --git a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/RegisterSnakeCaseCustomizer.java b/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/RegisterSnakeCaseCustomizer.java
deleted file mode 100644
index cc456df6df..0000000000
--- a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/RegisterSnakeCaseCustomizer.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.quarkus.component.dataformats.json;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.PropertyNamingStrategies;
-import io.quarkus.jackson.ObjectMapperCustomizer;
-import jakarta.inject.Singleton;
-
-@Singleton
-public class RegisterSnakeCaseCustomizer implements ObjectMapperCustomizer {
-
-    @Override
-    public int priority() {
-        return MINIMUM_PRIORITY;
-    }
-
-    public void customize(ObjectMapper mapper) {
-        mapper.setPropertyNamingStrategy(PropertyNamingStrategies.SNAKE_CASE);
-    }
-}
diff --git a/integration-tests/dataformats-json/src/main/resources/routes/gson-routes.xml b/integration-tests/dataformats-json/src/main/resources/routes/gson-routes.xml
deleted file mode 100644
index e9cd7ab2d4..0000000000
--- a/integration-tests/dataformats-json/src/main/resources/routes/gson-routes.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    Licensed to the Apache Software Foundation (ASF) under one or more
-    contributor license agreements.  See the NOTICE file distributed with
-    this work for additional information regarding copyright ownership.
-    The ASF licenses this file to You under the Apache License, Version 2.0
-    (the "License"); you may not use this file except in compliance with
-    the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
-
--->
-<routes xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xmlns="http://camel.apache.org/schema/spring"
-        xsi:schemaLocation="
-            http://camel.apache.org/schema/spring
-            http://camel.apache.org/schema/spring/camel-spring.xsd">
-
-    <route>
-        <from uri="direct:Gson-type-as-attribute"/>
-        <unmarshal>
-            <json library="Gson" unmarshalType="org.apache.camel.quarkus.component.dataformats.json.model.AnotherObject"/>
-        </unmarshal>
-    </route>
-
-    <route>
-        <from uri="direct:Gson-type-as-header"/>
-        <setHeader name="CamelGsonUnmarshalType">
-            <constant>org.apache.camel.quarkus.component.dataformats.json.model.AnotherObject</constant>
-        </setHeader>
-        <unmarshal>
-            <json library="Gson" />
-        </unmarshal>
-    </route>
-
-</routes>
\ No newline at end of file
diff --git a/integration-tests/dataformats-json/src/main/resources/routes/jsonb-routes.xml b/integration-tests/dataformats-json/src/main/resources/routes/jsonb-routes.xml
deleted file mode 100644
index c48b9b69b9..0000000000
--- a/integration-tests/dataformats-json/src/main/resources/routes/jsonb-routes.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    Licensed to the Apache Software Foundation (ASF) under one or more
-    contributor license agreements.  See the NOTICE file distributed with
-    this work for additional information regarding copyright ownership.
-    The ASF licenses this file to You under the Apache License, Version 2.0
-    (the "License"); you may not use this file except in compliance with
-    the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
-
--->
-<routes xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xmlns="http://camel.apache.org/schema/spring"
-        xsi:schemaLocation="
-            http://camel.apache.org/schema/spring
-            http://camel.apache.org/schema/spring/camel-spring.xsd">
-
-    <route>
-        <from uri="direct:Jsonb-type-as-attribute"/>
-        <unmarshal>
-            <json library="Jsonb" unmarshalType="org.apache.camel.quarkus.component.dataformats.json.model.AnotherObject"/>
-        </unmarshal>
-    </route>
-
-    <route>
-        <from uri="direct:Jsonb-type-as-header"/>
-        <setHeader name="CamelJsonbUnmarshalType">
-            <constant>org.apache.camel.quarkus.component.dataformats.json.model.AnotherObject</constant>
-        </setHeader>
-        <unmarshal>
-            <json library="Jsonb" />
-        </unmarshal>
-    </route>
-
-</routes>
\ No newline at end of file
diff --git a/integration-tests/dataformats-json/src/test/java/org/apache/camel/quarkus/component/dataformats/gson/GsonJsonTest.java b/integration-tests/dataformats-json/src/test/java/org/apache/camel/quarkus/component/dataformats/gson/GsonJsonTest.java
deleted file mode 100644
index 8b2d640c43..0000000000
--- a/integration-tests/dataformats-json/src/test/java/org/apache/camel/quarkus/component/dataformats/gson/GsonJsonTest.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.quarkus.component.dataformats.gson;
-
-import io.quarkus.test.junit.QuarkusTest;
-import org.apache.camel.quarkus.component.dataformats.json.JsonBaseTest;
-import org.junit.jupiter.api.Test;
-
-@QuarkusTest
-public class GsonJsonTest extends JsonBaseTest {
-
-    @Test
-    public void testMarshallAndUnmarshall() {
-        testMarshallAndUnmarshall("Gson");
-    }
-
-    @Test
-    public void testUnmarshallingDifferentPojos() {
-        testUnmarshallingDifferentPojos("Gson");
-    }
-
-    @Test
-    public void testUnmarshallTypeAsAttribute() {
-        testUnmarshal("Gson-type-as-attribute");
-    }
-
-    @Test
-    public void testUnmarshallTypeAsHeader() {
-        testUnmarshal("Gson-type-as-header");
-    }
-
-}
diff --git a/integration-tests/dataformats-json/src/test/java/org/apache/camel/quarkus/component/dataformats/jsonb/JsonbJsonTest.java b/integration-tests/dataformats-json/src/test/java/org/apache/camel/quarkus/component/dataformats/jsonb/JsonbJsonTest.java
deleted file mode 100644
index 5f2740cac1..0000000000
--- a/integration-tests/dataformats-json/src/test/java/org/apache/camel/quarkus/component/dataformats/jsonb/JsonbJsonTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.quarkus.component.dataformats.jsonb;
-
-import io.quarkus.test.junit.QuarkusTest;
-import org.apache.camel.quarkus.component.dataformats.json.JsonBaseTest;
-import org.junit.jupiter.api.Test;
-
-@QuarkusTest
-public class JsonbJsonTest extends JsonBaseTest {
-    @Test
-    public void testMarshallAndUnmarshall() {
-        testMarshallAndUnmarshall("Jsonb");
-    }
-
-    @Test
-    public void testUnmarshallingDifferentPojos() {
-        testUnmarshallingDifferentPojos("Jsonb");
-    }
-
-    @Test
-    public void testUnmarshallTypeAsAttribute() {
-        testUnmarshal("Jsonb-type-as-attribute");
-    }
-
-    @Test
-    public void testUnmarshallTypeAsHeader() {
-        testUnmarshal("Jsonb-type-as-header");
-    }
-}
diff --git a/integration-tests/pom.xml b/integration-tests/pom.xml
index c34d2c1585..dc03a2b0f7 100644
--- a/integration-tests/pom.xml
+++ b/integration-tests/pom.xml
@@ -81,7 +81,7 @@
         <module>csv</module>
         <!--<module>cxf-soap-grouped</module>-->
         <module>dataformat</module>
-        <module>dataformats-json</module>
+        <module>dataformats-json-grouped</module>
         <!--<module>datasonnet</module>-->
         <module>debezium</module>
         <module>digitalocean</module>
diff --git a/tooling/scripts/test-categories.yaml b/tooling/scripts/test-categories.yaml
index 335fbb6aac..3ae263bd34 100644
--- a/tooling/scripts/test-categories.yaml
+++ b/tooling/scripts/test-categories.yaml
@@ -163,6 +163,7 @@ group-12:
   - aws2-grouped
   - csimple
   - quartz-clustered
+  - dataformats-json-grouped
   - knative
   - knative-channel-consumer
   - knative-endpoint-consumer