/** * Create an EditableUserDAO object. This currently entails: * * <ul> * <li>Finding the user configuration file * <li>Creating a PropertyFileWatcher to track changes to it * <li>Loading the user details into a map in memory * </ul> * * If no user information is found, a default user will be created. */ public EditableUserDAO() { myDetailStorage = new HashMap<String, UserDetails>(); try { myWatcher = new PropertyFileWatcher(getUserFile()); } catch (Exception e) { // TODO:log error someplace createDefaultUser(); } update(); if (myDetailStorage.isEmpty()) createDefaultUser(); }
/** * Either loads the default property file on the first access, or reloads it if it has been * modified since last access. * * @throws DataAccessResourceFailureException */ void checkUserMap() throws DataAccessResourceFailureException { try { if ((userMap == null) || userDefinitionsFile == null || userDefinitionsFile.isStale()) { if (userDefinitionsFile == null) { Resource propFile = findUserProperties(); userDefinitionsFile = new PropertyFileWatcher(propFile); } userMap = loadUsersFromProperties(userDefinitionsFile.getProperties()); } } catch (Exception e) { LOGGER.log(Level.SEVERE, "An error occurred loading user definitions", e); } }
} else { watcher = new PropertyFileWatcher(layers); loadRules(watcher.getProperties());
public DefaultControlFlowConfigurator() { configFile = new PropertyFileWatcher(new File( GeoserverDataDirectory.getGeoserverDataDirectory(), "controlflow.properties")); }
@Test public void testPropertyFileWatcher() throws Exception { final File file = new File("testfile"); file.createNewFile(); final AtomicBoolean hasCalled = new AtomicBoolean( ); PropertyFileWatcher propertyFileWatcher = new PropertyFileWatcher(file) { protected void onChange ( final File localFile ) { hasCalled.set( true ); assertEquals( file, localFile ); } } Timer timer = new Timer(); timer.schedule(propertyFileWatcher, 2000); FileWriter fw = new FileWriter(file); fw.write("blah"); fw.close(); Thread.sleep(8000); // check if propertyFileWatcher.onChange was called assertTrue( hasCalled.get() ); file.delete(); }
/** * Default constructor */ public IpBlacklistFilter() { try { File file = new File(GeoserverDataDirectory.getGeoserverDataDirectory(), "controlflow.properties"); configFile = new PropertyFileWatcher(file); blackListedAddresses = reloadConfiguration(); } catch (Exception e) { LOGGER.log(Level.FINER, e.getMessage(), e); throw new RuntimeException(e); } }
init(new PropertyFileWatcher(remoteProcessFactoryProperties));
userDefinitionsFile = new PropertyFileWatcher(propFile);
init(new PropertyFileWatcher(downloadProperties));
/** * Create GeoServerInternalCatalogStore * * @param geoserver * @throws IOException */ public GeoServerInternalCatalogStore(GeoServer geoserver) throws IOException { super( geoserver.getCatalog()); GeoServerResourceLoader loader = geoserver.getCatalog().getResourceLoader(); File dir = loader.findOrCreateDirectory("csw"); for (Name name : descriptorByType.keySet()) { String typeName = name.getLocalPart(); File f = new File(dir, typeName + ".properties"); PropertyFileWatcher watcher = new PropertyFileWatcher(f); watchers.put(typeName, watcher); if (!f.exists()) { IOUtils.copy(getClass().getResourceAsStream(typeName + ".default.properties"),f); } addMapping (typeName, CatalogStoreMapping.parse(new HashMap<String, String>((Map) watcher.getProperties()))); } }
/** * Create GeoServerInternalCatalogStore * * @param geoserver * @throws IOException */ public GeoServerInternalCatalogStore(GeoServer geoserver) throws IOException { super(geoserver.getCatalog()); GeoServerResourceLoader loader = geoserver.getCatalog().getResourceLoader(); Resource dir = loader.get("csw"); for (Name name : descriptorByType.keySet()) { String typeName = name.getLocalPart(); Resource f = dir.get(typeName + ".properties"); PropertyFileWatcher watcher = new PropertyFileWatcher(f); watchers.put(typeName, watcher); if (!Resources.exists(f)) { IOUtils.copy( getClass().getResourceAsStream(typeName + ".default.properties"), f.out()); } addMapping( typeName, CatalogStoreMapping.parse( new HashMap<String, String>((Map) watcher.getProperties()))); } } }
@Test public void testStoreReload() throws Exception { File temp = File.createTempFile("sectest", "", new File("target")); temp.delete(); temp.mkdir(); File propFile = new File(temp, "users.properties"); try { dao.userDefinitionsFile = new PropertyFileWatcher(propFile); dao.storeUsers(); dao.userMap.clear(); dao.loadUserMap(); } finally { temp.delete(); } assertEquals(3, dao.getUsers().size()); testLoadUser(); } }
@Test public void testConfiguration() throws IOException { // store the properties into a temp folder and relaod assertTrue(monitor.getConfig().getFileLocations().isEmpty()); File tmpDir = createTempDir(); GeoServerResourceLoader resourceLoader = new GeoServerResourceLoader(tmpDir); monitor.getConfig().saveConfiguration(resourceLoader); Resource controlFlowProps = Files.asResource(resourceLoader.find("monitor.properties")); assertTrue(Resources.exists(controlFlowProps)); PropertyFileWatcher savedProps = new PropertyFileWatcher(controlFlowProps); assertEquals(savedProps.getProperties(), monitor.getConfig().getProperties()); }