Ejemplo n.º 1
0
 /**
  * Test that the {@link FeatureType} cache returns the same instance every time. This is assumed
  * by some nasty code in other places that tampers with the CRS. If a new {@link FeatureType} is
  * constructed for the same {@link FeatureTypeInfo}, Bad Things Happen (TM).
  */
 @Test
 public void testFeatureTypeCacheInstance() throws Exception {
   ResourcePool pool = ResourcePool.create(getCatalog());
   FeatureTypeInfo info =
       getCatalog()
           .getFeatureTypeByName(MockData.LAKES.getNamespaceURI(), MockData.LAKES.getLocalPart());
   FeatureType ft1 = pool.getFeatureType(info);
   FeatureType ft2 = pool.getFeatureType(info);
   FeatureType ft3 = pool.getFeatureType(info);
   assertSame(ft1, ft2);
   assertSame(ft1, ft3);
 }
Ejemplo n.º 2
0
  @Test
  public void testAttributeCache() throws Exception {
    final Catalog catalog = getCatalog();
    ResourcePool pool = ResourcePool.create(catalog);

    // clean up the lakes type
    FeatureTypeInfo oldInfo =
        catalog.getFeatureTypeByName(
            MockData.LAKES.getNamespaceURI(), MockData.LAKES.getLocalPart());
    List<LayerInfo> layers = catalog.getLayers(oldInfo);
    for (LayerInfo layerInfo : layers) {
      catalog.remove(layerInfo);
    }
    catalog.remove(oldInfo);

    // rebuild as new
    CatalogBuilder builder = new CatalogBuilder(catalog);
    builder.setStore(
        catalog.getStoreByName(MockData.CITE_PREFIX, MockData.CITE_PREFIX, DataStoreInfo.class));
    FeatureTypeInfo info =
        builder.buildFeatureType(
            new NameImpl(MockData.LAKES.getNamespaceURI(), MockData.LAKES.getLocalPart()));

    // non persisted state, caching should not occurr
    List<AttributeTypeInfo> att1 = pool.getAttributes(info);
    List<AttributeTypeInfo> att2 = pool.getAttributes(info);
    assertNotSame(att1, att2);
    assertEquals(att1, att2);

    // save it, making it persistent
    catalog.add(info);

    // first check caching actually works against persisted type infos
    List<AttributeTypeInfo> att3 = pool.getAttributes(info);
    List<AttributeTypeInfo> att4 = pool.getAttributes(info);
    assertSame(att3, att4);
    assertNotSame(att1, att3);
    assertEquals(att1, att3);
  }