Skip to content

Commit f0d18b5

Browse files
authored
Merge pull request #1002 from commercetools/DEVX-657-Issue-retrieving-category-by-slug-in-Commercetools-SDK-v2-version-19.5.0
DEVX-657: overriding equals and hashCode for LocalizedStringEntry
2 parents d6b65b8 + daf252c commit f0d18b5

File tree

4 files changed

+51
-1
lines changed

4 files changed

+51
-1
lines changed

.git-blame-ignore-revs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,5 @@ af9205fa592e4ae32ceca951c560a48b512b7744
1515
6154ba1d1461d9279a305b52d8dd4b842e848545
1616
0b5dd8bee320456962d94cb845e9d27469a34091
1717
f58dd73747791edcd45722a4903da44da1b9b2d3
18+
fcdaa3d6735d2382a44d066a6ce051a2c5e6469f
19+
9bbe16b7d1600fc96100f54cb25869cbdf425521

commercetools/commercetools-sdk-java-api/src/main/java/com/commercetools/api/models/category/CategoryTreeFactory.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ private Map<LocalizedStringEntry, Category> getLocalizedStringEntryCategoryMap(
6868
.collect(Collectors.toSet());
6969
localesForTheCategory.forEach(locale -> {
7070
final LocalizedStringEntry stringsEntry = LocalizedStringEntry.of(locale,
71-
category.getSlug().values().get(locale));
71+
category.getSlug().get(locale));
7272
categoriesByLocaleAndSlug.put(stringsEntry, category);
7373
});
7474
});

commercetools/commercetools-sdk-java-api/src/main/java/com/commercetools/api/models/common/LocalizedStringEntry.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,20 @@ public static LocalizedStringEntry of(final String languageTag, final String val
3333
return of(locale, value);
3434
}
3535

36+
@Override
37+
public boolean equals(Object o) {
38+
if (o instanceof LocalizedStringEntry) {
39+
var e = (LocalizedStringEntry) o;
40+
return locale.equals(e.locale) && value.equals(e.value);
41+
}
42+
return false;
43+
}
44+
45+
@Override
46+
public int hashCode() {
47+
return locale.hashCode() + value.hashCode();
48+
}
49+
3650
public Locale getLocale() {
3751
return locale;
3852
}

commercetools/commercetools-sdk-java-api/src/test/java/com/commercetools/CategoriesTest.java

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,15 @@
22
package com.commercetools;
33

44
import java.net.URI;
5+
import java.time.ZonedDateTime;
6+
import java.util.List;
7+
import java.util.Locale;
58

69
import com.commercetools.api.client.ByProjectKeyCategoriesPost;
10+
import com.commercetools.api.models.category.Category;
11+
import com.commercetools.api.models.category.CategoryTreeFactory;
12+
import com.commercetools.api.models.common.LocalizedString;
13+
import com.commercetools.api.models.common.LocalizedStringEntry;
714

815
import io.vrap.rmf.base.client.ApiHttpRequest;
916
import io.vrap.rmf.base.client.SerializerOnlyApiHttpClient;
@@ -32,4 +39,31 @@ public void testImmutableUriWithHost() {
3239
Assertions.assertThat(newRequest.getUri().toString()).isEqualTo("https://example.com/test/categories");
3340
Assertions.assertThat(newRequest).isNotEqualTo(request);
3441
}
42+
43+
@Test
44+
public void testLocalizedStringEntryEqualsOverride() {
45+
var entry = LocalizedStringEntry.of("en", "women");
46+
var entry2 = LocalizedStringEntry.of("en", "women");
47+
var entry3 = LocalizedStringEntry.of("en", "woman");
48+
Assertions.assertThat(entry).isEqualTo(entry2);
49+
Assertions.assertThat(entry).isNotEqualTo(entry3);
50+
}
51+
52+
@Test
53+
public void testCategoryTree() {
54+
List<Category> allCategoriesAsFlatList = List.of(Category.builder()
55+
.name(LocalizedString.of(Locale.ENGLISH, "Women"))
56+
.slug(LocalizedString.of(Locale.ENGLISH, "women"))
57+
.id("1")
58+
.version(1L)
59+
.createdAt(ZonedDateTime.now())
60+
.lastModifiedAt(ZonedDateTime.now())
61+
.ancestors()
62+
.orderHint("c2")
63+
.build());
64+
CategoryTreeFactory factory = CategoryTreeFactory.of();
65+
var tree = factory.create(allCategoriesAsFlatList);
66+
var result = tree.findBySlug(Locale.ENGLISH, "women");
67+
Assertions.assertThat(result).isNotEmpty();
68+
}
3569
}

0 commit comments

Comments
 (0)