/** Creates an update for intermediate object mappers that are not on the stack, but parents of newMapper. */ private static ObjectMapper createExistingMapperUpdate(List<ObjectMapper> parentMappers, String[] nameParts, int i, DocumentMapper docMapper, Mapper newMapper) { String updateParentName = nameParts[i]; final ObjectMapper lastParent = parentMappers.get(parentMappers.size() - 1); if (parentMappers.size() > 1) { // only prefix with parent mapper if the parent mapper isn't the root (which has a fake name) updateParentName = lastParent.name() + '.' + nameParts[i]; } ObjectMapper updateParent = docMapper.objectMappers().get(updateParentName); assert updateParent != null : updateParentName + " doesn't exist"; return createUpdate(updateParent, nameParts, i + 1, newMapper); }
private static ObjectMapper.Dynamic dynamicOrDefault(ObjectMapper parentMapper, ParseContext context) { ObjectMapper.Dynamic dynamic = parentMapper.dynamic(); while (dynamic == null) { int lastDotNdx = parentMapper.name().lastIndexOf('.'); if (lastDotNdx == -1) { // no dot means we the parent is the root, so just delegate to the default outside the loop break; } String parentName = parentMapper.name().substring(0, lastDotNdx); parentMapper = context.docMapper().objectMappers().get(parentName); if (parentMapper == null) { // If parentMapper is ever null, it means the parent of the current mapper was dynamically created. // But in order to be created dynamically, the dynamic setting of that parent was necessarily true return ObjectMapper.Dynamic.TRUE; } dynamic = parentMapper.dynamic(); } if (dynamic == null) { return context.root().dynamic() == null ? ObjectMapper.Dynamic.TRUE : context.root().dynamic(); } return dynamic; }
for (ObjectMapper objectMapper : objectMappers().values()) { if (!objectMapper.nested().isNested()) { continue;
if (docMapper.hasNestedObjects()) { hasNested = true; for (ObjectMapper objectMapper : docMapper.objectMappers().values()) { if (objectMapper.nested().isNested()) { ObjectMapper parentObjectMapper = objectMapper.getParentObjectMapper(mapperService);
Mapper fieldMapper = docMapper.mappers().getMapper(field); if (fieldMapper == null) { if (docMapper.objectMappers().get(field) != null) {
null, String.join(".", paths), currentPath, existingFieldMapper.typeName()); mapper = context.docMapper().objectMappers().get(currentPath); if (mapper == null) {
/** Creates an update for intermediate object mappers that are not on the stack, but parents of newMapper. */ private static ObjectMapper createExistingMapperUpdate(List<ObjectMapper> parentMappers, String[] nameParts, int i, DocumentMapper docMapper, Mapper newMapper) { String updateParentName = nameParts[i]; final ObjectMapper lastParent = parentMappers.get(parentMappers.size() - 1); if (parentMappers.size() > 1) { // only prefix with parent mapper if the parent mapper isn't the root (which has a fake name) updateParentName = lastParent.name() + '.' + nameParts[i]; } ObjectMapper updateParent = docMapper.objectMappers().get(updateParentName); assert updateParent != null : updateParentName + " doesn't exist"; return createUpdate(updateParent, nameParts, i + 1, newMapper); }
/** Creates an update for intermediate object mappers that are not on the stack, but parents of newMapper. */ private static ObjectMapper createExistingMapperUpdate(List<ObjectMapper> parentMappers, String[] nameParts, int i, DocumentMapper docMapper, Mapper newMapper) { String updateParentName = nameParts[i]; final ObjectMapper lastParent = parentMappers.get(parentMappers.size() - 1); if (parentMappers.size() > 1) { // only prefix with parent mapper if the parent mapper isn't the root (which has a fake name) updateParentName = lastParent.name() + '.' + nameParts[i]; } ObjectMapper updateParent = docMapper.objectMappers().get(updateParentName); assert updateParent != null : updateParentName + " doesn't exist"; return createUpdate(updateParent, nameParts, i + 1, newMapper); }
/** Creates an update for intermediate object mappers that are not on the stack, but parents of newMapper. */ private static ObjectMapper createExistingMapperUpdate(List<ObjectMapper> parentMappers, String[] nameParts, int i, DocumentMapper docMapper, Mapper newMapper) { String updateParentName = nameParts[i]; final ObjectMapper lastParent = parentMappers.get(parentMappers.size() - 1); if (parentMappers.size() > 1) { // only prefix with parent mapper if the parent mapper isn't the root (which has a fake name) updateParentName = lastParent.name() + '.' + nameParts[i]; } ObjectMapper updateParent = docMapper.objectMappers().get(updateParentName); assert updateParent != null : updateParentName + " doesn't exist"; return createUpdate(updateParent, nameParts, i + 1, newMapper); }
/** * Returns the parent {@link ObjectMapper} instance of the specified object mapper or <code>null</code> if there * isn't any. */ // TODO: We should add: ObjectMapper#getParentObjectMapper() public ObjectMapper findParentObjectMapper(ObjectMapper objectMapper) { int indexOfLastDot = objectMapper.fullPath().lastIndexOf('.'); if (indexOfLastDot != -1) { String parentNestObjectPath = objectMapper.fullPath().substring(0, indexOfLastDot); return objectMappers().get(parentNestObjectPath); } else { return null; } }
/** * Returns the parent {@link ObjectMapper} instance of the specified object mapper or <code>null</code> if there * isn't any. */ // TODO: We should add: ObjectMapper#getParentObjectMapper() public ObjectMapper findParentObjectMapper(ObjectMapper objectMapper) { int indexOfLastDot = objectMapper.fullPath().lastIndexOf('.'); if (indexOfLastDot != -1) { String parentNestObjectPath = objectMapper.fullPath().substring(0, indexOfLastDot); return objectMappers().get(parentNestObjectPath); } else { return null; } }
public static XContentBuilder buildDocument(DocumentMapper documentMapper, Map<String, Object> docMap, boolean humanReadable, boolean forStaticDocument) throws IOException { XContentBuilder builder = XContentFactory.contentBuilder(XContentType.JSON).humanReadable(true); builder.startObject(); for(String field : docMap.keySet()) { if (field.equals(ParentFieldMapper.NAME)) continue; FieldMapper fieldMapper = documentMapper.mappers().smartNameFieldMapper(field); if (fieldMapper != null) { if (forStaticDocument && !isStaticOrPartitionKey(fieldMapper)) continue; toXContent(builder, fieldMapper, field, docMap.get(field)); } else { ObjectMapper objectMapper = documentMapper.objectMappers().get(field); if (objectMapper != null) { if (forStaticDocument && !isStaticOrPartitionKey(objectMapper)) continue; toXContent(builder, objectMapper, field, docMap.get(field)); } else { Loggers.getLogger(ClusterService.class).error("No mapper found for field "+field); throw new IOException("No mapper found for field "+field); } } } builder.endObject(); return builder; }
for (ObjectMapper objectMapper : objectMappers().values()) { if (!objectMapper.nested().isNested()) { continue;
private static ObjectMapper.Dynamic dynamicOrDefault(ObjectMapper parentMapper, ParseContext context) { ObjectMapper.Dynamic dynamic = parentMapper.dynamic(); while (dynamic == null) { int lastDotNdx = parentMapper.name().lastIndexOf('.'); if (lastDotNdx == -1) { // no dot means we the parent is the root, so just delegate to the default outside the loop break; } String parentName = parentMapper.name().substring(0, lastDotNdx); parentMapper = context.docMapper().objectMappers().get(parentName); if (parentMapper == null) { // If parentMapper is ever null, it means the parent of the current mapper was dynamically created. // But in order to be created dynamically, the dynamic setting of that parent was necessarily true return ObjectMapper.Dynamic.TRUE; } dynamic = parentMapper.dynamic(); } if (dynamic == null) { return context.root().dynamic() == null ? ObjectMapper.Dynamic.TRUE : context.root().dynamic(); } return dynamic; }
private static ObjectMapper.Dynamic dynamicOrDefault(ObjectMapper parentMapper, ParseContext context) { ObjectMapper.Dynamic dynamic = parentMapper.dynamic(); while (dynamic == null) { int lastDotNdx = parentMapper.name().lastIndexOf('.'); if (lastDotNdx == -1) { // no dot means we the parent is the root, so just delegate to the default outside the loop break; } String parentName = parentMapper.name().substring(0, lastDotNdx); parentMapper = context.docMapper().objectMappers().get(parentName); if (parentMapper == null) { // If parentMapper is ever null, it means the parent of the current mapper was dynamically created. // But in order to be created dynamically, the dynamic setting of that parent was necessarily true return ObjectMapper.Dynamic.TRUE; } dynamic = parentMapper.dynamic(); } if (dynamic == null) { return context.root().dynamic() == null ? ObjectMapper.Dynamic.TRUE : context.root().dynamic(); } return dynamic; }
private static ObjectMapper.Dynamic dynamicOrDefault(ObjectMapper parentMapper, ParseContext context) { ObjectMapper.Dynamic dynamic = parentMapper.dynamic(); while (dynamic == null) { int lastDotNdx = parentMapper.name().lastIndexOf('.'); if (lastDotNdx == -1) { // no dot means we the parent is the root, so just delegate to the default outside the loop break; } String parentName = parentMapper.name().substring(0, lastDotNdx); parentMapper = context.docMapper().objectMappers().get(parentName); if (parentMapper == null) { // If parentMapper is ever null, it means the parent of the current mapper was dynamically created. // But in order to be created dynamically, the dynamic setting of that parent was necessarily true return ObjectMapper.Dynamic.TRUE; } dynamic = parentMapper.dynamic(); } if (dynamic == null) { return context.root().dynamic() == null ? ObjectMapper.Dynamic.TRUE : context.root().dynamic(); } return dynamic; }
for (ObjectMapper objectMapper : objectMappers().values()) { if (!objectMapper.nested().isNested()) { continue;
for (ObjectMapper objectMapper : objectMappers().values()) { if (!objectMapper.nested().isNested()) { continue;
for (ObjectMapper objectMapper : objectMappers().values()) { if (!objectMapper.nested().isNested()) { continue;
null, String.join(".", paths), currentPath, existingFieldMapper.typeName()); mapper = context.docMapper().objectMappers().get(currentPath); if (mapper == null) {