public abstract class AbstractObjectParser<Value,Context> extends java.lang.Object implements java.util.function.BiFunction<XContentParser,Context,Value>, ContextParser<Context,Value>
ObjectParser
and ConstructingObjectParser
. Defines most of the "declare" methods so they can be shared.Constructor and Description |
---|
AbstractObjectParser() |
Modifier and Type | Method and Description |
---|---|
void |
declareBoolean(java.util.function.BiConsumer<Value,java.lang.Boolean> consumer,
ParseField field) |
void |
declareDouble(java.util.function.BiConsumer<Value,java.lang.Double> consumer,
ParseField field) |
void |
declareDoubleArray(java.util.function.BiConsumer<Value,java.util.List<java.lang.Double>> consumer,
ParseField field) |
<T> void |
declareField(java.util.function.BiConsumer<Value,T> consumer,
CheckedFunction<XContentParser,T,java.io.IOException> parser,
ParseField parseField,
ObjectParser.ValueType type) |
abstract <T> void |
declareField(java.util.function.BiConsumer<Value,T> consumer,
ContextParser<Context,T> parser,
ParseField parseField,
ObjectParser.ValueType type)
Declare some field.
|
void |
declareFloat(java.util.function.BiConsumer<Value,java.lang.Float> consumer,
ParseField field) |
void |
declareFloatArray(java.util.function.BiConsumer<Value,java.util.List<java.lang.Float>> consumer,
ParseField field) |
void |
declareInt(java.util.function.BiConsumer<Value,java.lang.Integer> consumer,
ParseField field) |
void |
declareIntArray(java.util.function.BiConsumer<Value,java.util.List<java.lang.Integer>> consumer,
ParseField field) |
void |
declareLong(java.util.function.BiConsumer<Value,java.lang.Long> consumer,
ParseField field) |
void |
declareLongArray(java.util.function.BiConsumer<Value,java.util.List<java.lang.Long>> consumer,
ParseField field) |
abstract <T> void |
declareNamedObjects(java.util.function.BiConsumer<Value,java.util.List<T>> consumer,
ObjectParser.NamedObjectParser<T,Context> namedObjectParser,
java.util.function.Consumer<Value> orderedModeCallback,
ParseField parseField)
Declares named objects in the style of highlighting's field element.
|
abstract <T> void |
declareNamedObjects(java.util.function.BiConsumer<Value,java.util.List<T>> consumer,
ObjectParser.NamedObjectParser<T,Context> namedObjectParser,
ParseField parseField)
Declares named objects in the style of aggregations.
|
<T> void |
declareObject(java.util.function.BiConsumer<Value,T> consumer,
ContextParser<Context,T> objectParser,
ParseField field) |
<T> void |
declareObjectArray(java.util.function.BiConsumer<Value,java.util.List<T>> consumer,
ContextParser<Context,T> objectParser,
ParseField field) |
void |
declareRawObject(java.util.function.BiConsumer<Value,BytesReference> consumer,
ParseField field) |
void |
declareString(java.util.function.BiConsumer<Value,java.lang.String> consumer,
ParseField field) |
void |
declareStringArray(java.util.function.BiConsumer<Value,java.util.List<java.lang.String>> consumer,
ParseField field) |
void |
declareStringOrNull(java.util.function.BiConsumer<Value,java.lang.String> consumer,
ParseField field) |
abstract java.lang.String |
getName() |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
parse
public abstract <T> void declareField(java.util.function.BiConsumer<Value,T> consumer, ContextParser<Context,T> parser, ParseField parseField, ObjectParser.ValueType type)
declareString(BiConsumer, ParseField)
or
declareObject(BiConsumer, ContextParser, ParseField)
rather than call this directly.public abstract <T> void declareNamedObjects(java.util.function.BiConsumer<Value,java.util.List<T>> consumer, ObjectParser.NamedObjectParser<T,Context> namedObjectParser, ParseField parseField)
{
"aggregations": {
"name_1": { "aggregation_type": {} },
"name_2": { "aggregation_type": {} },
"name_3": { "aggregation_type": {} }
}
}
}
Unlike the other version of this method, "ordered" mode (arrays of
objects) is not supported.
See NamedObjectHolder in ObjectParserTests for examples of how to invoke
this.consumer
- sets the values once they have been parsednamedObjectParser
- parses each named objectparseField
- the field to parsepublic abstract <T> void declareNamedObjects(java.util.function.BiConsumer<Value,java.util.List<T>> consumer, ObjectParser.NamedObjectParser<T,Context> namedObjectParser, java.util.function.Consumer<Value> orderedModeCallback, ParseField parseField)
{
"highlight": {
"fields": { <------ this one
"title": {},
"body": {},
"category": {}
}
}
}
but, when order is important, some may be written this way:
{
"highlight": {
"fields": [ <------ this one
{"title": {}},
{"body": {}},
{"category": {}}
]
}
}
This is because json doesn't enforce ordering. Elasticsearch reads it in
the order sent but tools that generate json are free to put object
members in an unordered Map, jumbling them. Thus, if you care about order
you can send the object in the second way.
See NamedObjectHolder in ObjectParserTests for examples of how to invoke
this.consumer
- sets the values once they have been parsednamedObjectParser
- parses each named objectorderedModeCallback
- called when the named object is parsed using the "ordered"
mode (the array of objects)parseField
- the field to parsepublic abstract java.lang.String getName()
public <T> void declareField(java.util.function.BiConsumer<Value,T> consumer, CheckedFunction<XContentParser,T,java.io.IOException> parser, ParseField parseField, ObjectParser.ValueType type)
public <T> void declareObject(java.util.function.BiConsumer<Value,T> consumer, ContextParser<Context,T> objectParser, ParseField field)
public void declareFloat(java.util.function.BiConsumer<Value,java.lang.Float> consumer, ParseField field)
public void declareDouble(java.util.function.BiConsumer<Value,java.lang.Double> consumer, ParseField field)
public void declareLong(java.util.function.BiConsumer<Value,java.lang.Long> consumer, ParseField field)
public void declareInt(java.util.function.BiConsumer<Value,java.lang.Integer> consumer, ParseField field)
public void declareString(java.util.function.BiConsumer<Value,java.lang.String> consumer, ParseField field)
public void declareStringOrNull(java.util.function.BiConsumer<Value,java.lang.String> consumer, ParseField field)
public void declareBoolean(java.util.function.BiConsumer<Value,java.lang.Boolean> consumer, ParseField field)
public <T> void declareObjectArray(java.util.function.BiConsumer<Value,java.util.List<T>> consumer, ContextParser<Context,T> objectParser, ParseField field)
public void declareStringArray(java.util.function.BiConsumer<Value,java.util.List<java.lang.String>> consumer, ParseField field)
public void declareDoubleArray(java.util.function.BiConsumer<Value,java.util.List<java.lang.Double>> consumer, ParseField field)
public void declareFloatArray(java.util.function.BiConsumer<Value,java.util.List<java.lang.Float>> consumer, ParseField field)
public void declareLongArray(java.util.function.BiConsumer<Value,java.util.List<java.lang.Long>> consumer, ParseField field)
public void declareIntArray(java.util.function.BiConsumer<Value,java.util.List<java.lang.Integer>> consumer, ParseField field)
public void declareRawObject(java.util.function.BiConsumer<Value,BytesReference> consumer, ParseField field)