@Test public void testSerializeCustom() { SFSSerializer sfsSerializer = new SFSSerializer(); Entity entity = new Entity(); Entity subEntity = new Entity(); Entity subEntityCustom = new Entity(); subEntity.setIntField(10); subEntityCustom.setIntField(99); entity.setWildcardList(Arrays.asList(subEntity)); entity.setWildcardedListCustom(Arrays.asList(subEntityCustom)); sfsSerializer.registerPostProcessor( new SerializePostProcessor() { @Override public <ST, DT extends TransportObject> void process(ST result, DT sourceObject) { if (sourceObject instanceof Entity) ((ISFSObject) result).putBool("postProcessed", true); } }); sfsSerializer.registerPreProcessor( new SerializePreProcessor() { @Override public <DT> void process(DT sourceObject) { if (sourceObject instanceof Entity) ((Entity) sourceObject).setPreProcessed(true); } }); ISFSObject sObj = sfsSerializer.serialize(entity); assertNotNull(sObj.getSFSArray("wildcardList")); assertTrue(sObj.getBool("postProcessed")); assertTrue(sObj.getBool("preProcessed")); Iterator<SFSDataWrapper> iterator = sObj.getSFSArray("wildcardList").iterator(); assertEquals( subEntity.getIntField() * 2, ((SFSObject) iterator.next().getObject()).getInt("intField").intValue()); Iterator<SFSDataWrapper> customIterator = sObj.getSFSArray("wildcardedListCustom").iterator(); assertEquals( subEntityCustom.getIntField(), ((SFSObject) customIterator.next().getObject()).getInt("intField")); }