Skip to content

Commit

Permalink
add field with text/bytes and builder string
Browse files Browse the repository at this point in the history
  • Loading branch information
kimchy committed Sep 6, 2012
1 parent 71db930 commit 7956d14
Showing 1 changed file with 30 additions and 2 deletions.
Expand Up @@ -443,7 +443,7 @@ public XContentBuilder field(String name, Double value) throws IOException {
if (value == null) {
generator.writeNull();
} else {
generator.writeNumber(value.doubleValue());
generator.writeNumber(value);
}
return this;
}
Expand All @@ -453,7 +453,7 @@ public XContentBuilder field(XContentBuilderString name, Double value) throws IO
if (value == null) {
generator.writeNull();
} else {
generator.writeNumber(value.doubleValue());
generator.writeNumber(value);
}
return this;
}
Expand All @@ -479,6 +479,15 @@ public XContentBuilder field(String name, BytesReference value) throws IOExcepti
return this;
}

public XContentBuilder field(XContentBuilderString name, BytesReference value) throws IOException {
field(name);
if (!value.hasArray()) {
value = value.toBytesArray();
}
generator.writeBinary(value.array(), value.arrayOffset(), value.length());
return this;
}

public XContentBuilder field(String name, Text value) throws IOException {
field(name);
if (value.hasBytes() && value.bytes().hasArray()) {
Expand All @@ -495,6 +504,21 @@ public XContentBuilder field(String name, Text value) throws IOException {
return this;
}

public XContentBuilder field(XContentBuilderString name, Text value) throws IOException {
field(name);
if (value.hasBytes() && value.bytes().hasArray()) {
generator.writeUTF8String(value.bytes().array(), value.bytes().arrayOffset(), value.bytes().length());
return this;
}
if (value.hasString()) {
generator.writeString(value.string());
return this;
}
// TODO: TextBytesOptimization we can use a buffer here to convert it? maybe add a request to jackson to support InputStream as well?
BytesArray bytesArray = value.bytes().toBytesArray();
generator.writeUTF8String(bytesArray.array(), bytesArray.arrayOffset(), bytesArray.length());
return this;
}

public XContentBuilder field(String name, byte[] value, int offset, int length) throws IOException {
field(name);
Expand Down Expand Up @@ -684,6 +708,10 @@ public XContentBuilder field(String name, Object value) throws IOException {
field(name, (float[]) value);
} else if (value instanceof double[]) {
field(name, (double[]) value);
} else if (value instanceof BytesReference) {
field(name, (BytesReference) value);
} else if (value instanceof Text) {
field(name, (Text) value);
} else if (value instanceof ToXContent) {
field(name, (ToXContent) value);
} else {
Expand Down

0 comments on commit 7956d14

Please sign in to comment.