diff --git a/api/src/main/java/org/openmrs/api/db/hibernate/HibernateConceptDAO.java b/api/src/main/java/org/openmrs/api/db/hibernate/HibernateConceptDAO.java index 756f252f9d03..5ad34142404e 100644 --- a/api/src/main/java/org/openmrs/api/db/hibernate/HibernateConceptDAO.java +++ b/api/src/main/java/org/openmrs/api/db/hibernate/HibernateConceptDAO.java @@ -30,8 +30,9 @@ import java.util.Locale; import java.util.Map; import java.util.Set; +import java.util.stream.Collectors; -import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.hibernate.FlushMode; import org.hibernate.Session; @@ -1487,10 +1488,12 @@ private LuceneQuery newDrugQuery(String drugName, boolean searchKeywords, Collections.singletonList(locale), exactLocale, includeRetired, null, null, null, null, null); List conceptIds = conceptNameQuery.listProjection("concept.conceptId"); if (!conceptIds.isEmpty()) { - CollectionUtils.transform(conceptIds, input -> ((Object[]) input)[0].toString()); + List conceptIdStrings = conceptIds.stream() + .map(input -> ((Object[]) input)[0].toString()) + .collect(Collectors.toList()); //The default Lucene clauses limit is 1024. We arbitrarily chose to use 512 here as it does not make sense to return more hits by concept name anyway. - int maxSize = (conceptIds.size() < 512) ? conceptIds.size() : 512; - query.append(" OR concept.conceptId:(").append(StringUtils.join(conceptIds.subList(0, maxSize), " OR ")) + int maxSize = Math.min(conceptIdStrings.size(), 512); + query.append(" OR concept.conceptId:(").append(StringUtils.join(conceptIdStrings.subList(0, maxSize), " OR ")) .append(")^0.1"); } }