Skip to content

Commit f1f7d72

Browse files
committed
refactor: inject IndexWriter through constructor
With the latest spring upgrade, indexWriter was not injected using @Autowired annotation on the attribute. By using constructor injection, the tests were green again (cherry picked from commit e58fc11)
1 parent 45c5468 commit f1f7d72

File tree

6 files changed

+40
-14
lines changed

6 files changed

+40
-14
lines changed

gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/rest/api/service/impl/search/lucene/searcher/AbstractDocumentSearcher.java

+4-1
Original file line numberDiff line numberDiff line change
@@ -53,9 +53,12 @@ protected static void increaseMaxClauseCountIfNecessary(int size) {
5353

5454
protected Analyzer analyzer = new CustomWhitespaceAnalyzer();
5555

56-
@Autowired
5756
protected IndexWriter indexWriter;
5857

58+
protected AbstractDocumentSearcher(IndexWriter indexWriter) {
59+
this.indexWriter = indexWriter;
60+
}
61+
5962
protected SearchResult search(Query query) throws TechnicalException {
6063
return search(query, null, null, FIELD_ID);
6164
}

gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/rest/api/service/impl/search/lucene/searcher/ApiDocumentSearcher.java

+5
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import java.util.Optional;
3838
import java.util.Set;
3939
import org.apache.lucene.analysis.core.KeywordAnalyzer;
40+
import org.apache.lucene.index.IndexWriter;
4041
import org.apache.lucene.index.Term;
4142
import org.apache.lucene.queryparser.classic.MultiFieldQueryParser;
4243
import org.apache.lucene.queryparser.classic.ParseException;
@@ -120,6 +121,10 @@ public class ApiDocumentSearcher extends AbstractDocumentSearcher {
120121
FIELD_DEFINITION_VERSION,
121122
};
122123

124+
public ApiDocumentSearcher(IndexWriter indexWriter) {
125+
super(indexWriter);
126+
}
127+
123128
private BooleanQuery.Builder buildApiQuery(ExecutionContext executionContext, Optional<Query> filterQuery) {
124129
BooleanQuery.Builder apiQuery = new BooleanQuery.Builder()
125130
.add(new TermQuery(new Term(FIELD_TYPE, FIELD_API_TYPE_VALUE)), BooleanClause.Occur.FILTER);

gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/rest/api/service/impl/search/lucene/searcher/PageDocumentSearcher.java

+5
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import io.gravitee.rest.api.service.common.ExecutionContext;
2424
import io.gravitee.rest.api.service.impl.search.SearchResult;
2525
import java.util.Optional;
26+
import org.apache.lucene.index.IndexWriter;
2627
import org.apache.lucene.index.Term;
2728
import org.apache.lucene.queryparser.classic.MultiFieldQueryParser;
2829
import org.apache.lucene.queryparser.classic.ParseException;
@@ -40,6 +41,10 @@ public class PageDocumentSearcher extends AbstractDocumentSearcher {
4041

4142
protected static final String FIELD_TYPE_VALUE = "page";
4243

44+
public PageDocumentSearcher(IndexWriter indexWriter) {
45+
super(indexWriter);
46+
}
47+
4348
@Override
4449
public SearchResult searchReference(ExecutionContext executionContext, io.gravitee.rest.api.service.search.query.Query query)
4550
throws TechnicalException {

gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/rest/api/service/impl/search/lucene/searcher/UserDocumentSearcher.java

+5
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import io.gravitee.rest.api.service.search.query.Query;
2626
import java.util.UUID;
2727
import org.apache.commons.lang3.StringUtils;
28+
import org.apache.lucene.index.IndexWriter;
2829
import org.apache.lucene.index.Term;
2930
import org.apache.lucene.queryparser.classic.MultiFieldQueryParser;
3031
import org.apache.lucene.queryparser.classic.ParseException;
@@ -45,6 +46,10 @@ public class UserDocumentSearcher extends AbstractDocumentSearcher {
4546

4647
protected static final String FIELD_TYPE_VALUE = "user";
4748

49+
public UserDocumentSearcher(IndexWriter indexWriter) {
50+
super(indexWriter);
51+
}
52+
4853
@Override
4954
public SearchResult search(ExecutionContext executionContext, Query query) throws TechnicalException {
5055
QueryParser parser = new MultiFieldQueryParser(

gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/test/java/io/gravitee/rest/api/service/impl/SearchEngineServiceTest.java

+20-12
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import static io.gravitee.rest.api.service.impl.search.lucene.transformer.ApiDocumentTransformer.FIELD_DEFINITION_VERSION;
2020
import static io.gravitee.rest.api.service.impl.search.lucene.transformer.ApiDocumentTransformer.FIELD_NAME;
2121
import static org.assertj.core.api.Assertions.assertThat;
22+
import static org.assertj.core.api.Assertions.in;
2223
import static org.mockito.Mockito.mock;
2324

2425
import inmemory.ApiCrudServiceInMemory;
@@ -62,24 +63,27 @@
6263
import java.util.List;
6364
import java.util.Map;
6465
import java.util.Set;
66+
import org.apache.lucene.index.IndexWriter;
6567
import org.apache.lucene.store.Directory;
6668
import org.apache.lucene.store.FSDirectory;
67-
import org.junit.Before;
68-
import org.junit.Test;
69+
import org.junit.jupiter.api.BeforeEach;
70+
import org.junit.jupiter.api.Test;
71+
import org.junit.jupiter.api.extension.ExtendWith;
6972
import org.junit.runner.RunWith;
7073
import org.springframework.beans.factory.annotation.Autowired;
7174
import org.springframework.context.annotation.Bean;
7275
import org.springframework.context.annotation.Configuration;
7376
import org.springframework.context.annotation.Import;
7477
import org.springframework.test.context.ContextConfiguration;
78+
import org.springframework.test.context.junit.jupiter.SpringExtension;
7579
import org.springframework.test.context.junit4.SpringRunner;
7680
import org.springframework.test.context.support.AnnotationConfigContextLoader;
7781

7882
/**
7983
* @author Guillaume Cusnieux (guillaume.cusnieux at graviteesource.com)
8084
* @author GraviteeSource Team
8185
*/
82-
@RunWith(SpringRunner.class)
86+
@ExtendWith(SpringExtension.class)
8387
@ContextConfiguration(classes = { SearchEngineServiceTest.TestConfig.class }, loader = AnnotationConfigContextLoader.class)
8488
public class SearchEngineServiceTest {
8589

@@ -629,7 +633,7 @@ public void shouldFindWithExcludedFilters_multiple() {
629633
assertThat(matches.getHits()).isZero();
630634
}
631635

632-
@Before
636+
@BeforeEach
633637
public void initIndexer() {
634638
// TODO: Remove this hack and use @BeforeAll when move to junit 5.x
635639
if (!isIndexed) {
@@ -720,18 +724,18 @@ public Directory indexDirectory() throws IOException {
720724
}
721725

722726
@Bean
723-
public ApiDocumentSearcher apiDocumentSearcher() {
724-
return new ApiDocumentSearcher();
727+
public ApiDocumentSearcher apiDocumentSearcher(IndexWriter indexWriter) {
728+
return new ApiDocumentSearcher(indexWriter);
725729
}
726730

727731
@Bean
728-
public PageDocumentSearcher pageDocumentSearcher() {
729-
return new PageDocumentSearcher();
732+
public PageDocumentSearcher pageDocumentSearcher(IndexWriter indexWriter) {
733+
return new PageDocumentSearcher(indexWriter);
730734
}
731735

732736
@Bean
733-
public UserDocumentSearcher userDocumentSearcher() {
734-
return new UserDocumentSearcher();
737+
public UserDocumentSearcher userDocumentSearcher(IndexWriter indexWriter) {
738+
return new UserDocumentSearcher(indexWriter);
735739
}
736740

737741
@Bean
@@ -745,8 +749,12 @@ public Collection<DocumentTransformer> transformers() {
745749
}
746750

747751
@Bean
748-
public Collection<DocumentSearcher> searchers() {
749-
return Arrays.asList(new ApiDocumentSearcher(), new PageDocumentSearcher(), new UserDocumentSearcher());
752+
public Collection<DocumentSearcher> searchers(
753+
ApiDocumentSearcher apiDocumentSearcher,
754+
PageDocumentSearcher pageDocumentSearcher,
755+
UserDocumentSearcher userDocumentSearcher
756+
) {
757+
return Arrays.asList(apiDocumentSearcher, pageDocumentSearcher, userDocumentSearcher);
750758
}
751759

752760
@Bean

gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/test/java/io/gravitee/rest/api/service/impl/search/lucene/searcher/ApiDocumentSearcherTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
@RunWith(MockitoJUnitRunner.class)
3232
public class ApiDocumentSearcherTest {
3333

34-
ApiDocumentSearcher searcher = new ApiDocumentSearcher();
34+
ApiDocumentSearcher searcher = new ApiDocumentSearcher(null);
3535

3636
@Test
3737
public void shouldCompleteQueryWithFilters() {

0 commit comments

Comments
 (0)