@Override public T visit(final BooleanQuery booleanQuery) { for (final BooleanClause clause : booleanQuery.getClauses()) { clause.accept(this); } return null; }
@Override public Query clone(final BooleanParent newParent, final Occur occur, final boolean generated) { final Query q = new Query(generated); for (final BooleanClause clause : clauses) { q.addClause(clause.clone(q, generated)); } return q; }
@Test public void testThatClonePreservesGeneratedAndOccur() throws Exception { BooleanQuery bq = new BooleanQuery(null, MUST_NOT, true); final BooleanClause clone = bq.clone(null); assertEquals(MUST_NOT, clone.getOccur()); assertTrue(clone.isGenerated()); }
@Test public void testThatGeneratedIsPropagatedToClauses() throws Exception { BooleanQuery bq = new BooleanQuery(null, SHOULD, false); DisjunctionMaxQuery dmq = new DisjunctionMaxQuery(bq, Clause.Occur.SHOULD, false); bq.addClause(dmq); dmq.addClause(new Term(dmq, "Test", false)); final BooleanQuery clone = (BooleanQuery) bq.clone(null, MUST, true); assertThat(clone, bq(must(), dmq(should(), term("Test", true)))); assertTrue(clone.isGenerated()); assertTrue(clone.getClauses().get(0).isGenerated()); assertEquals(MUST, clone.getOccur()); } }
@Override public T visit(final Query query) { for (final BooleanClause clause : query.getClauses()) { clause.accept(this); } return null; }
public BooleanQuery clone(final BooleanParent newParent, final Occur occur, final boolean generated) { final BooleanQuery bq = new BooleanQuery(newParent, occur, generated); for (final BooleanClause clause : clauses) { bq.addClause(clause.clone(bq, generated)); } return bq; } }
@Override public Node visit(final Query query) { Query clone = new Query(); newParentStack.add(clone); for (final BooleanClause clause : query.getClauses()) { clone.addClause((BooleanClause) clause.accept(this)); } newParentStack.removeLast(); return clone; }
@Override public Node visit(final BooleanQuery booleanQuery) { final BooleanQuery newBQ = new BooleanQuery((BooleanParent) getNewParent(), booleanQuery.occur, true); newParentStack.add(newBQ); for (final BooleanClause clause : booleanQuery.getClauses()) { newBQ.addClause((BooleanClause) clause.accept(this)); } newParentStack.removeLast(); return newBQ; }