Skip to content

Commit 64446b2

Browse files
committed
HSEARCH-5158 Return non-null mass indexer from a standalone search scope
1 parent 81189dd commit 64446b2

File tree

2 files changed

+49
-4
lines changed
  • integrationtest/mapper/pojo-base/src/test/java/org/hibernate/search/integrationtest/mapper/pojo/massindexing
  • mapper/pojo-standalone/src/main/java/org/hibernate/search/mapper/pojo/standalone/scope/impl

2 files changed

+49
-4
lines changed

integrationtest/mapper/pojo-base/src/test/java/org/hibernate/search/integrationtest/mapper/pojo/massindexing/MassIndexingBaseIT.java

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,51 @@ void defaultMassIndexerStartAndWait() throws Exception {
114114
backendMock.verifyExpectationsMet();
115115
}
116116

117+
@Test
118+
void defaultMassIndexerFromScopeStartAndWait() throws Exception {
119+
try ( SearchSession searchSession = mapping.createSession() ) {
120+
MassIndexer indexer = searchSession.scope( Book.class ).massIndexer( (Object) null )
121+
// Simulate passing information to connect to a DB, ...
122+
.context( StubLoadingContext.class, loadingContext );
123+
124+
// add operations on indexes can follow any random order,
125+
// since they are executed by different threads
126+
backendMock.expectWorks(
127+
Book.NAME, DocumentCommitStrategy.NONE, DocumentRefreshStrategy.NONE
128+
)
129+
.add( "1", b -> b
130+
.field( "title", TITLE_1 )
131+
.field( "author", AUTHOR_1 )
132+
)
133+
.add( "2", b -> b
134+
.field( "title", TITLE_2 )
135+
.field( "author", AUTHOR_2 )
136+
)
137+
.add( "3", b -> b
138+
.field( "title", TITLE_3 )
139+
.field( "author", AUTHOR_3 )
140+
);
141+
142+
// purgeAtStart and mergeSegmentsAfterPurge are enabled by default,
143+
// so we expect 1 purge, 1 mergeSegments and 1 flush calls in this order:
144+
backendMock.expectIndexScaleWorks( Book.NAME, searchSession.tenantIdentifierValue() )
145+
.purge()
146+
.mergeSegments()
147+
.flush()
148+
.refresh();
149+
150+
try {
151+
indexer.startAndWait();
152+
}
153+
catch (InterruptedException e) {
154+
fail( "Unexpected InterruptedException: " + e.getMessage() );
155+
}
156+
157+
}
158+
159+
backendMock.verifyExpectationsMet();
160+
}
161+
117162
@Test
118163
void dropAndCreateSchemaOnStart() {
119164
try ( SearchSession searchSession = mapping.createSession() ) {

mapper/pojo-standalone/src/main/java/org/hibernate/search/mapper/pojo/standalone/scope/impl/SearchScopeImpl.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
*/
77
package org.hibernate.search.mapper.pojo.standalone.scope.impl;
88

9+
import static org.hibernate.search.util.common.impl.CollectionHelper.asSetIgnoreNull;
10+
911
import java.util.Collections;
1012
import java.util.Set;
1113
import java.util.stream.Collectors;
@@ -33,7 +35,6 @@
3335
import org.hibernate.search.mapper.pojo.standalone.tenancy.impl.TenancyConfiguration;
3436
import org.hibernate.search.mapper.pojo.standalone.work.SearchWorkspace;
3537
import org.hibernate.search.mapper.pojo.standalone.work.impl.SearchWorkspaceImpl;
36-
import org.hibernate.search.util.common.impl.Contracts;
3738

3839
public class SearchScopeImpl<E> implements SearchScope<E> {
3940

@@ -118,13 +119,12 @@ public MassIndexer massIndexer() {
118119
@Override
119120
@SuppressWarnings("removal")
120121
public MassIndexer massIndexer(String tenantId) {
121-
Contracts.assertNotNull( tenantId, "tenant identifier" );
122-
return massIndexer( Collections.singleton( tenantId ) );
122+
return massIndexer( (Object) tenantId );
123123
}
124124

125125
@Override
126126
public MassIndexer massIndexer(Object tenantId) {
127-
return null;
127+
return massIndexer( asSetIgnoreNull( tenantId ) );
128128
}
129129

130130
@Override

0 commit comments

Comments
 (0)