Ejemplo n.º 1
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();
  }
Ejemplo n.º 2
0
  public MockCatalogBuilder coverageStore(String name, String filename, String format) {
    String csId = newId();
    WorkspaceInfo ws = workspaces.peekLast();
    NamespaceInfo ns = namespaces.peekLast();

    final CoverageStoreInfo cs = createNiceMock(CoverageStoreInfo.class);
    coverageStores.add(cs);

    initStore(cs, CoverageStoreInfo.class, csId, name, ws);

    File covDir = new File(dataDirRoot, name);
    final File covFile = new File(covDir, filename);
    expect(cs.getURL()).andReturn(DataUtilities.fileToURL(covFile).toString()).anyTimes();
    expect(cs.getType())
        .andAnswer(
            new IAnswer<String>() {
              @Override
              public String answer() throws Throwable {
                return lookupGridFormat(covFile).getName();
              }
            })
        .anyTimes();
    expect(cs.getFormat())
        .andAnswer(
            new IAnswer<AbstractGridFormat>() {
              @Override
              public AbstractGridFormat answer() throws Throwable {
                return lookupGridFormat(covFile);
              }
            })
        .anyTimes();
    expect(cs.getConnectionParameters()).andReturn(new HashMap()).anyTimes();

    expect(catalog.getCoverageStore(csId)).andReturn(cs).anyTimes();
    expect(catalog.getCoverageStoreByName(name)).andReturn(cs).anyTimes();
    expect(catalog.getCoverageStoreByName(ws.getName(), name)).andReturn(cs).anyTimes();
    expect(catalog.getCoverageStoreByName(ws, name)).andReturn(cs).anyTimes();

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

    callback.onStore(name, cs, ws, this);
    replay(cs);
    return this;
  }
Ejemplo n.º 3
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;
  }
  @Test
  public void modificationProxySerializeTest() throws Exception {
    Catalog catalog = getCatalog();

    // workspace
    WorkspaceInfo ws = catalog.getWorkspaceByName(MockData.CITE_PREFIX);
    WorkspaceInfo ws2 = serialize(ws);
    assertSame(ModificationProxy.unwrap(ws), ModificationProxy.unwrap(ws2));

    // namespace
    NamespaceInfo ns = catalog.getNamespaceByPrefix(MockData.CITE_PREFIX);
    NamespaceInfo ns2 = serialize(ns);
    assertSame(ModificationProxy.unwrap(ns), ModificationProxy.unwrap(ns2));

    // data store and related objects
    DataStoreInfo ds = catalog.getDataStoreByName(MockData.CITE_PREFIX);
    DataStoreInfo ds2 = serialize(ds);
    assertSame(ModificationProxy.unwrap(ds), ModificationProxy.unwrap(ds2));
    assertSame(
        ModificationProxy.unwrap(ds.getWorkspace()), ModificationProxy.unwrap(ds2.getWorkspace()));

    // coverage store and related objects
    CoverageStoreInfo cs = catalog.getCoverageStoreByName(MockData.TASMANIA_DEM.getLocalPart());
    CoverageStoreInfo cs2 = serialize(cs);
    assertSame(ModificationProxy.unwrap(cs), ModificationProxy.unwrap(cs2));
    assertSame(
        ModificationProxy.unwrap(cs.getWorkspace()), ModificationProxy.unwrap(cs2.getWorkspace()));

    // feature type and related objects
    FeatureTypeInfo ft = catalog.getFeatureTypeByName(getLayerId(MockData.BRIDGES));
    FeatureTypeInfo ft2 = serialize(ft);
    assertSame(ModificationProxy.unwrap(ft), ModificationProxy.unwrap(ft2));
    assertSame(ModificationProxy.unwrap(ft.getStore()), ModificationProxy.unwrap(ft2.getStore()));

    // coverage and related objects
    CoverageInfo ci = catalog.getCoverageByName(getLayerId(MockData.TASMANIA_DEM));
    CoverageInfo ci2 = serialize(ci);
    assertSame(ModificationProxy.unwrap(ci), ModificationProxy.unwrap(ci2));
    assertSame(ModificationProxy.unwrap(ci.getStore()), ModificationProxy.unwrap(ci.getStore()));

    // style
    StyleInfo streamsStyle = catalog.getStyleByName("Streams");
    StyleInfo si2 = serialize(streamsStyle);
    assertSame(ModificationProxy.unwrap(streamsStyle), ModificationProxy.unwrap(si2));

    // layer and related objects
    LayerInfo li = catalog.getLayerByName(getLayerId(MockData.BRIDGES));
    // ... let's add an extra style

    li.getStyles().add(streamsStyle);
    catalog.save(li);
    LayerInfo li2 = serialize(li);
    assertSame(ModificationProxy.unwrap(li), ModificationProxy.unwrap(li2));
    assertSame(
        ModificationProxy.unwrap(li.getResource()), ModificationProxy.unwrap(li2.getResource()));
    assertSame(
        ModificationProxy.unwrap(li.getDefaultStyle()),
        ModificationProxy.unwrap(li2.getDefaultStyle()));
    assertSame(
        ModificationProxy.unwrap(li.getStyles().iterator().next()),
        ModificationProxy.unwrap(li2.getStyles().iterator().next()));

    // try a group layer
    CatalogBuilder cb = new CatalogBuilder(catalog);
    LayerGroupInfo lg = catalog.getFactory().createLayerGroup();
    lg.getLayers().add(catalog.getLayerByName(getLayerId(MockData.ROAD_SEGMENTS)));
    lg.getLayers().add(catalog.getLayerByName(getLayerId(MockData.PONDS)));
    cb.calculateLayerGroupBounds(lg);
    lg.setName("test-lg");
    catalog.add(lg);
    // ... make sure we get a proxy
    lg = catalog.getLayerGroupByName("test-lg");
    if (lg instanceof SecuredLayerGroupInfo) {
      lg = ((SecuredLayerGroupInfo) lg).unwrap(LayerGroupInfo.class);
    }
    LayerGroupInfo lg2 = serialize(lg);
    assertSame(ModificationProxy.unwrap(lg), ModificationProxy.unwrap(lg2));
    assertSame(
        ModificationProxy.unwrap(lg.getLayers().get(0)),
        ModificationProxy.unwrap(lg2.getLayers().get(0)));
    assertSame(
        ModificationProxy.unwrap(lg.getLayers().get(1)),
        ModificationProxy.unwrap(lg2.getLayers().get(1)));

    // now check a half modified proxy
    LayerInfo lim = catalog.getLayerByName(getLayerId(MockData.BRIDGES));
    // ... let's add an extra style
    lim.setDefaultStyle(streamsStyle);
    lim.getStyles().add(streamsStyle);
    // clone and check
    LayerInfo lim2 = serialize(lim);
    assertSame(
        ModificationProxy.unwrap(lim.getDefaultStyle()),
        ModificationProxy.unwrap(lim2.getDefaultStyle()));
    assertSame(
        ModificationProxy.unwrap(lim.getStyles().iterator().next()),
        ModificationProxy.unwrap(lim2.getStyles().iterator().next()));

    // mess a bit with the metadata map too
    String key = "workspaceKey";
    lim.getMetadata().put(key, ws);
    LayerInfo lim3 = serialize(lim);
    assertSame(ModificationProxy.unwrap(lim), ModificationProxy.unwrap(lim3));
    assertSame(
        ModificationProxy.unwrap(lim.getMetadata().get(key)),
        ModificationProxy.unwrap(lim3.getMetadata().get(key)));
  }