Skip to content

Commit

Permalink
Merge pull request #11056 from cbuescher/feature/read-write-stringlist
Browse files Browse the repository at this point in the history
Transport: read/write support for list of strings
  • Loading branch information
cbuescher committed May 8, 2015
2 parents a536bd5 + acc42d5 commit 4215017
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 6 deletions.
21 changes: 18 additions & 3 deletions src/main/java/org/elasticsearch/common/io/stream/StreamInput.java
Original file line number Diff line number Diff line change
Expand Up @@ -335,6 +335,21 @@ public String[] readStringArray() throws IOException {
return ret;
}

/**
* Read in a list of strings. List can be empty but not {@code null}.
*/
public List<String> readStringList() throws IOException {
int size = readVInt();
if (size == 0) {
return Collections.emptyList();
}
List<String> ret = new ArrayList<>(size);
for (int i = 0; i < size; i++) {
ret.add(readString());
}
return ret;
}

@Nullable
public Map<String, Object> readMap() throws IOException {
return (Map<String, Object>) readGenericValue();
Expand Down Expand Up @@ -427,7 +442,7 @@ public int[] readIntArray() throws IOException {
}
return values;
}

public long[] readLongArray() throws IOException {
int length = readVInt();
long[] values = new long[length];
Expand All @@ -436,7 +451,7 @@ public long[] readLongArray() throws IOException {
}
return values;
}

public float[] readFloatArray() throws IOException {
int length = readVInt();
float[] values = new float[length];
Expand All @@ -445,7 +460,7 @@ public float[] readFloatArray() throws IOException {
}
return values;
}

public double[] readDoubleArray() throws IOException {
int length = readVInt();
double[] values = new double[length];
Expand Down
16 changes: 13 additions & 3 deletions src/main/java/org/elasticsearch/common/io/stream/StreamOutput.java
Original file line number Diff line number Diff line change
Expand Up @@ -283,6 +283,16 @@ public void writeStringArray(String[] array) throws IOException {
}
}

/**
* Write a list of strings. List can be empty but not {@code null}.
*/
public void writeStringList(List<String> stringList) throws IOException {
writeVInt(stringList.size());
for (String s : stringList) {
writeString(s);
}
}

/**
* Writes a string array, for nullable string, writes it as 0 (empty string).
*/
Expand Down Expand Up @@ -399,21 +409,21 @@ public void writeIntArray(int[] value) throws IOException {
writeInt(value[i]);
}
}

public void writeLongArray(long[] value) throws IOException {
writeVInt(value.length);
for (int i=0; i<value.length; i++) {
writeLong(value[i]);
}
}

public void writeFloatArray(float[] value) throws IOException {
writeVInt(value.length);
for (int i=0; i<value.length; i++) {
writeFloat(value[i]);
}
}

public void writeDoubleArray(double[] value) throws IOException {
writeVInt(value.length);
for (int i=0; i<value.length; i++) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@
import org.junit.Ignore;
import org.junit.Test;

import java.util.Arrays;

import static org.hamcrest.Matchers.closeTo;
import static org.hamcrest.Matchers.equalTo;

Expand Down Expand Up @@ -282,6 +284,7 @@ public void testSimpleStreams() throws Exception {
out.writeGenericValue(doubleArray);
out.writeString("hello");
out.writeString("goodbye");
out.writeStringList(Arrays.asList(new String[]{"Hello", "Again"}));
out.writeGenericValue(BytesRefs.toBytesRef("bytesref"));
BytesStreamInput in = new BytesStreamInput(out.bytes().toBytes());
assertThat(in.readBoolean(), equalTo(false));
Expand All @@ -299,6 +302,7 @@ public void testSimpleStreams() throws Exception {
assertThat(in.readGenericValue(), equalTo((Object)doubleArray));
assertThat(in.readString(), equalTo("hello"));
assertThat(in.readString(), equalTo("goodbye"));
assertThat(in.readStringList(), equalTo(Arrays.asList(new String[]{"Hello", "Again"})));
assertThat(in.readGenericValue(), equalTo((Object)BytesRefs.toBytesRef("bytesref")));
in.close();
out.close();
Expand Down

0 comments on commit 4215017

Please sign in to comment.