Ignore:
Timestamp:
2010-06-27T17:07:49+02:00 (14 years ago)
Author:
jttt
Message:

Thread safe Dataset and OsmPrimitive, read/write lock for dataset

File:
1 edited

Legend:

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

    r3253 r3348  
    2020        if(coor != null){
    2121            if (getDataSet() != null) {
    22                 getDataSet().fireNodeMoved(this, coor);
     22                boolean locked = writeLock();
     23                try {
     24                    getDataSet().fireNodeMoved(this, coor);
     25                } finally {
     26                    writeUnlock(locked);
     27                }
    2328            } else {
    2429                setCoorInternal(coor);
     
    115120
    116121    @Override public void cloneFrom(OsmPrimitive osm) {
    117         super.cloneFrom(osm);
    118         setCoor(((Node)osm).coor);
     122        boolean locked = writeLock();
     123        try {
     124            super.cloneFrom(osm);
     125            setCoor(((Node)osm).coor);
     126        } finally {
     127            writeUnlock(locked);
     128        }
    119129    }
    120130
     
    132142    @Override
    133143    public void mergeFrom(OsmPrimitive other) {
    134         super.mergeFrom(other);
    135         if (!other.isIncomplete()) {
    136             setCoor(new LatLon(((Node)other).coor));
     144        boolean locked = writeLock();
     145        try {
     146            super.mergeFrom(other);
     147            if (!other.isIncomplete()) {
     148                setCoor(new LatLon(((Node)other).coor));
     149            }
     150        } finally {
     151            writeUnlock(locked);
    137152        }
    138153    }
    139154
    140155    @Override public void load(PrimitiveData data) {
    141         super.load(data);
    142         setCoor(((NodeData)data).getCoor());
     156        boolean locked = writeLock();
     157        try {
     158            super.load(data);
     159            setCoor(((NodeData)data).getCoor());
     160        } finally {
     161            writeUnlock(locked);
     162        }
    143163    }
    144164
Note: See TracChangeset for help on using the changeset viewer.