package org.infinispan.server.test.client.hotrod; import java.io.IOException; import java.io.ObjectInput; import java.io.ObjectOutput; import java.util.ArrayList; import java.util.List; import org.infinispan.commons.io.UnsignedNumeric; import org.infinispan.commons.marshall.Externalizer; import org.infinispan.commons.marshall.SerializeWith; /** * @author gustavonalle * @since 8.0 */ @SerializeWith(Summary.SummaryExternalizer.class) public class Summary { private final List<String> attributes; public Summary(List<String> attributes) { this.attributes = attributes; } public List<String> getAttributes() { return attributes; } public static class SummaryExternalizer implements Externalizer<Summary> { @Override public void writeObject(ObjectOutput output, Summary object) throws IOException { UnsignedNumeric.writeUnsignedInt(output, object.getAttributes().size()); for (String attribute : object.getAttributes()) { output.writeUTF(attribute); } } @Override public Summary readObject(ObjectInput input) throws IOException, ClassNotFoundException { int size = UnsignedNumeric.readUnsignedInt(input); ArrayList<String> attributes = new ArrayList<>(size); for (int i = 0; i < size; i++) { attributes.add(input.readUTF()); } return new Summary(attributes); } } }