close parser when parsing update body
This commit is contained in:
parent
2fa017db11
commit
320c9b7681
|
@ -477,29 +477,33 @@ public class UpdateRequest extends InstanceShardOperationRequest<UpdateRequest>
|
||||||
public UpdateRequest source(BytesReference source) throws Exception {
|
public UpdateRequest source(BytesReference source) throws Exception {
|
||||||
XContentType xContentType = XContentFactory.xContentType(source);
|
XContentType xContentType = XContentFactory.xContentType(source);
|
||||||
XContentParser parser = XContentFactory.xContent(xContentType).createParser(source);
|
XContentParser parser = XContentFactory.xContent(xContentType).createParser(source);
|
||||||
XContentParser.Token t = parser.nextToken();
|
try {
|
||||||
if (t == null) {
|
XContentParser.Token t = parser.nextToken();
|
||||||
return this;
|
if (t == null) {
|
||||||
}
|
return this;
|
||||||
String currentFieldName = null;
|
|
||||||
while ((t = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
|
|
||||||
if (t == XContentParser.Token.FIELD_NAME) {
|
|
||||||
currentFieldName = parser.currentName();
|
|
||||||
} else if ("script".equals(currentFieldName)) {
|
|
||||||
script = parser.textOrNull();
|
|
||||||
} else if ("params".equals(currentFieldName)) {
|
|
||||||
scriptParams = parser.map();
|
|
||||||
} else if ("lang".equals(currentFieldName)) {
|
|
||||||
scriptLang = parser.text();
|
|
||||||
} else if ("upsert".equals(currentFieldName)) {
|
|
||||||
XContentBuilder builder = XContentFactory.contentBuilder(xContentType);
|
|
||||||
builder.copyCurrentStructure(parser);
|
|
||||||
safeUpsertRequest().source(builder);
|
|
||||||
} else if ("doc".equals(currentFieldName)) {
|
|
||||||
XContentBuilder docBuilder = XContentFactory.contentBuilder(xContentType);
|
|
||||||
docBuilder.copyCurrentStructure(parser);
|
|
||||||
safeDoc().source(docBuilder);
|
|
||||||
}
|
}
|
||||||
|
String currentFieldName = null;
|
||||||
|
while ((t = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
|
||||||
|
if (t == XContentParser.Token.FIELD_NAME) {
|
||||||
|
currentFieldName = parser.currentName();
|
||||||
|
} else if ("script".equals(currentFieldName)) {
|
||||||
|
script = parser.textOrNull();
|
||||||
|
} else if ("params".equals(currentFieldName)) {
|
||||||
|
scriptParams = parser.map();
|
||||||
|
} else if ("lang".equals(currentFieldName)) {
|
||||||
|
scriptLang = parser.text();
|
||||||
|
} else if ("upsert".equals(currentFieldName)) {
|
||||||
|
XContentBuilder builder = XContentFactory.contentBuilder(xContentType);
|
||||||
|
builder.copyCurrentStructure(parser);
|
||||||
|
safeUpsertRequest().source(builder);
|
||||||
|
} else if ("doc".equals(currentFieldName)) {
|
||||||
|
XContentBuilder docBuilder = XContentFactory.contentBuilder(xContentType);
|
||||||
|
docBuilder.copyCurrentStructure(parser);
|
||||||
|
safeDoc().source(docBuilder);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
parser.close();
|
||||||
}
|
}
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue