Merging from -r468106:814127 of collections_jdk5_branch - namely where this code was generified; mostly in r738956.

Also see the following revisions:

    ------------------------------------------------------------------------
    r471189 | scolebourne | 2006-11-04 05:57:57 -0800 (Sat, 04 Nov 2006) | 1 line
    
    Remove getMap(), getOrderedMap() and getSortedMap() - use decorated()
    ------------------------------------------------------------------------


git-svn-id: https://svn.apache.org/repos/asf/commons/proper/collections/trunk@815085 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Henri Yandell 2009-09-15 05:56:18 +00:00
parent 4a1e68e1b8
commit ce592ac817

View File

@ -43,9 +43,9 @@ import org.apache.commons.collections.Transformer;
*
* @author Stephen Colebourne
*/
public class TransformedSortedMap
extends TransformedMap
implements SortedMap {
public class TransformedSortedMap<K, V>
extends TransformedMap<K, V>
implements SortedMap<K, V> {
/** Serialization version */
private static final long serialVersionUID = -8751771676410385778L;
@ -62,8 +62,10 @@ public class TransformedSortedMap
* @param valueTransformer the predicate to validate to values, null means no transformation
* @throws IllegalArgumentException if the map is null
*/
public static SortedMap decorate(SortedMap map, Transformer keyTransformer, Transformer valueTransformer) {
return new TransformedSortedMap(map, keyTransformer, valueTransformer);
public static <K, V> SortedMap<K, V> decorate(SortedMap<K, V> map,
Transformer<? super K, ? extends K> keyTransformer,
Transformer<? super V, ? extends V> valueTransformer) {
return new TransformedSortedMap<K, V>(map, keyTransformer, valueTransformer);
}
/**
@ -80,12 +82,14 @@ public class TransformedSortedMap
* @throws IllegalArgumentException if map is null
* @since Commons Collections 3.2
*/
public static SortedMap decorateTransform(SortedMap map, Transformer keyTransformer, Transformer valueTransformer) {
TransformedSortedMap decorated = new TransformedSortedMap(map, keyTransformer, valueTransformer);
public static <K, V> SortedMap<K, V> decorateTransform(SortedMap<K, V> map,
Transformer<? super K, ? extends K> keyTransformer,
Transformer<? super V, ? extends V> valueTransformer) {
TransformedSortedMap<K, V> decorated = new TransformedSortedMap<K, V>(map, keyTransformer, valueTransformer);
if (map.size() > 0) {
Map transformed = decorated.transformMap(map);
Map<K, V> transformed = decorated.transformMap(map);
decorated.clear();
decorated.getMap().putAll(transformed); // avoids double transformation
decorated.decorated().putAll(transformed); // avoids double transformation
}
return decorated;
}
@ -102,7 +106,9 @@ public class TransformedSortedMap
* @param valueTransformer the predicate to validate to values, null means no transformation
* @throws IllegalArgumentException if the map is null
*/
protected TransformedSortedMap(SortedMap map, Transformer keyTransformer, Transformer valueTransformer) {
protected TransformedSortedMap(SortedMap<K, V> map,
Transformer<? super K, ? extends K> keyTransformer,
Transformer<? super V, ? extends V> valueTransformer) {
super(map, keyTransformer, valueTransformer);
}
@ -112,36 +118,36 @@ public class TransformedSortedMap
*
* @return the decorated map
*/
protected SortedMap getSortedMap() {
return (SortedMap) map;
protected SortedMap<K, V> getSortedMap() {
return (SortedMap<K, V>) map;
}
//-----------------------------------------------------------------------
public Object firstKey() {
public K firstKey() {
return getSortedMap().firstKey();
}
public Object lastKey() {
public K lastKey() {
return getSortedMap().lastKey();
}
public Comparator comparator() {
public Comparator<? super K> comparator() {
return getSortedMap().comparator();
}
public SortedMap subMap(Object fromKey, Object toKey) {
SortedMap map = getSortedMap().subMap(fromKey, toKey);
return new TransformedSortedMap(map, keyTransformer, valueTransformer);
public SortedMap<K, V> subMap(K fromKey, K toKey) {
SortedMap<K, V> map = getSortedMap().subMap(fromKey, toKey);
return new TransformedSortedMap<K, V>(map, keyTransformer, valueTransformer);
}
public SortedMap headMap(Object toKey) {
SortedMap map = getSortedMap().headMap(toKey);
return new TransformedSortedMap(map, keyTransformer, valueTransformer);
public SortedMap<K, V> headMap(K toKey) {
SortedMap<K, V> map = getSortedMap().headMap(toKey);
return new TransformedSortedMap<K, V>(map, keyTransformer, valueTransformer);
}
public SortedMap tailMap(Object fromKey) {
SortedMap map = getSortedMap().tailMap(fromKey);
return new TransformedSortedMap(map, keyTransformer, valueTransformer);
public SortedMap<K, V> tailMap(K fromKey) {
SortedMap<K, V> map = getSortedMap().tailMap(fromKey);
return new TransformedSortedMap<K, V>(map, keyTransformer, valueTransformer);
}
}