Author: oheger
Date: Tue Sep 1 14:23:04 2015
New Revision: 1700564
URL: http://svn.apache.org/r1700564
Log:
[CONFIGURATION-609] Use the correct file system for include files.
The FileHandler used for loading include properties dropped some of the
properties configured for the builder. This has been fixed.
Modified:
commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/PropertiesConfiguration.java
commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration2/TestPropertiesConfiguration.java
Modified:
commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/PropertiesConfiguration.java
URL:
http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/PropertiesConfiguration.java?rev=1700564&r1=1700563&r2=1700564&view=diff
==============================================================================
---
commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/PropertiesConfiguration.java
(original)
+++
commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/PropertiesConfiguration.java
Tue Sep 1 14:23:04 2015
@@ -1417,6 +1417,7 @@ public class PropertiesConfiguration ext
}
FileHandler fh = new FileHandler(this);
+ fh.setFileLocator(locator);
fh.load(url);
}
Modified:
commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration2/TestPropertiesConfiguration.java
URL:
http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration2/TestPropertiesConfiguration.java?rev=1700564&r1=1700563&r2=1700564&view=diff
==============================================================================
---
commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration2/TestPropertiesConfiguration.java
(original)
+++
commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration2/TestPropertiesConfiguration.java
Tue Sep 1 14:23:04 2015
@@ -27,15 +27,18 @@ import static org.junit.Assert.assertTru
import static org.junit.Assert.fail;
import java.io.BufferedReader;
+import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
+import java.io.InputStream;
import java.io.OutputStream;
import java.io.Reader;
import java.io.StringReader;
import java.io.StringWriter;
+import java.io.UnsupportedEncodingException;
import java.io.Writer;
import java.net.HttpURLConnection;
import java.net.URL;
@@ -50,14 +53,18 @@ import java.util.Set;
import org.apache.commons.configuration2.SynchronizerTestImpl.Methods;
import
org.apache.commons.configuration2.builder.FileBasedBuilderParametersImpl;
+import org.apache.commons.configuration2.builder.FileBasedConfigurationBuilder;
import
org.apache.commons.configuration2.builder.combined.CombinedConfigurationBuilder;
+import org.apache.commons.configuration2.builder.fluent.Parameters;
import org.apache.commons.configuration2.convert.DefaultListDelimiterHandler;
import org.apache.commons.configuration2.convert.DisabledListDelimiterHandler;
import org.apache.commons.configuration2.convert.LegacyListDelimiterHandler;
import org.apache.commons.configuration2.convert.ListDelimiterHandler;
import org.apache.commons.configuration2.event.ConfigurationEvent;
import org.apache.commons.configuration2.ex.ConfigurationException;
+import org.apache.commons.configuration2.io.DefaultFileSystem;
import org.apache.commons.configuration2.io.FileHandler;
+import org.apache.commons.configuration2.io.FileSystem;
import org.apache.commons.lang3.mutable.MutableObject;
import org.junit.Before;
import org.junit.Test;
@@ -143,7 +150,7 @@ public class TestPropertiesConfiguration
/**
* Checks for a property without a value.
- *
+ *
* @param key the key to be checked
*/
private void checkEmpty(String key)
@@ -1123,6 +1130,50 @@ public class TestPropertiesConfiguration
}
/**
+ * Tests whether the correct file system is used when loading an include
+ * file. This test is related to CONFIGURATION-609.
+ */
+ @Test
+ public void testLoadIncludeFileViaFileSystem() throws
ConfigurationException
+ {
+ conf.clear();
+ conf.addProperty("include", "include.properties");
+ saveTestConfig();
+
+ FileSystem fs = new DefaultFileSystem()
+ {
+ @Override
+ public InputStream getInputStream(URL url)
+ throws ConfigurationException
+ {
+ if (url.toString().endsWith("include.properties"))
+ {
+ try
+ {
+ return new ByteArrayInputStream(
+ "test.outcome = success".getBytes("UTF-8"));
+ }
+ catch (UnsupportedEncodingException e)
+ {
+ throw new ConfigurationException("Unsupported
encoding",
+ e);
+ }
+ }
+ return super.getInputStream(url);
+ }
+ };
+ Parameters params = new Parameters();
+ FileBasedConfigurationBuilder<PropertiesConfiguration> builder =
+ new FileBasedConfigurationBuilder<PropertiesConfiguration>(
+ PropertiesConfiguration.class);
+ builder.configure(params.fileBased().setFile(testSavePropertiesFile)
+ .setBasePath(ConfigurationAssert.OUT_DIR.toURI().toString())
+ .setFileSystem(fs));
+ PropertiesConfiguration configuration = builder.getConfiguration();
+ assertEquals("success", configuration.getString("test.outcome"));
+ }
+
+ /**
* Helper method for testing the content of a list with elements that
* contain backslashes.
*