Ignore:
Timestamp:
2013-04-29T01:29:55+02:00 (11 years ago)
Author:
Don-vip
Message:

fix #8639 - Handle purged primitives in validator errors

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/data/validation/TestError.java

    r5783 r5911  
    88import java.util.TreeSet;
    99
     10import org.openstreetmap.josm.Main;
    1011import org.openstreetmap.josm.command.Command;
    1112import org.openstreetmap.josm.data.osm.Node;
     
    1415import org.openstreetmap.josm.data.osm.Way;
    1516import org.openstreetmap.josm.data.osm.WaySegment;
     17import org.openstreetmap.josm.data.osm.event.AbstractDatasetChangedEvent;
     18import org.openstreetmap.josm.data.osm.event.DataChangedEvent;
     19import org.openstreetmap.josm.data.osm.event.DataSetListener;
     20import org.openstreetmap.josm.data.osm.event.NodeMovedEvent;
     21import org.openstreetmap.josm.data.osm.event.PrimitivesAddedEvent;
     22import org.openstreetmap.josm.data.osm.event.PrimitivesRemovedEvent;
     23import org.openstreetmap.josm.data.osm.event.RelationMembersChangedEvent;
     24import org.openstreetmap.josm.data.osm.event.TagsChangedEvent;
     25import org.openstreetmap.josm.data.osm.event.WayNodesChangedEvent;
    1626import org.openstreetmap.josm.data.validation.util.MultipleNameVisitor;
    1727
     
    2030 * @author frsantos
    2131 */
    22 public class TestError implements Comparable<TestError> {
     32public class TestError implements Comparable<TestError>, DataSetListener {
    2333    /** is this error on the ignore list */
    2434    private Boolean ignored = false;
     
    290300        return v1.toString().compareToIgnoreCase(v2.toString());
    291301    }
     302
     303    @Override public void primitivesRemoved(PrimitivesRemovedEvent event) {
     304        // Remove purged primitives (fix #8639)
     305        try {
     306            primitives.removeAll(event.getPrimitives());
     307        } catch (UnsupportedOperationException e) {
     308            if (event.getPrimitives().containsAll(primitives)) {
     309                primitives = Collections.emptyList();
     310            } else {
     311                Main.warn("Unable to remove primitives from "+this);
     312            }
     313        }
     314    }
     315
     316    @Override public void primitivesAdded(PrimitivesAddedEvent event) {}
     317    @Override public void tagsChanged(TagsChangedEvent event) {}
     318    @Override public void nodeMoved(NodeMovedEvent event) {}
     319    @Override public void wayNodesChanged(WayNodesChangedEvent event) {}
     320    @Override public void relationMembersChanged(RelationMembersChangedEvent event) {}
     321    @Override public void otherDatasetChange(AbstractDatasetChangedEvent event) {}
     322    @Override public void dataChanged(DataChangedEvent event) {}
     323
     324    @Override
     325    public String toString() {
     326        return "TestError [tester=" + tester + ", code=" + code + "]";
     327    }
    292328}
Note: See TracChangeset for help on using the changeset viewer.