Changeset 11235 in josm for trunk/src/org


Ignore:
Timestamp:
2016-11-11T15:22:10+01:00 (3 years ago)
Author:
bastiK
Message:

applied #13948 - Validator seems to hang in last executed test (patch by Gerd Petermann)

Location:
trunk/src/org/openstreetmap/josm
Files:
2 edited

Legend:

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

    r11191 r11235  
    1212import java.util.function.Supplier;
    1313
    14 import org.openstreetmap.josm.Main;
    1514import org.openstreetmap.josm.command.Command;
    1615import org.openstreetmap.josm.data.osm.Node;
     
    1918import org.openstreetmap.josm.data.osm.Way;
    2019import org.openstreetmap.josm.data.osm.WaySegment;
    21 import org.openstreetmap.josm.data.osm.event.AbstractDatasetChangedEvent;
    22 import org.openstreetmap.josm.data.osm.event.DataChangedEvent;
    23 import org.openstreetmap.josm.data.osm.event.DataSetListener;
    24 import org.openstreetmap.josm.data.osm.event.NodeMovedEvent;
    25 import org.openstreetmap.josm.data.osm.event.PrimitivesAddedEvent;
    26 import org.openstreetmap.josm.data.osm.event.PrimitivesRemovedEvent;
    27 import org.openstreetmap.josm.data.osm.event.RelationMembersChangedEvent;
    28 import org.openstreetmap.josm.data.osm.event.TagsChangedEvent;
    29 import org.openstreetmap.josm.data.osm.event.WayNodesChangedEvent;
    3020import org.openstreetmap.josm.data.validation.util.MultipleNameVisitor;
    3121import org.openstreetmap.josm.tools.AlphanumComparator;
     
    3727 * @since 3669
    3828 */
    39 public class TestError implements Comparable<TestError>, DataSetListener {
     29public class TestError implements Comparable<TestError> {
    4030    /** is this error on the ignore list */
    4131    private boolean ignored;
     
    584574    }
    585575
    586     @Override public void primitivesRemoved(PrimitivesRemovedEvent event) {
    587         // Remove purged primitives (fix #8639)
    588         try {
    589             primitives.removeAll(event.getPrimitives());
    590         } catch (UnsupportedOperationException e) {
    591             if (event.getPrimitives().containsAll(primitives)) {
    592                 primitives = Collections.emptyList();
    593             } else {
    594                 Main.warn(e, "Unable to remove primitives from "+this+'.');
    595             }
    596         }
    597     }
    598 
    599     @Override public void primitivesAdded(PrimitivesAddedEvent event) {
    600         // Do nothing
    601     }
    602 
    603     @Override public void tagsChanged(TagsChangedEvent event) {
    604         // Do nothing
    605     }
    606 
    607     @Override public void nodeMoved(NodeMovedEvent event) {
    608         // Do nothing
    609     }
    610 
    611     @Override public void wayNodesChanged(WayNodesChangedEvent event) {
    612         // Do nothing
    613     }
    614 
    615     @Override public void relationMembersChanged(RelationMembersChangedEvent event) {
    616         // Do nothing
    617     }
    618 
    619     @Override public void otherDatasetChange(AbstractDatasetChangedEvent event) {
    620         // Do nothing
    621     }
    622 
    623     @Override public void dataChanged(DataChangedEvent event) {
    624         // Do nothing
    625     }
    626 
    627576    @Override
    628577    public String toString() {
  • trunk/src/org/openstreetmap/josm/gui/dialogs/validator/ValidatorTreePanel.java

    r11132 r11235  
    3030import org.openstreetmap.josm.data.osm.DataSet;
    3131import org.openstreetmap.josm.data.osm.OsmPrimitive;
     32import org.openstreetmap.josm.data.osm.event.AbstractDatasetChangedEvent;
     33import org.openstreetmap.josm.data.osm.event.DataChangedEvent;
     34import org.openstreetmap.josm.data.osm.event.DataSetListener;
     35import org.openstreetmap.josm.data.osm.event.NodeMovedEvent;
     36import org.openstreetmap.josm.data.osm.event.PrimitivesAddedEvent;
     37import org.openstreetmap.josm.data.osm.event.PrimitivesRemovedEvent;
     38import org.openstreetmap.josm.data.osm.event.RelationMembersChangedEvent;
     39import org.openstreetmap.josm.data.osm.event.TagsChangedEvent;
     40import org.openstreetmap.josm.data.osm.event.WayNodesChangedEvent;
    3241import org.openstreetmap.josm.data.validation.Severity;
    3342import org.openstreetmap.josm.data.validation.TestError;
     
    4655 * @author frsantos
    4756 */
    48 public class ValidatorTreePanel extends JTree implements Destroyable {
     57public class ValidatorTreePanel extends JTree implements Destroyable, DataSetListener {
    4958
    5059    private static final class GroupTreeNode extends DefaultMutableTreeNode {
     
    95104                removeKeyListener(keyListener);
    96105            }
     106        }
     107        DataSet ds = Main.getLayerManager().getEditDataSet();
     108        if (ds != null) {
     109            ds.addDataSetListener(this);
    97110        }
    98111    }
     
    303316            return;
    304317        clearErrors();
    305         DataSet ds = Main.getLayerManager().getEditDataSet();
    306318        for (TestError error : newerrors) {
    307319            if (!error.isIgnored()) {
    308320                errors.add(error);
    309                 if (ds != null) {
    310                     ds.addDataSetListener(error);
    311                 }
    312321            }
    313322        }
     
    414423    private void clearErrors() {
    415424        if (errors != null) {
    416             DataSet ds = Main.getLayerManager().getEditDataSet();
    417             if (ds != null) {
    418                 for (TestError e : errors) {
    419                     ds.removeDataSetListener(e);
    420                 }
    421             }
    422425            errors.clear();
    423426        }
     
    426429    @Override
    427430    public void destroy() {
     431        DataSet ds = Main.getLayerManager().getEditDataSet();
     432        if (ds != null) {
     433            ds.removeDataSetListener(this);
     434        }
    428435        clearErrors();
    429436    }
     437
     438    @Override public void primitivesRemoved(PrimitivesRemovedEvent event) {
     439        // Remove purged primitives (fix #8639)
     440        for (TestError err : errors) {
     441            try {
     442                err.getPrimitives().removeAll(event.getPrimitives());
     443            } catch (UnsupportedOperationException e) {
     444                if (event.getPrimitives().containsAll(err.getPrimitives())) {
     445                    err.getPrimitives().clear();
     446                } else {
     447                    Main.warn(e, "Unable to remove primitives from "+err+'.');
     448                }
     449            }
     450        }
     451    }
     452
     453    @Override public void primitivesAdded(PrimitivesAddedEvent event) {
     454        // Do nothing
     455    }
     456
     457    @Override public void tagsChanged(TagsChangedEvent event) {
     458        // Do nothing
     459    }
     460
     461    @Override public void nodeMoved(NodeMovedEvent event) {
     462        // Do nothing
     463    }
     464
     465    @Override public void wayNodesChanged(WayNodesChangedEvent event) {
     466        // Do nothing
     467    }
     468
     469    @Override public void relationMembersChanged(RelationMembersChangedEvent event) {
     470        // Do nothing
     471    }
     472
     473    @Override public void otherDatasetChange(AbstractDatasetChangedEvent event) {
     474        // Do nothing
     475    }
     476
     477    @Override public void dataChanged(DataChangedEvent event) {
     478        // Do nothing
     479    }
    430480}
Note: See TracChangeset for help on using the changeset viewer.