From b20c7f121e210f156be6ce1d34f717c65db1262f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20G=C3=A9raud?= Date: Tue, 28 May 2019 13:17:46 +0200 Subject: [PATCH] fix(apis): search by context-path doesn't work for non admin users fix gravitee-io/issues#2290 --- .../management/service/impl/ApiServiceImpl.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/gravitee-management-api-service/src/main/java/io/gravitee/management/service/impl/ApiServiceImpl.java b/gravitee-management-api-service/src/main/java/io/gravitee/management/service/impl/ApiServiceImpl.java index 39731e6ea8..3d1c522b7f 100644 --- a/gravitee-management-api-service/src/main/java/io/gravitee/management/service/impl/ApiServiceImpl.java +++ b/gravitee-management-api-service/src/main/java/io/gravitee/management/service/impl/ApiServiceImpl.java @@ -625,13 +625,20 @@ public Set findByUser(String userId, ApiQuery apiQuery) { apis.addAll(convert(publicApis)); apis.addAll(convert(userApis)); apis.addAll(convert(groupApis)); - return apis; + return filterApiByQuery(apis.stream(), apiQuery).collect(Collectors.toSet()); } catch (TechnicalException ex) { LOGGER.error("An error occurs while trying to find APIs for user {}", userId, ex); throw new TechnicalManagementException("An error occurs while trying to find APIs for user " + userId, ex); } } + private Stream filterApiByQuery(Stream apiEntityStream, ApiQuery query) { + return apiEntityStream + .filter(api -> query.getTag() == null || (api.getTags() != null && api.getTags().contains(query.getTag()))) + .filter(api -> query.getContextPath() == null || query.getContextPath().equals(api.getProxy().getContextPath())); + + } + @Override public ApiEntity update(String apiId, UpdateApiEntity updateApiEntity) { try { @@ -1323,9 +1330,7 @@ public ApiEntity importPathMappingsFromPage(final ApiEntity apiEntity, final Str public Collection search(final ApiQuery query) { try { LOGGER.debug("Search APIs by {}", query); - return convert(apiRepository.search(queryToCriteria(query).build())).stream() - .filter(api -> query.getTag() == null || (api.getTags() != null && api.getTags().contains(query.getTag()))) - .filter(api -> query.getContextPath() == null || query.getContextPath().equals(api.getProxy().getContextPath())) + return filterApiByQuery(this.convert(apiRepository.search(queryToCriteria(query).build())).stream(), query) .collect(toList()); } catch (TechnicalException ex) { final String errorMessage = "An error occurs while trying to search for APIs: " + query;