public Filter getInnerFilter() throws IOException { if (filterParsed) { return innerFilter; } else { if (path == null) { throw new QueryParsingException(parseContext.index(), "[nested] requires 'path' field"); } if (!filterFound) { throw new QueryParsingException( parseContext.index(), "[nested] requires either 'query' or 'filter' field"); } setPathLevel(); XContentParser old = parseContext.parser(); try { XContentParser innerParser = XContentHelper.createParser(source); parseContext.parser(innerParser); innerFilter = parseContext.parseInnerFilter(); filterParsed = true; return innerFilter; } finally { resetPathLevel(); parseContext.parser(old); } } }
public void filter() throws IOException { if (path != null) { setPathLevel(); try { innerFilter = parseContext.parseInnerFilter(); } finally { resetPathLevel(); } filterParsed = true; } else { source = XContentFactory.smileBuilder().copyCurrentStructure(parseContext.parser()).bytes(); } filterFound = true; }