summaryrefslogtreecommitdiff
path: root/core/src/main/java/org/elasticsearch/search/suggest/completion/context/CategoryContextMapping.java
diff options
context:
space:
mode:
authorAreek Zillur <areek.zillur@elasticsearch.com>2015-11-03 03:39:08 -0500
committerAreek Zillur <areek.zillur@elasticsearch.com>2015-11-07 17:46:27 -0500
commit75d55e11ade619aa64d8244b348dd0113d0bbb7e (patch)
tree9485da4bdd077c2249449f2e39c8a031f3eada34 /core/src/main/java/org/elasticsearch/search/suggest/completion/context/CategoryContextMapping.java
parent96c9849f5ac279e5d4904ccbfe7266aaad639b25 (diff)
cut over to using ObjectParser for context mappings
Diffstat (limited to 'core/src/main/java/org/elasticsearch/search/suggest/completion/context/CategoryContextMapping.java')
-rw-r--r--core/src/main/java/org/elasticsearch/search/suggest/completion/context/CategoryContextMapping.java63
1 files changed, 6 insertions, 57 deletions
diff --git a/core/src/main/java/org/elasticsearch/search/suggest/completion/context/CategoryContextMapping.java b/core/src/main/java/org/elasticsearch/search/suggest/completion/context/CategoryContextMapping.java
index 554a2d341d..62fec54a33 100644
--- a/core/src/main/java/org/elasticsearch/search/suggest/completion/context/CategoryContextMapping.java
+++ b/core/src/main/java/org/elasticsearch/search/suggest/completion/context/CategoryContextMapping.java
@@ -148,72 +148,21 @@ public class CategoryContextMapping extends ContextMapping {
* </ul>
*/
@Override
- public List<CategoryQueryContext> parseQueryContext(XContentParser parser) throws IOException, ElasticsearchParseException {
- List<CategoryQueryContext> queryContexts = new ArrayList<>();
+ public List<QueryContext> parseQueryContext(XContentParser parser) throws IOException, ElasticsearchParseException {
+ List<QueryContext> queryContexts = new ArrayList<>();
Token token = parser.nextToken();
if (token == Token.START_OBJECT || token == Token.VALUE_STRING) {
- queryContexts.add(innerParseQueryContext(parser));
+ CategoryQueryContext parse = CategoryQueryContext.parse(parser);
+ queryContexts.add(new QueryContext(parse.context.toString(), parse.boost, parse.isPrefix));
} else if (token == Token.START_ARRAY) {
while (parser.nextToken() != Token.END_ARRAY) {
- queryContexts.add(innerParseQueryContext(parser));
+ CategoryQueryContext parse = CategoryQueryContext.parse(parser);
+ queryContexts.add(new QueryContext(parse.context.toString(), parse.boost, parse.isPrefix));
}
}
return queryContexts;
}
- private CategoryQueryContext innerParseQueryContext(XContentParser parser) throws IOException, ElasticsearchParseException {
- Token token = parser.currentToken();
- if (token == Token.VALUE_STRING) {
- return new CategoryQueryContext(parser.text());
- } else if (token == Token.START_OBJECT) {
- String currentFieldName = null;
- String context = null;
- boolean isPrefix = false;
- int boost = 1;
- while ((token = parser.nextToken()) != Token.END_OBJECT) {
- if (token == Token.FIELD_NAME) {
- currentFieldName = parser.currentName();
- } else if (token == Token.VALUE_STRING) {
- // context, exact
- if (CONTEXT_VALUE.equals(currentFieldName)) {
- context = parser.text();
- } else if (CONTEXT_PREFIX.equals(currentFieldName)) {
- isPrefix = Boolean.valueOf(parser.text());
- } else if (CONTEXT_BOOST.equals(currentFieldName)) {
- Number number;
- try {
- number = Long.parseLong(parser.text());
- } catch (NumberFormatException e) {
- throw new IllegalArgumentException("boost must be a string representing a numeric value, but was [" + parser.text() + "]");
- }
- boost = number.intValue();
- }
- } else if (token == Token.VALUE_NUMBER) {
- // boost
- if (CONTEXT_BOOST.equals(currentFieldName)) {
- Number number = parser.numberValue();
- if (parser.numberType() == XContentParser.NumberType.INT) {
- boost = number.intValue();
- } else {
- throw new ElasticsearchParseException("boost must be in the interval [0..2147483647], but was [" + number.longValue() + "]");
- }
- }
- } else if (token == Token.VALUE_BOOLEAN) {
- // exact
- if (CONTEXT_PREFIX.equals(currentFieldName)) {
- isPrefix = parser.booleanValue();
- }
- }
- }
- if (context == null) {
- throw new ElasticsearchParseException("no context provided");
- }
- return new CategoryQueryContext(context, boost, isPrefix);
- } else {
- throw new ElasticsearchParseException("contexts field expected string or object but was [" + token.name() + "]");
- }
- }
-
@Override
public boolean equals(Object o) {
if (this == o) return true;