diff --git a/rm-server/config/alfresco/templates/webscripts/org/alfresco/rma/classification/reasons.get.json.ftl b/rm-server/config/alfresco/templates/webscripts/org/alfresco/rma/classification/reasons.get.json.ftl index 6c8aed741b..5752e66166 100644 --- a/rm-server/config/alfresco/templates/webscripts/org/alfresco/rma/classification/reasons.get.json.ftl +++ b/rm-server/config/alfresco/templates/webscripts/org/alfresco/rma/classification/reasons.get.json.ftl @@ -1,4 +1,3 @@ -<#escape x as jsonUtils.encodeJSONString(x)> { "data": { @@ -6,11 +5,10 @@ [ <#list reasons as reason> { - "id": "<#noescape>${reason.id}", - "displayLabel": "<#noescape>${reason.displayLabel}" + "id": "${reason.id?json_string}", + "displayLabel": "${reason.displayLabel?json_string}" }<#if reason_has_next>, ] } } - \ No newline at end of file diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/classification/ClassificationLevel.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/classification/ClassificationLevel.java index dc72ea88fc..5dee2944e3 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/classification/ClassificationLevel.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/classification/ClassificationLevel.java @@ -18,10 +18,11 @@ */ package org.alfresco.module.org_alfresco_module_rm.classification; -import org.springframework.extensions.surf.util.I18NUtil; - import java.io.Serializable; +import org.alfresco.module.org_alfresco_module_rm.util.RMParameterCheck; +import org.springframework.extensions.surf.util.I18NUtil; + /** * This class is a POJO data type for a Classification Level. * @@ -35,10 +36,8 @@ public final class ClassificationLevel implements Serializable public ClassificationLevel(final String id, final String displayLabelKey) { - if (id == null || id.trim().equals("")) - { - throw new IllegalArgumentException("Illegal id: '" + id + "'"); - } + RMParameterCheck.checkNotBlank("id", id); + RMParameterCheck.checkNotBlank("displayLabelKey", displayLabelKey); this.id = id; this.displayLabelKey = displayLabelKey; } diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/classification/ClassificationReason.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/classification/ClassificationReason.java index 48af4f45ea..aff361679f 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/classification/ClassificationReason.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/classification/ClassificationReason.java @@ -21,8 +21,10 @@ package org.alfresco.module.org_alfresco_module_rm.classification; import java.io.Serializable; +import org.alfresco.module.org_alfresco_module_rm.util.RMParameterCheck; import org.springframework.extensions.surf.util.I18NUtil; + /** * This class is a POJO data type for a classification reason. * @@ -43,8 +45,8 @@ public final class ClassificationReason implements Serializable */ public ClassificationReason(final String id, final String displayLabelKey) { - if (id == null || id.trim().equals("")) { throw new IllegalArgumentException("Illegal id: '" + id + "'"); } - if (displayLabelKey == null || displayLabelKey.trim().equals("")) { throw new IllegalArgumentException("Illegal displayLabelKey: '" + displayLabelKey + "'"); } + RMParameterCheck.checkNotBlank("id", id); + RMParameterCheck.checkNotBlank("displayLabelKey", displayLabelKey); this.id = id; this.displayLabelKey = displayLabelKey; } diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/util/RMParameterCheck.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/util/RMParameterCheck.java new file mode 100644 index 0000000000..b75fd53cb0 --- /dev/null +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/util/RMParameterCheck.java @@ -0,0 +1,44 @@ +/* + * Copyright (C) 2005-2015 Alfresco Software Limited. + * + * This file is part of Alfresco + * + * Alfresco is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Alfresco is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + */ + +package org.alfresco.module.org_alfresco_module_rm.util; + +import org.apache.commons.lang.StringUtils; + +/** + * Utility class that contains validation not present in {@link org.alfresco.util.ParameterCheck}. + * + * @author tpage + */ +public class RMParameterCheck +{ + /** + * Checks that the string parameter with the given name is not blank i.e. it is not null, zero length or entirely + * composed of whitespace. + * + * @param strParamName Name of parameter to check + * @param strParamValue Value of the parameter to check + */ + public static void checkNotBlank(final String strParamName, final String strParamValue) + throws IllegalArgumentException + { + if (StringUtils.isBlank(strParamValue)) { throw new IllegalArgumentException(strParamName + + " is a mandatory parameter"); } + } +} diff --git a/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/test/util/ExceptionUtils.java b/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/test/util/ExceptionUtils.java index e0ec3548be..7a0ea4041a 100644 --- a/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/test/util/ExceptionUtils.java +++ b/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/test/util/ExceptionUtils.java @@ -46,7 +46,7 @@ public class ExceptionUtils @Override public String toString() { - return String.join("Expected ", expected.getSimpleName(), " but ", + return String.join("", "Expected ", expected.getSimpleName(), " but ", actual.getClass().getSimpleName(), " was thrown."); } } @@ -64,7 +64,7 @@ public class ExceptionUtils public Class getExpected() { return this.expected; } @Override public String toString() { - return String.join("Expected ", expected.getSimpleName(), " but nothing was thrown."); + return String.join("", "Expected ", expected.getSimpleName(), " but nothing was thrown."); } } diff --git a/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/util/RMParameterCheckTest.java b/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/util/RMParameterCheckTest.java new file mode 100644 index 0000000000..3db859b19c --- /dev/null +++ b/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/util/RMParameterCheckTest.java @@ -0,0 +1,56 @@ +/* + * Copyright (C) 2005-2015 Alfresco Software Limited. + * + * This file is part of Alfresco + * + * Alfresco is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Alfresco is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + */ + +package org.alfresco.module.org_alfresco_module_rm.util; + +import org.alfresco.module.org_alfresco_module_rm.test.util.ExceptionUtils; +import org.junit.Test; + +/** + * Unit tests for the {@link RMParameter} utility class. + * + * @author tpage + */ +public class RMParameterCheckTest +{ + @Test + public void checkNotBlank() + { + // Check that supplying null causes an exception. + ExceptionUtils.intercept(IllegalArgumentException.class, () -> { + RMParameterCheck.checkNotBlank("name", null); + return null; + }); + + // Check that supplying an empty string causes an exception. + ExceptionUtils.intercept(IllegalArgumentException.class, () -> { + RMParameterCheck.checkNotBlank("name", ""); + return null; + }); + + // Check that supplying a whitespace only string causes an exception. + ExceptionUtils.intercept(IllegalArgumentException.class, () -> { + RMParameterCheck.checkNotBlank("name", "\n\r \t"); + return null; + }); + + // Check that supplying a mainly whitespace string throws no exceptions. + RMParameterCheck.checkNotBlank("name", "\n\r *\t"); + } +}