Ignore:
Timestamp:
2016-01-05T02:53:20+01:00 (9 years ago)
Author:
donvip
Message:

[josm_opendata] fix #josm12293 - use collections4 to compile with jdk8

Location:
applications/editors/josm/plugins/opendata
Files:
2 deleted
3 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/opendata/README

    r31940 r31942  
    1818
    1919- includes: several COTS, heavily truncated to fit only the plugin needs and reduce the JAR size:
    20     - org/apache: two Apache COTS (Apache License 2.0, see LICENSE-2.0.txt)
    21         - commons/collections: Apache Commons Collections 3.2.1 (used by jOpenDocument)
     20    - org/apache: one Apache COTS (Apache License 2.0, see LICENSE-2.0.txt)
    2221        - poi: Apache POI 3.7 (Excel format support without styles, formulas and writing capabilities, used by the plugin itself)
    2322    - org/j7zip: J7zip 4.43alpha2 (7z archive read support, LGPL v2.1, see LGPL-2.1.txt)
  • applications/editors/josm/plugins/opendata/includes/org/jopendocument/util/CollectionMap.java

    r30340 r31942  
    1818import static java.util.Arrays.asList;
    1919
    20 import java.util.ArrayList;
    21 import java.util.Collection;
    22 import java.util.Iterator;
    23 import java.util.Map;
    24 import java.util.Set;
    25 
    26 import org.apache.commons.collections.MultiHashMap;
    27 import org.apache.commons.collections.MultiMap;
    28 import org.apache.commons.collections.map.MultiValueMap;
     20import org.apache.commons.collections4.multimap.HashSetValuedHashMap;
    2921
    3022/**
    31  * Une MultiMap qui permet de ne pas renvoyer <code>null</code>. De plus elle permet de choisir le
    32  * type de Collection utilisé.
     23 * Une MultiMap.
    3324 *
    3425 * @author ILM Informatique 8 sept. 2004
     
    3728 */
    3829@SuppressWarnings({ "unchecked", "serial" })
    39 public class CollectionMap<K, V> extends MultiHashMap {
    40 
    41     private static final int DEFAULT_CAPACITY = 16;
    42 
    43     private final Class<? extends Collection<V>> collectionClass;
    44     private final Collection<V> collectionSpecimen;
     30public class CollectionMap<K, V> extends HashSetValuedHashMap<K,V> {
    4531
    4632    /**
    47      * Une nouvelle map avec ArrayList comme collection.
     33     * Une nouvelle map
    4834     */
    4935    public CollectionMap() {
    50         this(ArrayList.class);
    5136    }
    5237
    5338    /**
    54      * Une nouvelle map. <code>collectionClass</code> doit descendre de Collection, et posséder un
    55      * constructeur prenant une Collection (c'est le cas de la majorité des classes de java.util).
    56      *
    57      * @param aCollectionClass le type de collection utilisé.
    58      */
    59     public CollectionMap(Class aCollectionClass) {
    60         this(aCollectionClass, DEFAULT_CAPACITY);
    61     }
    62 
    63     /**
    64      * Une nouvelle map sans préciser le type de collection. Dans ce cas si vous voulez spécifier
    65      * une collection surchargez {@link #createCollection(Collection)}. Ce constructeur est donc
    66      * utile pour des raisons de performances (évite la réflexion nécessaire avec les autres).
     39     * Une nouvelle map
    6740     *
    6841     * @param initialCapacity the initial capacity.
    6942     */
    7043    public CollectionMap(final int initialCapacity) {
    71         this((Class) null, initialCapacity);
    72     }
    73 
    74     public CollectionMap(Class aCollectionClass, final int initialCapacity) {
    7544        super(initialCapacity);
    76         this.collectionClass = aCollectionClass;
    77         this.collectionSpecimen = null;
    78         new MultiValueMap(); // TODO: use this class instead of deprecated MultiHashMap
    79     }
    80 
    81     public Collection<V> createCollection(Collection coll) {
    82         if (this.collectionClass != null)
    83             try {
    84                 if (coll == null) {
    85                     return this.collectionClass.newInstance();
    86                 } else {
    87                     return this.collectionClass.getConstructor(new Class[] { Collection.class }).newInstance(new Object[] { coll });
    88                 }
    89             } catch (Exception e) {
    90                 throw new RuntimeException(e);
    91             }
    92         else if (this.collectionSpecimen != null) {
    93             try {
    94                 final Collection<V> res = CopyUtils.copy(this.collectionSpecimen);
    95                 if (coll != null)
    96                     res.addAll(coll);
    97                 return res;
    98             } catch (Exception e) {
    99                 throw ExceptionUtils.createExn(IllegalStateException.class, "clone() failed", e);
    100             }
    101         } else
    102             return super.createCollection(coll);
    103     }
    104 
    105     /**
    106      * Fusionne la MultiMap avec celle-ci. C'est à dire rajoute les valeurs de mm à la suite des
    107      * valeurs de cette map (contrairement à putAll(Map) qui ajoute les valeurs de mm en tant que
    108      * valeur scalaire et non en tant que collection).
    109      *
    110      * @param mm la MultiMap à fusionner.
    111      */
    112     public void merge(MultiMap mm) {
    113         // copied from super ctor
    114         for (Iterator it = mm.entrySet().iterator(); it.hasNext();) {
    115             final Map.Entry entry = (Map.Entry) it.next();
    116             Collection<V> coll = (Collection<V>) entry.getValue();
    117             Collection newColl = createCollection(coll);
    118             this.putAll(entry.getKey(), newColl);
    119         }
    120     }
    121 
    122     /**
    123      * Copies all of the mappings from the specified map to this map. This method is equivalent to
    124      * {@link MultiHashMap#MultiHashMap(Map)}. NOTE: cannot use Map<? extends K, ? extends V> since
    125      * java complains (MultiHashMap not being generic).
    126      *
    127      * @param m mappings to be stored in this map
    128      */
    129     @Override
    130     public void putAll(Map mapToCopy) {
    131         if (mapToCopy instanceof MultiMap) {
    132             this.merge((MultiMap) mapToCopy);
    133         } else {
    134             super.putAll(mapToCopy);
    135         }
    136     }
     45    }
    13746
    13847    public boolean putAll(K key, V... values) {
    13948        return this.putAll(key, asList(values));
    14049    }
    141 
    142     // generics : MultiHashMap is not generic but it extends HashMap who does
    143     // so just override
    144 
    145     @Override
    146     public Set<Map.Entry<K, Collection<V>>> entrySet() {
    147         return super.entrySet();
    148     }
    149 
    150     @Override
    151     public Set<K> keySet() {
    152         return super.keySet();
    153     }
    154 
    155     @Override
    156     public Collection<V> values() {
    157         return super.values();
    158     }
    15950}
  • applications/editors/josm/plugins/opendata/includes/org/jopendocument/util/CollectionUtils.java

    r28000 r31942  
    2121import java.util.RandomAccess;
    2222
    23 import org.jopendocument.util.cc.ITransformer;
     23import org.apache.commons.collections4.Transformer;
     24import org.apache.commons.collections4.TransformerUtils;
    2425
    2526/**
     
    2829 * @author ILM Informatique 30 sept. 2004
    2930 */
    30 public class CollectionUtils extends org.apache.commons.collections.CollectionUtils {
     31public class CollectionUtils {
    3132
    3233    /**
     
    4041     * @return la chaine composée de chacun des éléments séparés par <code>sep</code>.
    4142     */
    42     static public final <E> String join(final Collection<E> c, final String sep, final ITransformer<? super E, ?> tf) {
     43    static public final <E> String join(final Collection<E> c, final String sep, final Transformer<? super E, ?> tf) {
    4344        if (c.size() == 0)
    4445            return "";
     
    4950            final int stop = c.size() - 1;
    5051            for (int i = 0; i < stop; i++) {
    51                 res.append(tf.transformChecked(list.get(i)));
     52                res.append(tf.transform(list.get(i)));
    5253                res.append(sep);
    5354
    5455            }
    55             res.append(tf.transformChecked(list.get(stop)));
     56            res.append(tf.transform(list.get(stop)));
    5657        } else {
    5758            final Iterator<E> iter = c.iterator();
    5859            while (iter.hasNext()) {
    5960                final E elem = iter.next();
    60                 res.append(tf.transformChecked(elem));
     61                res.append(tf.transform(elem));
    6162                if (iter.hasNext())
    6263                    res.append(sep);
     
    7677     */
    7778    static public <T> String join(Collection<T> c, String sep) {
    78         return join(c, sep, org.jopendocument.util.cc.Transformer.<T> nopTransformer());
     79        return join(c, sep, TransformerUtils.<T>nopTransformer());
    7980    }
    8081}
Note: See TracChangeset for help on using the changeset viewer.