From c89d4a8add83dafe5a322a7ae1148e2530e306e4 Mon Sep 17 00:00:00 2001 From: Luke Taylor Date: Thu, 21 Jul 2005 22:55:27 +0000 Subject: [PATCH] Added trimming of whitespace to tokens and use of Springs StringUtils.hasText() to check for content in the string passed to setAsText. --- .../userdetails/memory/UserAttributeEditor.java | 8 ++++---- .../dao/memory/UserAttributeEditorTests.java | 11 +++++++++++ 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/org/acegisecurity/userdetails/memory/UserAttributeEditor.java b/core/src/main/java/org/acegisecurity/userdetails/memory/UserAttributeEditor.java index b6db0615d8..a584782beb 100644 --- a/core/src/main/java/org/acegisecurity/userdetails/memory/UserAttributeEditor.java +++ b/core/src/main/java/org/acegisecurity/userdetails/memory/UserAttributeEditor.java @@ -33,14 +33,12 @@ public class UserAttributeEditor extends PropertyEditorSupport { //~ Methods ================================================================ public void setAsText(String s) throws IllegalArgumentException { - if ((s == null) || "".equals(s)) { - setValue(null); - } else { + if (StringUtils.hasText(s)) { String[] tokens = StringUtils.commaDelimitedListToStringArray(s); UserAttribute userAttrib = new UserAttribute(); for (int i = 0; i < tokens.length; i++) { - String currentToken = tokens[i]; + String currentToken = tokens[i].trim(); if (i == 0) { userAttrib.setPassword(currentToken); @@ -61,6 +59,8 @@ public class UserAttributeEditor extends PropertyEditorSupport { } else { setValue(null); } + } else { + setValue(null); } } } diff --git a/core/src/test/java/org/acegisecurity/providers/dao/memory/UserAttributeEditorTests.java b/core/src/test/java/org/acegisecurity/providers/dao/memory/UserAttributeEditorTests.java index aa5b1b5f11..5e1d1d90b0 100644 --- a/core/src/test/java/org/acegisecurity/providers/dao/memory/UserAttributeEditorTests.java +++ b/core/src/test/java/org/acegisecurity/providers/dao/memory/UserAttributeEditorTests.java @@ -123,4 +123,15 @@ public class UserAttributeEditorTests extends TestCase { UserAttribute user = (UserAttribute) editor.getValue(); assertTrue(user == null); } + + public void testCorrectOperationWithTrailingSpaces() { + UserAttributeEditor editor = new UserAttributeEditor(); + editor.setAsText("password ,ROLE_ONE,ROLE_TWO "); + + UserAttribute user = (UserAttribute) editor.getValue(); + assertEquals("password", user.getPassword()); + assertEquals(2, user.getAuthorities().length); + assertEquals("ROLE_ONE", user.getAuthorities()[0].getAuthority()); + assertEquals("ROLE_TWO", user.getAuthorities()[1].getAuthority()); + } }