Class AbstractFileLocationStrategy

java.lang.Object
org.apache.commons.configuration2.io.AbstractFileLocationStrategy
All Implemented Interfaces:
FileLocationStrategy
Direct Known Subclasses:
AbsoluteNameLocationStrategy, BasePathLocationStrategy, ClasspathLocationStrategy, CombinedLocationStrategy, FileSystemLocationStrategy, HomeDirectoryLocationStrategy, ProvidedURLLocationStrategy

public abstract class AbstractFileLocationStrategy extends Object implements FileLocationStrategy
Abstracts services for FileLocationStrategy implementations.

Note that some FileLocationStrategy implementation use URLs internally to encode file locations.

As of version 2.15.0, by default, the only URL schemes allowed are file and jar. To override this default, you can either use the system property org.apache.commons.configuration2.io.FileLocationStrategy.schemes or build a subclass of AbstractFileLocationStrategy.

Using System Properties

The system property org.apache.commons.configuration2.io.FileLocationStrategy.schemes String value must be a comma-separated list of schemes, where the default is "file,jar", and the complete list is "file,http,https,jar".

Using a Builder

The root builder for AbstractFileLocationStrategy is AbstractFileLocationStrategy.AbstractBuilder where you define allowed schemes and hosts through its setter methods.

For example, to programatically enable the shemes "file", "http", "https", and "jar" for all strategies, you write:


 final PropertiesConfiguration pc = new PropertiesConfiguration();
      pc.setIncludeListener(PropertiesConfiguration.NOOP_INCLUDE_LISTENER);
      final FileHandler handler = new FileHandler(pc);
      final CombinedLocationStrategy.Builder builder = new CombinedLocationStrategy.Builder()
              .setSchemes(new TreeSet<>(Arrays.asList("file", "http", "https", "jar")));
      // @formatter:off
      handler.setLocationStrategy(builder.setSubStrategies(Arrays.asList(
              new ProvidedURLLocationStrategy(builder),
              new FileSystemLocationStrategy(builder),
              new AbsoluteNameLocationStrategy(builder),
              new BasePathLocationStrategy(builder),
              new HomeDirectoryLocationStrategy.Builder().setEvaluateBasePath(true).getUnchecked(),
              new HomeDirectoryLocationStrategy.Builder().setEvaluateBasePath(false).getUnchecked(),
              new ClasspathLocationStrategy(builder)))
              .get());
      // @formatter:on
      handler.setBasePath(TEST_BASE_PATH);
      handler.setFileName("include-load-url-host-unknown-exception.properties");
      handler.load();
 
Since:
2.15.0
See Also: