[utilities COMMIT] in /java-support/trunk/src: main/java/net/shibboleth/utilities/java/support/primitive/StringSuppor...

noreply at shibboleth.net noreply at shibboleth.net
Tue May 6 21:41:11 EDT 2014


Author: putmanb
Date: Tue May  6 21:41:11 2014
New Revision: 563

URL: http://svn.shibboleth.net/view/utilities?rev=563&view=rev
Log:
Add a StringSupport method which normalizes a Collection<String> by trimming/nulling each member, and removing any remaining nulls.

Modified:
    java-support/trunk/src/main/java/net/shibboleth/utilities/java/support/primitive/StringSupport.java
    java-support/trunk/src/test/java/net/shibboleth/utilities/java/support/primitive/StringSupportTest.java

Modified: java-support/trunk/src/main/java/net/shibboleth/utilities/java/support/primitive/StringSupport.java
URL: http://svn.shibboleth.net/view/utilities/java-support/trunk/src/main/java/net/shibboleth/utilities/java/support/primitive/StringSupport.java?rev=563&r1=562&r2=563&view=diff
==============================================================================
--- java-support/trunk/src/main/java/net/shibboleth/utilities/java/support/primitive/StringSupport.java (original)
+++ java-support/trunk/src/main/java/net/shibboleth/utilities/java/support/primitive/StringSupport.java Tue May  6 21:41:11 2014
@@ -24,6 +24,8 @@
 import java.nio.charset.Charset;
 import java.nio.charset.CharsetDecoder;
 import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
 import java.util.StringTokenizer;
@@ -31,7 +33,13 @@
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
+import com.google.common.base.Predicates;
+import com.google.common.collect.Collections2;
+
+import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
+import net.shibboleth.utilities.java.support.annotation.constraint.NullableElements;
 import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.utilities.java.support.logic.TrimOrNullStringFunction;
 
 /** String utility methods. */
 public final class StringSupport {
@@ -157,4 +165,25 @@
 
         return temp;
     }
+    
+    /**
+     * Normalize a string collection by:
+     * <ol>
+     *   <li>Safely trimming each member.</li>
+     *   <li>Converting all empty members to null.</li>
+     *   <li>Removing any null members.</li>
+     * </ol>
+     * 
+     * @param values the collection of string values
+     * @return the normalized collection of string values
+     */
+    @Nonnull @NonnullElements public static Collection<String> normalizeStringCollection(
+            @Nullable @NullableElements Collection<String> values) {
+        if (values == null) {
+            return Collections.emptySet();
+        }
+        
+        return Collections2.filter(Collections2.transform(values, TrimOrNullStringFunction.INSTANCE),
+                Predicates.notNull());
+    }
 }

Modified: java-support/trunk/src/test/java/net/shibboleth/utilities/java/support/primitive/StringSupportTest.java
URL: http://svn.shibboleth.net/view/utilities/java-support/trunk/src/test/java/net/shibboleth/utilities/java/support/primitive/StringSupportTest.java?rev=563&r1=562&r2=563&view=diff
==============================================================================
--- java-support/trunk/src/test/java/net/shibboleth/utilities/java/support/primitive/StringSupportTest.java (original)
+++ java-support/trunk/src/test/java/net/shibboleth/utilities/java/support/primitive/StringSupportTest.java Tue May  6 21:41:11 2014
@@ -18,12 +18,16 @@
 package net.shibboleth.utilities.java.support.primitive;
 
 import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashSet;
 import java.util.List;
 
 import net.shibboleth.utilities.java.support.logic.ConstraintViolationException;
 
 import org.testng.Assert;
 import org.testng.annotations.Test;
+
+import com.google.common.collect.Sets;
 
 /**
  * test for the various methods inside {@link StringSupport}
@@ -100,5 +104,31 @@
         Assert.assertEquals(StringSupport.trim(TRIM_TEST1), TRIM_TEST1.trim(), "Trimming a string");
 
     }
+    
+    @Test public void testNormalizeStringCollection() {
+        Collection<String> output;
+        
+        output = StringSupport.normalizeStringCollection(Sets.newHashSet("foo", "bar", "baz"));
+        Assert.assertEquals(output.size(), 3);
+        Assert.assertTrue(output.contains("foo"));
+        Assert.assertTrue(output.contains("bar"));
+        Assert.assertTrue(output.contains("baz"));
+        
+        output = StringSupport.normalizeStringCollection(Sets.newHashSet(" \t\t foo  ", "  ", "  baz \r\n"));
+        Assert.assertEquals(output.size(), 2);
+        Assert.assertTrue(output.contains("foo"));
+        Assert.assertTrue(output.contains("baz"));
+        
+        output = StringSupport.normalizeStringCollection(Sets.newHashSet("   foo   ", null, "baz"));
+        Assert.assertEquals(output.size(), 2);
+        Assert.assertTrue(output.contains("foo"));
+        Assert.assertTrue(output.contains("baz"));
+        
+        output = StringSupport.normalizeStringCollection(new HashSet<String>());
+        Assert.assertEquals(output.size(), 0);
+        

[... 6 lines stripped ...]


More information about the commits mailing list