You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sis.apache.org by de...@apache.org on 2013/04/12 23:16:42 UTC
svn commit: r1467466 - in /sis/branches/JDK7:
sis-metadata/src/main/java/org/apache/sis/metadata/Cloner.java
sis-utility/src/main/java/org/apache/sis/internal/util/CollectionsExt.java
Author: desruisseaux
Date: Fri Apr 12 21:16:41 2013
New Revision: 1467466
URL: http://svn.apache.org/r1467466
Log:
immutableSet as an internal method (research in Geotk code base suggests that it will be used again later).
Modified:
sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/Cloner.java
sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/internal/util/CollectionsExt.java
Modified: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/Cloner.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/Cloner.java?rev=1467466&r1=1467465&r2=1467466&view=diff
==============================================================================
--- sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/Cloner.java [UTF-8] (original)
+++ sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/Cloner.java [UTF-8] Fri Apr 12 21:16:41 2013
@@ -16,17 +16,14 @@
*/
package org.apache.sis.metadata;
-import java.util.Arrays;
import java.util.Map;
import java.util.Set;
import java.util.Iterator;
import java.util.Collection;
import java.util.Collections;
import java.util.LinkedHashMap;
-import java.util.LinkedHashSet;
-
import org.apache.sis.util.collection.Containers;
-import static org.apache.sis.internal.util.CollectionsExt.unmodifiableOrCopy;
+import org.apache.sis.internal.util.CollectionsExt;
/**
@@ -104,11 +101,7 @@ final class Cloner extends org.apache.si
// Do not use the SIS Checked* classes since we don't
// need synchronization or type checking anymore.
if (isSet) {
- switch (array.length) {
- case 0: collection = Collections.emptySet(); break;
- case 1: collection = Collections.singleton(array[0]); break;
- default: collection = Collections.unmodifiableSet(new LinkedHashSet<>(Arrays.asList(array))); break;
- }
+ collection = CollectionsExt.immutableSet(array);
} else {
// Conservatively assumes a List if we are not sure to have a Set,
// since the list is less destructive (no removal of duplicated).
@@ -127,7 +120,7 @@ final class Cloner extends org.apache.si
final Map.Entry<Object,Object> entry = it.next();
entry.setValue(clone(entry.getValue()));
}
- return unmodifiableOrCopy(map);
+ return CollectionsExt.unmodifiableOrCopy(map);
}
/*
* CASE 4 - The object is presumed cloneable.
Modified: sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/internal/util/CollectionsExt.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/internal/util/CollectionsExt.java?rev=1467466&r1=1467465&r2=1467466&view=diff
==============================================================================
--- sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/internal/util/CollectionsExt.java [UTF-8] (original)
+++ sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/internal/util/CollectionsExt.java [UTF-8] Fri Apr 12 21:16:41 2013
@@ -83,6 +83,30 @@ public final class CollectionsExt extend
}
/**
+ * Returns the specified array as an immutable set, or {@code null} if the array is null.
+ * If the given array contains duplicated elements, i.e. elements that are equal in the
+ * sense of {@link Object#equals(Object)}, then only the last instance of the duplicated
+ * values will be included in the returned set.
+ *
+ * @param <E> The type of array elements.
+ * @param array The array to copy in a set. May be {@code null}.
+ * @return A set containing the array elements, or {@code null} if the given array was null.
+ *
+ * @see Collections#unmodifiableSet(Set)
+ */
+ @SafeVarargs
+ public static <E> Set<E> immutableSet(final E... array) {
+ if (array == null) {
+ return null;
+ }
+ switch (array.length) {
+ case 0: return Collections.emptySet();
+ case 1: return Collections.singleton(array[0]);
+ default: return Collections.unmodifiableSet(new LinkedHashSet<>(Arrays.asList(array)));
+ }
+ }
+
+ /**
* Returns a unmodifiable version of the given set.
* This method is different than the standard {@link Collections#unmodifiableSet(Set)}
* in that it tries to returns a more efficient object when there is zero or one element.