Skip to content

Commit

Permalink
fix(api): ensure we use the same limit,field,sort,expand query param...
Browse files Browse the repository at this point in the history
...names everywhere

This commit fixes an incorrect `fields` parameter being used when
fetching versions or commits in resource API.
  • Loading branch information
cmark committed Jun 17, 2023
1 parent 5d2502d commit fb6f2c0
Show file tree
Hide file tree
Showing 6 changed files with 33 additions and 32 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright 2021-2022 B2i Healthcare Pte Ltd, http://b2i.sg
* Copyright 2021-2023 B2i Healthcare Pte Ltd, http://b2i.sg
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand Down Expand Up @@ -27,7 +27,7 @@
import com.b2international.snowowl.core.internal.ResourceDocument;
import com.b2international.snowowl.core.plugin.Component;
import com.b2international.snowowl.core.request.ResourceRequests;
import com.b2international.snowowl.core.request.expand.ResourceExpander;
import com.b2international.snowowl.core.request.expand.BaseResourceExpander;

/**
* @since 8.0
Expand Down Expand Up @@ -58,7 +58,7 @@ public <T extends Resource> void expand(RepositoryContext context, Options expan
results.forEach(bundle -> {
final Resources resources = ResourceRequests.prepareSearch()
.filterByBundleAncestorId(bundle.getId())
.setLimit(expandOptions.containsKey("limit") ? expandOptions.get("limit", Integer.class) : ResourceExpander.DEFAULT_LIMIT)
.setLimit(BaseResourceExpander.getLimit(expandOptions))
.build()
.execute(context);
bundle.setProperties("content", resources);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -144,8 +144,8 @@ public static void expandVersions(List<? extends Resource> results, Options expa
Versions versions = ResourceRequests.prepareSearchVersion()
.filterByResource(res.getResourceURI())
.setLimit(getLimit.apply(expandOptions))
.setFields(expandOptions.containsKey("fields") ? expandOptions.getList("fields", String.class) : null)
.sortBy(expandOptions.containsKey("sort") ? expandOptions.getString("sort") : null)
.setFields(expandOptions.containsKey(FIELD_OPTION_KEY) ? expandOptions.getList(FIELD_OPTION_KEY, String.class) : null)
.sortBy(expandOptions.containsKey(SORT_OPTION_KEY) ? expandOptions.getString(SORT_OPTION_KEY) : null)
.setLocales(locales)
.build()
.execute(context);
Expand All @@ -165,8 +165,8 @@ private void expandCommits(List<Resource> results) {
return RepositoryRequests.commitInfos().prepareSearchCommitInfo()
.filterByBranch(res.getBranchPath())
.setLimit(getLimit(expandOptions))
.setFields(expandOptions.containsKey("fields") ? expandOptions.getList("fields", String.class) : CommitInfo.Fields.DEFAULT_FIELD_SELECTION)
.sortBy(expandOptions.containsKey("sort") ? expandOptions.getString("sort") : null)
.setFields(expandOptions.containsKey(FIELD_OPTION_KEY) ? expandOptions.getList(FIELD_OPTION_KEY, String.class) : CommitInfo.Fields.DEFAULT_FIELD_SELECTION)
.sortBy(expandOptions.containsKey(SORT_OPTION_KEY) ? expandOptions.getString(SORT_OPTION_KEY) : null)
.setLocales(locales())
.build(res.getToolingId())
.executeWithContext(context())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,5 +51,13 @@ protected ServiceProvider context() {
protected final List<ExtendedLocale> locales() {
return locales;
}

public static final int getLimit(final Options expandOptions) {
return getLimit(expandOptions, DEFAULT_LIMIT);
}

public static final int getLimit(final Options expandOptions, final int defaultLimit) {
return expandOptions.containsKey(LIMIT_OPTION_KEY) ? expandOptions.get(LIMIT_OPTION_KEY, Integer.class) : defaultLimit;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,6 @@

import java.util.List;

import com.b2international.commons.options.Options;

import net.jodah.typetools.TypeResolver;

/**
Expand All @@ -32,21 +30,18 @@ public interface ResourceExpander<R> {
// The "default default" limit to use when no limit is given
int DEFAULT_LIMIT = 50;

String LIMIT_OPTION_KEY = "limit";
String FIELD_OPTION_KEY = "field";
String SORT_OPTION_KEY = "sort";
String EXPAND_OPTION_KEY = "expand";

/**
* Expands resources with additional fields.
*
* @param results - the list of results to expand
*/
void expand(List<R> results);

default int getLimit(final Options expandOptions) {
return getLimit(expandOptions, DEFAULT_LIMIT);
}

default int getLimit(final Options expandOptions, final int defaultLimit) {
return expandOptions.containsKey("limit") ? expandOptions.get("limit", Integer.class) : defaultLimit;
}

/**
* @return the class of the target type this expander can expand
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -255,9 +255,9 @@ private void expandDescriptions(List<SnomedConcept> results, final Set<String> c
.filterByActive(expandOptions.get("active", Boolean.class))
.filterByType(expandOptions.get("typeId", String.class))
.filterByConcepts(conceptIds)
.setFields(expandOptions.containsKey("field") ? expandOptions.getList("field", String.class) : null)
.setFields(expandOptions.containsKey(FIELD_OPTION_KEY) ? expandOptions.getList(FIELD_OPTION_KEY, String.class) : null)
.setLocales(locales())
.sortBy(expandOptions.get("sort", String.class))
.sortBy(expandOptions.get(SORT_OPTION_KEY, String.class))
.build()
.execute(context());

Expand All @@ -284,10 +284,10 @@ private void expandRelationships(List<SnomedConcept> results, final Set<String>
.filterByTypes(expandOptions.containsKey("typeId") ? expandOptions.getCollection("typeId", String.class) : null)
.filterByDestinations(expandOptions.containsKey("destinationId") ? expandOptions.getCollection("destinationId", String.class) : null)
.filterBySources(conceptIds)
.setFields(expandOptions.containsKey("field") ? expandOptions.getList("field", String.class) : null)
.setExpand(expandOptions.get("expand", Options.class))
.setFields(expandOptions.containsKey(FIELD_OPTION_KEY) ? expandOptions.getList(FIELD_OPTION_KEY, String.class) : null)
.setExpand(expandOptions.get(EXPAND_OPTION_KEY, Options.class))
.setLocales(locales())
.sortBy(expandOptions.get("sort", String.class))
.sortBy(expandOptions.get(SORT_OPTION_KEY, String.class))
.build()
.execute(context());

Expand Down Expand Up @@ -316,10 +316,10 @@ private void expandInboundRelationships(List<SnomedConcept> results, final Set<S
.filterByActive(expandOptions.get("active", Boolean.class))
.filterByCharacteristicType(expandOptions.get("characteristicTypeId", String.class))
.filterByDestinations(conceptIds)
.setFields(expandOptions.containsKey("field") ? expandOptions.getList("field", String.class) : null)
.setExpand(expandOptions.get("expand", Options.class))
.setFields(expandOptions.containsKey(FIELD_OPTION_KEY) ? expandOptions.getList(FIELD_OPTION_KEY, String.class) : null)
.setExpand(expandOptions.get(EXPAND_OPTION_KEY, Options.class))
.setLocales(locales())
.sortBy(expandOptions.get("sort", String.class))
.sortBy(expandOptions.get(SORT_OPTION_KEY, String.class))
.build()
.execute(context());

Expand Down Expand Up @@ -373,7 +373,7 @@ private void expandAncestors(List<SnomedConcept> results, Set<String> conceptIds
.all()
.filterByIds(componentIds)
.setLocales(locales())
.setExpand(expandOptions.get("expand", Options.class))
.setExpand(expandOptions.get(EXPAND_OPTION_KEY, Options.class))
.build().execute(context());

final Map<String, SnomedConcept> ancestorsById = newHashMap();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright 2011-2022 B2i Healthcare Pte Ltd, http://b2i.sg
* Copyright 2011-2023 B2i Healthcare Pte Ltd, http://b2i.sg
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand All @@ -22,6 +22,7 @@
import com.b2international.snowowl.core.date.EffectiveTimes;
import com.b2international.snowowl.core.domain.BranchContext;
import com.b2international.snowowl.core.request.BaseRevisionResourceConverter;
import com.b2international.snowowl.core.request.expand.BaseResourceExpander;
import com.b2international.snowowl.snomed.core.domain.refset.SnomedReferenceSet;
import com.b2international.snowowl.snomed.core.domain.refset.SnomedReferenceSets;
import com.b2international.snowowl.snomed.datastore.index.entry.SnomedConceptDocument;
Expand Down Expand Up @@ -56,12 +57,9 @@ private void expandMembers(List<SnomedReferenceSet> results) {
SnomedRefSetMemberSearchRequestBuilder req = SnomedRequests.prepareSearchMember()
.filterByRefSet(refSet.getId())
.setLocales(locales())
.setExpand(expandOptions.get("expand", Options.class));
.setExpand(expandOptions.get(EXPAND_OPTION_KEY, Options.class))
.setLimit(BaseResourceExpander.getLimit(expandOptions));

if (expandOptions.containsKey("limit")) {
req.setLimit(expandOptions.get("limit", Integer.class));
}

refSet.setMembers(req.build().execute(context()));
}
}
Expand Down

0 comments on commit fb6f2c0

Please sign in to comment.