Ticket #13948: validator_seems_to_hang.patch
| File validator_seems_to_hang.patch, 7.4 KB (added by , 9 years ago) |
|---|
-
src/org/openstreetmap/josm/data/validation/TestError.java
11 11 import java.util.TreeSet; 12 12 import java.util.function.Supplier; 13 13 14 import org.openstreetmap.josm.Main;15 14 import org.openstreetmap.josm.command.Command; 16 15 import org.openstreetmap.josm.data.osm.Node; 17 16 import org.openstreetmap.josm.data.osm.OsmPrimitive; … … 18 17 import org.openstreetmap.josm.data.osm.Relation; 19 18 import org.openstreetmap.josm.data.osm.Way; 20 19 import 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;30 20 import org.openstreetmap.josm.data.validation.util.MultipleNameVisitor; 31 21 import org.openstreetmap.josm.tools.AlphanumComparator; 32 22 import org.openstreetmap.josm.tools.CheckParameterUtil; … … 36 26 * Validation error 37 27 * @since 3669 38 28 */ 39 public class TestError implements Comparable<TestError> , DataSetListener{29 public class TestError implements Comparable<TestError> { 40 30 /** is this error on the ignore list */ 41 31 private boolean ignored; 42 32 /** Severity */ … … 583 573 return AlphanumComparator.getInstance().compare(v1.toString(), v2.toString()); 584 574 } 585 575 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 nothing601 }602 603 @Override public void tagsChanged(TagsChangedEvent event) {604 // Do nothing605 }606 607 @Override public void nodeMoved(NodeMovedEvent event) {608 // Do nothing609 }610 611 @Override public void wayNodesChanged(WayNodesChangedEvent event) {612 // Do nothing613 }614 615 @Override public void relationMembersChanged(RelationMembersChangedEvent event) {616 // Do nothing617 }618 619 @Override public void otherDatasetChange(AbstractDatasetChangedEvent event) {620 // Do nothing621 }622 623 @Override public void dataChanged(DataChangedEvent event) {624 // Do nothing625 }626 627 576 @Override 628 577 public String toString() { 629 578 return "TestError [tester=" + tester + ", code=" + code + ", message=" + message + ']'; -
src/org/openstreetmap/josm/gui/dialogs/validator/ValidatorTreePanel.java
29 29 import org.openstreetmap.josm.Main; 30 30 import org.openstreetmap.josm.data.osm.DataSet; 31 31 import org.openstreetmap.josm.data.osm.OsmPrimitive; 32 import org.openstreetmap.josm.data.osm.event.AbstractDatasetChangedEvent; 33 import org.openstreetmap.josm.data.osm.event.DataChangedEvent; 34 import org.openstreetmap.josm.data.osm.event.DataSetListener; 35 import org.openstreetmap.josm.data.osm.event.NodeMovedEvent; 36 import org.openstreetmap.josm.data.osm.event.PrimitivesAddedEvent; 37 import org.openstreetmap.josm.data.osm.event.PrimitivesRemovedEvent; 38 import org.openstreetmap.josm.data.osm.event.RelationMembersChangedEvent; 39 import org.openstreetmap.josm.data.osm.event.TagsChangedEvent; 40 import org.openstreetmap.josm.data.osm.event.WayNodesChangedEvent; 32 41 import org.openstreetmap.josm.data.validation.Severity; 33 42 import org.openstreetmap.josm.data.validation.TestError; 34 43 import org.openstreetmap.josm.data.validation.util.MultipleNameVisitor; … … 45 54 * 46 55 * @author frsantos 47 56 */ 48 public class ValidatorTreePanel extends JTree implements Destroyable {57 public class ValidatorTreePanel extends JTree implements Destroyable, DataSetListener { 49 58 50 59 private static final class GroupTreeNode extends DefaultMutableTreeNode { 51 60 … … 95 104 removeKeyListener(keyListener); 96 105 } 97 106 } 107 DataSet ds = Main.getLayerManager().getEditDataSet(); 108 if (ds != null) { 109 ds.addDataSetListener(this); 110 } 98 111 } 99 112 100 113 @Override … … 302 315 if (errors == null) 303 316 return; 304 317 clearErrors(); 305 DataSet ds = Main.getLayerManager().getEditDataSet();306 318 for (TestError error : newerrors) { 307 319 if (!error.isIgnored()) { 308 320 errors.add(error); 309 if (ds != null) {310 ds.addDataSetListener(error);311 }312 321 } 313 322 } 314 323 if (isVisible()) { … … 413 422 414 423 private void clearErrors() { 415 424 if (errors != null) { 416 DataSet ds = Main.getLayerManager().getEditDataSet();417 if (ds != null) {418 for (TestError e : errors) {419 ds.removeDataSetListener(e);420 }421 }422 425 errors.clear(); 423 426 } 424 427 } … … 425 428 426 429 @Override 427 430 public void destroy() { 431 DataSet ds = Main.getLayerManager().getEditDataSet(); 432 if (ds != null) { 433 ds.removeDataSetListener(this); 434 } 428 435 clearErrors(); 429 436 } 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 } 430 480 }
