package org.infinispan.container.versioning; import java.io.IOException; import java.io.ObjectInput; import java.io.ObjectOutput; import java.util.Set; import org.infinispan.commons.marshall.AdvancedExternalizer; import org.infinispan.commons.util.Util; import org.infinispan.marshall.core.Ids; public class FunctionalEntryVersionAdapter implements org.infinispan.commons.api.functional.EntryVersion<EntryVersion> { final EntryVersion delegate; public FunctionalEntryVersionAdapter(EntryVersion delegate) { this.delegate = delegate; } @Override public EntryVersion get() { return delegate; } @Override public CompareResult compareTo(org.infinispan.commons.api.functional.EntryVersion<EntryVersion> other) { switch (delegate.compareTo(other.get())) { case BEFORE: return CompareResult.BEFORE; case AFTER: return CompareResult.AFTER; case EQUAL: return CompareResult.EQUAL; case CONFLICTING: return CompareResult.CONFLICTING; default: throw new IllegalStateException(); } } public static class Externalizer implements AdvancedExternalizer<FunctionalEntryVersionAdapter> { @Override public Set<Class<? extends FunctionalEntryVersionAdapter>> getTypeClasses() { return Util.asSet(FunctionalEntryVersionAdapter.class); } @Override public Integer getId() { return Ids.FUNCTIONAL_ENTRY_VERSION_ADAPTER; } @Override public void writeObject(ObjectOutput output, FunctionalEntryVersionAdapter object) throws IOException { output.writeObject(object.delegate); } @Override public FunctionalEntryVersionAdapter readObject(ObjectInput input) throws IOException, ClassNotFoundException { return new FunctionalEntryVersionAdapter((EntryVersion) input.readObject()); } } }