package org.infinispan.functional;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
import java.util.function.Consumer;
import java.util.function.Function;
import org.infinispan.commons.api.functional.EntryView.ReadWriteEntryView;
import org.infinispan.commons.api.functional.EntryView.WriteEntryView;
import org.infinispan.commons.marshall.Externalizer;
import org.infinispan.commons.marshall.SerializeWith;
public class TestFunctionalInterfaces {
@SerializeWith(value = SetConstantOnReadWrite.Externalizer0.class)
public static final class SetConstantOnReadWrite<K>
implements Function<ReadWriteEntryView<K, String>, Void> {
final String constant;
public SetConstantOnReadWrite(String constant) {
this.constant = constant;
}
@Override
public Void apply(ReadWriteEntryView<K, String> rw) {
rw.set(constant);
return null;
}
public static final class Externalizer0
implements Externalizer<SetConstantOnReadWrite<?>> {
@Override
public void writeObject(ObjectOutput output, SetConstantOnReadWrite<?> object)
throws IOException {
output.writeUTF(object.constant);
}
@Override
public SetConstantOnReadWrite<?> readObject(ObjectInput input)
throws IOException, ClassNotFoundException {
String constant = input.readUTF();
return new SetConstantOnReadWrite<>(constant);
}
}
}
@SerializeWith(value = SetConstantOnWriteOnly.Externalizer0.class)
public static final class SetConstantOnWriteOnly implements Consumer<WriteEntryView<String>> {
final String constant;
public SetConstantOnWriteOnly(String constant) {
this.constant = constant;
}
@Override
public void accept(WriteEntryView<String> wo) {
wo.set(constant);
}
public static final class Externalizer0 implements Externalizer<SetConstantOnWriteOnly> {
@Override
public void writeObject(ObjectOutput output, SetConstantOnWriteOnly object)
throws IOException {
output.writeUTF(object.constant);
}
@Override
public SetConstantOnWriteOnly readObject(ObjectInput input)
throws IOException, ClassNotFoundException {
String constant = input.readUTF();
return new SetConstantOnWriteOnly(constant);
}
}
}
}