RM-2028 Create util method to validate classification fields.

Also change the freemarker script to use the built-in JSON escaping.

+review RM-14

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/HEAD@101242 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Tom Page
2015-04-07 13:55:42 +00:00
parent cfb69a4a04
commit b8e6ea3912
6 changed files with 113 additions and 14 deletions

View File

@@ -1,4 +1,3 @@
<#escape x as jsonUtils.encodeJSONString(x)>
{ {
"data": "data":
{ {
@@ -6,11 +5,10 @@
[ [
<#list reasons as reason> <#list reasons as reason>
{ {
"id": "<#noescape>${reason.id}</#noescape>", "id": "${reason.id?json_string}",
"displayLabel": "<#noescape>${reason.displayLabel}</#noescape>" "displayLabel": "${reason.displayLabel?json_string}"
}<#if reason_has_next>,</#if> }<#if reason_has_next>,</#if>
</#list> </#list>
] ]
} }
} }
</#escape>

View File

@@ -18,10 +18,11 @@
*/ */
package org.alfresco.module.org_alfresco_module_rm.classification; package org.alfresco.module.org_alfresco_module_rm.classification;
import org.springframework.extensions.surf.util.I18NUtil;
import java.io.Serializable; 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. * 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) public ClassificationLevel(final String id, final String displayLabelKey)
{ {
if (id == null || id.trim().equals("")) RMParameterCheck.checkNotBlank("id", id);
{ RMParameterCheck.checkNotBlank("displayLabelKey", displayLabelKey);
throw new IllegalArgumentException("Illegal id: '" + id + "'");
}
this.id = id; this.id = id;
this.displayLabelKey = displayLabelKey; this.displayLabelKey = displayLabelKey;
} }

View File

@@ -21,8 +21,10 @@ package org.alfresco.module.org_alfresco_module_rm.classification;
import java.io.Serializable; import java.io.Serializable;
import org.alfresco.module.org_alfresco_module_rm.util.RMParameterCheck;
import org.springframework.extensions.surf.util.I18NUtil; import org.springframework.extensions.surf.util.I18NUtil;
/** /**
* This class is a POJO data type for a classification reason. * 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) public ClassificationReason(final String id, final String displayLabelKey)
{ {
if (id == null || id.trim().equals("")) { throw new IllegalArgumentException("Illegal id: '" + id + "'"); } RMParameterCheck.checkNotBlank("id", id);
if (displayLabelKey == null || displayLabelKey.trim().equals("")) { throw new IllegalArgumentException("Illegal displayLabelKey: '" + displayLabelKey + "'"); } RMParameterCheck.checkNotBlank("displayLabelKey", displayLabelKey);
this.id = id; this.id = id;
this.displayLabelKey = displayLabelKey; this.displayLabelKey = displayLabelKey;
} }

View File

@@ -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 <http://www.gnu.org/licenses/>.
*/
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"); }
}
}

View File

@@ -46,7 +46,7 @@ public class ExceptionUtils
@Override public String toString() @Override public String toString()
{ {
return String.join("Expected ", expected.getSimpleName(), " but ", return String.join("", "Expected ", expected.getSimpleName(), " but ",
actual.getClass().getSimpleName(), " was thrown."); actual.getClass().getSimpleName(), " was thrown.");
} }
} }
@@ -64,7 +64,7 @@ public class ExceptionUtils
public Class<? extends Throwable> getExpected() { return this.expected; } public Class<? extends Throwable> getExpected() { return this.expected; }
@Override public String toString() @Override public String toString()
{ {
return String.join("Expected ", expected.getSimpleName(), " but nothing was thrown."); return String.join("", "Expected ", expected.getSimpleName(), " but nothing was thrown.");
} }
} }

View File

@@ -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 <http://www.gnu.org/licenses/>.
*/
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");
}
}