Skip to content

Commit ec98be3

Browse files
authored
Merge pull request #5606 from Sage-Bionetworks/develop
Merge develop into 587
2 parents bd52d4b + 34f2498 commit ec98be3

37 files changed

Lines changed: 4043 additions & 304 deletions

File tree

client/synapseJavaClient/src/main/java/org/sagebionetworks/client/AsynchJobType.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
import org.sagebionetworks.repo.model.table.DownloadFromTableResult;
4646
import org.sagebionetworks.repo.model.table.DownloadPFBResult;
4747
import org.sagebionetworks.repo.model.table.HasEntityId;
48+
import org.sagebionetworks.repo.model.search.SearchQueryResults;
4849
import org.sagebionetworks.repo.model.table.QueryResult;
4950
import org.sagebionetworks.repo.model.table.QueryResultBundle;
5051
import org.sagebionetworks.repo.model.table.RowReferenceSetResults;
@@ -82,7 +83,8 @@ public enum AsynchJobType {
8283
GridCsvDownload("/grid/download/csv", DownloadFromGridResult.class, RestEndpointType.repo),
8384
GridExportRecordSet("/grid/export/recordset", GridRecordSetExportResponse.class, RestEndpointType.repo),
8485
GridQuery("/grid/session/query", GridQueryJobResponse.class, RestEndpointType.repo),
85-
GridUpdate("/grid/session/update", GridUpdateJobResponse.class, RestEndpointType.repo)
86+
GridUpdate("/grid/session/update", GridUpdateJobResponse.class, RestEndpointType.repo),
87+
SearchIndexQuery("/search/query", SearchQueryResults.class, RestEndpointType.repo)
8688
;
8789

8890
String prefix;

client/synapseJavaClient/src/main/java/org/sagebionetworks/client/SynapseClient.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -310,6 +310,7 @@
310310
import org.sagebionetworks.repo.model.schema.Organization;
311311
import org.sagebionetworks.repo.model.schema.ValidationResults;
312312
import org.sagebionetworks.repo.model.schema.ValidationSummaryStatistics;
313+
import org.sagebionetworks.repo.model.search.SearchQueryResults;
313314
import org.sagebionetworks.repo.model.search.SearchResults;
314315
import org.sagebionetworks.repo.model.search.query.SearchQuery;
315316
import org.sagebionetworks.repo.model.search.table.BindSearchConfigToEntityRequest;
@@ -324,6 +325,7 @@
324325
import org.sagebionetworks.repo.model.search.table.ListTextAnalyzersResponse;
325326
import org.sagebionetworks.repo.model.search.table.SearchConfigBinding;
326327
import org.sagebionetworks.repo.model.search.table.SearchConfiguration;
328+
import org.sagebionetworks.repo.model.search.table.SearchIndexQuery;
327329
import org.sagebionetworks.repo.model.search.table.SynonymSet;
328330
import org.sagebionetworks.repo.model.search.table.TextAnalyzer;
329331
import org.sagebionetworks.repo.model.statistics.ObjectStatisticsRequest;
@@ -4764,5 +4766,11 @@ CreateGridPresignedUrlResponse createGridPresignedUrl(CreateGridPresignedUrlRequ
47644766

47654767
void clearSearchConfigBindingForEntity(String entityId) throws SynapseException;
47664768

4769+
SearchQueryResults searchAutocomplete(SearchIndexQuery request) throws SynapseException;
4770+
4771+
String startSearchIndexQuery(SearchIndexQuery request) throws SynapseException;
4772+
4773+
SearchQueryResults getSearchIndexQueryResults(String asyncJobToken) throws SynapseException, SynapseResultNotReadyException;
4774+
47674775
}
47684776

client/synapseJavaClient/src/main/java/org/sagebionetworks/client/SynapseClientImpl.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -355,6 +355,7 @@
355355
import org.sagebionetworks.repo.model.schema.Organization;
356356
import org.sagebionetworks.repo.model.schema.ValidationResults;
357357
import org.sagebionetworks.repo.model.schema.ValidationSummaryStatistics;
358+
import org.sagebionetworks.repo.model.search.SearchQueryResults;
358359
import org.sagebionetworks.repo.model.search.SearchResults;
359360
import org.sagebionetworks.repo.model.search.query.SearchQuery;
360361
import org.sagebionetworks.repo.model.statistics.ObjectStatisticsRequest;
@@ -420,6 +421,7 @@
420421
import org.sagebionetworks.repo.model.search.table.ListTextAnalyzersResponse;
421422
import org.sagebionetworks.repo.model.search.table.SearchConfigBinding;
422423
import org.sagebionetworks.repo.model.search.table.SearchConfiguration;
424+
import org.sagebionetworks.repo.model.search.table.SearchIndexQuery;
423425
import org.sagebionetworks.repo.model.search.table.SynonymSet;
424426
import org.sagebionetworks.repo.model.search.table.TextAnalyzer;
425427
import org.sagebionetworks.repo.model.v2.wiki.V2WikiHeader;
@@ -792,6 +794,7 @@ public class SynapseClientImpl extends BaseClientImpl implements SynapseClient {
792794
private static final String SEARCH_COLUMN_ANALYZER_OVERRIDE_LIST = SEARCH_COLUMN_ANALYZER_OVERRIDE + "/list";
793795
private static final String SEARCH_CONFIGURATION = "/search/configuration";
794796
private static final String SEARCH_CONFIGURATION_LIST = SEARCH_CONFIGURATION + "/list";
797+
private static final String SEARCH_AUTOCOMPLETE = "/search/autocomplete";
795798
private static final String ENTITY_SEARCH_CONFIG_BINDING = "/entity/%s/searchconfig/binding";
796799

797800
/**
@@ -6831,4 +6834,22 @@ public ListColumnAnalyzerOverridesResponse listColumnAnalyzerOverrides(ListColum
68316834
return postJSONEntity(getRepoEndpoint(), SEARCH_COLUMN_ANALYZER_OVERRIDE_LIST, request, ListColumnAnalyzerOverridesResponse.class);
68326835
}
68336836

6837+
@Override
6838+
public SearchQueryResults searchAutocomplete(SearchIndexQuery request) throws SynapseException {
6839+
ValidateArgument.required(request, "request");
6840+
return postJSONEntity(getRepoEndpoint(), SEARCH_AUTOCOMPLETE, request, SearchQueryResults.class);
6841+
}
6842+
6843+
@Override
6844+
public String startSearchIndexQuery(SearchIndexQuery request) throws SynapseException {
6845+
ValidateArgument.required(request, "request");
6846+
return startAsynchJob(AsynchJobType.SearchIndexQuery, request);
6847+
}
6848+
6849+
@Override
6850+
public SearchQueryResults getSearchIndexQueryResults(String asyncJobToken) throws SynapseException, SynapseResultNotReadyException {
6851+
ValidateArgument.required(asyncJobToken, "asyncJobToken");
6852+
return (SearchQueryResults) getAsyncResult(AsynchJobType.SearchIndexQuery, asyncJobToken, (String) null);
6853+
}
6854+
68346855
}

integration-test/src/test/java/org/sagebionetworks/ITColumnAnalyzerOverrideTest.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import static org.junit.jupiter.api.Assertions.assertTrue;
66

77
import java.util.Arrays;
8+
import java.util.UUID;
89

910
import org.junit.jupiter.api.BeforeEach;
1011
import org.junit.jupiter.api.Test;
@@ -41,13 +42,17 @@ public void testColumnAnalyzerOverrideCRUD() throws SynapseException {
4142
String orgName = firstAnalyzer.getOrganizationName();
4243
String analyzerQualifiedName = orgName + "-" + firstAnalyzer.getName();
4344

45+
// Names are unique per organization with no delete endpoint, so use a UUID
46+
// suffix to avoid collisions across re-runs of the test.
47+
String name = "IT_TEST_OVERRIDE_" + UUID.randomUUID().toString().replace("-", "");
48+
4449
// CREATE
4550
ColumnAnalyzerOverrideEntry entry = new ColumnAnalyzerOverrideEntry();
4651
entry.setColumnName("diagnosis");
4752
entry.setIndexAnalyzer(analyzerQualifiedName);
4853

4954
ColumnAnalyzerOverride toCreate = new ColumnAnalyzerOverride();
50-
toCreate.setName("IT_TEST_OVERRIDE");
55+
toCreate.setName(name);
5156
toCreate.setDescription("Integration test column analyzer override");
5257
toCreate.setOrganizationName(orgName);
5358
toCreate.setOverrides(Arrays.asList(entry));
@@ -56,15 +61,15 @@ public void testColumnAnalyzerOverrideCRUD() throws SynapseException {
5661
ColumnAnalyzerOverride created = adminSynapse.createColumnAnalyzerOverride(toCreate);
5762
assertNotNull(created.getId());
5863
assertNotNull(created.getEtag());
59-
assertEquals("IT_TEST_OVERRIDE", created.getName());
64+
assertEquals(name, created.getName());
6065
assertEquals(1, created.getOverrides().size());
6166
assertEquals("diagnosis", created.getOverrides().get(0).getColumnName());
6267

6368
// call under test
6469
ColumnAnalyzerOverride fetched = adminSynapse.getColumnAnalyzerOverride(created.getId());
6570
assertEquals(created.getId(), fetched.getId());
6671
assertEquals(created.getEtag(), fetched.getEtag());
67-
assertEquals("IT_TEST_OVERRIDE", fetched.getName());
72+
assertEquals(name, fetched.getName());
6873

6974
// UPDATE
7075
fetched.setDescription("Updated description");

integration-test/src/test/java/org/sagebionetworks/ITSearchConfigurationTest.java

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
import java.util.Arrays;
1111
import java.util.Collections;
12+
import java.util.UUID;
1213

1314
import org.junit.jupiter.api.BeforeEach;
1415
import org.junit.jupiter.api.Test;
@@ -54,6 +55,13 @@ public void testCRUDWithSearchConfiguration() throws SynapseException {
5455
String orgName = bootstrappedAnalyzer.getOrganizationName();
5556
String defaultAnalyzerName = orgName + "-" + bootstrappedAnalyzer.getName();
5657

58+
// Names are unique per organization with no delete endpoint, so use UUID
59+
// suffixes to avoid collisions across re-runs of the test.
60+
String uniqueSuffix = UUID.randomUUID().toString().replace("-", "");
61+
String synonymName = "IT_CONFIG_SYNONYMS_" + uniqueSuffix;
62+
String overrideLocalName = "IT_CONFIG_OVERRIDE_" + uniqueSuffix;
63+
String configName = "IT_TEST_CONFIG_" + uniqueSuffix;
64+
5765
// Create a synonym set to reference
5866
SynonymRule equivalentRule = new SynonymRule();
5967
equivalentRule.setRuleType(SynonymRuleType.EQUIVALENT);
@@ -62,7 +70,7 @@ public void testCRUDWithSearchConfiguration() throws SynapseException {
6270
explicitRule.setRuleType(SynonymRuleType.EXPLICIT);
6371
explicitRule.setTerms(Arrays.asList("AD", "Alzheimer's disease"));
6472
SynonymSet synonymSet = new SynonymSet();
65-
synonymSet.setName("IT_CONFIG_SYNONYMS");
73+
synonymSet.setName(synonymName);
6674
synonymSet.setOrganizationName(orgName);
6775
synonymSet.setRules(Arrays.asList(equivalentRule, explicitRule));
6876
SynonymSet createdSynonymSet = adminSynapse.createSynonymSet(synonymSet);
@@ -74,15 +82,15 @@ public void testCRUDWithSearchConfiguration() throws SynapseException {
7482
entry.setIndexAnalyzer(defaultAnalyzerName);
7583
entry.setSearchAnalyzer(defaultAnalyzerName);
7684
ColumnAnalyzerOverride override = new ColumnAnalyzerOverride();
77-
override.setName("IT_CONFIG_OVERRIDE");
85+
override.setName(overrideLocalName);
7886
override.setOrganizationName(orgName);
7987
override.setOverrides(Collections.singletonList(entry));
8088
ColumnAnalyzerOverride createdOverride = adminSynapse.createColumnAnalyzerOverride(override);
8189
String overrideName = orgName + "-" + createdOverride.getName();
8290

8391
// CREATE — include all three reference types
8492
SearchConfiguration toCreate = new SearchConfiguration();
85-
toCreate.setName("IT_TEST_CONFIG");
93+
toCreate.setName(configName);
8694
toCreate.setDescription("Integration test search configuration");
8795
toCreate.setOrganizationName(orgName);
8896
toCreate.setDefaultAnalyzer(defaultAnalyzerName);
@@ -93,7 +101,7 @@ public void testCRUDWithSearchConfiguration() throws SynapseException {
93101
SearchConfiguration created = adminSynapse.createSearchConfiguration(toCreate);
94102
assertNotNull(created.getId());
95103
assertNotNull(created.getEtag());
96-
assertEquals("IT_TEST_CONFIG", created.getName());
104+
assertEquals(configName, created.getName());
97105
assertEquals("Integration test search configuration", created.getDescription());
98106
assertEquals(defaultAnalyzerName, created.getDefaultAnalyzer());
99107
assertEquals(Arrays.asList(synonymSetName), created.getSynonymSets());
@@ -133,7 +141,7 @@ public void testCRUDWithSearchConfiguration() throws SynapseException {
133141
public void testBindAndUnbindSearchConfigToEntity() throws SynapseException {
134142
// Create a project to bind to
135143
Project project = new Project();
136-
project.setName("IT_BIND_TEST_PROJECT");
144+
project.setName("IT_BIND_TEST_PROJECT_" + UUID.randomUUID().toString().replace("-", ""));
137145
Entity createdProject = adminSynapse.createEntity(project);
138146

139147
try {
@@ -143,7 +151,7 @@ public void testBindAndUnbindSearchConfigToEntity() throws SynapseException {
143151
String orgName = analyzers.getResults().get(0).getOrganizationName();
144152

145153
SearchConfiguration config = new SearchConfiguration();
146-
config.setName("IT_BIND_CONFIG");
154+
config.setName("IT_BIND_CONFIG_" + UUID.randomUUID().toString().replace("-", ""));
147155
config.setOrganizationName(orgName);
148156
SearchConfiguration createdConfig = adminSynapse.createSearchConfiguration(config);
149157

0 commit comments

Comments
 (0)