public void handlePostServiceChange(ServiceInfo service) { XStreamServiceLoader loader = findServiceLoader(service); try { // TODO: handle workspace move, factor this class out into // separate persister class Resource directory = service.getWorkspace() != null ? dir(service.getWorkspace()) : null; loader.save(service, geoServer, directory); } catch (Throwable t) { throw new RuntimeException(t); // LOGGER.log(Level.SEVERE, "Error occurred while saving configuration", t); } }
@Override protected void onSetUp(SystemTestData testData) throws Exception { GeoServer geoServer = getGeoServer(); geoServer.addListener( new ServicePersister( (List) Arrays.asList(new ServiceLoader(getResourceLoader())), geoServer)); }
protected void loadGeoServer(final GeoServer geoServer, XStreamPersister xp) throws Exception { if (listener == null) { // add event listener which persists changes final List<XStreamServiceLoader> loaders = GeoServerExtensions.extensions(XStreamServiceLoader.class); listener = new ServicePersister(loaders, geoServer); } else { // avoid re-dumping all service config files during load, // we'll attach it back once done geoserver.removeListener(listener); } try { if (this.configPersister != null) { // avoid having the persister write down new config files while we read the config, // otherwise it'll dump it back in xml files geoserver.removeListener(configPersister); } else { // lazy creation of the persisters at the first need this.configPersister = new GeoServerConfigPersister(resourceLoader, xp); } readConfiguration(geoServer, xp); } finally { // attach back the catalog persister and the service one geoserver.addListener(configPersister); geoserver.addListener(listener); } }
public synchronized void setEnabled(boolean enabled) { this.enabled = enabled; if (enabled) { // remove Default persister if (persister != null) { geoserver.removeListener(persister); persister = null; } // remove Default listener if (listener != null) { geoserver.removeListener(listener); listener = null; } } else { if (listener == null) { // add event listener which persists changes final List<XStreamServiceLoader> loaders = GeoServerExtensions .extensions(XStreamServiceLoader.class); listener = new ServicePersister(loaders, geoserver); geoserver.addListener(listener); } if (persister == null) { persister = new GeoServerPersister(resourceLoader, xpf.createXMLPersister()); // attach back the persister geoserver.addListener(persister); } } } }
@Override public void handleServiceChange( ServiceInfo service, List<String> propertyNames, List<Object> oldValues, List<Object> newValues) { XStreamServiceLoader loader = findServiceLoader(service); // handle the case of a service changing workspace and move the file int i = propertyNames.indexOf("workspace"); if (i != -1) { // TODO: share code with GeoServerPersister WorkspaceInfo old = (WorkspaceInfo) oldValues.get(i); if (old != null) { WorkspaceInfo ws = (WorkspaceInfo) newValues.get(i); Resource f; try { f = dir(ws).get(loader.getFilename()); f.renameTo(dir(ws).get(loader.getFilename())); } catch (IOException e) { throw new RuntimeException(e); } } } }
public synchronized void enable(boolean enabled) { this.enabled = enabled; if (enabled) { // remove Default persister if (persister != null) { geoserver.removeListener(persister); persister = null; } // remove Default listener if (listener != null) { geoserver.removeListener(listener); listener = null; } } else { if (listener == null) { // add event listener which persists changes final List<XStreamServiceLoader> loaders = GeoServerExtensions .extensions(XStreamServiceLoader.class); listener = new ServicePersister(loaders, geoserver); geoserver.addListener(listener); } if (persister == null) { persister = new GeoServerPersister(resourceLoader, xpf.createXMLPersister()); // attach back the persister geoserver.addListener(persister); } } } }
public void handleServiceRemove(ServiceInfo service) { XStreamServiceLoader loader = findServiceLoader(service); try { Resource dir = service.getWorkspace() != null ? dir(service.getWorkspace()) : resourceLoader.get(Paths.BASE); dir.get(loader.getFilename()).delete(); } catch (Throwable t) { throw new RuntimeException(t); } }