Skip to content

Commit 71e5289

Browse files
committed
Remove generics from Mapper.Builder (#63623)
We simplified the generics on Mapper.Builder in #56747, but stopped short of removing them entirely because they were still used in various places in the code. Now that most field mappers have been converted to parametrized form, these generics are no longer useful. There are very few places where a fluent Builder pattern is used, almost all in tests, and these can all be replaced with simple casts; in exchange, we remove lots of visual cruft and clean up a number of warnings.
1 parent d46f442 commit 71e5289

File tree

35 files changed

+103
-113
lines changed

35 files changed

+103
-113
lines changed

modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/RankFeaturesFieldMapper.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@ public static class Builder extends ParametrizedFieldMapper.Builder {
4848

4949
public Builder(String name) {
5050
super(name);
51-
builder = this;
5251
}
5352

5453
@Override

modules/parent-join/src/main/java/org/elasticsearch/join/mapper/MetaJoinFieldMapper.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,13 +61,12 @@ static class Defaults {
6161
}
6262
}
6363

64-
static class Builder extends FieldMapper.Builder<Builder> {
64+
static class Builder extends FieldMapper.Builder {
6565

6666
final String joinField;
6767

6868
Builder(String joinField) {
6969
super(NAME, Defaults.FIELD_TYPE);
70-
builder = this;
7170
this.joinField = joinField;
7271
}
7372

modules/parent-join/src/main/java/org/elasticsearch/join/mapper/ParentIdFieldMapper.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,13 +68,12 @@ static class Defaults {
6868
}
6969
}
7070

71-
static class Builder extends FieldMapper.Builder<Builder> {
71+
static class Builder extends FieldMapper.Builder {
7272
private final String parent;
7373
private final Set<String> children;
7474

7575
Builder(String name, String parent, Set<String> children) {
7676
super(name, Defaults.FIELD_TYPE);
77-
builder = this;
7877
this.parent = parent;
7978
this.children = children;
8079
}
@@ -85,7 +84,7 @@ public Set<String> getChildren() {
8584

8685
public Builder eagerGlobalOrdinals(boolean eagerGlobalOrdinals) {
8786
this.eagerGlobalOrdinals = eagerGlobalOrdinals;
88-
return builder;
87+
return this;
8988
}
9089

9190
@Override

modules/parent-join/src/main/java/org/elasticsearch/join/mapper/ParentJoinFieldMapper.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -129,24 +129,23 @@ private static void checkParentFields(String name, List<ParentIdFieldMapper> map
129129
}
130130
}
131131

132-
public static class Builder extends FieldMapper.Builder<Builder> {
132+
public static class Builder extends FieldMapper.Builder {
133133
final List<ParentIdFieldMapper.Builder> parentIdFieldBuilders = new ArrayList<>();
134134
boolean eagerGlobalOrdinals = true;
135135

136136
public Builder(String name) {
137137
super(name, Defaults.FIELD_TYPE);
138-
builder = this;
139138
}
140139

141140
public Builder addParent(String parent, Set<String> children) {
142141
String parentIdFieldName = getParentIdFieldName(name, parent);
143142
parentIdFieldBuilders.add(new ParentIdFieldMapper.Builder(parentIdFieldName, parent, children));
144-
return builder;
143+
return this;
145144
}
146145

147146
public Builder eagerGlobalOrdinals(boolean eagerGlobalOrdinals) {
148147
this.eagerGlobalOrdinals = eagerGlobalOrdinals;
149-
return builder;
148+
return this;
150149
}
151150

152151
@Override
@@ -170,7 +169,7 @@ public ParentJoinFieldMapper build(BuilderContext context) {
170169

171170
public static class TypeParser implements Mapper.TypeParser {
172171
@Override
173-
public Mapper.Builder<?> parse(String name, Map<String, Object> node, ParserContext parserContext) throws MapperParsingException {
172+
public Mapper.Builder parse(String name, Map<String, Object> node, ParserContext parserContext) throws MapperParsingException {
174173
final IndexSettings indexSettings = parserContext.mapperService().getIndexSettings();
175174
checkIndexCompatibility(indexSettings, name);
176175

server/src/main/java/org/elasticsearch/index/mapper/AbstractGeometryFieldMapper.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,8 +119,7 @@ public Object parseAndFormatObject(Object value, String format) {
119119
}
120120
}
121121

122-
public abstract static class Builder<T extends Builder<T, FT>, FT extends AbstractGeometryFieldType>
123-
extends FieldMapper.Builder<T> {
122+
public abstract static class Builder extends FieldMapper.Builder {
124123
protected Boolean ignoreMalformed;
125124
protected Boolean ignoreZValue;
126125
protected boolean indexed = true;

server/src/main/java/org/elasticsearch/index/mapper/AbstractPointGeometryFieldMapper.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,7 @@ public static class Names extends AbstractGeometryFieldMapper.Names {
5757
DEFAULT_FIELD_TYPE.freeze();
5858
}
5959

60-
public abstract static class Builder<T extends Builder<T, FT>,
61-
FT extends AbstractPointGeometryFieldType> extends AbstractGeometryFieldMapper.Builder<T, FT> {
60+
public abstract static class Builder extends AbstractGeometryFieldMapper.Builder {
6261

6362
protected ParsedPoint nullValue;
6463

server/src/main/java/org/elasticsearch/index/mapper/AbstractShapeGeometryFieldMapper.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,7 @@ public static class Defaults extends AbstractGeometryFieldMapper.Defaults {
4949
public static final Explicit<Boolean> COERCE = new Explicit<>(false, false);
5050
}
5151

52-
public abstract static class Builder<T extends Builder<T, FT>,
53-
FT extends AbstractShapeGeometryFieldType> extends AbstractGeometryFieldMapper.Builder<T, FT> {
52+
public abstract static class Builder extends AbstractGeometryFieldMapper.Builder {
5453
protected Boolean coerce;
5554
protected Orientation orientation;
5655

server/src/main/java/org/elasticsearch/index/mapper/DocumentParser.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -636,15 +636,15 @@ private static void parseNullValue(ParseContext context, ObjectMapper parentMapp
636636
}
637637
}
638638

639-
private static Mapper.Builder<?> newLongBuilder(String name, Settings settings) {
639+
private static Mapper.Builder newLongBuilder(String name, Settings settings) {
640640
return new NumberFieldMapper.Builder(name, NumberFieldMapper.NumberType.LONG, settings);
641641
}
642642

643-
private static Mapper.Builder<?> newFloatBuilder(String name, Settings settings) {
643+
private static Mapper.Builder newFloatBuilder(String name, Settings settings) {
644644
return new NumberFieldMapper.Builder(name, NumberFieldMapper.NumberType.FLOAT, settings);
645645
}
646646

647-
private static Mapper.Builder<?> createBuilderFromDynamicValue(final ParseContext context,
647+
private static Mapper.Builder createBuilderFromDynamicValue(final ParseContext context,
648648
XContentParser.Token token,
649649
String currentFieldName) throws IOException {
650650
if (token == XContentParser.Token.VALUE_STRING) {
@@ -763,7 +763,7 @@ private static void parseDynamicValue(final ParseContext context, ObjectMapper p
763763
return;
764764
}
765765
final Mapper.BuilderContext builderContext = new Mapper.BuilderContext(context.indexSettings().getSettings(), context.path());
766-
final Mapper.Builder<?> builder = createBuilderFromDynamicValue(context, token, currentFieldName);
766+
final Mapper.Builder builder = createBuilderFromDynamicValue(context, token, currentFieldName);
767767
Mapper mapper = builder.build(builderContext);
768768
context.addDynamicMapper(mapper);
769769

server/src/main/java/org/elasticsearch/index/mapper/FieldAliasMapper.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ public Mapper.Builder parse(String name, Map<String, Object> node, ParserContext
133133
}
134134
}
135135

136-
public static class Builder extends Mapper.Builder<FieldAliasMapper.Builder> {
136+
public static class Builder extends Mapper.Builder {
137137
private String name;
138138
private String path;
139139

server/src/main/java/org/elasticsearch/index/mapper/FieldMapper.java

Lines changed: 38 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ public abstract class FieldMapper extends Mapper implements Cloneable {
5252
Setting.boolSetting("index.mapping.ignore_malformed", false, Property.IndexScope);
5353
public static final Setting<Boolean> COERCE_SETTING =
5454
Setting.boolSetting("index.mapping.coerce", false, Property.IndexScope);
55-
public abstract static class Builder<T extends Builder<T>> extends Mapper.Builder<T> {
55+
public abstract static class Builder extends Mapper.Builder {
5656

5757
protected final FieldType fieldType;
5858
protected boolean omitNormsSet = false;
@@ -76,111 +76,114 @@ protected Builder(String name, FieldType fieldType) {
7676
multiFieldsBuilder = new MultiFields.Builder();
7777
}
7878

79-
public T index(boolean index) {
79+
public Builder index(boolean index) {
8080
this.indexed = index;
8181
if (index == false) {
8282
this.fieldType.setIndexOptions(IndexOptions.NONE);
8383
}
84-
return builder;
84+
return this;
8585
}
8686

87-
public T store(boolean store) {
87+
public Builder store(boolean store) {
8888
this.fieldType.setStored(store);
89-
return builder;
89+
return this;
9090
}
9191

92-
public T docValues(boolean docValues) {
92+
public FieldMapper.Builder docValues(boolean docValues) {
9393
this.hasDocValues = docValues;
94-
return builder;
94+
return this;
9595
}
9696

97-
public T storeTermVectors(boolean termVectors) {
97+
public Builder storeTermVectors(boolean termVectors) {
9898
if (termVectors != this.fieldType.storeTermVectors()) {
9999
this.fieldType.setStoreTermVectors(termVectors);
100100
} // don't set it to false, it is default and might be flipped by a more specific option
101-
return builder;
101+
return this;
102102
}
103103

104-
public T storeTermVectorOffsets(boolean termVectorOffsets) {
104+
public Builder storeTermVectorOffsets(boolean termVectorOffsets) {
105105
if (termVectorOffsets) {
106106
this.fieldType.setStoreTermVectors(termVectorOffsets);
107107
}
108108
this.fieldType.setStoreTermVectorOffsets(termVectorOffsets);
109-
return builder;
109+
return this;
110110
}
111111

112-
public T storeTermVectorPositions(boolean termVectorPositions) {
112+
public Builder storeTermVectorPositions(boolean termVectorPositions) {
113113
if (termVectorPositions) {
114114
this.fieldType.setStoreTermVectors(termVectorPositions);
115115
}
116116
this.fieldType.setStoreTermVectorPositions(termVectorPositions);
117-
return builder;
117+
return this;
118118
}
119119

120-
public T storeTermVectorPayloads(boolean termVectorPayloads) {
120+
public Builder storeTermVectorPayloads(boolean termVectorPayloads) {
121121
if (termVectorPayloads) {
122122
this.fieldType.setStoreTermVectors(termVectorPayloads);
123123
}
124124
this.fieldType.setStoreTermVectorPayloads(termVectorPayloads);
125-
return builder;
125+
return this;
126126
}
127127

128-
public T boost(float boost) {
128+
public Builder boost(float boost) {
129129
this.boost = boost;
130-
return builder;
130+
return this;
131131
}
132132

133-
public T omitNorms(boolean omitNorms) {
133+
public Builder omitNorms(boolean omitNorms) {
134134
this.fieldType.setOmitNorms(omitNorms);
135135
this.omitNormsSet = true;
136-
return builder;
136+
return this;
137137
}
138138

139-
public T indexOptions(IndexOptions indexOptions) {
139+
public Builder indexOptions(IndexOptions indexOptions) {
140140
this.fieldType.setIndexOptions(indexOptions);
141141
this.indexOptionsSet = true;
142-
return builder;
142+
return this;
143143
}
144144

145-
public T indexAnalyzer(NamedAnalyzer indexAnalyzer) {
145+
public Builder indexAnalyzer(NamedAnalyzer indexAnalyzer) {
146146
this.indexAnalyzer = indexAnalyzer;
147-
return builder;
147+
return this;
148148
}
149149

150-
public T searchAnalyzer(NamedAnalyzer searchAnalyzer) {
150+
public Builder searchAnalyzer(NamedAnalyzer searchAnalyzer) {
151151
this.searchAnalyzer = searchAnalyzer;
152-
return builder;
152+
return this;
153153
}
154154

155-
public T searchQuoteAnalyzer(NamedAnalyzer searchQuoteAnalyzer) {
155+
public Builder searchQuoteAnalyzer(NamedAnalyzer searchQuoteAnalyzer) {
156156
this.searchQuoteAnalyzer = searchQuoteAnalyzer;
157-
return builder;
157+
return this;
158158
}
159159

160-
public T setEagerGlobalOrdinals(boolean eagerGlobalOrdinals) {
160+
public Builder setEagerGlobalOrdinals(boolean eagerGlobalOrdinals) {
161161
this.eagerGlobalOrdinals = eagerGlobalOrdinals;
162-
return builder;
162+
return this;
163163
}
164164

165-
public T addMultiField(Mapper.Builder<?> mapperBuilder) {
165+
public Builder addMultiField(Mapper.Builder mapperBuilder) {
166166
multiFieldsBuilder.add(mapperBuilder);
167-
return builder;
167+
return this;
168168
}
169169

170-
public T copyTo(CopyTo copyTo) {
170+
public Builder copyTo(CopyTo copyTo) {
171171
this.copyTo = copyTo;
172-
return builder;
172+
return this;
173173
}
174174

175175
protected String buildFullName(BuilderContext context) {
176176
return context.path().pathAsText(name);
177177
}
178178

179179
/** Set metadata on this field. */
180-
public T meta(Map<String, String> meta) {
180+
public Builder meta(Map<String, String> meta) {
181181
this.meta = meta;
182-
return (T) this;
182+
return this;
183183
}
184+
185+
@Override
186+
public abstract FieldMapper build(BuilderContext context);
184187
}
185188

186189
protected FieldType fieldType;

0 commit comments

Comments
 (0)