[utilities COMMIT] in /java-support/trunk: doc/RELEASE-NOTES.txt src/main/java/net/shibboleth/utilities/java/support/...
noreply at shibboleth.net
noreply at shibboleth.net
Tue Aug 20 19:55:31 EDT 2013
Author: putmanb
Date: Tue Aug 20 19:55:31 2013
New Revision: 425
URL: http://svn.shibboleth.net/view/utilities?rev=425&view=rev
Log:
JSPT-27: ClassToInstanceMultiMap get() returns duplicate values
Modified:
java-support/trunk/doc/RELEASE-NOTES.txt
java-support/trunk/src/main/java/net/shibboleth/utilities/java/support/collection/ClassToInstanceMultiMap.java
java-support/trunk/src/test/java/net/shibboleth/utilities/java/support/collection/ClassToInstanceMultiMapTest.java
Modified: java-support/trunk/doc/RELEASE-NOTES.txt
URL: http://svn.shibboleth.net/view/utilities/java-support/trunk/doc/RELEASE-NOTES.txt?rev=425&r1=424&r2=425&view=diff
==============================================================================
--- java-support/trunk/doc/RELEASE-NOTES.txt (original)
+++ java-support/trunk/doc/RELEASE-NOTES.txt Tue Aug 20 19:55:31 2013
@@ -4,3 +4,4 @@
[JSPT-16] - Add a ServletListener that configures logback with a specified configuration file
[JSPT-23] - SerializeSupport prettyPrintXML has reverted impl to diverge from writeNode and nodeToString
[JSPT-24] - Type4UuidIdentifier and RandomIdentifier generation strategies do not generate a valid XML ID
+[JSPT-27] - ClassToInstanceMultiMap get() returns duplicate values
Modified: java-support/trunk/src/main/java/net/shibboleth/utilities/java/support/collection/ClassToInstanceMultiMap.java
URL: http://svn.shibboleth.net/view/utilities/java-support/trunk/src/main/java/net/shibboleth/utilities/java/support/collection/ClassToInstanceMultiMap.java?rev=425&r1=424&r2=425&view=diff
==============================================================================
--- java-support/trunk/src/main/java/net/shibboleth/utilities/java/support/collection/ClassToInstanceMultiMap.java (original)
+++ java-support/trunk/src/main/java/net/shibboleth/utilities/java/support/collection/ClassToInstanceMultiMap.java Tue Aug 20 19:55:31 2013
@@ -21,6 +21,7 @@
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -157,7 +158,7 @@
values.add(value);
}
- final ArrayList<Class<?>> valueTypes = new ArrayList<Class<?>>();
+ final HashSet<Class<?>> valueTypes = new HashSet<Class<?>>();
valueTypes.add(value.getClass());
if (indexSupertypes) {
@@ -230,7 +231,7 @@
* @param clazz class for which supertypes will be determined
* @param accumulator collection to which supertypes are added as they are determined
*/
- private void getSuperTypes(final Class<?> clazz, final ArrayList<Class<?>> accumulator) {
+ private void getSuperTypes(final Class<?> clazz, Set<Class<?>> accumulator) {
final Class<?> superclass = clazz.getSuperclass();
if (superclass != null && superclass != Object.class) {
accumulator.add(superclass);
Modified: java-support/trunk/src/test/java/net/shibboleth/utilities/java/support/collection/ClassToInstanceMultiMapTest.java
URL: http://svn.shibboleth.net/view/utilities/java-support/trunk/src/test/java/net/shibboleth/utilities/java/support/collection/ClassToInstanceMultiMapTest.java?rev=425&r1=424&r2=425&view=diff
==============================================================================
--- java-support/trunk/src/test/java/net/shibboleth/utilities/java/support/collection/ClassToInstanceMultiMapTest.java (original)
+++ java-support/trunk/src/test/java/net/shibboleth/utilities/java/support/collection/ClassToInstanceMultiMapTest.java Tue Aug 20 19:55:31 2013
@@ -117,6 +117,18 @@
values = map.get(Instant.class);
Assert.assertEquals(values.size(), 1);
}
+
+ @Test public void testNoIndexedDuplicateValues() {
+ ClassToInstanceMultiMap<Object> map = new ClassToInstanceMultiMap<Object>(true);
+
+ map.put(new FooBarImpl());
+
+ Assert.assertEquals(map.get(Foo.class).size(), 1);
+ Assert.assertEquals(map.get(Bar.class).size(), 1);
+ Assert.assertEquals(map.get(AbstractFoo.class).size(), 1);
+ Assert.assertEquals(map.get(AbstractFooBar.class).size(), 1);
+ Assert.assertEquals(map.get(FooBarImpl.class).size(), 1);
+ }
protected void populate(ClassToInstanceMultiMap<AbstractInstant> map) {
DateTime now = new DateTime();
@@ -128,4 +140,20 @@
Instant instant = new Instant();
map.put(instant);
}
+
+
+ // Test classes and interfaces
+
+ public interface Foo { };
+
+ public interface Bar extends Foo { };
+
+ public abstract class AbstractFoo implements Foo { };
+
+ public class FooImpl extends AbstractFoo { };
+
+ public abstract class AbstractFooBar extends AbstractFoo implements Bar { };
+
+ public class FooBarImpl extends AbstractFooBar { };
+
}
More information about the commits
mailing list