All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.infinispan.marshall.exts.OptionalExternalizer Maven / Gradle / Ivy

There is a newer version: 9.1.7.Final
Show newest version
package org.infinispan.marshall.exts;

import org.infinispan.commons.marshall.AbstractExternalizer;
import org.infinispan.commons.util.Util;
import org.infinispan.marshall.core.Ids;

import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
import java.util.Optional;
import java.util.Set;

public class OptionalExternalizer extends AbstractExternalizer {

   @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> getTypeClasses() {
      return Util.>asSet(Optional.class);
   }

   @Override
   public Integer getId() {
      return Ids.OPTIONAL;
   }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy