Revision 45195 trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/feature/impl/featureset/DefaultFeatureSet.java

View differences:

DefaultFeatureSet.java
47 47
import org.gvsig.fmap.dal.feature.impl.DefaultFeatureStoreTransforms;
48 48
import org.gvsig.fmap.dal.feature.impl.DefaultFeatureType;
49 49
import org.gvsig.fmap.dal.feature.spi.FeatureSetProvider;
50
import org.gvsig.tools.ToolsLocator;
50 51
import org.gvsig.tools.dispose.DisposableIterator;
51 52
import org.gvsig.tools.dispose.DisposeUtils;
52 53
import org.gvsig.tools.evaluator.Evaluator;
54
import org.gvsig.tools.exception.BaseException;
53 55
import org.gvsig.tools.observer.Observable;
54 56
import org.gvsig.tools.observer.Observer;
55 57

  
......
81 83
    protected FeatureType defaultFeatureType;
82 84
    protected FeatureType defatulFeatureTypeForProvider;
83 85
    protected boolean ignoreChanges;
86
    private boolean disposed = false;
84 87

  
85 88
    public DefaultFeatureSet(DefaultFeatureStore store, FeatureQuery query)
86 89
        throws DataException {
90
        DisposeUtils.bind(this);
87 91
        this.featureToIgnoreNotification = null;
88 92
        this.iteratorMode = NO_CHECKED;
89 93
        this.sourceStoreModified = false;
......
281 285
            throw new IllegalArgumentException();
282 286
        }
283 287
    }
288
    
289
    @Override
290
    public synchronized final void dispose() {
291
        // Check if we have already been disposed, and don't do it again
292
        if (!disposed) {
293
            if (DisposeUtils.release(this)) {
294
                try {
295
                    doDispose();
296
                } catch (Exception ex) {
297
                    LOG.error("Error performing dispose", ex);
298
                } finally {
299
                    disposed = true;
300
                }
301
            }
302
        }
303
    }
284 304

  
285
    public void dispose() {
305
    public void doDispose() {
286 306
        if( this.store!=null ) {
287 307
            this.store.deleteObserver(this);
288 308
            this.store = null;

Also available in: Unified diff