示例#1
0
  @Test
  public void testPreserveStructuredReader() throws IOException {
    // we have to make sure time ranges native name is set to trigger the bug in question
    CoverageInfo ci = getCatalog().getCoverageByName(getLayerId(TIMERANGES));
    assertTrue(ci.getGridCoverageReader(null, null) instanceof StructuredGridCoverage2DReader);
    String name = ci.getGridCoverageReader(null, null).getGridCoverageNames()[0];
    ci.setNativeCoverageName(name);
    getCatalog().save(ci);

    ci = getCatalog().getCoverageByName(getLayerId(TIMERANGES));
    assertTrue(ci.getGridCoverageReader(null, null) instanceof StructuredGridCoverage2DReader);
  }
示例#2
0
  @Test
  public void testMissingNullValuesInCoverageDimensions() throws IOException {
    CoverageInfo ci = getCatalog().getCoverageByName(getLayerId(MockData.TASMANIA_DEM));
    List<CoverageDimensionInfo> dimensions = ci.getDimensions();
    // legacy layers have no null value list
    dimensions.get(0).getNullValues().clear();
    getCatalog().save(ci);

    // and now go back and ask for the reader
    ci = getCatalog().getCoverageByName(getLayerId(MockData.TASMANIA_DEM));
    GridCoverageReader reader = ci.getGridCoverageReader(null, null);
    GridCoverage2D gc = null;
    try {
      // check that we maintain the native info if we don't have any
      gc = (GridCoverage2D) reader.read(null);
      assertEquals(-9999d, (Double) gc.getProperty("GC_NODATA"), 0d);
    } finally {
      if (gc != null) {
        RenderedImage ri = gc.getRenderedImage();
        if (gc instanceof GridCoverage2D) {
          ((GridCoverage2D) gc).dispose(true);
        }
        if (ri instanceof PlanarImage) {
          ImageUtilities.disposePlanarImageChain((PlanarImage) ri);
        }
      }
    }
  }
示例#3
0
  @Test
  public void testDropCoverageStore() throws Exception {
    // build the store
    Catalog cat = getCatalog();
    CatalogBuilder cb = new CatalogBuilder(cat);
    CoverageStoreInfo store = cb.buildCoverageStore("dem");
    store.setURL(MockData.class.getResource("tazdem.tiff").toExternalForm());
    store.setType("GeoTIFF");
    cat.add(store);

    // build the coverage
    cb.setStore(store);
    CoverageInfo ci = cb.buildCoverage();
    cat.add(ci);

    // build the layer
    LayerInfo layer = cb.buildLayer(ci);
    cat.add(layer);

    // grab a reader just to inizialize the code
    ci.getGridCoverage(null, null);
    ci.getGridCoverageReader(null, GeoTools.getDefaultHints());

    // now drop the store
    CascadeDeleteVisitor visitor = new CascadeDeleteVisitor(cat);
    visitor.visit(store);

    // and reload (GEOS-4782 -> BOOM!)
    getGeoServer().reload();
  }
示例#4
0
  public MockCatalogBuilder coverage(QName qName, String fileName, String srs, Class scope) {
    scope = scope != null ? scope : getClass();

    String cId = newId();
    final CoverageStoreInfo cs = coverageStores.peekLast();
    NamespaceInfo ns = namespaces.peekLast();

    final String name = qName.getLocalPart();
    File dir = new File(dataDirRoot, name);
    dir.mkdir();

    try {
      IOUtils.copy(scope.getResourceAsStream(fileName), new File(dir, fileName));
    } catch (IOException e) {
      throw new RuntimeException(e);
    }

    // initialize the mock by actually building a real one first
    CatalogBuilder cb = new CatalogBuilder(new CatalogImpl());
    cb.setStore(cs);

    GridCoverage2DReader reader = cs.getFormat().getReader(cs.getURL());
    if (reader == null) {
      throw new RuntimeException("No reader for " + cs.getURL());
    }

    CoverageInfo real = null;
    try {
      real = cb.buildCoverage(reader, null);
    } catch (Exception e) {
      throw new RuntimeException(e);
    }

    final CoverageInfo c = createNiceMock(CoverageInfo.class);
    coverages.add(c);
    final List<CoverageInfo> coverageList = coverages;

    if (srs == null) {
      srs = real.getSRS();
    }
    initResource(
        c,
        CoverageInfo.class,
        cId,
        name,
        cs,
        ns,
        srs,
        real.getProjectionPolicy(),
        real.getNativeBoundingBox(),
        real.getLatLonBoundingBox());

    expect(c.getDefaultInterpolationMethod())
        .andReturn(real.getDefaultInterpolationMethod())
        .anyTimes();
    expect(c.getDimensions()).andReturn(real.getDimensions()).anyTimes();
    expect(c.getGrid()).andReturn(real.getGrid()).anyTimes();

    expect(c.getInterpolationMethods()).andReturn(real.getInterpolationMethods()).anyTimes();
    expect(c.getRequestSRS()).andReturn(real.getRequestSRS()).anyTimes();
    expect(c.getResponseSRS()).andReturn(real.getResponseSRS()).anyTimes();

    try {
      expect(c.getGridCoverageReader(null, null)).andReturn(reader).anyTimes();
    } catch (IOException e) {
    }

    expect(catalog.getCoverageByName(or(eq(name), eq(ns.getPrefix() + ":" + name))))
        .andReturn(c)
        .anyTimes();
    expect(
            catalog.getCoverageByName(
                or(eq(new NameImpl(ns.getPrefix(), name)), eq(new NameImpl(ns.getURI(), name)))))
        .andReturn(c)
        .anyTimes();
    expect(catalog.getCoverageByName(ns, name)).andReturn(c).anyTimes();

    expect(catalog.getCoverageByName(ns.getPrefix(), name)).andReturn(c).anyTimes();
    // expect(catalog.getFeatureTypeByName(or(eq(ns.getPrefix()), eq(ns.getURI())), name))
    //    .andReturn(ft).anyTimes();

    // expect(catalog.getCoverageByStore(cs, name)).andReturn(c).anyTimes();
    expect(catalog.getCoveragesByStore(cs)).andReturn(coverageList).anyTimes();
    expect(catalog.getCoverageByCoverageStore(cs, name)).andReturn(c).anyTimes();

    c.accept((CatalogVisitor) anyObject());
    expectLastCall()
        .andAnswer(
            new VisitAnswer() {
              @Override
              protected void doVisit(CatalogVisitor visitor) {
                visitor.visit(c);
              }
            })
        .anyTimes();

    callback.onResource(name, c, cs, this);
    replay(c, createLayer(c, name, ns));
    return this;
  }