package org.geoserver.config; import java.io.File; import java.util.Arrays; import java.util.List; import org.geoserver.catalog.WorkspaceInfo; import org.geoserver.config.util.XStreamServiceLoader; import org.geoserver.platform.GeoServerResourceLoader; import org.geoserver.test.GeoServerTestSupport; public class ServicePersisterTest extends GeoServerTestSupport { GeoServer geoServer; @Override protected void setUpInternal() throws Exception { super.setUpInternal(); geoServer = getGeoServer(); geoServer.addListener(new ServicePersister( (List) Arrays.asList(new ServiceLoader(getResourceLoader())), geoServer)); } public void testAddWorkspaceLocalService() throws Exception { File dataDirRoot = getTestData().getDataDirectoryRoot(); WorkspaceInfo ws = getCatalog().getDefaultWorkspace(); ServiceInfo s = geoServer.getFactory().createService(); s.setName("foo"); s.setWorkspace(ws); File f = new File(dataDirRoot, "workspaces"+"/"+ws.getName()+"/service.xml"); assertFalse(f.exists()); geoServer.add(s); assertTrue(f.exists()); } public void testRemoveWorkspaceLocalService() throws Exception { testAddWorkspaceLocalService(); File dataDirRoot = getTestData().getDataDirectoryRoot(); WorkspaceInfo ws = getCatalog().getDefaultWorkspace(); File f = new File(dataDirRoot, "workspaces"+"/"+ws.getName()+"/service.xml"); assertTrue(f.exists()); ServiceInfo s = geoServer.getServiceByName(ws, "foo", ServiceInfo.class); geoServer.remove(s); assertFalse(f.exists()); } static class ServiceLoader extends XStreamServiceLoader { public ServiceLoader(GeoServerResourceLoader resourceLoader) { super(resourceLoader, "service"); } @Override public Class getServiceClass() { return ServiceInfo.class; } @Override protected ServiceInfo createServiceFromScratch(GeoServer gs) { return null; } } }