package ser.serializerdelegate; import org.nustaq.serialization.*; import org.nustaq.serialization.FSTObjectInput.*; import org.nustaq.serialization.annotations.*; import java.io.*; import java.lang.reflect.*; import java.util.*; /** * Created by moelrue on 07.07.2015. */ public class CondTest { static class Unregisterd implements Serializable { int x = 3; } static class CTest implements Serializable { int aNum; ArrayList conditional1; @Conditional ArrayList conditional0; String aString; CTest other; @Conditional Object unregistered; public CTest() { this.aNum = 0; conditional1 = new ArrayList(); conditional0 = new ArrayList(); } } public static void main(String[] args) throws IOException, ClassNotFoundException { FSTConfiguration conf = FSTConfiguration.createDefaultConfiguration(); conf.registerClass(CTest.class,Unregisterd.class); CTest cTest = new CTest(); cTest.other = new CTest(); cTest.aNum = 3; cTest.unregistered = new Unregisterd(); cTest.conditional0.add(new CTest()); cTest.conditional0.add(cTest.unregistered); cTest.conditional0.add(cTest.other); cTest.conditional1.add(new Unregisterd()); byte b[] = conf.asByteArray(cTest); FSTObjectInput oin = new FSTObjectInput(new ByteArrayInputStream(b), conf); oin.setConditionalCallback(new ConditionalCallback() { @Override public boolean shouldSkip(Object halfDecoded, int streamPosition, Field field) { return ((CTest) halfDecoded).aNum == 3; } }); CTest o = (CTest) oin.readObject(); System.out.println(); } }