Revision 6494

View differences:

org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.raster/org.gvsig.raster.tilecache/org.gvsig.raster.tilecache.provider/src/main/java/org/gvsig/raster/tilecache/provider/TileStructImage.java
69 69
import org.gvsig.raster.lib.buffer.api.BufferLocator;
70 70
import org.gvsig.raster.lib.buffer.api.BufferManager;
71 71
import org.gvsig.raster.lib.buffer.api.exceptions.BufferException;
72
import org.gvsig.tools.dispose.DisposeUtils;
72 73
import org.gvsig.tools.dynobject.DynObject;
73 74
import org.gvsig.tools.dynobject.exception.DynMethodException;
74 75
import org.gvsig.tools.extensionpoint.ExtensionPoint.Extension;
......
351 352
                (int) (clippedBuffer.getPixelSizeY() * clippedBuffer.getRows() / pixelSize),
352 353
                (int) (clippedBuffer.getPixelSizeX() * clippedBuffer.getColumns() / pixelSize),
353 354
                Buffer.INTERPOLATION_NearestNeighbour, null);
354
        clippedBuffer = null;
355 355

  
356
        DisposeUtils.dispose(buffer);
357
        DisposeUtils.dispose(clippedBuffer);
358

  
356 359
        String providerName = "GTiff";
357 360
        String extension = "tif";
358 361

  
org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.buffer/org.gvsig.raster.lib.buffer.api/src/main/java/org/gvsig/raster/lib/buffer/api/Band.java
31 31
 * @author fdiaz
32 32
 *
33 33
 */
34
public interface Band extends Cloneable, ComplexWeakReferencingObservable { //, Disposable {
34
public interface Band extends Cloneable, ComplexWeakReferencingObservable, Disposable {
35 35

  
36 36
    /**
37 37
     * Gets the number of columns of the band
......
299 299

  
300 300
        public double[] createRowBuffer();
301 301

  
302

  
303 302
    }
304 303

  
305 304
}
org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.buffer/org.gvsig.raster.lib.buffer.api/src/main/java/org/gvsig/raster/lib/buffer/api/Buffer.java
45 45
 * @author fdiaz
46 46
 *
47 47
 */
48
public interface Buffer extends StatisticsCapable, Iterable<Band>, Observer { //, Disposable {
48
public interface Buffer extends StatisticsCapable, Iterable<Band>, Observer , Disposable {
49 49

  
50 50
    public final static int INTERPOLATION_Undefined        = 0;
51 51
    public final static int INTERPOLATION_NearestNeighbour = 1;
org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.buffer/org.gvsig.raster.lib.buffer.impl/src/main/java/org/gvsig/raster/lib/buffer/impl/AbstractBuffer.java
64 64
    private Double pixelSizeX = null;
65 65
    private Double pixelSizeY = null;
66 66

  
67
//    // to make disposable
68
//    private final Object lock = new Object();
69
//    private boolean disposed = false;
67
    // to make it disposable
68
    private final Object lock = new Object();
69
    private boolean disposed = false;
70 70

  
71
//    public AbstractBuffer() {
72
//        if(ToolsLocator.getDisposableManager() != null) {
73
//            ToolsLocator.getDisposableManager().bind(this);
74
//        } else {
75
//            logger.warn("Can't retrieve the disposable manager,");
76
//        }
77
//    }
71
    public AbstractBuffer() {
72
        if(ToolsLocator.getDisposableManager() != null) {
73
            ToolsLocator.getDisposableManager().bind(this);
74
        } else {
75
            logger.warn("Can't retrieve the disposable manager,");
76
        }
77
    }
78 78

  
79 79
    @Override
80 80
    public Statistics getStatistics(SimpleTaskStatus status) {
......
520 520
        return pixelSizeY.doubleValue();
521 521
    }
522 522

  
523
//    public final void dispose() {
524
//        synchronized (lock) {
525
//            // Check if we have already been disposed, and don't do it again
526
//            if (!disposed) {
527
//                if ( ToolsLocator.getDisposableManager().release(this) ) {
528
//                    try {
529
//                        doDispose();
530
//                    } catch (BaseException ex) {
531
//                        LOG.error("Error performing dispose", ex);
532
//                    }
533
//                    disposed = true;
534
//                }
535
//            }
536
//        }
537
//    }
538
//
539
//    @Override
540
//    public void doDispose() {
541
//        for (Iterator iterator = bands.iterator(); iterator.hasNext();) {
542
//            Band band = (Band) iterator.next();
543
//            band.dispose();
544
//        }
545
//        envelope = null;
546
//        projection = null;
547
//        //TODO: ?FilterList Disposable?
548
//        filters = null;
549
//        //TODO: ?Statistics Disposable?
550
//        statistics = null;
551
//
552
//        pixelSizeX = null;
553
//        pixelSizeY = null;
554
//    }
523
    public final void dispose() {
524
        synchronized (lock) {
525
            // Check if we have already been disposed, and don't do it again
526
            if (!disposed) {
527
                if ( ToolsLocator.getDisposableManager().release(this) ) {
528
                    try {
529
                        doDispose();
530
                    } catch (BaseException ex) {
531
                        logger.error("Error performing dispose", ex);
532
                    }
533
                    disposed = true;
534
                }
535
            }
536
        }
537
    }
555 538

  
539
    /**
540
     * Internal implementation for the {@link #dispose()} method.
541
     *
542
     * @see #dispose()
543
     */
544
    public void doDispose() throws BaseException {
545
        for (Iterator iterator = bands.iterator(); iterator.hasNext();) {
546
            Band band = (Band) iterator.next();
547
            band.dispose();
548
        }
549
        envelope = null;
550
        projection = null;
551
        //TODO: ?FilterList Disposable?
552
        filters = null;
553
        //TODO: ?Statistics Disposable?
554
        statistics = null;
555

  
556
        pixelSizeX = null;
557
        pixelSizeY = null;
558
    }
559

  
556 560
    @Override
557 561
    protected void finalize() throws Throwable {
558 562
        super.finalize();
org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.buffer/org.gvsig.raster.lib.buffer.impl/src/main/java/org/gvsig/raster/lib/buffer/impl/AbstractBand.java
1 1
package org.gvsig.raster.lib.buffer.impl;
2 2

  
3
import java.util.Iterator;
4

  
3 5
import org.slf4j.Logger;
4 6
import org.slf4j.LoggerFactory;
5 7

  
......
9 11
import org.gvsig.raster.lib.buffer.api.NoData;
10 12
import org.gvsig.raster.lib.buffer.api.exceptions.BandException;
11 13
import org.gvsig.raster.lib.buffer.impl.exceptions.CopyFromBandException;
14
import org.gvsig.tools.ToolsLocator;
15
import org.gvsig.tools.exception.BaseException;
12 16
import org.gvsig.tools.observer.impl.BaseWeakReferencingObservable;
13 17

  
14 18
/**
......
23 27
    int columns;
24 28
    NoData noData;
25 29

  
30
    // to make it disposable
31
    private final Object lock = new Object();
32
    private boolean disposed = false;
33

  
34
    public AbstractBand() {
35
        if(ToolsLocator.getDisposableManager() != null) {
36
            ToolsLocator.getDisposableManager().bind(this);
37
        } else {
38
            logger.warn("Can't retrieve the disposable manager,");
39
        }
40
    }
41

  
42

  
26 43
    @Override
27 44
    public int getColumns() {
28 45
        return columns;
......
120 137

  
121 138
    }
122 139

  
140
    public final void dispose() {
141
        synchronized (lock) {
142
            // Check if we have already been disposed, and don't do it again
143
            if (!disposed) {
144
                if ( ToolsLocator.getDisposableManager().release(this) ) {
145
                    try {
146
                        doDispose();
147
                    } catch (BaseException ex) {
148
                        logger.error("Error performing dispose", ex);
149
                    }
150
                    disposed = true;
151
                }
152
            }
153
        }
154
    }
155

  
156
    /**
157
     * Internal implementation for the {@link #dispose()} method.
158
     *
159
     * @see #dispose()
160
     */
161
    public void doDispose() throws BaseException {
162
        noData = null;
163
    }
164

  
165

  
123 166
}
org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.buffer/org.gvsig.raster.lib.buffer.impl/src/main/java/org/gvsig/raster/lib/buffer/impl/AbstractPaginatedBand.java
13 13
import org.gvsig.raster.lib.buffer.api.BufferLocator;
14 14
import org.gvsig.raster.lib.buffer.api.NoData;
15 15
import org.gvsig.raster.lib.buffer.impl.exceptions.CopyFromBandException;
16
import org.gvsig.tools.exception.BaseException;
16 17

  
17 18
/**
18 19
 * @author fdiaz
......
149 150
        return rowsPerPage * columns;
150 151
    }
151 152

  
152
//    @Override
153
//    public void dispose() {
154
//        super.dispose();
155
//        data = null;
156
//        pageManager = null;
157
//    }
153
    @Override
154
    public void doDispose() throws BaseException {
155
        super.doDispose();
156
        data = null;
157
        //FIXME: ?hacer disposables los pageManagers?
158
        pageManager = null;
159
    }
158 160

  
159 161
}
org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.buffer/org.gvsig.raster.lib.buffer.impl/src/main/java/org/gvsig/raster/lib/buffer/impl/AbstractTiledBand.java
9 9
import org.gvsig.raster.lib.buffer.api.BufferLocator;
10 10
import org.gvsig.raster.lib.buffer.api.NoData;
11 11
import org.gvsig.raster.lib.buffer.impl.exceptions.CopyFromBandException;
12
import org.gvsig.tools.exception.BaseException;
12 13

  
13 14

  
14 15
/**
......
175 176
        return allocateRows*allocateColumns;
176 177
    }
177 178

  
178
//    @Override
179
//    public void dispose() {
180
//        super.dispose();
181
//        data = null;
182
//        tileManager = null;
183
//    }
179
    @Override
180
    public void doDispose() throws BaseException {
181
        super.dispose();
182
        data = null;
183
        //FIXME: ?hacer disposables los pageManagers?
184
        tileManager = null;
185
    }
184 186

  
185 187
}
org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.buffer/org.gvsig.raster.lib.buffer.impl/src/main/java/org/gvsig/raster/lib/buffer/impl/AbstractClippedBand.java
4 4
import org.gvsig.raster.lib.buffer.api.BandInfo;
5 5
import org.gvsig.raster.lib.buffer.api.Buffer;
6 6
import org.gvsig.raster.lib.buffer.impl.exceptions.CopyFromBandException;
7
import org.gvsig.tools.dispose.DisposeUtils;
8
import org.gvsig.tools.exception.BaseException;
7 9

  
8 10

  
9 11
/**
......
26 28
        this.columns = this.clippedBuffer.getColumns();
27 29
        this.noData = this.band.getNoData();
28 30
    }
29
    
31

  
30 32
    @Override
31 33
    public BandInfo getBandInfo() {
32 34
        return this.band.getBandInfo();
......
68 70
    public boolean isReadOnly() {
69 71
        return true;
70 72
    }
73

  
74
    // ?es necesario? ?es conveniente
75
//    @Override
76
//    public void doDispose() throws BaseException {
77
//        super.doDispose();
78
//        DisposeUtils.dispose (band);
79
//        DisposeUtils.dispose (clippedBuffer);
80
//    }
71 81
}

Also available in: Unified diff