Author: oheger
Date: Sat Jun 4 08:54:12 2005
New Revision: 179999
URL: http://svn.apache.org/viewcvs?rev=179999&view=rev
Log:
Fix for issue 35210: perform an additional URL decoding when transforming a URL
to a File object in ConfigurationUtils
Modified:
jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/ConfigurationUtils.java
jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestFileConfiguration.java
jakarta/commons/proper/configuration/trunk/xdocs/changes.xml
Modified:
jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/ConfigurationUtils.java
URL:
http://svn.apache.org/viewcvs/jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/ConfigurationUtils.java?rev=179999&r1=179998&r2=179999&view=diff
==============================================================================
---
jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/ConfigurationUtils.java
(original)
+++
jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/ConfigurationUtils.java
Sat Jun 4 08:54:12 2005
@@ -19,6 +19,7 @@
import java.io.*;
import java.net.MalformedURLException;
import java.net.URL;
+import java.net.URLDecoder;
import java.util.Iterator;
import org.apache.commons.lang.StringUtils;
@@ -37,6 +38,9 @@
{
/** Constant for the file URL protocol.*/
static final String PROTOCOL_FILE = "file";
+
+ /** Constant for the URL encoding to be used.*/
+ static final String ENCODING = "UTF-8";
private static Log log = LogFactory.getLog(ConfigurationUtils.class);
@@ -471,7 +475,15 @@
{
if (PROTOCOL_FILE.equals(url.getProtocol()))
{
- return new File(url.getPath());
+ try
+ {
+ return new File(URLDecoder.decode(url.getPath(), ENCODING));
+ }
+ catch (UnsupportedEncodingException uex)
+ {
+ // should normally not happen
+ return null;
+ }
}
else
{
Modified:
jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestFileConfiguration.java
URL:
http://svn.apache.org/viewcvs/jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestFileConfiguration.java?rev=179999&r1=179998&r2=179999&view=diff
==============================================================================
---
jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestFileConfiguration.java
(original)
+++
jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestFileConfiguration.java
Sat Jun 4 08:54:12 2005
@@ -304,4 +304,55 @@
}
}
}
+
+ /**
+ * Tests loading and saving a configuration file with a complicated path
+ * name including spaces. (related to issue 35210)
+ */
+ public void testPathWithSpaces() throws Exception
+ {
+ File path = new File(TARGET_DIR, "path with spaces");
+ File confFile = new File(path, "config-test.properties");
+ PrintWriter out = null;
+
+ try
+ {
+ if (!path.exists())
+ {
+ assertTrue(path.mkdir());
+ }
+ out = new PrintWriter(new FileWriter(confFile));
+ out.println("saved = false");
+ out.close();
+ out = null;
+
+ URL url = new URL(TARGET_DIR.toURL()
+ + "path%20with%20spaces/config-test.properties");
+ PropertiesConfiguration config = new PropertiesConfiguration(url);
+ config.load();
+ assertFalse(config.getBoolean("saved"));
+
+ config.setProperty("saved", Boolean.TRUE);
+ config.save();
+ config = new PropertiesConfiguration();
+ config.setFile(confFile);
+ config.load();
+ assertTrue(config.getBoolean("saved"));
+ }
+ finally
+ {
+ if (out != null)
+ {
+ out.close();
+ }
+ if (confFile.exists())
+ {
+ assertTrue(confFile.delete());
+ }
+ if (path.exists())
+ {
+ assertTrue(path.delete());
+ }
+ }
+ }
}
Modified: jakarta/commons/proper/configuration/trunk/xdocs/changes.xml
URL:
http://svn.apache.org/viewcvs/jakarta/commons/proper/configuration/trunk/xdocs/changes.xml?rev=179999&r1=179998&r2=179999&view=diff
==============================================================================
--- jakarta/commons/proper/configuration/trunk/xdocs/changes.xml (original)
+++ jakarta/commons/proper/configuration/trunk/xdocs/changes.xml Sat Jun 4
08:54:12 2005
@@ -23,6 +23,11 @@
<body>
<release version="1.2-dev" date="in SVN">
+ <action dev="oheger" type="update" issue="35210">
+ Fixed a problem related to file based configurations that are loaded
+ from a URL which is application/x-www-form-urlencoded: the save()
method
+ would store such files at a wrong location.
+ </action>
<action dev="oheger" type="update" issue="34289">
Updated FileChangedReloadingStrategy to use the file based
configuration's
source URL to find the file to watch. Before that it was possible that
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]