Changeset 11115 in josm


Ignore:
Timestamp:
2016-10-11T19:05:20+02:00 (8 years ago)
Author:
simon04
Message:

fix #13785 - Use streams, add unit tests (patch by alno, modified)

Location:
trunk
Files:
3 added
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/data/osm/Changeset.java

    r10378 r11115  
    208208    public void setKeys(Map<String, String> keys) {
    209209        CheckParameterUtil.ensureParameterNotNull(keys, "keys");
    210         for (String value : keys.values()) {
    211             if (value != null && value.length() > MAX_CHANGESET_TAG_LENGTH) {
     210        keys.values().stream()
     211                .filter(value -> (value != null && value.length() > MAX_CHANGESET_TAG_LENGTH))
     212                .findFirst()
     213                .ifPresent(value -> {
    212214                throw new IllegalArgumentException("Changeset tag value is too long: "+value);
    213             }
    214         }
     215        });
    215216        this.tags = keys;
    216217    }
  • trunk/src/org/openstreetmap/josm/data/osm/ChangesetCache.java

    r10763 r11115  
    1010import java.util.Set;
    1111import java.util.concurrent.CopyOnWriteArrayList;
     12import java.util.stream.Collectors;
    1213
    1314import org.openstreetmap.josm.Main;
     
    183184     */
    184185    public List<Changeset> getOpenChangesets() {
    185         List<Changeset> ret = new ArrayList<>();
    186         for (Changeset cs: cache.values()) {
    187             if (cs.isOpen()) {
    188                 ret.add(cs);
    189             }
    190         }
    191         return ret;
     186        return cache.values().stream()
     187                .filter(Changeset::isOpen)
     188                .collect(Collectors.toList());
    192189    }
    193190
  • trunk/src/org/openstreetmap/josm/data/osm/ChangesetDataSet.java

    r10378 r11115  
    33
    44import java.util.HashMap;
    5 import java.util.HashSet;
    65import java.util.Iterator;
    76import java.util.Map;
    87import java.util.Map.Entry;
    98import java.util.Set;
     9import java.util.stream.Collectors;
    1010
    1111import org.openstreetmap.josm.data.osm.history.HistoryOsmPrimitive;
     
    117117    public Set<HistoryOsmPrimitive> getPrimitivesByModificationType(ChangesetModificationType cmt) {
    118118        CheckParameterUtil.ensureParameterNotNull(cmt, "cmt");
    119         Set<HistoryOsmPrimitive> ret = new HashSet<>();
    120         for (Entry<PrimitiveId, ChangesetModificationType> entry: modificationTypes.entrySet()) {
    121             if (entry.getValue().equals(cmt)) {
    122                 ret.add(primitives.get(entry.getKey()));
    123             }
    124         }
    125         return ret;
     119        return modificationTypes.entrySet().stream()
     120                .filter(entry -> entry.getValue().equals(cmt))
     121                .map(entry -> primitives.get(entry.getKey()))
     122                .collect(Collectors.toSet());
    126123    }
    127124
  • trunk/src/org/openstreetmap/josm/data/osm/DataSet.java

    r11095 r11115  
    2121import java.util.concurrent.locks.ReentrantReadWriteLock;
    2222import java.util.function.Predicate;
     23import java.util.stream.Collectors;
    2324
    2425import org.openstreetmap.josm.Main;
     
    420421        try {
    421422            // QuadBuckets might be useful here (don't forget to do reindexing after some of rm is changed)
    422             List<Relation> result = new ArrayList<>();
    423             for (Relation r: relations) {
    424                 if (r.getBBox().intersects(bbox)) {
    425                     result.add(r);
    426                 }
    427             }
    428             return result;
     423            return relations.stream()
     424                    .filter(r -> r.getBBox().intersects(bbox))
     425                    .collect(Collectors.toList());
    429426        } finally {
    430427            lock.readLock().unlock();
  • trunk/src/org/openstreetmap/josm/gui/conflict/pair/ListMergeModel.java

    r10680 r11115  
    226226        synchronized (listeners) {
    227227            PropertyChangeEvent evt = new PropertyChangeEvent(this, FROZEN_PROP, oldValue, newValue);
    228             for (PropertyChangeListener listener: listeners) {
     228            listeners.forEach((listener) -> {
    229229                listener.propertyChange(evt);
     230            });
    230231            }
    231232        }
    232     }
    233233
    234234    public final void setFrozen(boolean isFrozen) {
     
    678678            if (row >= getEntries().size()) return false;
    679679            T e1 = getEntries().get(row);
    680             for (T e2: getOppositeEntries()) {
    681                 if (isEqualEntry(e1, e2)) return true;
     680            return getOppositeEntries().stream().anyMatch(e2 -> isEqualEntry(e1, e2));
    682681            }
    683             return false;
    684         }
    685682
    686683        protected List<T> getEntries() {
  • trunk/test/unit/org/openstreetmap/josm/data/osm/ChangesetCacheTest.java

    r11105 r11115  
    77import static org.junit.Assert.assertTrue;
    88
     9import java.util.ArrayList;
     10import java.util.Collections;
    911import java.util.List;
    1012
     13import org.junit.Assert;
    1114import org.junit.Test;
    1215import org.openstreetmap.josm.TestUtils;
     
    180183        cache.removeChangesetCacheListener(listener);
    181184    }
     185
     186    /**
     187     * Unit test of method {@link ChangesetCache#getOpenChangesets}.
     188     */
     189    @Test
     190    public void testGetOpenChangesets() {
     191        final ChangesetCache cache = ChangesetCache.getInstance();
     192        // empty cache => empty list
     193        Assert.assertTrue(
     194                "Empty cache should produce an empty list.",
     195                cache.getOpenChangesets().isEmpty()
     196        );
     197
     198        // cache with only closed changesets => empty list
     199        Changeset closedCs = new Changeset(1);
     200        closedCs.setOpen(false);
     201        cache.update(closedCs);
     202        Assert.assertTrue(
     203                "Cache with only closed changesets should produce an empty list.",
     204                cache.getOpenChangesets().isEmpty()
     205        );
     206
     207        // cache with open and closed changesets => list with only the open ones
     208        Changeset openCs = new Changeset(2);
     209        openCs.setOpen(true);
     210        cache.update(openCs);
     211        Assert.assertEquals(
     212                Collections.singletonList(openCs),
     213                cache.getOpenChangesets()
     214        );
     215    }
    182216}
Note: See TracChangeset for help on using the changeset viewer.