From f54dcccf5de4063187b346b93055389b5f3782a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Raphael=20Salath=C3=A9?= Date: Mon, 10 Feb 2020 11:52:00 +0100 Subject: [PATCH 1/2] Remove distinct Removed distinct method to maintain multiple attribute handling when filtering by params. See: https://github.com/taskadapter/redmine-java-api/issues/339 --- .../redmineapi/internal/URIConfigurator.java | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/src/main/java/com/taskadapter/redmineapi/internal/URIConfigurator.java b/src/main/java/com/taskadapter/redmineapi/internal/URIConfigurator.java index 6565255b..5aa2b1cc 100644 --- a/src/main/java/com/taskadapter/redmineapi/internal/URIConfigurator.java +++ b/src/main/java/com/taskadapter/redmineapi/internal/URIConfigurator.java @@ -98,8 +98,7 @@ public URI createURI(String query, RequestParam... param) { */ private URI createURI(String query, Collection origParams) { - Collection distinctParams = distinct(origParams); - Collection nameValueParams = toNameValue(distinctParams); + Collection nameValueParams = toNameValue(origParams); try { final URIBuilder builder = new URIBuilder(baseURL.toURI()); builder.addParameters(new ArrayList<>(nameValueParams)); @@ -116,14 +115,6 @@ private URI createURI(String query, } } - static Collection distinct(Collection origParams) { - return origParams - .stream() - .filter(Objects::nonNull) - .collect(Collectors.toMap(RequestParam::getName, a -> a, (s1, s2) -> s1)) - .values(); - } - static Collection toNameValue(Collection origParams) { return origParams .stream() From 8610f958fe8310249a65e2b7357581ae9f0be5c5 Mon Sep 17 00:00:00 2001 From: Raphael Date: Fri, 3 Jul 2020 15:55:15 +0200 Subject: [PATCH 2/2] duplicate check compares values instead of keys --- .../redmineapi/internal/URIConfigurator.java | 11 ++++++++++- .../redmineapi/internal/URIConfiguratorTest.java | 4 ++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/taskadapter/redmineapi/internal/URIConfigurator.java b/src/main/java/com/taskadapter/redmineapi/internal/URIConfigurator.java index 5aa2b1cc..d85f960d 100644 --- a/src/main/java/com/taskadapter/redmineapi/internal/URIConfigurator.java +++ b/src/main/java/com/taskadapter/redmineapi/internal/URIConfigurator.java @@ -98,7 +98,8 @@ public URI createURI(String query, RequestParam... param) { */ private URI createURI(String query, Collection origParams) { - Collection nameValueParams = toNameValue(origParams); + Collection distinctParams = distinct(origParams); + Collection nameValueParams = toNameValue(distinctParams); try { final URIBuilder builder = new URIBuilder(baseURL.toURI()); builder.addParameters(new ArrayList<>(nameValueParams)); @@ -115,6 +116,14 @@ private URI createURI(String query, } } + static Collection distinct(Collection origParams) { + return origParams + .stream() + .filter(Objects::nonNull) + .collect(Collectors.toMap(RequestParam::getValue, a -> a, (s1, s2) -> s1)) + .values(); + } + static Collection toNameValue(Collection origParams) { return origParams .stream() diff --git a/src/test/java/com/taskadapter/redmineapi/internal/URIConfiguratorTest.java b/src/test/java/com/taskadapter/redmineapi/internal/URIConfiguratorTest.java index 41c9e0d2..e4ed5102 100644 --- a/src/test/java/com/taskadapter/redmineapi/internal/URIConfiguratorTest.java +++ b/src/test/java/com/taskadapter/redmineapi/internal/URIConfiguratorTest.java @@ -28,9 +28,9 @@ public void testDistinctWithDuplicateParams() { } @Test - public void testDistinctWithSimilarNames() { + public void testDistinctWithSimilarNamesButDifferentValues() { List params = Arrays.asList(param2, param2WithDifferentValue); - assertThat(URIConfigurator.distinct(params)).containsOnly(param2); + assertThat(URIConfigurator.distinct(params)).containsOnly(param2, param2WithDifferentValue); } @Test