Class AbstractFileLocationStrategy

  • All Implemented Interfaces:
    FileLocationStrategy
    Direct Known Subclasses:
    AbsoluteNameLocationStrategy, BasePathLocationStrategy, ClasspathLocationStrategy, CombinedLocationStrategy, FileSystemLocationStrategy, HomeDirectoryLocationStrategy, ProvidedURLLocationStrategy

    public abstract class AbstractFileLocationStrategy
    extends java.lang.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:
    FileLocationStrategy
    • Method Detail

      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object