Mapping: Improve applying guessed types on dynamic templates, closes #1446.
This commit is contained in:
parent
75f522adaa
commit
c5ebe6e86f
|
@ -603,7 +603,7 @@ public class ObjectMapper implements Mapper, AllFieldMapper.IncludeInAll {
|
||||||
// we need to do it here so we can handle things like attachment templates, where calling
|
// we need to do it here so we can handle things like attachment templates, where calling
|
||||||
// text (to see if its a date) causes the binary value to be cleared
|
// text (to see if its a date) causes the binary value to be cleared
|
||||||
if (!resolved) {
|
if (!resolved) {
|
||||||
Mapper.Builder builder = context.root().findTemplateBuilder(context, currentFieldName, "string");
|
Mapper.Builder builder = context.root().findTemplateBuilder(context, currentFieldName, "string", null);
|
||||||
if (builder != null) {
|
if (builder != null) {
|
||||||
mapper = builder.build(builderContext);
|
mapper = builder.build(builderContext);
|
||||||
resolved = true;
|
resolved = true;
|
||||||
|
|
|
@ -202,7 +202,11 @@ public class RootObjectMapper extends ObjectMapper {
|
||||||
}
|
}
|
||||||
|
|
||||||
public Mapper.Builder findTemplateBuilder(ParseContext context, String name, String dynamicType) {
|
public Mapper.Builder findTemplateBuilder(ParseContext context, String name, String dynamicType) {
|
||||||
DynamicTemplate dynamicTemplate = findTemplate(context.path(), name, dynamicType);
|
return findTemplateBuilder(context, name, dynamicType, dynamicType);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Mapper.Builder findTemplateBuilder(ParseContext context, String name, String dynamicType, String matchType) {
|
||||||
|
DynamicTemplate dynamicTemplate = findTemplate(context.path(), name, matchType);
|
||||||
if (dynamicTemplate == null) {
|
if (dynamicTemplate == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -215,9 +219,9 @@ public class RootObjectMapper extends ObjectMapper {
|
||||||
return typeParser.parse(name, dynamicTemplate.mappingForName(name, dynamicType), parserContext);
|
return typeParser.parse(name, dynamicTemplate.mappingForName(name, dynamicType), parserContext);
|
||||||
}
|
}
|
||||||
|
|
||||||
public DynamicTemplate findTemplate(ContentPath path, String name, String dynamicType) {
|
public DynamicTemplate findTemplate(ContentPath path, String name, String matchType) {
|
||||||
for (DynamicTemplate dynamicTemplate : dynamicTemplates) {
|
for (DynamicTemplate dynamicTemplate : dynamicTemplates) {
|
||||||
if (dynamicTemplate.match(path, name, dynamicType)) {
|
if (dynamicTemplate.match(path, name, matchType)) {
|
||||||
return dynamicTemplate;
|
return dynamicTemplate;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue