/** * Factory method for PersistentPropertyStorage. Guarantees that only a * single PersistentPropertyStorage object exists for any property file. * * @param propertyFile the name of the property file to use * * @throws IOException if <code>propertyFile</code> cannot be converted into * a canonical path name (via {@link File#getCanonicalPath()}). */ synchronized static PersistentPropertyStorage newPersistentPropertyStorage( String propertyFile) throws IOException { File file = new File(propertyFile); String canonicalName = file.getCanonicalPath(); if (propertyFileMap.containsKey(canonicalName)) { return (PersistentPropertyStorage) propertyFileMap.get( canonicalName); } PersistentPropertyStorage storage = new PersistentPropertyStorage(file); propertyFileMap.put(canonicalName, storage); return storage; }