Author: oheger
Date: Thu Dec 1 20:54:45 2016
New Revision: 1772267
URL: http://svn.apache.org/viewvc?rev=1772267&view=rev
Log:
[CONFIGURATION-641] Improved exception when loading PropertiesConfiguration.
It is now checked whether the locator has been correctly initialized.
If not, an exception with a helpful message is thrown.
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=1772267&r1=1772266&r2=1772267&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
Thu Dec 1 20:54:45 2016
@@ -1421,7 +1421,13 @@ public class PropertiesConfiguration ext
*/
private void loadIncludeFile(String fileName) throws ConfigurationException
{
- assert locator != null : "Locator has not been set!";
+ if (locator == null)
+ {
+ throw new ConfigurationException("Load operation not properly "
+ + "initialized! Do not call read(InputStream) directly,"
+ + " but use a FileHandler to load a configuration.");
+ }
+
URL url = locateIncludeFile(locator.getBasePath(), fileName);
if (url == null)
{
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=1772267&r1=1772266&r2=1772267&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
Thu Dec 1 20:54:45 2016
@@ -17,29 +17,7 @@
package org.apache.commons.configuration2;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNotSame;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
-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.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
@@ -71,6 +49,9 @@ import org.junit.Test;
import org.junit.Rule;
import org.junit.rules.TemporaryFolder;
+import static org.hamcrest.CoreMatchers.containsString;
+import static org.junit.Assert.*;
+
/**
* Test for loading and saving properties files.
*
@@ -1190,6 +1171,31 @@ public class TestPropertiesConfiguration
}
/**
+ * Tests a direct invocation of the read() method. This is not allowed
+ * because certain initializations have not been done. This test is
+ * related to CONFIGURATION-641.
+ */
+ @Test
+ public void testReadCalledDirectly() throws IOException
+ {
+ conf = new PropertiesConfiguration();
+ Reader in = new
FileReader(ConfigurationAssert.getTestFile("test.properties"));
+ try
+ {
+ conf.read(in);
+ fail("No exception thrown!");
+ }
+ catch (ConfigurationException e)
+ {
+ assertThat(e.getMessage(), containsString("FileHandler"));
+ }
+ finally
+ {
+ in.close();
+ }
+ }
+
+ /**
* Helper method for testing the content of a list with elements that
* contain backslashes.
*