package org.infinispan.marshall.exts; import java.io.IOException; import java.io.ObjectInput; import java.io.ObjectOutput; import java.util.Optional; import java.util.Set; import org.infinispan.commons.marshall.AbstractExternalizer; import org.infinispan.commons.util.Util; import org.infinispan.marshall.core.Ids; public class OptionalExternalizer extends AbstractExternalizer<Optional> { @Override public void writeObject(ObjectOutput output, Optional object) throws IOException { int isPresent = (object.isPresent() ? 1 : 0); output.writeByte(isPresent); if (object.isPresent()) output.writeObject(object.get()); } @Override public Optional readObject(ObjectInput input) throws IOException, ClassNotFoundException { boolean isPresent = input.readByte() == 1; return isPresent ? Optional.of(input.readObject()) : Optional.empty(); } @Override public Set<Class<? extends Optional>> getTypeClasses() { return Util.<Class<? extends Optional>>asSet(Optional.class); } @Override public Integer getId() { return Ids.OPTIONAL; } }