/** Checks that the namespace/workspace listener keeps on working after a catalog reload */
  @Test
  public void testNamespaceWorkspaceListenerAttached() throws Exception {
    Catalog catalog = getCatalog();

    NamespaceInfo ns = catalog.getNamespaceByPrefix(MockData.CITE_PREFIX);
    String newName = "XYWZ1234";
    ns.setPrefix(newName);
    catalog.save(ns);
    assertNotNull(catalog.getWorkspaceByName(newName));
    assertNotNull(catalog.getNamespaceByPrefix(newName));

    // force a reload
    int listenersBefore = catalog.getListeners().size();
    getGeoServer().reload();
    int listenersAfter = catalog.getListeners().size();
    assertEquals(listenersBefore, listenersAfter);

    // check the NamespaceWorkspaceListener is still attached and working
    ns = catalog.getNamespaceByPrefix(newName);
    ns.setPrefix(MockData.CITE_PREFIX);
    catalog.save(ns);
    assertNotNull(catalog.getWorkspaceByName(MockData.CITE_PREFIX));

    // make sure we only have one resource pool listener and one catalog persister
    int countCleaner = 0;
    int countPersister = 0;
    for (CatalogListener listener : catalog.getListeners()) {
      if (listener instanceof ResourcePool.CacheClearingListener) {
        countCleaner++;
      } else if (listener instanceof GeoServerPersister) {
        countPersister++;
      }
    }
    assertEquals(1, countCleaner);
    assertEquals(1, countPersister);
  }