Revision 6494 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

View differences:

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();

Also available in: Unified diff