org.apache.myfaces.trinidad.util
Class CollectionUtils

java.lang.Object
  extended by org.apache.myfaces.trinidad.util.CollectionUtils

public final class CollectionUtils
extends java.lang.Object

This class contains Collection utilities.


Nested Class Summary
protected static class CollectionUtils.DelegatingCollection<E>
           
protected static class CollectionUtils.DelegatingEntry<K,V>
           
protected static class CollectionUtils.DelegatingMap<K,V>
           
 
Method Summary
protected static
<T> T[]
copyOf(T[] original, int newLength)
           
protected static
<T,U> T[]
copyOf(U[] original, int newLength, java.lang.Class<? extends T[]> newType)
           
static
<K,V> java.util.Map<K,V>
getCheckedSerializationMap(java.util.Map<K,V> map)
          Creates a Map that dynamically verifies that all keys and values added to it will succeed Serialization.
static
<T> java.util.Collection<T>
getSerializableCollection(java.util.Collection<T> c)
          Returns a Collection based on the passed in Collection c, guaranteed to be Serializable.
static
<T> java.util.List<T>
getSerializableList(java.util.List<T> l)
          Returns a List based on the passed in List l, guaranteed to be Serializable.
static
<T> java.util.List<T>
newSerializableList(java.util.List<T> l)
          Returns a List based on the passed in List l, guaranteed to be Serializable.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

getSerializableCollection

public static <T> java.util.Collection<T> getSerializableCollection(java.util.Collection<T> c)
Returns a Collection based on the passed in Collection c, guaranteed to be Serializable. If c is Serializable, c will be returned, otherwise, c will be wrapped in a Collection that implements Serializable and upon Serialization the contents of c will be copied into the result.

The results is very similar to creating a new ArrayList with the contents of c, but no wrapper is created unless necessary and the actual creation of the Serializable copy is deferred until Serialization occurs.

Parameters:
c - The Collection to get a Serializable version of
Returns:
A Serializable version of Collection c
See Also:
getSerializableList(java.util.List)

newSerializableList

public static <T> java.util.List<T> newSerializableList(java.util.List<T> l)
Returns a List based on the passed in List l, guaranteed to be Serializable. List l will be wrapped in a List that implements Serializable and upon Serialization the contents of l will be copied into the result.

If l implements RandomAccess, any returned List will also implement RandomAccess.

The results is very similar to creating a new ArrayList with the contents of l, but no wrapper is created unless necessary and the actual creation of the Serializable copy is deferred until Serialization occurs.

Code that calls List.subList() and needs the result to be Serializable should always use newSerializableList rather than getSerializableList because the java.util.Collections implementations of checkedList, unmodifiableList, and synchronizedList all lie and always implement Serializable, regardless of the serializability of their backing List.

Parameters:
l - The List to get a Serializable version of
Returns:
A Serializable version of List l
See Also:
getSerializableList(java.util.List), getSerializableCollection(java.util.Collection)

getSerializableList

public static <T> java.util.List<T> getSerializableList(java.util.List<T> l)
Returns a List based on the passed in List l, guaranteed to be Serializable. If l is Serializable, l will be returned, otherwise, l will be wrapped in a List that implements Serializable and upon Serialization the contents of l will be copied into the result.

If l implements RandomAccess, any returned List will also implement RandomAccess.

The results is very similar to creating a new ArrayList with the contents of l, but no wrapper is created unless necessary and the actual creation of the Serializable copy is deferred until Serialization occurs.

Code that calls List.subList() and needs the result to be Serializable should always use newSerializableList rather than getSerializableList because the java.util.Collections implementations of checkedList, unmodifiableList, and synchronizedList all lie and always implement Serializable, regardless of the serializability of their backing List.

Parameters:
l - The List to get a Serializable version of
Returns:
A Serializable version of List l
See Also:
newSerializableList(java.util.List), getSerializableCollection(java.util.Collection)

getCheckedSerializationMap

public static <K,V> java.util.Map<K,V> getCheckedSerializationMap(java.util.Map<K,V> map)
Creates a Map that dynamically verifies that all keys and values added to it will succeed Serialization. The validations checks not only that the keys and values added to the Map implement Serializable, but that these instances will actually succeed Serialization.

This checking can be defeated by either modifying the backing map directly or by modifying an object added to the checked Map after adding it.

Parameters:
map - Map to wrap for Serialization validation
Returns:
Map where all modifications are checked to ensure that they will succeeed if Serialized

copyOf

protected static <T> T[] copyOf(T[] original,
                                int newLength)

copyOf

protected static <T,U> T[] copyOf(U[] original,
                                  int newLength,
                                  java.lang.Class<? extends T[]> newType)


Copyright © 2001-2008 The Apache Software Foundation. All Rights Reserved.