package org.infinispan.marshall.exts; import java.io.IOException; import java.io.ObjectInput; import java.io.ObjectOutput; import java.util.Set; import org.infinispan.commons.api.functional.EntryVersion; import org.infinispan.commons.api.functional.EntryVersion.NumericEntryVersion; import org.infinispan.commons.api.functional.MetaParam.MetaEntryVersion; import org.infinispan.commons.api.functional.MetaParam.MetaLifespan; import org.infinispan.commons.marshall.AbstractExternalizer; import org.infinispan.commons.util.Util; import org.infinispan.marshall.core.Ids; public final class MetaParamExternalizers { private MetaParamExternalizers() { // Do not instantiate } public static final class LifespanExternalizer extends AbstractExternalizer<MetaLifespan> { @Override public void writeObject(ObjectOutput output, MetaLifespan object) throws IOException { output.writeLong(object.get()); } @Override public MetaLifespan readObject(ObjectInput input) throws IOException, ClassNotFoundException { return new MetaLifespan(input.readLong()); } @Override public Set<Class<? extends MetaLifespan>> getTypeClasses() { return Util.<Class<? extends MetaLifespan>>asSet(MetaLifespan.class); } @Override public Integer getId() { return Ids.META_LIFESPAN; } } public static final class EntryVersionParamExternalizer extends AbstractExternalizer<MetaEntryVersion> { @Override public void writeObject(ObjectOutput output, MetaEntryVersion object) throws IOException { output.writeObject(object.get()); } @Override public MetaEntryVersion readObject(ObjectInput input) throws IOException, ClassNotFoundException { EntryVersion entryVersion = (EntryVersion) input.readObject(); return new MetaEntryVersion(entryVersion); } @Override public Set<Class<? extends MetaEntryVersion>> getTypeClasses() { return Util.<Class<? extends MetaEntryVersion>>asSet(MetaEntryVersion.class); } @Override public Integer getId() { return Ids.META_ENTRY_VERSION; } } public static final class NumericEntryVersionExternalizer extends AbstractExternalizer<NumericEntryVersion> { @Override public void writeObject(ObjectOutput output, NumericEntryVersion object) throws IOException { output.writeLong(object.get()); } @Override public NumericEntryVersion readObject(ObjectInput input) throws IOException, ClassNotFoundException { long version = input.readLong(); return new NumericEntryVersion(version); } @Override public Set<Class<? extends NumericEntryVersion>> getTypeClasses() { return Util.<Class<? extends NumericEntryVersion>>asSet(NumericEntryVersion.class); } @Override public Integer getId() { return Ids.NUMERIC_ENTRY_VERSION; } } }