diff --git a/ccm-cms/src/main/java/org/librecms/contentsection/ContentItemL10NManager.java b/ccm-cms/src/main/java/org/librecms/contentsection/ContentItemL10NManager.java index 0d1ef7f5d..60973889c 100644 --- a/ccm-cms/src/main/java/org/librecms/contentsection/ContentItemL10NManager.java +++ b/ccm-cms/src/main/java/org/librecms/contentsection/ContentItemL10NManager.java @@ -58,7 +58,7 @@ public class ContentItemL10NManager { @Inject private ContentItemRepository itemRepo; - + private Locale defaultLocale; private List supportedLocales; @@ -151,9 +151,18 @@ public class ContentItemL10NManager { final ContentItem item, final Locale locale) { + if (item == null) { + throw new IllegalArgumentException("Can't add language to item null."); + } + + if (locale == null) { + throw new IllegalArgumentException( + "Can't add language null to an item."); + } + findLocalizedStringProperties(item) .forEach(property -> addLanguage(item, locale, property)); - + itemRepo.save(item); } @@ -161,12 +170,12 @@ public class ContentItemL10NManager { final Locale locale, final PropertyDescriptor property) { - final Method readMethod = property.getReadMethod(); + final Method readMethod = property.getReadMethod(); final LocalizedString localizedStr = readLocalizedString(item, readMethod); addLanguage(localizedStr, locale); } - + private void addLanguage(final LocalizedString localizedString, final Locale locale) { if (localizedString.hasValue(locale)) { @@ -213,6 +222,16 @@ public class ContentItemL10NManager { final ContentItem item, final Locale locale) { + if (item == null) { + throw new IllegalArgumentException( + "Can't remove language from item null."); + } + + if (locale == null) { + throw new IllegalArgumentException( + "Can't remove language null from an item."); + } + findLocalizedStringProperties(item) .forEach(property -> removeLanguage(item, locale, property)); @@ -249,6 +268,10 @@ public class ContentItemL10NManager { @RequiresPrivilege(CmsConstants.PRIVILEGE_ITEMS_EDIT) final ContentItem item) { + if (item == null) { + throw new IllegalArgumentException("Can't normalise item null."); + } + final Set languages = collectLanguages(item); findLocalizedStringProperties(item) @@ -256,7 +279,7 @@ public class ContentItemL10NManager { .map(property -> property.getReadMethod()) .map(readMethod -> readLocalizedString(item, readMethod)) .forEach(str -> normalize(str, languages)); - + itemRepo.save(item); } @@ -266,7 +289,7 @@ public class ContentItemL10NManager { final List missingLangs = languages.stream() .filter(lang -> !localizedString.hasValue(lang)) .collect(Collectors.toList()); - + if (!missingLangs.isEmpty()) { missingLangs.stream() .forEach(lang -> addLanguage(localizedString, lang)); diff --git a/ccm-cms/src/test/resources/datasets/org/librecms/contentsection/ContentItemL10NManagerTest/after-add-language.xml b/ccm-cms/src/test/resources/datasets/org/librecms/contentsection/ContentItemL10NManagerTest/after-add-language.xml index 3d29a08c2..a54177a35 100644 --- a/ccm-cms/src/test/resources/datasets/org/librecms/contentsection/ContentItemL10NManagerTest/after-add-language.xml +++ b/ccm-cms/src/test/resources/datasets/org/librecms/contentsection/ContentItemL10NManagerTest/after-add-language.xml @@ -260,6 +260,58 @@ locale="en" revtype="0" /> + + + + + + + + + + + + + + + + diff --git a/ccm-cms/src/test/resources/datasets/org/librecms/contentsection/ContentItemL10NManagerTest/after-normalize.xml b/ccm-cms/src/test/resources/datasets/org/librecms/contentsection/ContentItemL10NManagerTest/after-normalize.xml index 152c62580..28201ebbb 100644 --- a/ccm-cms/src/test/resources/datasets/org/librecms/contentsection/ContentItemL10NManagerTest/after-normalize.xml +++ b/ccm-cms/src/test/resources/datasets/org/librecms/contentsection/ContentItemL10NManagerTest/after-normalize.xml @@ -252,6 +252,56 @@ locale="de" revtype="0" /> + + + + + + + + + + + + + + diff --git a/ccm-cms/src/test/resources/datasets/org/librecms/contentsection/ContentItemL10NManagerTest/after-remove-language.xml b/ccm-cms/src/test/resources/datasets/org/librecms/contentsection/ContentItemL10NManagerTest/after-remove-language.xml index 9a05b3f4f..5c6e133b4 100644 --- a/ccm-cms/src/test/resources/datasets/org/librecms/contentsection/ContentItemL10NManagerTest/after-remove-language.xml +++ b/ccm-cms/src/test/resources/datasets/org/librecms/contentsection/ContentItemL10NManagerTest/after-remove-language.xml @@ -248,6 +248,51 @@ locale="en" revtype="0" /> + + + + + + + + + + + + + diff --git a/ccm-cms/src/test/resources/datasets/org/librecms/contentsection/ContentItemL10NManagerTest/data.xml b/ccm-cms/src/test/resources/datasets/org/librecms/contentsection/ContentItemL10NManagerTest/data.xml index 53e9ce7da..18076dbcc 100644 --- a/ccm-cms/src/test/resources/datasets/org/librecms/contentsection/ContentItemL10NManagerTest/data.xml +++ b/ccm-cms/src/test/resources/datasets/org/librecms/contentsection/ContentItemL10NManagerTest/data.xml @@ -233,6 +233,48 @@ locale="en" revtype="0" /> + + + + + + + + + + + + diff --git a/ccm-cms/src/test/resources/scripts/pgsql-cleanup.sql b/ccm-cms/src/test/resources/scripts/pgsql-cleanup.sql index 8c1fdfd1f..fe5ce169c 100644 --- a/ccm-cms/src/test/resources/scripts/pgsql-cleanup.sql +++ b/ccm-cms/src/test/resources/scripts/pgsql-cleanup.sql @@ -10,6 +10,10 @@ DELETE FROM ccm_cms.articles; DELETE FROM ccm_cms.articles_aud; +DELETE FROM ccm_cms.content_item_descriptions; + +DELETE FROM ccm_cms.content_item_descriptions_aud; + DELETE FROM ccm_cms.content_item_names; DELETE FROM ccm_cms.content_item_names_aud;