/** * Map a DBObject for indexing * * @param dbObj */ private Map<String, Object> createObjectMap(DBObject dbObj) { Map<String, Object> mapData = new HashMap<String, Object>(); for (String key : dbObj.keySet()) { Object value = dbObj.get(key); if (value instanceof DBRef) { mapData.put(key, this.convertDbRef((DBRef) value)); } else if (value instanceof BasicDBList) { mapData.put(key, ((BasicBSONList) value).toArray()); } else if (value instanceof BasicDBObject) { mapData.put(key, this.createObjectMap((DBObject) value)); } else { mapData.put(key, value); } } return mapData; }
private XContentBuilder build(final DBObject data, final String objectId) throws IOException { if (data instanceof GridFSDBFile) { logger.info("Add Attachment: {} to index {} / type {}", objectId, definition.getIndexName(), definition.getTypeName()); return MongoDBHelper.serialize((GridFSDBFile) data); } else { Map<String, Object> mapData = this.createObjectMap(data); return XContentFactory.jsonBuilder().map(mapData); } }