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

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


The following commit(s) were added to refs/heads/main by this push:
     new aec0df1  gson: complete doc and test coverage #3556
aec0df1 is described below

commit aec0df132e1bd3fdb0ff8287ff1a4725936324a6
Author: aldettinger <aldettin...@gmail.com>
AuthorDate: Wed Feb 16 16:00:36 2022 +0100

    gson: complete doc and test coverage #3556
---
 docs/modules/ROOT/pages/reference/extensions/gson.adoc       |  9 +++++++++
 extensions/gson/runtime/src/main/doc/configuration.adoc      |  5 +++++
 .../component/dataformats/json/JsonDataformatsResource.java  |  2 +-
 .../component/dataformats/json/JsonDataformatsRoute.java     |  7 ++++++-
 .../component/dataformats/json/model/DummyObject.java        | 12 ++++++++++++
 .../component/dataformats/json/JsonComponentsTest.java       |  7 +++++--
 6 files changed, 38 insertions(+), 4 deletions(-)

diff --git a/docs/modules/ROOT/pages/reference/extensions/gson.adoc 
b/docs/modules/ROOT/pages/reference/extensions/gson.adoc
index cd7f437..bee02a5 100644
--- a/docs/modules/ROOT/pages/reference/extensions/gson.adoc
+++ b/docs/modules/ROOT/pages/reference/extensions/gson.adoc
@@ -38,3 +38,12 @@ Or add the coordinates to your existing project:
 ----
 
 Check the xref:user-guide/index.adoc[User guide] for more information about 
writing Camel Quarkus applications.
+
+== Additional Camel Quarkus configuration
+
+=== Marshaling/Unmarshaling objects in native mode
+
+When marshaling/unmarshaling objects in native mode, all the serialized 
classes need to be 
link:https://quarkus.io/guides/writing-native-applications-tips#registering-for-reflection[registered
 for reflection].
+As such, when using `GsonDataFormat.setUnmarshalType(...)`, 
`GsonDataFormat.setUnmarshalTypeName(...)` and even 
`GsonDataFormat.setUnmarshalGenericType(...)`, the unmarshal type as well as 
sub field types should be registered for reflection.
+See a working example in this 
link:https://github.com/apache/camel-quarkus/blob/main/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/PojoA.java[integration
 test].
+
diff --git a/extensions/gson/runtime/src/main/doc/configuration.adoc 
b/extensions/gson/runtime/src/main/doc/configuration.adoc
new file mode 100644
index 0000000..dcb5888
--- /dev/null
+++ b/extensions/gson/runtime/src/main/doc/configuration.adoc
@@ -0,0 +1,5 @@
+=== Marshaling/Unmarshaling objects in native mode
+
+When marshaling/unmarshaling objects in native mode, all the serialized 
classes need to be 
link:https://quarkus.io/guides/writing-native-applications-tips#registering-for-reflection[registered
 for reflection].
+As such, when using `GsonDataFormat.setUnmarshalType(...)`, 
`GsonDataFormat.setUnmarshalTypeName(...)` and even 
`GsonDataFormat.setUnmarshalGenericType(...)`, the unmarshal type as well as 
sub field types should be registered for reflection.
+See a working example in this 
link:https://github.com/apache/camel-quarkus/blob/main/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/PojoA.java[integration
 test].
\ 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
index 6f51cd8..b2c6bb1 100644
--- 
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
@@ -56,7 +56,7 @@ public class JsonDataformatsResource {
 
     @Path("/out")
     @POST
-    @Produces(MediaType.TEXT_PLAIN)
+    @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();
diff --git 
a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/JsonDataformatsRoute.java
 
b/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/JsonDataformatsRoute.java
index b5bc061..13a7831 100644
--- 
a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/JsonDataformatsRoute.java
+++ 
b/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/JsonDataformatsRoute.java
@@ -65,6 +65,7 @@ public class JsonDataformatsRoute extends RouteBuilder {
         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
@@ -77,7 +78,11 @@ public class JsonDataformatsRoute extends RouteBuilder {
                 return false;
             }
         }));
-        configureJsonRoutes(JsonLibrary.Gson, gsonDummyObjectDataFormat, new 
GsonDataFormat(PojoA.class),
+
+        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));
diff --git 
a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/DummyObject.java
 
b/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/DummyObject.java
index 1888d89..0a7ead3 100644
--- 
a/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/DummyObject.java
+++ 
b/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/dataformats/json/model/DummyObject.java
@@ -16,6 +16,8 @@
  */
 package org.apache.camel.quarkus.component.dataformats.json.model;
 
+import java.util.Date;
+
 import javax.json.bind.annotation.JsonbProperty;
 import javax.json.bind.annotation.JsonbTransient;
 
@@ -37,6 +39,8 @@ public class DummyObject {
     @JsonbTransient
     private int ignored;
 
+    private Date date = new Date(1645026373);
+
     public DummyObject() {
     }
 
@@ -56,6 +60,14 @@ public class DummyObject {
         this.ignored = ignored;
     }
 
+    public Date getDate() {
+        return date;
+    }
+
+    public void setDate(Date date) {
+        this.date = date;
+    }
+
     @Override
     public String toString() {
         return "DummyObject [dummyString=" + dummyString + ", ignored=" + 
ignored + "]";
diff --git 
a/integration-tests/dataformats-json/src/test/java/org/apache/camel/quarkus/component/dataformats/json/JsonComponentsTest.java
 
b/integration-tests/dataformats-json/src/test/java/org/apache/camel/quarkus/component/dataformats/json/JsonComponentsTest.java
index 4217f87..7728578 100644
--- 
a/integration-tests/dataformats-json/src/test/java/org/apache/camel/quarkus/component/dataformats/json/JsonComponentsTest.java
+++ 
b/integration-tests/dataformats-json/src/test/java/org/apache/camel/quarkus/component/dataformats/json/JsonComponentsTest.java
@@ -29,6 +29,7 @@ import org.junit.jupiter.api.Test;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.MethodSource;
 
+import static org.hamcrest.Matchers.containsString;
 import static org.hamcrest.Matchers.equalTo;
 import static org.hamcrest.Matchers.is;
 
@@ -50,12 +51,14 @@ public class JsonComponentsTest {
                 .queryParam("json-component", jsonComponent)
                 .post("/dataformats-json/out")
                 .then()
-                .body(equalTo("{\"dummy_string\":\"value1\"}"));
+                .body("dummy_string", equalTo("value1"))
+                .body("date", containsString("1970"));
         RestAssured.given()
                 .queryParam("json-component", jsonComponent)
                 .post("/dataformats-json/out")
                 .then()
-                .body(equalTo("{\"dummy_string\":\"value2\"}"));
+                .body("dummy_string", equalTo("value2"))
+                .body("date", containsString("1970"));
     }
 
     @ParameterizedTest

Reply via email to