Changeset 12855 in josm


Ignore:
Timestamp:
2017-09-14T14:39:53+02:00 (7 years ago)
Author:
bastiK
Message:

see #15229 - add separate interface IBaseDirectories to look up pref, user data and cache dir

Location:
trunk
Files:
1 added
20 edited

Legend:

Unmodified
Added
Removed
  • trunk/scripts/TagInfoExtract.groovy

    r12852 r12855  
    384384        Main.pref.enableSaveOnPut(false)
    385385        Config.setPreferencesInstance(Main.pref)
     386        Config.setBaseDirectoriesProvider(Main.pref);
    386387        Main.setProjection(Projections.getProjectionByCode("EPSG:3857"))
    387388        Path tmpdir = Files.createTempDirectory(FileSystems.getDefault().getPath(base_dir), "pref")
  • trunk/src/org/openstreetmap/josm/actions/ShowStatusReportAction.java

    r12846 r12855  
    3838import org.openstreetmap.josm.io.OsmApi;
    3939import org.openstreetmap.josm.plugins.PluginHandler;
     40import org.openstreetmap.josm.spi.preferences.Config;
    4041import org.openstreetmap.josm.tools.Logging;
    4142import org.openstreetmap.josm.tools.PlatformHookUnixoid;
     
    230231        final String propJavaHome = System.getProperty("java.home");
    231232        final String propJavaHomeAlt = "<java.home>";
    232         final String prefDir = Main.pref.getPreferencesDirectory().toString();
     233        final String prefDir = Config.getDirs().getPreferencesDirectory().toString();
    233234        final String prefDirAlt = "<josm.pref>";
    234         final String userDataDir = Main.pref.getUserDataDirectory().toString();
     235        final String userDataDir = Config.getDirs().getUserDataDirectory().toString();
    235236        final String userDataDirAlt = "<josm.userdata>";
    236         final String userCacheDir = Main.pref.getCacheDirectory().toString();
     237        final String userCacheDir = Config.getDirs().getCacheDirectory().toString();
    237238        final String userCacheDirAlt = "<josm.cache>";
    238239        final String userHomeDir = System.getProperty("user.home");
  • trunk/src/org/openstreetmap/josm/data/Preferences.java

    r12853 r12855  
    4444
    4545import org.openstreetmap.josm.Main;
    46 import org.openstreetmap.josm.spi.preferences.AbstractPreferences;
    4746import org.openstreetmap.josm.data.preferences.BooleanProperty;
    4847import org.openstreetmap.josm.data.preferences.ColorProperty;
     
    6261import org.openstreetmap.josm.io.OfflineAccessException;
    6362import org.openstreetmap.josm.io.OnlineResource;
     63import org.openstreetmap.josm.spi.preferences.AbstractPreferences;
     64import org.openstreetmap.josm.spi.preferences.IBaseDirectories;
    6465import org.openstreetmap.josm.tools.CheckParameterUtil;
    6566import org.openstreetmap.josm.tools.ColorHelper;
     
    9293 * @since 74
    9394 */
    94 public class Preferences extends AbstractPreferences {
     95public class Preferences extends AbstractPreferences implements IBaseDirectories {
    9596
    9697    private static final String COLOR_PREFIX = "color.";
     
    331332     * @since 7834
    332333     */
     334    @Override
    333335    public File getPreferencesDirectory() {
    334336        if (preferencesDir != null)
     
    355357     * @since 7834
    356358     */
     359    @Override
    357360    public File getUserDataDirectory() {
    358361        if (userdataDir != null)
     
    404407     * @return the cache directory
    405408     */
     409    @Override
    406410    public File getCacheDirectory() {
    407411        if (cacheDir != null)
  • trunk/src/org/openstreetmap/josm/data/cache/JCSCacheManager.java

    r12813 r12855  
    2727import org.apache.commons.jcs.engine.control.CompositeCacheManager;
    2828import org.apache.commons.jcs.utils.serialization.StandardSerializer;
    29 import org.openstreetmap.josm.Main;
    3029import org.openstreetmap.josm.data.preferences.BooleanProperty;
    3130import org.openstreetmap.josm.data.preferences.IntegerProperty;
     31import org.openstreetmap.josm.spi.preferences.Config;
    3232import org.openstreetmap.josm.tools.Logging;
    3333import org.openstreetmap.josm.tools.Utils;
     
    101101    @SuppressWarnings("resource")
    102102    private static void initialize() throws IOException {
    103         File cacheDir = new File(Main.pref.getCacheDirectory(), "jcs");
     103        File cacheDir = new File(Config.getDirs().getCacheDirectory(), "jcs");
    104104
    105105        if (!cacheDir.exists() && !cacheDir.mkdirs())
  • trunk/src/org/openstreetmap/josm/data/imagery/CachedTileLoaderFactory.java

    r12846 r12855  
    1111import org.openstreetmap.gui.jmapviewer.interfaces.TileLoader;
    1212import org.openstreetmap.gui.jmapviewer.interfaces.TileLoaderListener;
    13 import org.openstreetmap.josm.Main;
    1413import org.openstreetmap.josm.data.Version;
    1514import org.openstreetmap.josm.data.cache.BufferedImageCacheEntry;
     
    5756        String defPath = null;
    5857        try {
    59             defPath = new File(Main.pref.getCacheDirectory(), "tiles").getAbsolutePath();
     58            defPath = new File(Config.getDirs().getCacheDirectory(), "tiles").getAbsolutePath();
    6059        } catch (SecurityException e) {
    6160            Logging.warn(e);
  • trunk/src/org/openstreetmap/josm/data/validation/OsmValidator.java

    r12846 r12855  
    176176     */
    177177    public static String getValidatorDir() {
    178         return new File(Main.pref.getUserDataDirectory(), "validator").getAbsolutePath();
     178        return new File(Config.getDirs().getUserDataDirectory(), "validator").getAbsolutePath();
    179179    }
    180180
  • trunk/src/org/openstreetmap/josm/gui/MainApplication.java

    r12845 r12855  
    916916        Main.pref.init(args.hasOption(Option.RESET_PREFERENCES));
    917917        Config.setPreferencesInstance(Main.pref);
     918        Config.setBaseDirectoriesProvider(Main.pref);
    918919
    919920        args.getPreferencesToSet().forEach(Main.pref::put);
  • trunk/src/org/openstreetmap/josm/gui/io/CustomConfigurator.java

    r12846 r12855  
    425425        String dir;
    426426        if ("prefs".equals(base) || base.isEmpty()) {
    427             dir = Main.pref.getPreferencesDirectory().getAbsolutePath();
     427            dir = Config.getDirs().getPreferencesDirectory().getAbsolutePath();
    428428        } else if ("cache".equals(base)) {
    429             dir = Main.pref.getCacheDirectory().getAbsolutePath();
     429            dir = Config.getDirs().getCacheDirectory().getAbsolutePath();
    430430        } else if ("plugins".equals(base)) {
    431431            dir = Main.pref.getPluginsDirectory().getAbsolutePath();
     
    477477                engine.eval("API={}; API.pref={}; API.fragments={};");
    478478
    479                 engine.eval("homeDir='"+normalizeDirName(Main.pref.getPreferencesDirectory().getAbsolutePath()) +"';");
     479                engine.eval("homeDir='"+normalizeDirName(Config.getDirs().getPreferencesDirectory().getAbsolutePath()) +"';");
    480480                engine.eval("josmVersion="+Version.getInstance().getVersion()+';');
    481481                String className = CustomConfigurator.class.getName();
  • trunk/src/org/openstreetmap/josm/gui/layer/AutosaveTask.java

    r12846 r12855  
    2929import java.util.regex.Pattern;
    3030
    31 import org.openstreetmap.josm.Main;
    3231import org.openstreetmap.josm.actions.OpenFileAction.OpenFileTask;
    3332import org.openstreetmap.josm.data.osm.DataSet;
     
    117116    private final Deque<File> deletedLayers = new LinkedList<>();
    118117
    119     private final File autosaveDir = new File(Main.pref.getUserDataDirectory(), AUTOSAVE_DIR);
    120     private final File deletedLayersDir = new File(Main.pref.getUserDataDirectory(), DELETED_LAYERS_DIR);
     118    private final File autosaveDir = new File(Config.getDirs().getUserDataDirectory(), AUTOSAVE_DIR);
     119    private final File deletedLayersDir = new File(Config.getDirs().getUserDataDirectory(), DELETED_LAYERS_DIR);
    121120
    122121    /**
  • trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ThumbsLoader.java

    r12846 r12855  
    1818
    1919import org.apache.commons.jcs.access.behavior.ICacheAccess;
    20 import org.openstreetmap.josm.Main;
    2120import org.openstreetmap.josm.data.cache.BufferedImageCacheEntry;
    2221import org.openstreetmap.josm.data.cache.JCSCacheManager;
     
    7069            try {
    7170                cache = JCSCacheManager.getCache("geoimage-thumbnails", 0, 120,
    72                         Main.pref.getCacheDirectory().getPath() + File.separator + "geoimage-thumbnails");
     71                        Config.getDirs().getCacheDirectory().getPath() + File.separator + "geoimage-thumbnails");
    7372            } catch (IOException e) {
    7473                Logging.warn("Failed to initialize cache for geoimage-thumbnails");
  • trunk/src/org/openstreetmap/josm/gui/preferences/advanced/AdvancedPreference.java

    r12826 r12855  
    5151import org.openstreetmap.josm.gui.widgets.AbstractFileChooser;
    5252import org.openstreetmap.josm.gui.widgets.JosmTextField;
     53import org.openstreetmap.josm.spi.preferences.Config;
    5354import org.openstreetmap.josm.tools.GBC;
    5455import org.openstreetmap.josm.tools.Logging;
     
    369370                    }
    370371                }
    371                 files = Main.pref.getPreferencesDirectory().listFiles();
     372                files = Config.getDirs().getPreferencesDirectory().listFiles();
    372373                if (files != null) {
    373374                    for (File f: files) {
  • trunk/src/org/openstreetmap/josm/io/CacheCustomContent.java

    r12846 r12855  
    1111import java.util.concurrent.TimeUnit;
    1212
    13 import org.openstreetmap.josm.Main;
    1413import org.openstreetmap.josm.spi.preferences.Config;
    1514import org.openstreetmap.josm.tools.Logging;
     
    7776        this.ident = ident;
    7877        this.updateInterval = updateInterval;
    79         this.path = new File(Main.pref.getCacheDirectory(), ident);
     78        this.path = new File(Config.getDirs().getCacheDirectory(), ident);
    8079    }
    8180
  • trunk/src/org/openstreetmap/josm/io/CachedFile.java

    r12853 r12855  
    277277                return null;
    278278            } else if (name.startsWith("josmdir://")) {
    279                 cacheFile = new File(Main.pref.getUserDataDirectory(), name.substring("josmdir://".length()));
     279                cacheFile = new File(Config.getDirs().getUserDataDirectory(), name.substring("josmdir://".length()));
    280280            } else if (name.startsWith("josmplugindir://")) {
    281281                cacheFile = new File(Main.pref.getPluginsDirectory(), name.substring("josmplugindir://".length()));
     
    448448        }
    449449        if (destDir == null) {
    450             destDir = Main.pref.getCacheDirectory().getPath();
     450            destDir = Config.getDirs().getCacheDirectory().getPath();
    451451        }
    452452
  • trunk/src/org/openstreetmap/josm/io/remotecontrol/RemoteControl.java

    r12846 r12855  
    88import java.net.UnknownHostException;
    99
    10 import org.openstreetmap.josm.Main;
    1110import org.openstreetmap.josm.data.preferences.BooleanProperty;
    1211import org.openstreetmap.josm.io.remotecontrol.handler.RequestHandler;
     
    9695     */
    9796    public static String getRemoteControlDir() {
    98         return new File(Main.pref.getUserDataDirectory(), "remotecontrol").getAbsolutePath();
     97        return new File(Config.getDirs().getUserDataDirectory(), "remotecontrol").getAbsolutePath();
    9998    }
    10099
  • trunk/src/org/openstreetmap/josm/spi/preferences/Config.java

    r12854 r12855  
    55
    66/**
    7  * Class to hold the global preferences object.
     7 * Class to hold the global preferences object and the provider of base directories.
    88 * @since 12847
    99 */
     
    1111
    1212    private static IPreferences preferences;
     13    private static IBaseDirectories baseDirectories;
    1314
    1415    private Config() {
     
    2627
    2728    /**
     29     * Get class that provides the location of certain base directories
     30     * @return the global {@link IBaseDirectories} instance
     31     * @since 12855
     32     */
     33    public static IBaseDirectories getDirs() {
     34        return baseDirectories;
     35    }
     36
     37    /**
    2838     * Install the global preference instance.
    2939     * @param preferences the global preference instance to set (must not be null)
     40     * @since 12847
    3041     */
    3142    public static void setPreferencesInstance(IPreferences preferences) {
    3243        Config.preferences = Objects.requireNonNull(preferences, "preferences");
    3344    }
     45
     46    /**
     47     * Install the global base directories provider.
     48     * @param baseDirectories the global base directories provider instance to set
     49     * (must not be null)
     50     * @since 12855
     51     */
     52    public static void setBaseDirectoriesProvider(IBaseDirectories baseDirectories) {
     53        Config.baseDirectories = Objects.requireNonNull(baseDirectories, "baseDirectories");
     54    }
    3455}
  • trunk/src/org/openstreetmap/josm/tools/ImageProvider.java

    r12846 r12855  
    927927     */
    928928    private static ImageResource getIfAvailableHttp(String url, ImageType type) {
    929         try (CachedFile cf = new CachedFile(url).setDestDir(new File(Main.pref.getCacheDirectory(), "images").getPath());
     929        try (CachedFile cf = new CachedFile(url).setDestDir(
     930                new File(Config.getDirs().getCacheDirectory(), "images").getPath());
    930931             InputStream is = cf.getInputStream()) {
    931932            switch (type) {
     
    11721173        }
    11731174        // Try user-data directory
    1174         if (Main.pref != null) {
    1175             String dir = new File(Main.pref.getUserDataDirectory(), "images").getAbsolutePath();
     1175        if (Config.getDirs() != null) {
     1176            String dir = new File(Config.getDirs().getUserDataDirectory(), "images").getAbsolutePath();
    11761177            try {
    11771178                u = getImageUrl(dir, imageName, additionalClassLoaders);
     
    12461247            parser.setEntityResolver((publicId, systemId) -> new InputSource(new ByteArrayInputStream(new byte[0])));
    12471248
    1248             try (CachedFile cf = new CachedFile(base + fn).setDestDir(new File(Main.pref.getUserDataDirectory(), "images").getPath());
     1249            try (CachedFile cf = new CachedFile(base + fn).setDestDir(
     1250                        new File(Config.getDirs().getUserDataDirectory(), "images").getPath());
    12491251                 InputStream is = cf.getInputStream()) {
    12501252                parser.parse(new InputSource(is));
  • trunk/src/org/openstreetmap/josm/tools/PlatformHookWindows.java

    r12851 r12855  
    477477    public File getDefaultUserDataDirectory() {
    478478        // Use preferences directory by default
    479         return Main.pref.getPreferencesDirectory();
     479        return Config.getDirs().getPreferencesDirectory();
    480480    }
    481481
     
    522522            props.load(fis);
    523523            byte[] content = Files.readAllBytes(templateFile);
    524             File cachePath = Main.pref.getCacheDirectory();
     524            File cachePath = Config.getDirs().getCacheDirectory();
    525525            Path fontconfigFile = cachePath.toPath().resolve("fontconfig.properties");
    526526            OutputStream os = Files.newOutputStream(fontconfigFile);
  • trunk/src/org/openstreetmap/josm/tools/RightAndLefthandTraffic.java

    r12718 r12855  
    1717import java.util.Set;
    1818
    19 import org.openstreetmap.josm.Main;
    2019import org.openstreetmap.josm.actions.JoinAreasAction;
    2120import org.openstreetmap.josm.actions.JoinAreasAction.JoinAreasResult;
     
    3231import org.openstreetmap.josm.io.OsmWriter;
    3332import org.openstreetmap.josm.io.OsmWriterFactory;
     33import org.openstreetmap.josm.spi.preferences.Config;
    3434
    3535/**
     
    153153    private static void saveOptimizedBoundaries(Collection<Way> optimizedWays) {
    154154        DataSet ds = optimizedWays.iterator().next().getDataSet();
    155         File file = new File(Main.pref.getCacheDirectory(), "left-right-hand-traffic.osm");
     155        File file = new File(Config.getDirs().getCacheDirectory(), "left-right-hand-traffic.osm");
    156156        try (Writer writer = new OutputStreamWriter(new FileOutputStream(file), StandardCharsets.UTF_8);
    157157             OsmWriter w = OsmWriterFactory.createOsmWriter(new PrintWriter(writer), false, ds.getVersion())
     
    166166
    167167    private static Collection<Way> loadOptimizedBoundaries() {
    168         try (InputStream is = new FileInputStream(new File(Main.pref.getCacheDirectory(), "left-right-hand-traffic.osm"))) {
     168        try (InputStream is = new FileInputStream(new File(Config.getDirs().getCacheDirectory(), "left-right-hand-traffic.osm"))) {
    169169           return OsmReader.parseDataSet(is, null).getWays();
    170170        } catch (IllegalDataException | IOException ex) {
  • trunk/test/unit/org/openstreetmap/josm/JOSMFixture.java

    r12849 r12855  
    9898        TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
    9999        Config.setPreferencesInstance(Main.pref);
     100        Config.setBaseDirectoriesProvider(Main.pref);
    100101        Main.pref.resetToInitialState();
    101102        Main.pref.enableSaveOnPut(false);
  • trunk/test/unit/org/openstreetmap/josm/testutils/JOSMTestRules.java

    r12849 r12855  
    278278
    279279        Config.setPreferencesInstance(Main.pref);
     280        Config.setBaseDirectoriesProvider(Main.pref);
    280281        // All tests use the same timezone.
    281282        TimeZone.setDefault(DateUtils.UTC);
Note: See TracChangeset for help on using the changeset viewer.