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

gk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/turbine-fulcrum-json.git

commit 5926e3d0075176f5268ac76dad95ee413c90917b
Author: Georg Kallidis <[email protected]>
AuthorDate: Fri Nov 14 11:36:04 2025 +0100

    Add three tests in module jackson2 to JacksonMapperTest concerning 
Lists,Maps and Mixins.
---
 .../fulcrum/json/jackson/JacksonMapperTest.java    | 96 +++++++++++++++++++++-
 .../apache/fulcrum/json/jackson/example/Bean.java  |  6 ++
 .../{example/Bean.java => mixins/BeanMixin3.java}  | 48 ++++++-----
 3 files changed, 127 insertions(+), 23 deletions(-)

diff --git 
a/jackson2/src/test/org/apache/fulcrum/json/jackson/JacksonMapperTest.java 
b/jackson2/src/test/org/apache/fulcrum/json/jackson/JacksonMapperTest.java
index 7799ee4..2bbcfd4 100644
--- a/jackson2/src/test/org/apache/fulcrum/json/jackson/JacksonMapperTest.java
+++ b/jackson2/src/test/org/apache/fulcrum/json/jackson/JacksonMapperTest.java
@@ -36,6 +36,7 @@ import org.apache.fulcrum.json.jackson.example.Bean;
 import org.apache.fulcrum.json.jackson.example.Rectangle;
 import org.apache.fulcrum.json.jackson.example.TestClass;
 import org.apache.fulcrum.json.jackson.mixins.BeanMixin;
+import org.apache.fulcrum.json.jackson.mixins.BeanMixin3;
 import org.apache.fulcrum.json.jackson.mixins.RectangleMixin;
 import org.apache.fulcrum.json.jackson.mixins.RectangleMixin2;
 import org.apache.fulcrum.testcontainer.BaseUnit5Test;
@@ -74,12 +75,101 @@ public class JacksonMapperTest extends BaseUnit5Test {
         assertEquals(preDefinedOutput, serJson, "Serialization failed ");
     }
 
-    @Disabled
+    //@Disabled
+    @Test
     public void testDeSerialize() throws Exception {
         String serJson = sc.ser(new TestClass("mytest"));
         Object deson = sc.deSer(serJson, TestClass.class);
         assertEquals(TestClass.class, deson.getClass(), "DeSer failed ");
     }
+    
+    @Test
+    public void testConvertToList() throws Exception {
+        
+        BeanMixin3 bean = new BeanMixin3();
+        bean.setName("joe2");
+        bean.setAge(12);
+        
+        String serJson = sc.ser(bean);
+        logger.debug("serJson: "+ serJson);
+        
+        // basic convert
+        Object deson = sc.deSer(serJson, BeanMixin3.class);
+        logger.debug("deson: "+ deson);
+        assertEquals(BeanMixin3.class, deson.getClass(), "DeSer failed ");
+        String ser = sc.ser( deson );
+        logger.debug("ser: "+ ser);
+        
+        // convert list-type to List, requires wrapped class
+        List<BeanMixin3> beanList = new ArrayList<BeanMixin3>();
+        beanList.add( bean );
+        String serListBean = sc.ser( beanList );
+        Collection<BeanMixin3> deson3 = ((Jackson2MapperService) 
sc).deSerCollectionWithType(serListBean, List.class, BeanMixin3.class);
+        logger.debug("deson3: "+ deson3);
+        logger.debug("deson2 class: "+ deson3.getClass());
+        
+        Object serList = sc.ser( deson3 );
+        logger.debug("serList: "+ serList);
+        
+        logger.debug("serList class: "+ deson3.getClass());
+        List resultList = ((List)deson3);
+        logger.debug("serList first element: "+ resultList.get( 0) );
+        assertEquals( BeanMixin3.class, resultList.get( 0).getClass() );
+        BeanMixin3 bm3 = (BeanMixin3) resultList.get( 0);
+        assertEquals("joe2", bm3.getName() );
+    }
+    
+    @Test
+    public void testDifferentMixinStyles() throws Exception {
+        Bean bean = new Bean();
+        bean.setName("joe2");
+        bean.setAge(12);
+        
+        String serJson = ((Jackson2MapperService) sc).getMapper()
+                .addMixIn(Bean.class, BeanMixin3.class)
+                .writer()
+                .forType( Bean.class )
+                .writeValueAsString( bean );
+        String serJson2 = ((Jackson2MapperService) sc)
+                .withMixinModule( bean, "MoodleMixin", Bean.class, 
BeanMixin3.class );
+        
+        String serJson3 = ((Jackson2MapperService) sc)
+                .setMixins(Bean.class, BeanMixin3.class )
+                .writeValueAsString( bean );
+        logger.debug("serJson: "+ serJson);        
+        assertTrue( serJson.equals( serJson2 ) );
+        assertTrue( serJson2.equals( serJson3 ) );
+
+    }
+    
+    @Test
+    public void testMixinConvertToMap() throws Exception {
+        Bean bean = new Bean();
+        bean.setName("joe2");
+        bean.setAge(12);
+        
+        String serJson = ((Jackson2MapperService) sc).getMapper()
+                .addMixIn(Bean.class, BeanMixin3.class)
+                .writer()
+                .forType( Bean.class )
+                .writeValueAsString( bean );
+        
+        logger.debug("serJson: "+ serJson);
+        
+        // convert from class to Map 
+        Map targetMap = sc.deSer(serJson, Map.class);
+        logger.debug("deson2: "+ targetMap);
+        logger.debug("deson2 class: "+ targetMap.getClass());
+        Map<String,Object> deson2 = ((Map)targetMap);
+        for (Map.Entry<String, Object> entry : deson2.entrySet())
+        {
+            String key = entry.getKey();
+            Object val = entry.getValue();
+            logger.debug("key class: "+ key + ", value:" + val);
+        }
+        assertEquals("joe2", deson2.get("bean.name[0]") );
+    }
+    
     @Test
     public void testConvertWithFilteredpropsMixin() throws Exception {
         Rectangle rectangle = new Rectangle(5, 10);
@@ -130,7 +220,6 @@ public class JacksonMapperTest extends BaseUnit5Test {
     }
     @Test
     public void testSerializationCollectionWithFilter() throws Exception {
-
         List<Bean> beanList = new ArrayList<>();
         for (int i = 0; i < 10; i++) {
             Bean filteredBean = new Bean();
@@ -165,7 +254,7 @@ public class JacksonMapperTest extends BaseUnit5Test {
 
     @Test
     public void testDeserializationCollectionWithFilter() throws Exception {
-
+        // prepare
         List<Bean> beanList = new ArrayList<Bean>();
         for (int i = 0; i < 10; i++) {
             Bean filteredBean = new Bean();
@@ -175,6 +264,7 @@ public class JacksonMapperTest extends BaseUnit5Test {
         }
         String result = sc.serializeOnlyFilter(beanList, Bean.class, "name",
                 "age");
+        // test
         List<Bean> beanList2 = (List<Bean>) ((Jackson2MapperService) sc)
                 .deSerCollectionWithType(result, List.class, Bean.class);
         assertTrue(beanList2.size() == 10, "DeSer failed ");
diff --git 
a/jackson2/src/test/org/apache/fulcrum/json/jackson/example/Bean.java 
b/jackson2/src/test/org/apache/fulcrum/json/jackson/example/Bean.java
index 71c9fb2..5fac2ec 100644
--- a/jackson2/src/test/org/apache/fulcrum/json/jackson/example/Bean.java
+++ b/jackson2/src/test/org/apache/fulcrum/json/jackson/example/Bean.java
@@ -45,4 +45,10 @@ public class Bean {
         this.profession = profession;
         
     }
+    
+    @Override
+    public String toString()
+    {
+        return "Bean { name: "+ getName() + ", age: " + getAge()+ ", 
profession:" + profession + " }";
+    }
 }
diff --git 
a/jackson2/src/test/org/apache/fulcrum/json/jackson/example/Bean.java 
b/jackson2/src/test/org/apache/fulcrum/json/jackson/mixins/BeanMixin3.java
similarity index 50%
copy from jackson2/src/test/org/apache/fulcrum/json/jackson/example/Bean.java
copy to jackson2/src/test/org/apache/fulcrum/json/jackson/mixins/BeanMixin3.java
index 71c9fb2..2fb149b 100644
--- a/jackson2/src/test/org/apache/fulcrum/json/jackson/example/Bean.java
+++ b/jackson2/src/test/org/apache/fulcrum/json/jackson/mixins/BeanMixin3.java
@@ -1,4 +1,5 @@
-package org.apache.fulcrum.json.jackson.example;
+package org.apache.fulcrum.json.jackson.mixins;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -17,32 +18,39 @@ package org.apache.fulcrum.json.jackson.example;
  * specific language governing permissions and limitations
  * under the License.
  */
-public class Bean {
-    private String name;
-    private int age = -1;
-    public String profession;
 
-    public Bean() {
-    }
 
-    public String getName() {
-        return name;
-    }
+import org.apache.fulcrum.json.jackson.example.Bean;
 
-    public void setName(String name) {
-        this.name = name;
-    }
+import com.fasterxml.jackson.annotation.JsonGetter;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonSetter;
 
-    public int getAge() {
-        return age;
+@JsonIgnoreProperties(allowGetters = true)
+public class BeanMixin3 extends Bean {
+    
+    public BeanMixin3() {
     }
 
-    public void setAge(int age) {
-        this.age = age;
+    @Override
+    @JsonProperty("name")
+    @JsonGetter("bean.name[0]")
+    @JsonSetter("name")
+    public String getName() {
+        return super.getName();
     }
-    public void setProfession( String profession )
+    
+    @JsonProperty("profession")
+    @JsonGetter("bean.profession[0]")
+    public String getProfession() {
+        return super.profession;
+    }
+    
+    @Override
+    public String toString()
     {
-        this.profession = profession;
-        
+        return "BeanMixin3 { name: "+ getName() + ", age: " + getAge()+ ", " + 
super.toString() + " }";
     }
 }
+

Reply via email to