You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@turbine.apache.org by gk...@apache.org on 2018/11/30 13:40:20 UTC

svn commit: r1847822 [1/2] - in /turbine/fulcrum/trunk/json: ./ gson/ gson/src/test/org/apache/fulcrum/json/gson/ jackson/ jackson2/ jackson2/src/test/ jackson2/src/test/org/apache/fulcrum/json/jackson/

Author: gk
Date: Fri Nov 30 13:40:20 2018
New Revision: 1847822

URL: http://svn.apache.org/viewvc?rev=1847822&view=rev
Log:
- migrated Jackson2 tests to JUnit5 (as is)
- update fork in all  modules
- add log4j2 support in jackson 2
- reformatting Jackson2MapperService.java

Added:
    turbine/fulcrum/trunk/json/jackson2/src/test/log4j2.xml   (with props)
Modified:
    turbine/fulcrum/trunk/json/gson/pom.xml
    turbine/fulcrum/trunk/json/gson/src/test/org/apache/fulcrum/json/gson/JsonPathGSONServiceTest.java
    turbine/fulcrum/trunk/json/jackson/pom.xml
    turbine/fulcrum/trunk/json/jackson2/pom.xml
    turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/DefaultServiceTest.java
    turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/Jackson2MapperTest.java
    turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/JacksonMapperEnabledDefaultTypingTest.java
    turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/JacksonMapperEnabledDefaultTyping_OBJECT_AND_NON_CONCRETE_Test.java
    turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/JacksonMapperTest.java
    turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/JsonOrgJacksonMapperTest.java
    turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/JsonPathJacksonTest.java
    turbine/fulcrum/trunk/json/pom.xml

Modified: turbine/fulcrum/trunk/json/gson/pom.xml
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/json/gson/pom.xml?rev=1847822&r1=1847821&r2=1847822&view=diff
==============================================================================
--- turbine/fulcrum/trunk/json/gson/pom.xml (original)
+++ turbine/fulcrum/trunk/json/gson/pom.xml Fri Nov 30 13:40:20 2018
@@ -48,7 +48,6 @@
             <plugin>
                 <artifactId>maven-surefire-plugin</artifactId>
                 <configuration>
-                    <forkMode>always</forkMode>
                     <includes>
                         <include>**/*Test.*</include>
                         <include>**/*TestCase.*</include>

Modified: turbine/fulcrum/trunk/json/gson/src/test/org/apache/fulcrum/json/gson/JsonPathGSONServiceTest.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/json/gson/src/test/org/apache/fulcrum/json/gson/JsonPathGSONServiceTest.java?rev=1847822&r1=1847821&r2=1847822&view=diff
==============================================================================
--- turbine/fulcrum/trunk/json/gson/src/test/org/apache/fulcrum/json/gson/JsonPathGSONServiceTest.java (original)
+++ turbine/fulcrum/trunk/json/gson/src/test/org/apache/fulcrum/json/gson/JsonPathGSONServiceTest.java Fri Nov 30 13:40:20 2018
@@ -143,7 +143,4 @@ public class JsonPathGSONServiceTest ext
           idx++;
       }
      }
-
-
-
-}
+}
\ No newline at end of file

Modified: turbine/fulcrum/trunk/json/jackson/pom.xml
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/json/jackson/pom.xml?rev=1847822&r1=1847821&r2=1847822&view=diff
==============================================================================
--- turbine/fulcrum/trunk/json/jackson/pom.xml (original)
+++ turbine/fulcrum/trunk/json/jackson/pom.xml Fri Nov 30 13:40:20 2018
@@ -48,7 +48,6 @@
             <plugin>
                 <artifactId>maven-surefire-plugin</artifactId>
                 <configuration>
-                    <forkMode>always</forkMode>
                     <includes>
                         <include>**/*Test.*</include>
                         <include>**/*TestCase.*</include>

Modified: turbine/fulcrum/trunk/json/jackson2/pom.xml
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/json/jackson2/pom.xml?rev=1847822&r1=1847821&r2=1847822&view=diff
==============================================================================
--- turbine/fulcrum/trunk/json/jackson2/pom.xml (original)
+++ turbine/fulcrum/trunk/json/jackson2/pom.xml Fri Nov 30 13:40:20 2018
@@ -48,7 +48,6 @@
             <plugin>
                 <artifactId>maven-surefire-plugin</artifactId>
                 <configuration>
-                    <forkMode>always</forkMode>
                     <includes>
                         <include>**/*Test.*</include>
                         <include>**/*TestCase.*</include>

Added: turbine/fulcrum/trunk/json/jackson2/src/test/log4j2.xml
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/json/jackson2/src/test/log4j2.xml?rev=1847822&view=auto
==============================================================================
--- turbine/fulcrum/trunk/json/jackson2/src/test/log4j2.xml (added)
+++ turbine/fulcrum/trunk/json/jackson2/src/test/log4j2.xml Fri Nov 30 13:40:20 2018
@@ -0,0 +1,44 @@
+<?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.
+-->
+<Configuration status="trace" verbose="true">
+    <Appenders>
+      <Console name="console" target="SYSTEM_OUT">
+          <PatternLayout pattern="%d [%t] %-5p %c - %m%n"/>
+	    </Console>
+	    <File name="logfile" fileName="target/fulcrum-test.log">
+          <PatternLayout pattern="%d [%t] %-5p %c - %m%n"/>
+	    </File>
+    </Appenders>
+    <Loggers>
+      <Logger name="org.apache.fulcrum" level="debug" additivity="false">
+          <AppenderRef ref="console"/>
+          <AppenderRef ref="logfile"/>
+      </Logger>
+      <Logger name="avalon" level="debug" additivity="false">
+          <AppenderRef ref="console"/>
+      </Logger>
+      <Logger name="org.apache.logging.log4j" level="info" additivity="false">
+          <AppenderRef ref="logfile"/>
+      </Logger>
+      <Root level="error">
+          <AppenderRef ref="console"/>
+      </Root>
+    </Loggers>
+</Configuration>
\ No newline at end of file

Propchange: turbine/fulcrum/trunk/json/jackson2/src/test/log4j2.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/DefaultServiceTest.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/DefaultServiceTest.java?rev=1847822&r1=1847821&r2=1847822&view=diff
==============================================================================
--- turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/DefaultServiceTest.java (original)
+++ turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/DefaultServiceTest.java Fri Nov 30 13:40:20 2018
@@ -1,4 +1,5 @@
 package org.apache.fulcrum.json.jackson;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -18,8 +19,9 @@ package org.apache.fulcrum.json.jackson;
  * under the License.
  */
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
@@ -30,6 +32,7 @@ import java.util.List;
 import java.util.Map;
 
 import org.apache.avalon.framework.logger.ConsoleLogger;
+import org.apache.avalon.framework.logger.Log4JLogger;
 import org.apache.avalon.framework.logger.Logger;
 import org.apache.fulcrum.json.JsonService;
 import org.apache.fulcrum.json.jackson.example.Bean;
@@ -43,9 +46,12 @@ import org.apache.fulcrum.json.jackson.s
 import org.apache.fulcrum.json.jackson.serializers.TestDummyWrapperDeserializer;
 import org.apache.fulcrum.json.jackson.serializers.TestJsonSerializer;
 import org.apache.fulcrum.json.jackson.serializers.TestSerializer;
-import org.apache.fulcrum.testcontainer.BaseUnit4Test;
-import org.junit.Before;
-import org.junit.Test;
+import org.apache.fulcrum.testcontainer.BaseUnit5Test;
+import org.apache.log4j.LogManager;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.platform.runner.JUnitPlatform;
+import org.junit.runner.RunWith;
 
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.core.JsonProcessingException;
@@ -66,7 +72,9 @@ import com.fasterxml.jackson.databind.se
  * @author gk
  * @version $Id$
  */
-public class DefaultServiceTest extends BaseUnit4Test {
+@RunWith(JUnitPlatform.class)
+public class DefaultServiceTest extends BaseUnit5Test {
+    
 	private JsonService sc = null;
 	private final String preDefinedOutput = "{\"container\":{\"cf\":\"Config.xml\"},\"configurationName\":\"Config.xml\",\"name\":\"mytest\"}";
 	Logger logger;
@@ -76,10 +84,10 @@ public class DefaultServiceTest extends
 	 * 
 	 * @throws Exception generic exception
 	 */
-	@Before
+	@BeforeEach
 	public void setUp() throws Exception {
-		setLogLevel(ConsoleLogger.LEVEL_DEBUG);
-		logger = new ConsoleLogger(ConsoleLogger.LEVEL_DEBUG);
+		logger = new Log4JLogger(LogManager.getLogger(getClass().getName()) );
+		                //new ConsoleLogger(ConsoleLogger.LEVEL_DEBUG);
 		sc = (JsonService) this.lookup(JsonService.ROLE);
 	}
 
@@ -91,7 +99,7 @@ public class DefaultServiceTest extends
 	@Test
 	public void testSerialize() throws Exception {
 		String serJson = sc.ser(new TestClass("mytest"));
-		assertEquals("Serialization failed ", preDefinedOutput, serJson);
+		assertEquals(preDefinedOutput, serJson, "Serialization failed ");
 	}
 
 	/**
@@ -103,7 +111,7 @@ public class DefaultServiceTest extends
 		String expected = "{\"type\":\"org.apache.fulcrum.json.jackson.example.TestClass\",\"container\":{\"type\":\"java.util.HashMap\",\"cf\":\"Config.xml\"},\"configurationName\":\"Config.xml\"}";
 		String serJson = customAllExceptFilter(objectMapper, new TestClass("mytest"), TestClass.class, "name");
 		logger.debug("serJson:" + serJson);
-		assertEquals("Serialization with custom mapper failed ", expected, serJson);
+		assertEquals(expected, serJson, "Serialization with custom mapper failed ");
 	}
 
 	/**
@@ -119,8 +127,7 @@ public class DefaultServiceTest extends
 			objectMapper.enableDefaultTypingAsProperty(DefaultTyping.NON_FINAL, "type");
 		AnnotationIntrospector ai = objectMapper.getSerializationConfig().getAnnotationIntrospector();
 		// AnnotationIntrospector is by default JacksonAnnotationIntrospector
-		assertTrue("Expected Default JacksonAnnotationIntrospector",
-				"ai:" + ai != null && ai instanceof JacksonAnnotationIntrospector);
+		assertTrue(ai != null && ai instanceof JacksonAnnotationIntrospector, "Expected Default JacksonAnnotationIntrospector");
 		// add to allow filtering properties for non annotated class
 		AnnotationIntrospector siai = new SimpleNameIntrospector();
 		AnnotationIntrospector pair = new AnnotationIntrospectorPair(siai, ai);
@@ -177,7 +184,7 @@ public class DefaultServiceTest extends
 		ObjectMapper objectMapper = customMapper(false);
 		String serJson = customAllExceptFilter(objectMapper, beanList, Bean.class, "name", "profession");
 		logger.debug("serJson:" + serJson);
-		assertEquals("Serialization with custom mapper failed ", expected, serJson);
+		assertEquals(expected, serJson);
 	}
 
 	/**
@@ -195,7 +202,7 @@ public class DefaultServiceTest extends
 		}
 		String serJson = sc.serializeAllExceptFilter(beanList, Bean.class, "name", "profession");
 		logger.debug("serJsonByService:" + serJson);
-		assertEquals("Serialization with service mapper failed", expected, serJson);
+		assertEquals(expected, serJson, "Serialization with service mapper failed");
 	}
 
 	/**
@@ -205,7 +212,7 @@ public class DefaultServiceTest extends
 	// the default test class: one String field, one Map
 	public void testSerializeExcludeNothing() throws Exception {
 		String serJson = sc.serializeAllExceptFilter(new TestClass("mytest"));
-		assertEquals("Serialization failed ",
+		assertEquals(
 				"{\"container\":{\"cf\":\"Config.xml\"},\"configurationName\":\"Config.xml\",\"name\":\"mytest\"}",
 				serJson);
 
@@ -223,7 +230,7 @@ public class DefaultServiceTest extends
 	@Test
 	public void testSerializeExcludeClass() throws Exception {
 		String serJson = sc.serializeAllExceptFilter(new TestClass("mytest"), String.class);
-		assertEquals("Serialization failed ", "{\"container\":{\"cf\":\"Config.xml\"}}", serJson);
+		assertEquals("{\"container\":{\"cf\":\"Config.xml\"}}", serJson, "Serialization failed ");
 		TestClass result2 = checkDeserialization(serJson, TestClass.class, TextClassMixin.class);
 		assertTrue(result2.getContainer() == null);
 	}
@@ -232,7 +239,7 @@ public class DefaultServiceTest extends
 	public void testSerializeExcludeClassAndField() throws Exception {
 		String serJson = ((Jackson2MapperService) sc).serializeAllExceptFilter(new TestClass("mytest"),
 				new Class[] { TestClass.class, String.class }, "container");
-		assertEquals("Serialization failed ", "{}", serJson);
+		assertEquals("{}", serJson);
 		TestClass result2 = checkDeserialization(serJson, TestClass.class, TextClassMixin.class);
 		assertTrue(result2.getContainer() == null);
 	}
@@ -242,11 +249,11 @@ public class DefaultServiceTest extends
 	public void testSerializeExcludeClassAndFields() throws Exception {
 		String serJson = ((Jackson2MapperService) sc).serializeAllExceptFilter(new TestClass("mytest"),
 				new Class[] { Map.class, String.class }, "configurationName", "name");
-		assertEquals("Serialization failed ", "{}", serJson);
+		assertEquals("{}", serJson);
 		checkDeserialization(serJson, TestClass.class, TextClassMixin.class);
 		String serJson2 = ((Jackson2MapperService) sc).serializeAllExceptFilter(new TestClass("mytest"), true,
 				"configurationName", "name");
-		assertEquals("Serialization failed ", "{}", serJson2);
+		assertEquals("{}", serJson2);
 		checkDeserialization(serJson2, TestClass.class, TextClassMixin.class);
 	}
 
@@ -260,7 +267,7 @@ public class DefaultServiceTest extends
 	public void testSerializeExcludeField() throws Exception {
 
 		String serJson = sc.serializeAllExceptFilter(new TestClass("mytest"), "configurationName");
-		assertEquals("Serialization failed ", "{\"container\":{\"cf\":\"Config.xml\"},\"name\":\"mytest\"}", serJson);
+		assertEquals("{\"container\":{\"cf\":\"Config.xml\"},\"name\":\"mytest\"}", serJson, "Serialization failed ");
 		sc.addAdapter("Mixin Adapter", TestClass.class, TextClassMixin.class);
 		// overwriting mixin with null: container is included
 		TestClass result2 = checkDeserialization(serJson, TestClass.class, null);
@@ -281,7 +288,8 @@ public class DefaultServiceTest extends
 		sc.setDateFormat(MMddyyyy);
 		String serJson = sc.ser(map);
 		logger.debug("serJson:" + serJson);
-		assertTrue("Serialize with Adapater failed ", serJson.matches("\\{\"date\":\"\\d\\d-\\d\\d-\\d{4}\"\\}"));
+		assertTrue(serJson.matches("\\{\"date\":\"\\d\\d-\\d\\d-\\d{4}\"\\}"),
+		           "Serialize with Adapater failed ");
 	}
 
 	/**
@@ -296,9 +304,10 @@ public class DefaultServiceTest extends
 			rectList.add(filteredRect);
 		}
 		String adapterSer = sc.ser(rectList);
-		assertEquals("collect ser",
+		assertEquals(
 				"[{'w':0,'h':0,'name':'rect0','size':0},{'w':1,'h':1,'name':'rect1','size':1},{'w':2,'h':2,'name':'rect2','size':4},{'w':3,'h':3,'name':'rect3','size':9},{'w':4,'h':4,'name':'rect4','size':16},{'w':5,'h':5,'name':'rect5','size':25},{'w':6,'h':6,'name':'rect6','size':36},{'w':7,'h':7,'name':'rect7','size':49},{'w':8,'h':8,'name':'rect8','size':64},{'w':9,'h':9,'name':'rect9','size':81}]",
-				adapterSer.replace('"', '\''));
+				adapterSer.replace('"', '\''),
+				"collect ser failed");
 	}
 
 	/**
@@ -312,400 +321,409 @@ public class DefaultServiceTest extends
 			intList.add(integer);
 		}
 		String result = sc.serializeOnlyFilter(intList, Integer.class);
-		assertEquals("Serialization of beans failed ", "[0,1,4,9,16,25,36,49,64,81]", result);
+		assertEquals("[0,1,4,9,16,25,36,49,64,81]", result, "Serialization of beans failed ");
 		// primitives could be deserialzed without type
 		Collection<Integer> result2 = checkDeserCollection(result, List.class, Integer.class);
-		assertTrue("expect at least one entry ", !result2.isEmpty());
-		assertTrue("result entry instance check", result2.iterator().next().getClass().isAssignableFrom(Integer.class));
+		assertTrue( !result2.isEmpty(), "expect at least one entry ");
+		assertTrue( result2.iterator().next().getClass().isAssignableFrom(Integer.class), "result entry instance check");
 	}
 
-	/**
-	 * @throws Exception generic exception
-	 */
-	@Test
-	public void testSerializeTypeAdapterForCollection() throws Exception {
-		TestSerializer tser = new TestSerializer();
-		TestDeserializer tdeSer = new TestDeserializer();
-		CustomModuleWrapper<List<Rectangle>> cmw = new CustomModuleWrapper<List<Rectangle>>(tser, tdeSer);
-		sc.addAdapter("Collection Adapter", ArrayList.class, cmw);
-		List<Rectangle> rectList = new ArrayList<Rectangle>();
-		for (int i = 0; i < 10; i++) {
-			Rectangle filteredRect = new Rectangle(i, i, "rect" + i);
-			rectList.add(filteredRect);
-		}
-		String adapterSer = sc.ser(rectList);
-		assertEquals("collect ser",
-				"{'rect0':0,'rect1':1,'rect2':4,'rect3':9,'rect4':16,'rect5':25,'rect6':36,'rect7':49,'rect8':64,'rect9':81}",
-				adapterSer.replace('"', '\''));
-		// can only deserialize with type deserializer, adapter already added above
-		List<Rectangle> result = sc.deSer(adapterSer, ArrayList.class);
-		assertTrue("result:" + result.size(), result.size() == 10);
-		int nr = 3; // new Random().nextInt(10);
-		assertTrue("result (" + nr + "):" + result.get(nr).getName(), result.get(nr).getName().equals("rect" + nr));
-	}
-
-	@Test
-	public void testMixinAdapter() throws Exception {
-		TestJsonSerializer tser = new TestJsonSerializer();
-		CustomModuleWrapper<TestClass> cmw = new CustomModuleWrapper<TestClass>(tser,
-				new TestDummyWrapperDeserializer(TestClass.class));
-		sc.addAdapter("Collection Adapter", TestClass.class, cmw);
-		String adapterSer = sc.ser(new TestClass("mytest"));
-		assertEquals("failed adapter serialization:", "{\"n\":\"mytest\",\"p\":\"Config.xml\",\"c\":[]}", adapterSer);
-	}
-
-	/**
-	 * @throws Exception generic exception
-	 */
-	@Test
-	public void testDeSerialize() throws Exception {
-		String serJson = sc.ser(new TestClass("mytest"));
-		Object deson = sc.deSer(serJson, TestClass.class);
-		assertEquals("Serialization failed ", TestClass.class, deson.getClass());
-	}
-
-	/**
-	 * @throws Exception generic exception
-	 */
-	@Test
-	public void testDeserializationCollection() throws Exception {
-		List<Rectangle> rectList = new ArrayList<Rectangle>();
-		for (int i = 0; i < 10; i++) {
-			Rectangle filteredRect = new Rectangle(i, i, "rect" + i);
-			rectList.add(filteredRect);
-		}
-		String serColl = sc.ser(rectList);
-		TypeReference<List<Rectangle>> typeRef = new TypeReference<List<Rectangle>>() {
-		};
-		Collection<Rectangle> resultList0 = sc.deSerCollection(serColl, typeRef, Rectangle.class);
-		// logger.debug("resultList0 class:" +resultList0.getClass());
-		for (int i = 0; i < 10; i++) {
-			assertEquals("deser reread size failed", (i * i), ((List<Rectangle>) resultList0).get(i).getSize());
-		}
-	}
-
-	/**
-	 * @throws Exception generic exception
-	 */
-	@Test
-	public void testDeserializationWithPlainListCollection() throws Exception {
-		List<Rectangle> rectList = new ArrayList<Rectangle>();
-		for (int i = 0; i < 10; i++) {
-			Rectangle filteredRect = new Rectangle(i, i, "rect" + i);
-			rectList.add(filteredRect);
-		}
-		String serColl = sc.ser(rectList);
-		Collection<Rectangle> resultList0 = sc.deSerCollection(serColl, new ArrayList(), Rectangle.class);
-		logger.debug("resultList0 class:" + resultList0.getClass());
-		for (int i = 0; i < 10; i++) {
-			assertEquals("deser reread size failed", (i * i), ((List<Rectangle>) resultList0).get(i).getSize());
-		}
-	}
-
-	/**
-	 * @throws Exception generic exception
-	 */
-	@Test
-	public void testDeserializationWithPlainList() throws Exception {
-		List<Rectangle> rectList = new ArrayList<Rectangle>();
-		for (int i = 0; i < 10; i++) {
-			Rectangle filteredRect = new Rectangle(i, i, "rect" + i);
-			rectList.add(filteredRect);
-		}
-		String serColl = sc.ser(rectList);
-		// Collection<Rectangle> resultList0 = sc.deSerCollection(serColl, List.class,
-		// Rectangle.class);
-		List<Rectangle> resultList0 = ((Jackson2MapperService) sc).deSerList(serColl, ArrayList.class, Rectangle.class);
-		logger.debug("resultList0 class:" + resultList0.getClass());
-		for (int i = 0; i < 10; i++) {
-			assertEquals("deser reread size failed", (i * i), resultList0.get(i).getSize());
-		}
-	}
-
-	/**
-	 * @throws Exception generic exception
-	 */
-	@Test
-	public void testDeserializationWithPlainMap() throws Exception {
-		Map<String, Rectangle> rectList = new HashMap<String, Rectangle>();
-		for (int i = 0; i < 10; i++) {
-			Rectangle filteredRect = new Rectangle(i, i, "rect" + i);
-			rectList.put("" + i, filteredRect);
-		}
-		String serColl = sc.ser(rectList);
-		Map<String, Rectangle> resultList0 = ((Jackson2MapperService) sc).deSerMap(serColl, Map.class, String.class,
-				Rectangle.class);
-		logger.debug("resultList0 class:" + resultList0.getClass());
-		for (int i = 0; i < 10; i++) {
-			assertEquals("deser reread size failed", (i * i), resultList0.get("" + i).getSize());
-		}
-	}
-
-	/**
-	 * @throws Exception generic exception
-	 */
-	@Test
-	public void testDeserializationTypeAdapterForCollection() throws Exception {
-		TestSerializer tser = new TestSerializer();
-		TestDeserializer tdeSer = new TestDeserializer();
-		CustomModuleWrapper<List<Rectangle>> cmw = new CustomModuleWrapper<List<Rectangle>>(tser, tdeSer);
-		sc.addAdapter("Collection Adapter", ArrayList.class, cmw);
-		List<Rectangle> rectList = new ArrayList<Rectangle>();
-		for (int i = 0; i < 10; i++) {
-			Rectangle filteredRect = new Rectangle(i, i, "rect" + i);
-			rectList.add(filteredRect);
-		}
-		String adapterSer = sc.ser(rectList);
-		ArrayList<Rectangle> resultList0 = sc.deSer(adapterSer, ArrayList.class);
-		for (int i = 0; i < 10; i++) {
-			assertEquals("deser reread size failed", (i * i), resultList0.get(i).getSize());
-		}
-	}
-
-	/**
-	 * @throws Exception generic exception
-	 */
-	@Test
-	public void testSerializeWithMixinAndFilter() throws Exception {
-		Bean filteredBean = new Bean();
-		filteredBean.setName("joe");
-		//
-		sc.addAdapter("M4RBeanMixin", Bean.class, BeanMixin.class);
-		// profession was already set to ignore, does not change
-		String bean = sc.serializeOnlyFilter(filteredBean, Bean.class, "profession");
-		assertEquals("Ser filtered Bean failed ", "{}", bean);
-	}
-
-	/**
-	 * @throws Exception generic exception
-	 */
-	@Test
-	public void testSerializeWithOnlyFilter() throws Exception {
-
-		String serJson = sc.serializeOnlyFilter(new TestClass("mytest"), "configurationName");
-		assertEquals("Serialization failed ", "{\"configurationName\":\"Config.xml\"}", serJson);
-
-		Rectangle filteredRectangle = new Rectangle(5, 10);
-		filteredRectangle.setName("jim");
-		String rectangle = sc.serializeOnlyFilter(filteredRectangle, "w");
-		assertEquals("Ser filtered Rectangle failed ", "{\"w\":5}", rectangle);
-		rectangle = sc.serializeOnlyFilter(filteredRectangle, true, "w");
-		assertEquals("Ser filtered Rectangle failed ", "{\"w\":5}", rectangle);
-	}
-
-	/**
-	 * @throws Exception generic exception
-	 */
-	@Test
-	public void testSerializeAllExceptANDWithOnlyFilter2() throws Exception {
-
-		String serJson = sc.serializeAllExceptFilter(new TestClass("mytest"), "configurationName");
-		assertEquals("Serialization failed ", "{\"container\":{\"cf\":\"Config.xml\"},\"name\":\"mytest\"}", serJson);
-
-		serJson = sc.serializeOnlyFilter(new TestClass("mytest"), "configurationName");
-		assertEquals("Serialization failed ", "{\"configurationName\":\"Config.xml\"}", serJson);
-
-		Rectangle filteredRectangle = new Rectangle(5, 10);
-		filteredRectangle.setName("jim");
-		String rectangle = sc.serializeOnlyFilter(filteredRectangle, "w");
-		assertEquals("Ser filtered Rectangle failed ", "{\"w\":5}", rectangle);
-	}
-
-	/**
-	 * @throws Exception generic exception
-	 */
-	@Test
-	public void testSerializeBeanWithOnlyFilter() throws Exception {
-		Bean bean = new BeanChild();
-		bean.setAge(1);
-		bean.setName("bean1");
-		assertEquals("{\"name\":\"bean1\"}", sc.serializeOnlyFilter(bean, true, "name"));
-		assertEquals("{\"name\":\"bean1\"}", sc.serializeOnlyFilter(bean, Bean.class, true, "name")); // parent filter
-		assertEquals("{\"name\":\"bean1\"}", sc.serializeOnlyFilter(bean, BeanChild.class, true, "name"));
-		assertEquals("{\"name\":\"bean1\"}", sc.serializeOnlyFilter(bean, Object.class, true, "name"));
-		bean = new Bean();
-		bean.setAge(0);
-		bean.setName("bean0");
-		assertEquals("{\"name\":\"bean0\"}", sc.serializeOnlyFilter(bean, true, "name"));
-		assertEquals("{\"name\":\"bean0\"}", sc.serializeOnlyFilter(bean, Bean.class, true, "name"));
-		assertEquals("{\"name\":\"bean0\"}", sc.serializeOnlyFilter(bean, BeanChild.class, true, "name"));// child
-																											// filter
-		assertEquals("{\"name\":\"bean0\"}", sc.serializeOnlyFilter(bean, Object.class, true, "name"));
-	}
-
-	/**
-	 * @throws Exception generic exception
-	 */
-	@Test
-	public void testSerializeCollectionWithOnlyFilterAndParentClass() throws Exception {
-		List<BeanChild> beanList = new ArrayList<BeanChild>();
-		for (int i = 0; i < 3; i++) {
-			BeanChild bean = new BeanChild();
-			bean.setAge(i);
-			bean.setName("bean" + i);
-			beanList.add(bean);
-		}
-		String jsonResult = sc.serializeOnlyFilter(beanList, Bean.class, true, "name");
-		assertEquals("[{\"name\":\"bean0\"},{\"name\":\"bean1\"},{\"name\":\"bean2\"}]", jsonResult);
-		// assertEquals("[{\"type\":\"\"},{\"type\":\"\"},{\"type\":\"\"}]",sc.serializeOnlyFilter(beanList,
-		// BeanChild.class, true,"type"));
-
-		Collection<BeanChild> result2 = checkDeserCollection(jsonResult, List.class, BeanChild.class);
-		assertTrue("expect at least one entry ", !result2.isEmpty());
-		assertTrue("result entry instance check",
-				result2.iterator().next().getClass().isAssignableFrom(BeanChild.class));
-	}
-
-	/**
-	 * @throws Exception generic exception
-	 */
-	@Test
-	public void testSerializeCollectionWithOnlyFilterAndExactClass() throws Exception {
-		List<Bean> beanList = new ArrayList<Bean>();
-		for (int i = 0; i < 3; i++) {
-			Bean bean = new BeanChild();
-			bean.setAge(i);
-			bean.setName("bean" + i);
-			beanList.add(bean);
-		}
-		String jsonResult = sc.serializeOnlyFilter(beanList, BeanChild.class, true, "name");
-		assertEquals("[{\"name\":\"bean0\"},{\"name\":\"bean1\"},{\"name\":\"bean2\"}]", jsonResult);
-		// assertEquals("[{\"type\":\"\"},{\"type\":\"\"},{\"type\":\"\"}]",sc.serializeOnlyFilter(beanList,
-		// BeanChild.class, true,"type"));
-		Collection<Bean> result2 = checkDeserCollection(jsonResult, List.class, Bean.class);
-		assertTrue("expect at least one entry ", !result2.isEmpty());
-		assertTrue("result entry instance check", result2.iterator().next().getClass().isAssignableFrom(Bean.class));
-	}
-
-	/**
-	 * @throws Exception generic exception
-	 */
-	@Test
-	public void testSerializeCollectionWithOnlyFilterWithChildClass() throws Exception {
-		List<Bean> beanList = new ArrayList<Bean>();
-		for (int i = 0; i < 3; i++) {
-			Bean bean = new Bean();
-			bean.setAge(i);
-			bean.setName("bean" + i);
-			beanList.add(bean);
-		}
-		String jsonResult = sc.serializeOnlyFilter(beanList, BeanChild.class, true, "name");
-		assertEquals("[{\"name\":\"bean0\"},{\"name\":\"bean1\"},{\"name\":\"bean2\"}]", jsonResult);
-		// assertEquals("[{\"type\":\"\"},{\"type\":\"\"},{\"type\":\"\"}]",sc.serializeOnlyFilter(beanList,
-		// BeanChild.class, true,"type"));
-		Collection<Bean> result2 = checkDeserCollection(jsonResult, List.class, Bean.class);
-		assertTrue("expect at least one entry ", !result2.isEmpty());
-		assertTrue("result entry instance check", result2.iterator().next().getClass().isAssignableFrom(Bean.class));
-	}
-
-	/**
-	 * @throws Exception generic exception
-	 */
-	@Test
-	public void testSerializeCollectionWithOnlyFilterAndType() throws Exception {
-
-		List<TypedRectangle> rectList = new ArrayList<TypedRectangle>();
-		for (int i = 0; i < 2; i++) {
-			TypedRectangle filteredRect = new TypedRectangle(i, i, "rect" + i);
-			rectList.add(filteredRect);
-		}
-		Class<?> clazz = Class.forName("org.apache.fulcrum.json.jackson.mixins.TypedRectangle");
-		// no type cft. https://github.com/FasterXML/jackson-databind/issues/303 !!
-		String jsonResult = sc.serializeOnlyFilter(rectList, clazz, true, "w");
-		assertEquals("[{\"w\":0},{\"w\":1}]", jsonResult);
-		// could not deserialize easily with missing property type
-	}
-
-	/**
-	 * @throws Exception generic exception
-	 */
-	@Test
-	public void testSerializeCollectionWithOnlyFilterAndMixin() throws Exception {
-
-		List<TypedRectangle> rectList = new ArrayList<TypedRectangle>();
-		for (int i = 0; i < 2; i++) {
-			TypedRectangle filteredRect = new TypedRectangle(i, i, "rect" + i);
-			rectList.add(filteredRect);
-		}
-		Class<?> clazz = Class.forName("org.apache.fulcrum.json.jackson.mixins.TypedRectangle");
-		sc.addAdapter("Collection Adapter", Object.class, TypedRectangle.Mixins.class);
-		assertEquals(
-				"[\"java.util.ArrayList\",[{\"type\":\"org.apache.fulcrum.json.jackson.mixins.TypedRectangle\",\"w\":0},{\"type\":\"org.apache.fulcrum.json.jackson.mixins.TypedRectangle\",\"w\":1}]]",
-				sc.serializeOnlyFilter(rectList, clazz, true, "w"));
-	}
-
-	/**
-	 * @throws Exception generic exception
-	 */
-	@Test
-	public void testSerializeCollectionWithTypedReference() throws Exception {
-
-		List<TypedRectangle> rectList = new ArrayList<TypedRectangle>();
-		for (int i = 0; i < 2; i++) {
-			TypedRectangle filteredRect = new TypedRectangle(i, i, "rect" + i);
-			rectList.add(filteredRect);
-		}
-		TypeReference<List<TypedRectangle>> typeRef = new TypeReference<List<TypedRectangle>>() {
-		};
-		String jsonResult = ((Jackson2MapperService) sc).serCollectionWithTypeReference(rectList, typeRef, false);
-		logger.debug("aa:" + jsonResult);
-		// could deserialize with type information
-		Collection<TypedRectangle> result2 = checkDeserCollection(jsonResult, List.class, TypedRectangle.class);
-		assertTrue("expect at least one entry ", !result2.isEmpty());
-		assertTrue("result entry instance check",
-				result2.iterator().next().getClass().isAssignableFrom(TypedRectangle.class));
-
-	}
-
-	@Test
-	// jackson does not escape anything, except double quotes and backslash,
-	// additional characters could be provided
-	// by activationg escapeCharsGlobal xml characters are added
-	public void testSerializeHTMLEscape() throws Exception {
-		Rectangle filteredRect = new Rectangle(2, 3,
-				"rectÜber<strong>StockundStein &iuml;</strong></script><script>alert('xss')</script>" + 0);
-		String adapterSer = sc.ser(filteredRect);
-		logger.debug("Escaped serialized string:" + adapterSer);
-		assertEquals(
-				"escaped html entities ser expected, iei <,>,&,\\ escaped (requires escapeCharsGlobal in json component configuration",
-				"{'w':2,'h':3,'name':'rectÜber\\u003Cstrong\\u003EStockundStein \\u0026iuml;\\u003C/strong\\u003E\\u003C/script\\u003E\\u003Cscript\\u003Ealert(\\u0027xss\\u0027)\\u003C/script\\u003E0','size':6}",
-				adapterSer.replace('"', '\''));
-		// you could set your own escapes here in class esc extending from
-		// CharacterEscapes.
-		// ((Jackson2MapperService)sc).getMapper().getFactory().setCharacterEscapes(esc
-		// ) );
-	}
-
-	/**
-	 * checks if string serJson is deserializable to class target with adapter mixin
-	 * and returns result.
-	 * 
-	 * @param serJson JSON String to be tested
-	 * @param target  class to be expected
-	 * @param mixin   adapter set
-	 * @return the resulting instance
-	 * @throws Exception
-	 */
-	private <T> T checkDeserialization(String serJson, Class<T> target, Class mixin) throws Exception {
-		sc.addAdapter("Mixin Adapter", target, mixin);
-		T result = sc.deSer(serJson, target);
-		assertTrue("Result Instance Check", target.isAssignableFrom(result.getClass()));
-		return result;
-	}
-
-	private <U> Collection<U> checkDeserCollection(String serJson, Class<? extends Collection> collClass,
-			Class<U> entryClass) throws Exception {
-		Collection<U> result = ((Jackson2MapperService) sc).deSerCollectionWithType(serJson, collClass, entryClass);
-		// System.out.println("result:"+ result + " is of type: "+ result.getClass() +
-		// "and assignable from "+ collClass);
-		assertTrue("Result Instance Check failed for result class " + result.getClass() + " and target class: "
-				+ collClass, collClass.isAssignableFrom(result.getClass()));
-		return result;
-	}
+    /**
+     * @throws Exception generic exception
+     */
+    @Test
+    public void testSerializeTypeAdapterForCollection() throws Exception {
+        TestSerializer tser = new TestSerializer();
+        TestDeserializer tdeSer = new TestDeserializer();
+        CustomModuleWrapper<List<Rectangle>> cmw = new CustomModuleWrapper<List<Rectangle>>(tser, tdeSer);
+        sc.addAdapter("Collection Adapter", ArrayList.class, cmw);
+        List<Rectangle> rectList = new ArrayList<Rectangle>();
+        for (int i = 0; i < 10; i++) {
+            Rectangle filteredRect = new Rectangle(i, i, "rect" + i);
+            rectList.add(filteredRect);
+        }
+        String adapterSer = sc.ser(rectList);
+        assertEquals(
+                "{'rect0':0,'rect1':1,'rect2':4,'rect3':9,'rect4':16,'rect5':25,'rect6':36,'rect7':49,'rect8':64,'rect9':81}",
+                adapterSer.replace('"', '\''));
+        // can only deserialize with type deserializer, adapter already added above
+        List<Rectangle> result = sc.deSer(adapterSer, ArrayList.class);
+        assertTrue( result.size() == 10, " expected result: 10");
+        int nr = 3; // new Random().nextInt(10);
+        assertTrue(result.get(nr).getName().equals("rect" + nr),
+                   "result (" + nr + ") !=:" + result.get(nr).getName());
+    }
+
+    @Test
+    public void testMixinAdapter() throws Exception {
+        TestJsonSerializer tser = new TestJsonSerializer();
+        CustomModuleWrapper<TestClass> cmw = new CustomModuleWrapper<TestClass>(tser,
+                new TestDummyWrapperDeserializer(TestClass.class));
+        sc.addAdapter("Collection Adapter", TestClass.class, cmw);
+        String adapterSer = sc.ser(new TestClass("mytest"));
+        assertEquals("{\"n\":\"mytest\",\"p\":\"Config.xml\",\"c\":[]}", adapterSer,
+                     "failed adapter serialization:");
+    }
+
+    /**
+     * @throws Exception generic exception
+     */
+    @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());
+    }
+
+    /**
+     * @throws Exception generic exception
+     */
+    @Test
+    public void testDeserializationCollection() throws Exception {
+        List<Rectangle> rectList = new ArrayList<Rectangle>();
+        for (int i = 0; i < 10; i++) {
+            Rectangle filteredRect = new Rectangle(i, i, "rect" + i);
+            rectList.add(filteredRect);
+        }
+        String serColl = sc.ser(rectList);
+        TypeReference<List<Rectangle>> typeRef = new TypeReference<List<Rectangle>>() {
+        };
+        Collection<Rectangle> resultList0 = sc.deSerCollection(serColl, typeRef, Rectangle.class);
+        // logger.debug("resultList0 class:" +resultList0.getClass());
+        for (int i = 0; i < 10; i++) {
+            assertEquals((i * i), ((List<Rectangle>) resultList0).get(i).getSize(),
+                         "deser reread size failed");
+        }
+    }
+
+    /**
+     * @throws Exception generic exception
+     */
+    @Test
+    public void testDeserializationWithPlainListCollection() throws Exception {
+        List<Rectangle> rectList = new ArrayList<Rectangle>();
+        for (int i = 0; i < 10; i++) {
+            Rectangle filteredRect = new Rectangle(i, i, "rect" + i);
+            rectList.add(filteredRect);
+        }
+        String serColl = sc.ser(rectList);
+        Collection<Rectangle> resultList0 = sc.deSerCollection(serColl, new ArrayList(), Rectangle.class);
+        logger.debug("resultList0 class:" + resultList0.getClass());
+        for (int i = 0; i < 10; i++) {
+            assertEquals( (i * i), ((List<Rectangle>) resultList0).get(i).getSize(),
+                          "deser reread size failed");
+        }
+    }
+
+    /**
+     * @throws Exception generic exception
+     */
+    @Test
+    public void testDeserializationWithPlainList() throws Exception {
+        List<Rectangle> rectList = new ArrayList<Rectangle>();
+        for (int i = 0; i < 10; i++) {
+            Rectangle filteredRect = new Rectangle(i, i, "rect" + i);
+            rectList.add(filteredRect);
+        }
+        String serColl = sc.ser(rectList);
+        // Collection<Rectangle> resultList0 = sc.deSerCollection(serColl, List.class,
+        // Rectangle.class);
+        List<Rectangle> resultList0 = ((Jackson2MapperService) sc).deSerList(serColl, ArrayList.class, Rectangle.class);
+        logger.debug("resultList0 class:" + resultList0.getClass());
+        for (int i = 0; i < 10; i++) {
+            assertEquals( (i * i), resultList0.get(i).getSize(),
+                 "deser reread size failed");
+        }
+    }
+
+    /**
+     * @throws Exception generic exception
+     */
+    @Test
+    public void testDeserializationWithPlainMap() throws Exception {
+        Map<String, Rectangle> rectList = new HashMap<String, Rectangle>();
+        for (int i = 0; i < 10; i++) {
+            Rectangle filteredRect = new Rectangle(i, i, "rect" + i);
+            rectList.put("" + i, filteredRect);
+        }
+        String serColl = sc.ser(rectList);
+        Map<String, Rectangle> resultList0 = ((Jackson2MapperService) sc).deSerMap(serColl, Map.class, String.class,
+                Rectangle.class);
+        logger.debug("resultList0 class:" + resultList0.getClass());
+        for (int i = 0; i < 10; i++) {
+            assertEquals( (i * i), resultList0.get("" + i).getSize(),
+                          "deser reread size failed");
+        }
+    }
+
+    /**
+     * @throws Exception generic exception
+     */
+    @Test
+    public void testDeserializationTypeAdapterForCollection() throws Exception {
+        TestSerializer tser = new TestSerializer();
+        TestDeserializer tdeSer = new TestDeserializer();
+        CustomModuleWrapper<List<Rectangle>> cmw = new CustomModuleWrapper<List<Rectangle>>(tser, tdeSer);
+        sc.addAdapter("Collection Adapter", ArrayList.class, cmw);
+        List<Rectangle> rectList = new ArrayList<Rectangle>();
+        for (int i = 0; i < 10; i++) {
+            Rectangle filteredRect = new Rectangle(i, i, "rect" + i);
+            rectList.add(filteredRect);
+        }
+        String adapterSer = sc.ser(rectList);
+        ArrayList<Rectangle> resultList0 = sc.deSer(adapterSer, ArrayList.class);
+        for (int i = 0; i < 10; i++) {
+            assertEquals( (i * i), resultList0.get(i).getSize(),
+                          "deser reread size failed");
+        }
+    }
+
+    /**
+     * @throws Exception generic exception
+     */
+    @Test
+    public void testSerializeWithMixinAndFilter() throws Exception {
+        Bean filteredBean = new Bean();
+        filteredBean.setName("joe");
+        //
+        sc.addAdapter("M4RBeanMixin", Bean.class, BeanMixin.class);
+        // profession was already set to ignore, does not change
+        String bean = sc.serializeOnlyFilter(filteredBean, Bean.class, "profession");
+        assertEquals("{}", bean);
+    }
+
+    /**
+     * @throws Exception generic exception
+     */
+    @Test
+    public void testSerializeWithOnlyFilter() throws Exception {
+
+        String serJson = sc.serializeOnlyFilter(new TestClass("mytest"), "configurationName");
+        assertEquals("{\"configurationName\":\"Config.xml\"}", serJson, "Serialization failed ");
+
+        Rectangle filteredRectangle = new Rectangle(5, 10);
+        filteredRectangle.setName("jim");
+        String rectangle = sc.serializeOnlyFilter(filteredRectangle, "w");
+        assertEquals( "{\"w\":5}", rectangle, "Ser filtered Rectangle failed ");
+        rectangle = sc.serializeOnlyFilter(filteredRectangle, true, "w");
+        assertEquals( "{\"w\":5}", rectangle, "Ser filtered Rectangle failed ");
+    }
+
+    /**
+     * @throws Exception generic exception
+     */
+    @Test
+    public void testSerializeAllExceptANDWithOnlyFilter2() throws Exception {
+
+        String serJson = sc.serializeAllExceptFilter(new TestClass("mytest"), "configurationName");
+        assertEquals( "{\"container\":{\"cf\":\"Config.xml\"},\"name\":\"mytest\"}", serJson);
+
+        serJson = sc.serializeOnlyFilter(new TestClass("mytest"), "configurationName");
+        assertEquals( "{\"configurationName\":\"Config.xml\"}", serJson);
+
+        Rectangle filteredRectangle = new Rectangle(5, 10);
+        filteredRectangle.setName("jim");
+        String rectangle = sc.serializeOnlyFilter(filteredRectangle, "w");
+        assertEquals( "{\"w\":5}", rectangle, "Ser filtered Rectangle failed ");
+    }
+
+    /**
+     * @throws Exception generic exception
+     */
+    @Test
+    public void testSerializeBeanWithOnlyFilter() throws Exception {
+        Bean bean = new BeanChild();
+        bean.setAge(1);
+        bean.setName("bean1");
+        assertEquals("{\"name\":\"bean1\"}", sc.serializeOnlyFilter(bean, true, "name"));
+        assertEquals("{\"name\":\"bean1\"}", sc.serializeOnlyFilter(bean, Bean.class, true, "name")); // parent filter
+        assertEquals("{\"name\":\"bean1\"}", sc.serializeOnlyFilter(bean, BeanChild.class, true, "name"));
+        assertEquals("{\"name\":\"bean1\"}", sc.serializeOnlyFilter(bean, Object.class, true, "name"));
+        bean = new Bean();
+        bean.setAge(0);
+        bean.setName("bean0");
+        assertEquals("{\"name\":\"bean0\"}", sc.serializeOnlyFilter(bean, true, "name"));
+        assertEquals("{\"name\":\"bean0\"}", sc.serializeOnlyFilter(bean, Bean.class, true, "name"));
+        assertEquals("{\"name\":\"bean0\"}", sc.serializeOnlyFilter(bean, BeanChild.class, true, "name"));// child
+                                                                                                            // filter
+        assertEquals("{\"name\":\"bean0\"}", sc.serializeOnlyFilter(bean, Object.class, true, "name"));
+    }
+
+    /**
+     * @throws Exception generic exception
+     */
+    @Test
+    public void testSerializeCollectionWithOnlyFilterAndParentClass() throws Exception {
+        List<BeanChild> beanList = new ArrayList<BeanChild>();
+        for (int i = 0; i < 3; i++) {
+            BeanChild bean = new BeanChild();
+            bean.setAge(i);
+            bean.setName("bean" + i);
+            beanList.add(bean);
+        }
+        String jsonResult = sc.serializeOnlyFilter(beanList, Bean.class, true, "name");
+        assertEquals("[{\"name\":\"bean0\"},{\"name\":\"bean1\"},{\"name\":\"bean2\"}]", jsonResult);
+        // assertEquals("[{\"type\":\"\"},{\"type\":\"\"},{\"type\":\"\"}]",sc.serializeOnlyFilter(beanList,
+        // BeanChild.class, true,"type"));
+
+        Collection<BeanChild> result2 = checkDeserCollection(jsonResult, List.class, BeanChild.class);
+        assertTrue( !result2.isEmpty());
+        assertTrue(
+                result2.iterator().next().getClass().isAssignableFrom(BeanChild.class),
+                "result entry instance check");
+    }
+
+    /**
+     * @throws Exception generic exception
+     */
+    @Test
+    public void testSerializeCollectionWithOnlyFilterAndExactClass() throws Exception {
+        List<Bean> beanList = new ArrayList<Bean>();
+        for (int i = 0; i < 3; i++) {
+            Bean bean = new BeanChild();
+            bean.setAge(i);
+            bean.setName("bean" + i);
+            beanList.add(bean);
+        }
+        String jsonResult = sc.serializeOnlyFilter(beanList, BeanChild.class, true, "name");
+        assertEquals("[{\"name\":\"bean0\"},{\"name\":\"bean1\"},{\"name\":\"bean2\"}]", jsonResult);
+        // assertEquals("[{\"type\":\"\"},{\"type\":\"\"},{\"type\":\"\"}]",sc.serializeOnlyFilter(beanList,
+        // BeanChild.class, true,"type"));
+        Collection<Bean> result2 = checkDeserCollection(jsonResult, List.class, Bean.class);
+        assertTrue( !result2.isEmpty(), "expect at least one entry ");
+        assertTrue( result2.iterator().next().getClass().isAssignableFrom(Bean.class), "result entry instance check");
+    }
+
+    /**
+     * @throws Exception generic exception
+     */
+    @Test
+    public void testSerializeCollectionWithOnlyFilterWithChildClass() throws Exception {
+        List<Bean> beanList = new ArrayList<Bean>();
+        for (int i = 0; i < 3; i++) {
+            Bean bean = new Bean();
+            bean.setAge(i);
+            bean.setName("bean" + i);
+            beanList.add(bean);
+        }
+        String jsonResult = sc.serializeOnlyFilter(beanList, BeanChild.class, true, "name");
+        assertEquals("[{\"name\":\"bean0\"},{\"name\":\"bean1\"},{\"name\":\"bean2\"}]", jsonResult);
+        // assertEquals("[{\"type\":\"\"},{\"type\":\"\"},{\"type\":\"\"}]",sc.serializeOnlyFilter(beanList,
+        // BeanChild.class, true,"type"));
+        Collection<Bean> result2 = checkDeserCollection(jsonResult, List.class, Bean.class);
+        assertTrue( !result2.isEmpty(), "expect at least one entry ");
+        assertTrue( result2.iterator().next().getClass().isAssignableFrom(Bean.class), "result entry instance check");
+    }
+
+    /**
+     * @throws Exception generic exception
+     */
+    @Test
+    public void testSerializeCollectionWithOnlyFilterAndType() throws Exception {
+
+        List<TypedRectangle> rectList = new ArrayList<TypedRectangle>();
+        for (int i = 0; i < 2; i++) {
+            TypedRectangle filteredRect = new TypedRectangle(i, i, "rect" + i);
+            rectList.add(filteredRect);
+        }
+        Class<?> clazz = Class.forName("org.apache.fulcrum.json.jackson.mixins.TypedRectangle");
+        // no type cft. https://github.com/FasterXML/jackson-databind/issues/303 !!
+        String jsonResult = sc.serializeOnlyFilter(rectList, clazz, true, "w");
+        assertEquals("[{\"w\":0},{\"w\":1}]", jsonResult);
+        // could not deserialize easily with missing property type
+    }
+
+    /**
+     * @throws Exception generic exception
+     */
+    @Test
+    public void testSerializeCollectionWithOnlyFilterAndMixin() throws Exception {
+
+        List<TypedRectangle> rectList = new ArrayList<TypedRectangle>();
+        for (int i = 0; i < 2; i++) {
+            TypedRectangle filteredRect = new TypedRectangle(i, i, "rect" + i);
+            rectList.add(filteredRect);
+        }
+        Class<?> clazz = Class.forName("org.apache.fulcrum.json.jackson.mixins.TypedRectangle");
+        sc.addAdapter("Collection Adapter", Object.class, TypedRectangle.Mixins.class);
+        assertEquals(
+                "[\"java.util.ArrayList\",[{\"type\":\"org.apache.fulcrum.json.jackson.mixins.TypedRectangle\",\"w\":0},{\"type\":\"org.apache.fulcrum.json.jackson.mixins.TypedRectangle\",\"w\":1}]]",
+                sc.serializeOnlyFilter(rectList, clazz, true, "w"));
+    }
+
+    /**
+     * @throws Exception generic exception
+     */
+    @Test
+    public void testSerializeCollectionWithTypedReference() throws Exception {
+
+        List<TypedRectangle> rectList = new ArrayList<TypedRectangle>();
+        for (int i = 0; i < 2; i++) {
+            TypedRectangle filteredRect = new TypedRectangle(i, i, "rect" + i);
+            rectList.add(filteredRect);
+        }
+        TypeReference<List<TypedRectangle>> typeRef = new TypeReference<List<TypedRectangle>>() {
+        };
+        String jsonResult = ((Jackson2MapperService) sc).serCollectionWithTypeReference(rectList, typeRef, false);
+        logger.debug("aa:" + jsonResult);
+        // could deserialize with type information
+        Collection<TypedRectangle> result2 = checkDeserCollection(jsonResult, List.class, TypedRectangle.class);
+        assertTrue( !result2.isEmpty(), "expect at least one entry ");
+        assertTrue(
+                result2.iterator().next().getClass().isAssignableFrom(TypedRectangle.class),
+                "result entry instance check");
+
+    }
+
+    @Test
+    // jackson does not escape anything, except double quotes and backslash,
+    // additional characters could be provided
+    // by activationg escapeCharsGlobal xml characters are added
+    public void testSerializeHTMLEscape() throws Exception {
+        Rectangle filteredRect = new Rectangle(2, 3,
+                "rectÜber<strong>StockundStein &iuml;</strong></script><script>alert('xss')</script>" + 0);
+        String adapterSer = sc.ser(filteredRect);
+        logger.debug("Escaped serialized string:" + adapterSer);
+        assertEquals(
+                "{'w':2,'h':3,'name':'rectÜber\\u003Cstrong\\u003EStockundStein \\u0026iuml;\\u003C/strong\\u003E\\u003C/script\\u003E\\u003Cscript\\u003Ealert(\\u0027xss\\u0027)\\u003C/script\\u003E0','size':6}",
+                adapterSer.replace('"', '\''),
+                "escaped html entities ser expected, iei <,>,&,\\ escaped (requires escapeCharsGlobal in json component configuration");
+        // you could set your own escapes here in class esc extending from
+        // CharacterEscapes.
+        // ((Jackson2MapperService)sc).getMapper().getFactory().setCharacterEscapes(esc
+        // ) );
+    }
+
+    /**
+     * checks if string serJson is deserializable to class target with adapter mixin
+     * and returns result.
+     * 
+     * @param serJson JSON String to be tested
+     * @param target  class to be expected
+     * @param mixin   adapter set
+     * @return the resulting instance
+     * @throws Exception
+     */
+    private <T> T checkDeserialization(String serJson, Class<T> target, Class mixin) throws Exception {
+        sc.addAdapter("Mixin Adapter", target, mixin);
+        T result = sc.deSer(serJson, target);
+        assertTrue( target.isAssignableFrom(result.getClass()), "Result Instance Check");
+        return result;
+    }
+
+    private <U> Collection<U> checkDeserCollection(String serJson, Class<? extends Collection> collClass,
+            Class<U> entryClass) throws Exception {
+        Collection<U> result = ((Jackson2MapperService) sc).deSerCollectionWithType(serJson, collClass, entryClass);
+        // System.out.println("result:"+ result + " is of type: "+ result.getClass() +
+        // "and assignable from "+ collClass);
+        assertTrue(collClass.isAssignableFrom(result.getClass()),
+                "Result Instance Check failed for result class " + result.getClass() + " and target class: " + collClass);
+        return result;
+    }
 }
 
 abstract class TextClassMixin {
 
-	@JsonIgnore
-	abstract Map<String, Object> getContainer();
+    @JsonIgnore
+    abstract Map<String, Object> getContainer();
 }

Modified: turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/Jackson2MapperTest.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/Jackson2MapperTest.java?rev=1847822&r1=1847821&r2=1847822&view=diff
==============================================================================
--- turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/Jackson2MapperTest.java (original)
+++ turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/Jackson2MapperTest.java Fri Nov 30 13:40:20 2018
@@ -18,36 +18,41 @@ package org.apache.fulcrum.json.jackson;
  * specific language governing permissions and limitations
  * under the License.
  */
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 import org.apache.avalon.framework.logger.ConsoleLogger;
+import org.apache.avalon.framework.logger.Log4JLogger;
 import org.apache.avalon.framework.logger.Logger;
 import org.apache.fulcrum.json.JsonService;
 import org.apache.fulcrum.json.jackson.example.Bean;
 import org.apache.fulcrum.json.jackson.example.Rectangle;
-import org.apache.fulcrum.testcontainer.BaseUnit4Test;
-import org.junit.Before;
-import org.junit.Test;
-
+import org.apache.fulcrum.testcontainer.BaseUnit5Test;
+import org.apache.log4j.LogManager;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
+import org.junit.platform.runner.JUnitPlatform;
+import org.junit.runner.RunWith;
 
 
 /**
  * More Jackson2 JSON Test
  * 
  * Test with clearing mixins
- * 
+
  * @author gk
  * @version $Id$
  */
-public class Jackson2MapperTest extends BaseUnit4Test {
+@RunWith(JUnitPlatform.class)
+public class Jackson2MapperTest extends BaseUnit5Test {
     
     private JsonService sc = null;
     Logger logger;
 
-    @Before
+    @BeforeEach
     public void setUp() throws Exception {
         sc = (JsonService) this.lookup(JsonService.ROLE);
-        logger = new ConsoleLogger(ConsoleLogger.LEVEL_DEBUG);
+        logger = new Log4JLogger(LogManager.getLogger(getClass().getName()) );
         // clear 
         ((Jackson2MapperService)sc).setMixins(null,null);
         logger.debug( "cleared mixins");
@@ -59,14 +64,15 @@ public class Jackson2MapperTest extends
         bean.setName("joe");
         bean.setAge(12);
         String filteredBean  = sc.serializeOnlyFilter(bean, Bean.class, "name");
-        assertEquals("Ser filtered Bean failed ", "{\"name\":\"joe\"}", filteredBean);
+        assertEquals( "{\"name\":\"joe\"}", filteredBean, "Ser filtered Bean failed ");
 
         Rectangle rectangle = new Rectangle(5, 10);
         rectangle.setName("jim");
         String filteredRectangle  = sc.serializeOnlyFilter(rectangle,
                 Rectangle.class, "w", "name");
-        assertEquals("Ser filtered Rectangle failed ",
-                "{\"w\":5,\"name\":\"jim\"}", filteredRectangle);
+        assertEquals(
+                "{\"w\":5,\"name\":\"jim\"}", filteredRectangle,
+                "Ser filtered Rectangle failed ");
     }
     
     // analog seralizeAllExcept 
@@ -80,29 +86,32 @@ public class Jackson2MapperTest extends
         rectangle.setName("jim");
         
         String filteredBean  = sc.serializeOnlyFilter(bean, Bean.class, "name");
-        assertEquals("global Ser filtered Bean failed ", "{\"name\":\"joe\"}", filteredBean);
+        assertEquals("{\"name\":\"joe\"}", filteredBean, "global Ser filtered Bean failed ");
 
         String filteredRectangle  = sc.serializeOnlyFilter(rectangle,
                 Rectangle.class, "w", "name");
-        assertEquals("global Ser filtered Rectangle failed ",
-                "{\"w\":5,\"name\":\"jim\"}", filteredRectangle);
+        assertEquals(
+                "{\"w\":5,\"name\":\"jim\"}", filteredRectangle,
+                "global Ser filtered Rectangle failed ");
         
         filteredBean  = ((Jackson2MapperService)sc).serializeOnlyFilter(bean, new Class[]{ Bean.class}, true, "age");
-        assertEquals("Another Global Ser filtered Bean failed ", "{\"age\":12}", filteredBean);
+        assertEquals("{\"age\":12}", filteredBean, "Another Global Ser filtered Bean failed ");
 
         filteredRectangle  = ((Jackson2MapperService)sc).serializeOnlyFilter( 
                rectangle, new Class[] { Rectangle.class}, true, "h", "name");
-        assertEquals("Local Ser filtered Rectangle failed ",
-                "{\"h\":10,\"name\":\"jim\"}", filteredRectangle);
+        assertEquals(
+                "{\"h\":10,\"name\":\"jim\"}", filteredRectangle,
+                "Local Ser filtered Rectangle failed ");
         
         // if refresh would be false, this would fail
         filteredBean  = sc.serializeOnlyFilter(bean, Bean.class, "name");
-        assertEquals("global Ser filtered Bean failed ", "{\"name\":\"joe\"}", filteredBean);
+        assertEquals("{\"name\":\"joe\"}", filteredBean,
+                     "global Ser filtered Bean failed ");
 
         filteredRectangle  = sc.serializeOnlyFilter(rectangle,
                 Rectangle.class, "w", "name");
-        assertEquals("global Ser filtered Rectangle failed ",
-                "{\"w\":5,\"name\":\"jim\"}", filteredRectangle);
+        assertEquals(
+                "{\"w\":5,\"name\":\"jim\"}", filteredRectangle, "global Ser filtered Rectangle failed ");
     }
 
 }

Modified: turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/JacksonMapperEnabledDefaultTypingTest.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/JacksonMapperEnabledDefaultTypingTest.java?rev=1847822&r1=1847821&r2=1847822&view=diff
==============================================================================
--- turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/JacksonMapperEnabledDefaultTypingTest.java (original)
+++ turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/JacksonMapperEnabledDefaultTypingTest.java Fri Nov 30 13:40:20 2018
@@ -18,10 +18,8 @@ package org.apache.fulcrum.json.jackson;
  * specific language governing permissions and limitations
  * under the License.
  */
-
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.util.ArrayList;
 import java.util.Calendar;
@@ -31,7 +29,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.avalon.framework.logger.ConsoleLogger;
+import org.apache.avalon.framework.logger.Log4JLogger;
 import org.apache.avalon.framework.logger.Logger;
 import org.apache.fulcrum.json.JsonService;
 import org.apache.fulcrum.json.jackson.example.Bean;
@@ -41,9 +39,12 @@ import org.apache.fulcrum.json.jackson.m
 import org.apache.fulcrum.json.jackson.mixins.RectangleMixin;
 import org.apache.fulcrum.json.jackson.mixins.RectangleMixin2;
 import org.apache.fulcrum.json.jackson.mixins.TypedRectangle;
-import org.apache.fulcrum.testcontainer.BaseUnit4Test;
-import org.junit.Before;
-import org.junit.Test;
+import org.apache.fulcrum.testcontainer.BaseUnit5Test;
+import org.apache.log4j.LogManager;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.platform.runner.JUnitPlatform;
+import org.junit.runner.RunWith;
 
 import com.fasterxml.jackson.core.type.TypeReference;
 import com.fasterxml.jackson.databind.ObjectMapper.DefaultTyping;
@@ -56,29 +57,31 @@ import com.fasterxml.jackson.databind.Ob
  * @author gk
  * @version $Id$
  */
-public class JacksonMapperEnabledDefaultTypingTest extends BaseUnit4Test {
+//@Nested
+@RunWith(JUnitPlatform.class)
+public class JacksonMapperEnabledDefaultTypingTest extends BaseUnit5Test {
     public static final String preDefinedOutput = "{\"type\":\"org.apache.fulcrum.json.jackson.example.TestClass\",\"container\":{\"type\":\"java.util.HashMap\",\"cf\":\"Config.xml\"},\"configurationName\":\"Config.xml\",\"name\":\"mytest\"}";
     private JsonService sc = null;
     Logger logger;
 
 
-    @Before
+    @BeforeEach
     public void setUp() throws Exception {
         sc = (JsonService) this.lookup(JsonService.ROLE);
-        logger = new ConsoleLogger(ConsoleLogger.LEVEL_DEBUG);
+        logger = new Log4JLogger(LogManager.getLogger(getClass().getName()) );
         ((Jackson2MapperService) sc).getMapper().enableDefaultTypingAsProperty(
                 DefaultTyping.NON_FINAL, "type");
     }
     @Test
     public void testSerialize() throws Exception {
         String serJson = sc.ser(new TestClass("mytest"));
-        assertEquals("Serialization failed ", preDefinedOutput, serJson);
+        assertEquals(preDefinedOutput, serJson, "Serialization failed ");
     }
     @Test
     public void testDeSerialize() throws Exception {
         String serJson = sc.ser(new TestClass("mytest"));
         Object deson = sc.deSer(serJson, TestClass.class);
-        assertEquals("DeSer failed ", TestClass.class, deson.getClass());
+        assertEquals(TestClass.class, deson.getClass(), "DeSer failed ");
     }
     @Test
     public void testSerializeDateWithDefaultDateFormat() throws Exception {
@@ -87,8 +90,9 @@ public class JacksonMapperEnabledDefault
         String serJson = sc.ser(map);
         logger.debug("serJson:" +serJson);
         assertEquals(
-                "Serialize with Adapater failed ",true,
-                serJson.matches(".*\"java.util.Date\",\"\\d\\d/\\d\\d/\\d{4}\".*"));
+                true,
+                serJson.matches(".*\"java.util.Date\",\"\\d\\d/\\d\\d/\\d{4}\".*"),
+                "Serialize with Adapater failed ");
     }
     @Test
     public void testDeSerializeDate() throws Exception {
@@ -99,8 +103,8 @@ public class JacksonMapperEnabledDefault
         String serJson =  sc.ser(map, Map.class);
         logger.debug("serJsonwithmap:"+ serJson);
         Map<String, Date> serDate = sc.deSer(serJson, Map.class);
-        assertEquals("Date DeSer failed ", Date.class, serDate.get("date")
-                .getClass());   
+        assertEquals(Date.class, serDate.get("date")
+                .getClass(), "Date DeSer failed "); 
     }
     @Test
     public void testSerializeWithCustomFilter() throws Exception {
@@ -108,16 +112,16 @@ public class JacksonMapperEnabledDefault
         filteredBean.setName("joe");
         String bean = sc.serializeOnlyFilter(filteredBean, Bean.class, "name");
         assertEquals(
-                "Ser filtered Bean failed ",
                 "{\"type\":\"org.apache.fulcrum.json.jackson.example.Bean\",\"name\":\"joe\"}",
-                bean);
+                bean,
+                "Ser filtered Bean failed ");
 
         Rectangle filteredRectangle = new Rectangle(5, 10);
         filteredRectangle.setName("jim");
         String rectangle = sc.serializeOnlyFilter(filteredRectangle,
                 Rectangle.class, "w", "name");
-        assertEquals("Ser filtered Rectangle failed ",
-                "{\"w\":5,\"name\":\"jim\"}", rectangle);
+        assertEquals(
+                "{\"w\":5,\"name\":\"jim\"}", rectangle, "Ser filtered Rectangle failed ");
     }
     @Test
     public void testSerializationCollectionWithFilter() throws Exception {
@@ -132,9 +136,9 @@ public class JacksonMapperEnabledDefault
         String result = sc.serializeOnlyFilter(beanList, Bean.class, "name",
                 "age");
         assertEquals(
-                "Serialization of beans failed ",
                 "['java.util.ArrayList',[{'type':'org.apache.fulcrum.json.jackson.example.Bean','name':'joe0','age':0},{'type':'org.apache.fulcrum.json.jackson.example.Bean','name':'joe1','age':1},{'type':'org.apache.fulcrum.json.jackson.example.Bean','name':'joe2','age':2},{'type':'org.apache.fulcrum.json.jackson.example.Bean','name':'joe3','age':3},{'type':'org.apache.fulcrum.json.jackson.example.Bean','name':'joe4','age':4},{'type':'org.apache.fulcrum.json.jackson.example.Bean','name':'joe5','age':5},{'type':'org.apache.fulcrum.json.jackson.example.Bean','name':'joe6','age':6},{'type':'org.apache.fulcrum.json.jackson.example.Bean','name':'joe7','age':7},{'type':'org.apache.fulcrum.json.jackson.example.Bean','name':'joe8','age':8},{'type':'org.apache.fulcrum.json.jackson.example.Bean','name':'joe9','age':9}]]",
-                result.replace('"', '\''));
+                result.replace('"', '\''),
+                "Serialization of beans failed ");
         
         Collection<Rectangle> resultDeSer = checkDeserCollection(result, List.class, Rectangle.class);
     }
@@ -143,14 +147,15 @@ public class JacksonMapperEnabledDefault
         sc.addAdapter("TestClass Adapter", target, mixin);
         T result = sc.deSer(serJson,target);
         //logger.debug("result:"+ result + " is of type "+ target.getName());
-        assertTrue("result instance check", target.isAssignableFrom(result.getClass()));
+        assertTrue(target.isAssignableFrom(result.getClass()), "result instance check");
         return result;
      }
     
     private <U> Collection<U> checkDeserCollection(String serJson,Class<? extends Collection> collClass, Class entryClass) throws Exception {
           Collection<U> result = ((Jackson2MapperService) sc).deSerCollectionWithType(serJson, collClass, entryClass);
-          assertTrue("result instance check failed for result class "+ result.getClass() + " and target class: "+ collClass, 
-                  collClass.isAssignableFrom(result.getClass()));
+          assertTrue( 
+                  collClass.isAssignableFrom(result.getClass()),
+                  "result instance check failed for result class "+ result.getClass() + " and target class: "+ collClass);
           return result;
     }
   
@@ -171,9 +176,9 @@ public class JacksonMapperEnabledDefault
         TypeReference typeRef = new TypeReference<List<Bean>>(){};
         List<Bean> beanList2 = (List<Bean>) ((Jackson2MapperService) sc)
                 .deSerCollection(result, typeRef, Bean.class);
-        assertTrue("DeSer failed ", beanList2.size() == 10);
+        assertTrue(beanList2.size() == 10);
         for (Bean bean : beanList2) {
-            assertEquals("DeSer failed ", Bean.class, bean.getClass());
+            assertEquals(Bean.class, bean.getClass());
         }
     }
     @Test
@@ -190,12 +195,12 @@ public class JacksonMapperEnabledDefault
         String result = sc.serializeOnlyFilter(beanList, Bean.class, "name",
                 "age");
         Object beanList2 = sc.deSer(result, List.class);
-        assertTrue("DeSer failed ", beanList2 instanceof List);
-        assertTrue("DeSer failed ", ((List) beanList2).size() == 10);
+        assertTrue( beanList2 instanceof List);
+        assertTrue( ((List) beanList2).size() == 10);
         for (int i = 0; i < ((List) beanList2).size(); i++) {
-            assertTrue("DeSer failed ",
+            assertTrue(
                     ((List) beanList2).get(i) instanceof Bean);
-            assertTrue("DeSer failed ", ((Bean) ((List) beanList2).get(i))
+            assertTrue(((Bean) ((List) beanList2).get(i))
                     .getName().equals("joe" + i));
 
         }
@@ -207,7 +212,7 @@ public class JacksonMapperEnabledDefault
         String serRect = sc
                 .addAdapter("M4RMixin", Rectangle.class, RectangleMixin.class).ser(
                         filteredRectangle);
-        assertEquals("Ser failed ", "{\"width\":5}", serRect);
+        assertEquals("{\"width\":5}", serRect);
     }
     @Test
     public void testSerializeWith2Mixins() throws Exception {
@@ -218,16 +223,16 @@ public class JacksonMapperEnabledDefault
 
        String serRect =  sc.addAdapter("M4RMixin2", Rectangle.class,
                 RectangleMixin2.class).ser(filteredRectangle);
-        assertEquals("Ser failed ", "{\"name\":\"jim\",\"width\":5}", serRect);
+        assertEquals( "{\"name\":\"jim\",\"width\":5}", serRect);
 
         //
         String bean = sc.addAdapter("M4RBeanMixin", Bean.class,
                 BeanMixin.class).ser(filteredBean);;
         
         assertEquals(
-                "Ser filtered Bean failed ",
                 "{\"type\":\"org.apache.fulcrum.json.jackson.example.Bean\",\"name\":\"joe\"}",
-                bean);
+                bean,
+                "Ser filtered Bean failed ");
     }
     @Test
     public void testSerializeWithMixinAndFilter() throws Exception {
@@ -239,7 +244,6 @@ public class JacksonMapperEnabledDefault
         // profession was already set to ignore, does not change
         String bean = sc.serializeOnlyFilter(filteredBean, Bean.class, "profession");
         assertEquals(
-                "Ser filtered Bean failed ",
                 "{\"type\":\"org.apache.fulcrum.json.jackson.example.Bean\"}",
                 bean);
     }
@@ -255,9 +259,9 @@ public class JacksonMapperEnabledDefault
         // now profession is used after cleaning adapter
         String bean = sc.serializeOnlyFilter(filteredBean, Bean.class, "profession");
         assertEquals(
-                "Ser filtered Bean failed ",
                 "{\"type\":\"org.apache.fulcrum.json.jackson.example.Bean\",\"profession\":\"\"}",
-                bean);
+                bean,
+                "Serialization of beans failed ");
     }
     @Test
     public void testMultipleSerializingWithMixinAndFilter() throws Exception {
@@ -270,21 +274,21 @@ public class JacksonMapperEnabledDefault
         // if serialization is done Jackson clean cache
         String rectangle0 = sc.ser(filteredRectangle,Rectangle.class,true);
         assertEquals(
-                "Ser filtered Rectangle failed ",
                 "{\"name\":\"jim\",\"width\":5}",
-                rectangle0);
+                rectangle0,
+                "Ser filtered Rectangle0 failed ");
         // filtering out name, using width from mixin2 as a second filter
         String rectangle = sc.serializeOnlyFilter(filteredRectangle, Rectangle.class, true, "width");
         assertEquals(
-                "Ser filtered Rectangle failed ",
                 "{\"width\":5}",
-                rectangle);
+                rectangle,
+                "Ser filtered Rectangle failed ");
         // default for mixin
        String rectangle1 = sc.ser(filteredRectangle);
        assertEquals(
-              "Ser filtered Rectangle failed ",
               "{\"name\":\"jim\",\"width\":5}",
-              rectangle1);
+              rectangle1,
+              "Ser filtered Rectangle1 failed ");
     }
     @Test
     public void testSerializationCollectionWithMixin() throws Exception {
@@ -298,9 +302,9 @@ public class JacksonMapperEnabledDefault
         String result = sc.addAdapter("M4RMixin", Bean.class, BeanMixin.class)
                 .ser(beanList);
         assertEquals(
-                "Serialization of beans failed ",
                 "['java.util.ArrayList',[{'type':'org.apache.fulcrum.json.jackson.example.Bean','name':'joe0'},{'type':'org.apache.fulcrum.json.jackson.example.Bean','name':'joe1'},{'type':'org.apache.fulcrum.json.jackson.example.Bean','name':'joe2'},{'type':'org.apache.fulcrum.json.jackson.example.Bean','name':'joe3'},{'type':'org.apache.fulcrum.json.jackson.example.Bean','name':'joe4'},{'type':'org.apache.fulcrum.json.jackson.example.Bean','name':'joe5'},{'type':'org.apache.fulcrum.json.jackson.example.Bean','name':'joe6'},{'type':'org.apache.fulcrum.json.jackson.example.Bean','name':'joe7'},{'type':'org.apache.fulcrum.json.jackson.example.Bean','name':'joe8'},{'type':'org.apache.fulcrum.json.jackson.example.Bean','name':'joe9'}]]",
-                result.replace('"', '\''));
+                result.replace('"', '\''),
+                "Serialization of beans failed ");
     }
     @Test
     public void testDeSerializationCollectionWithMixin() throws Exception {
@@ -317,9 +321,9 @@ public class JacksonMapperEnabledDefault
         TypeReference typeRef = new TypeReference<List<Bean>>(){};
         List<Bean> beanList2 = (List<Bean>) ((Jackson2MapperService) sc)
                 .deSerCollection(result, typeRef, Bean.class);
-        assertTrue("DeSer failed ", beanList2.size() == 10);
+        assertTrue(beanList2.size() == 10, "DeSer failed ");
         for (Bean bean : beanList2) {
-            assertEquals("DeSer failed ", Bean.class, bean.getClass());
+            assertEquals( Bean.class, bean.getClass(), "DeSer failed ");
         }
     }
     @Test
@@ -337,7 +341,7 @@ public class JacksonMapperEnabledDefault
                 "M4BeanRMixin", Bean.class, BeanMixin.class);
         String serRect = sc.ser(components);
         assertEquals(
-                "Serialization failed ",
+
                 "['java.util.ArrayList',[{'type':'org.apache.fulcrum.json.jackson.example.Rectangle','width':25},{'type':'org.apache.fulcrum.json.jackson.example.Rectangle','width':250},{'type':'org.apache.fulcrum.json.jackson.example.Bean','name':'joe0'},{'type':'org.apache.fulcrum.json.jackson.example.Bean','name':'joe1'},{'type':'org.apache.fulcrum.json.jackson.example.Bean','name':'joe2'}]]",
                 serRect.replace('"', '\''));
     }