/** * Target the identifiers matching any of the values in a collection. * <p> * @param values the collection of identifiers to match. * @return {@code this} for method chaining. */ default MatchIdPredicateContext matchingAny(Collection<Object> values) { MatchIdPredicateContext context = null; for ( Object value : values ) { context = matching( value ); } return context; } }
@Test public void match_multiple_ids() { StubMappingSearchTarget searchTarget = indexManager.createSearchTarget(); SearchQuery<DocumentReference> query = searchTarget.query() .asReference() .predicate( f -> f.id() .matching( 1 ) .matching( 3 ) .toPredicate() ) .build(); assertThat( query ) .hasDocRefHitsAnyOrder( INDEX_NAME, DOCUMENT_1, DOCUMENT_3 ); }
@Test public void match_any_and_match_single_id() { StubMappingSearchTarget searchTarget = indexManager.createSearchTarget(); SearchQuery<DocumentReference> query = searchTarget.query() .asReference() .predicate( f -> f.id() .matching( DOCUMENT_2 ) .matchingAny( Arrays.asList( DOCUMENT_1 ) ) .toPredicate() ) .build(); assertThat( query ) .hasDocRefHitsAnyOrder( INDEX_NAME, DOCUMENT_1, DOCUMENT_2 ); }
@Test public void match_any_ids() { StubMappingSearchTarget searchTarget = indexManager.createSearchTarget(); SearchQuery<DocumentReference> query = searchTarget.query() .asReference() .predicate( f -> f.id() .matchingAny( Arrays.asList( DOCUMENT_1, DOCUMENT_3 ) ) .toPredicate() ) .build(); assertThat( query ) .hasDocRefHitsAnyOrder( INDEX_NAME, DOCUMENT_1, DOCUMENT_3 ); }
@Test public void match_multiple_ids() { StubMappingSearchTarget searchTarget = indexManager.createSearchTarget(); SearchQuery<DocumentReference> query = searchTarget.query() .asReference() .predicate( f -> f.id() .matching( DOCUMENT_1 ) .matching( DOCUMENT_3 ) .toPredicate() ) .build(); assertThat( query ) .hasDocRefHitsAnyOrder( INDEX_NAME, DOCUMENT_1, DOCUMENT_3 ); }
@Test public void match_any_and_match_single_id() { StubMappingSearchTarget searchTarget = indexManager.createSearchTarget(); SearchQuery<DocumentReference> query = searchTarget.query() .asReference() .predicate( f -> f.id() .matching( 2 ) .matchingAny( Arrays.asList( 1 ) ) .toPredicate() ) .build(); assertThat( query ) .hasDocRefHitsAnyOrder( INDEX_NAME, DOCUMENT_1, DOCUMENT_2 ); }
@Test public void match_any_ids() { StubMappingSearchTarget searchTarget = indexManager.createSearchTarget(); SearchQuery<DocumentReference> query = searchTarget.query() .asReference() .predicate( f -> f.id() .matchingAny( Arrays.asList( 1, 3 ) ) .toPredicate() ) .build(); assertThat( query ) .hasDocRefHitsAnyOrder( INDEX_NAME, DOCUMENT_1, DOCUMENT_3 ); }
@Test public void match_id() { StubMappingSearchTarget searchTarget = indexManager.createSearchTarget(); SearchQuery<DocumentReference> query = searchTarget.query() .asReference() .predicate( f -> f.id().matching( 1 ).toPredicate() ) .build(); assertThat( query ) .hasDocRefHitsAnyOrder( INDEX_NAME, DOCUMENT_1 ); }
@Test public void match_any_single_id() { StubMappingSearchTarget searchTarget = indexManager.createSearchTarget(); SearchQuery<DocumentReference> query = searchTarget.query() .asReference() .predicate( f -> f.id() .matchingAny( Arrays.asList( DOCUMENT_1 ) ) .toPredicate() ) .build(); assertThat( query ) .hasDocRefHitsAnyOrder( INDEX_NAME, DOCUMENT_1 ); }
/** * Target the identifiers matching any of the values in a collection. * <p> * @param values the collection of identifiers to match. * @return {@code this} for method chaining. */ default MatchIdPredicateContext matchingAny(Collection<Object> values) { MatchIdPredicateContext context = null; for ( Object value : values ) { context = matching( value ); } return context; } }
@Test public void match_id() { StubMappingSearchTarget searchTarget = indexManager.createSearchTarget(); SearchQuery<DocumentReference> query = searchTarget.query() .asReference() .predicate( f -> f.id().matching( DOCUMENT_1 ).toPredicate() ) .build(); assertThat( query ) .hasDocRefHitsAnyOrder( INDEX_NAME, DOCUMENT_1 ); }
@Test public void match_any_single_id() { StubMappingSearchTarget searchTarget = indexManager.createSearchTarget(); SearchQuery<DocumentReference> query = searchTarget.query() .asReference() .predicate( f -> f.id() .matchingAny( Arrays.asList( 1 ) ) .toPredicate() ) .build(); assertThat( query ) .hasDocRefHitsAnyOrder( INDEX_NAME, DOCUMENT_1 ); }
@Test @TestForIssue(jiraKey = "HSEARCH-3421") public void id_predicate_takes_tenantId_into_account() { StubMappingSearchTarget searchTarget = indexManager.createSearchTarget(); SearchQuery<List<?>> query = searchTarget.query( tenant1SessionContext ) .asProjection( f -> f.composite( f.field( "string", String.class ), f.field( "integer", Integer.class ) ) .toProjection() ) .predicate( f -> f.id().matching( DOCUMENT_ID_1 ).toPredicate() ) .build(); assertThat( query ).hasListHitsAnyOrder( b -> b.list( STRING_VALUE_1, INTEGER_VALUE_1 ) ); query = searchTarget.query( tenant2SessionContext ) .asProjection( f -> f.composite( f.field( "string", String.class ), f.field( "integer", Integer.class ) ) .toProjection() ) .predicate( f -> f.id().matching( DOCUMENT_ID_1 ).toPredicate() ) .build(); assertThat( query ).hasListHitsAnyOrder( b -> b.list( STRING_VALUE_1, INTEGER_VALUE_3 ) ); }
.extendedProjection( "string1", String.class ) .predicate( f -> f.id().matching( DOCUMENT_1 ).toPredicate() ) .build(); assertThat( query ) .predicate( f -> f.id().matching( DOCUMENT_1 ).toPredicate() ) .build(); assertThat( query ) .predicate( f -> f.id().matching( DOCUMENT_1 ).toPredicate() ) .build(); assertThat( query ) .predicate( f -> f.id().matching( DOCUMENT_1 ).toPredicate() ) .build(); assertThat( query )