/** Clean up any coverages collected by {@link #addCoverages(GridCoverage...)} */ public void clean() { try { List<GridCoverage> coverages = COVERAGES.get(); if (coverages != null) { for (GridCoverage coverage : coverages) { try { disposeCoverage(coverage); } catch (Exception e) { LOGGER.log( Level.WARNING, "Failed to fully dispose coverage: " + coverage, e); } } } } finally { COVERAGES.remove(); } } }
@Override public Object operationExecuted(Request request, Operation operation, Object result) { // collect the grid coverages that we'll have to dispose of at the // end of the request if (result instanceof GridCoverage) { addCoverages((GridCoverage) result); } else if (result instanceof GridCoverage[]) { addCoverages((GridCoverage[]) result); } return result; }
@Override public void finished(Request request) { clean(); }
@Override public void delete() throws Exception { CoverageCleanerCallback.disposeCoverage(coverage); }
private GridSampleDimension[] getSampleDimensions(GridCoverage2DReader reader) throws Exception { GridCoverage2D coverage = null; try { coverage = RequestUtils.readSampleGridCoverage(reader); return coverage.getSampleDimensions(); } finally { if (coverage != null) { CoverageCleanerCallback.addCoverages(coverage); } } }
@Override public void failed(ProcessEvent event) { cleanResourceStatus(event); cleaner.clean(); }
@After public void cleanCoverages() { for (GridCoverage coverage : coverages) { CoverageCleanerCallback.disposeCoverage(coverage); } }
} catch (Exception e) { if (coverage != null) { CoverageCleanerCallback.addCoverages(coverage);
@After public void cleanCoverages() { for (GridCoverage coverage : coverages) { CoverageCleanerCallback.disposeCoverage(coverage); } }
CoverageCleanerCallback.addCoverages(coverage);
@After public void cleanCoverages() { for (GridCoverage coverage : coverages) { if (coverage != null) { CoverageCleanerCallback.disposeCoverage(coverage); } } }
CoverageCleanerCallback.addCoverages(coverage);
CoverageCleanerCallback.disposeCoverage(baseCoverage); CoverageCleanerCallback.disposeCoverage(coverages[0]);
CoverageCleanerCallback.disposeCoverage(targetCoverage); } catch (Exception e) { CoverageCleanerCallback.disposeCoverage(sourceCoverage); } catch (Exception e) {
@Test public void testNoLimits() throws Exception { Map<String, Object> raw = getWorld(); authenticate("cite", "cite"); GridCoverage[] coverages = executeGetCoverageKvp(raw); // basic checks assertEquals(1, coverages.length); GridCoverage2D coverage = (GridCoverage2D) coverages[0]; final CoordinateReferenceSystem wgs84Flipped = CRS.decode("urn:ogc:def:crs:EPSG:6.6:4326"); assertEquals(wgs84Flipped, coverage.getEnvelope().getCoordinateReferenceSystem()); assertEquals(-90.0, coverage.getEnvelope().getMinimum(0), 1e-6); assertEquals(-180.0, coverage.getEnvelope().getMinimum(1), 1e-6); assertEquals(90.0, coverage.getEnvelope().getMaximum(0), 1e-6); assertEquals(180.0, coverage.getEnvelope().getMaximum(1), 1e-6); // make sure it has not been cropped int[] value = new int[3]; // some point in USA coverage.evaluate((DirectPosition) new DirectPosition2D(wgs84Flipped, 40, -90), value); assertTrue(value[0] > 0); assertTrue(value[1] > 0); assertTrue(value[2] > 0); // some point in Europe coverage.evaluate((DirectPosition) new DirectPosition2D(wgs84Flipped, 45, 12), value); assertTrue(value[0] > 0); assertTrue(value[1] > 0); assertTrue(value[2] > 0); CoverageCleanerCallback.disposeCoverage(coverage); }
@Test public void testRasterFilterUSA() throws Exception { Map<String, Object> raw = getWorld(); authenticate("cite_usa", "cite"); GridCoverage[] coverages = executeGetCoverageKvp(raw); // basic checks assertEquals(1, coverages.length); GridCoverage2D coverage = (GridCoverage2D) coverages[0]; final CoordinateReferenceSystem wgs84Flipped = CRS.decode("urn:ogc:def:crs:EPSG:6.6:4326"); assertEquals(wgs84Flipped, coverage.getEnvelope().getCoordinateReferenceSystem()); assertEquals(-90.0, coverage.getEnvelope().getMinimum(0), 1e-6); assertEquals(-180.0, coverage.getEnvelope().getMinimum(1), 1e-6); assertEquals(90.0, coverage.getEnvelope().getMaximum(0), 1e-6); assertEquals(180.0, coverage.getEnvelope().getMaximum(1), 1e-6); // make sure it has been cropped int[] value = new int[3]; // some point in USA coverage.evaluate((DirectPosition) new DirectPosition2D(wgs84Flipped, 40, -90), value); assertTrue(value[0] > 0); assertTrue(value[1] > 0); assertTrue(value[2] > 0); // some point in Europe (should have been cropped, we should get the bkg value) coverage.evaluate((DirectPosition) new DirectPosition2D(wgs84Flipped, 45, 12), value); assertEquals(0, value[0]); assertEquals(0, value[1]); assertEquals(0, value[2]); CoverageCleanerCallback.disposeCoverage(coverage); }