You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by eb...@apache.org on 2007/04/16 12:40:44 UTC
svn commit: r529194 - in /jakarta/commons/proper/configuration/trunk:
src/java/org/apache/commons/configuration/
src/java/org/apache/commons/configuration/plist/
src/test/org/apache/commons/configuration/ xdocs/
Author: ebourg
Date: Mon Apr 16 03:40:42 2007
New Revision: 529194
URL: http://svn.apache.org/viewvc?view=rev&rev=529194
Log:
AbstractFileConfiguration now supports saving to non file URLs (CONFIGURATION-249)
Fixed a typo on the overview page
Modified:
jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/AbstractFileConfiguration.java
jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/FileConfiguration.java
jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/plist/XMLPropertyListConfiguration.java
jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestFileConfiguration.java
jakarta/commons/proper/configuration/trunk/xdocs/changes.xml
jakarta/commons/proper/configuration/trunk/xdocs/overview.xml
Modified: jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/AbstractFileConfiguration.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/AbstractFileConfiguration.java?view=diff&rev=529194&r1=529193&r2=529194
==============================================================================
--- jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/AbstractFileConfiguration.java (original)
+++ jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/AbstractFileConfiguration.java Mon Apr 16 03:40:42 2007
@@ -27,8 +27,10 @@
import java.io.Reader;
import java.io.UnsupportedEncodingException;
import java.io.Writer;
+import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
+import java.net.URLConnection;
import java.util.Iterator;
import org.apache.commons.configuration.reloading.InvariantReloadingStrategy;
@@ -409,7 +411,7 @@
}
/**
- * Save the configuration to the specified URL if it's a file URL.
+ * Save the configuration to the specified URL.
* This doesn't change the source of the configuration, use setURL()
* if you need it.
*
@@ -419,6 +421,8 @@
*/
public void save(URL url) throws ConfigurationException
{
+ // file URLs have to be converted to Files since FileURLConnection is
+ // read only (http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4191800)
File file = ConfigurationUtils.fileFromURL(url);
if (file != null)
{
@@ -426,7 +430,35 @@
}
else
{
- throw new ConfigurationException("Could not save to URL " + url);
+ // for non file URLs save through an URLConnection
+ try
+ {
+ URLConnection connection = url.openConnection();
+ connection.setDoOutput(true);
+
+ // use the PUT method for http URLs
+ if (connection instanceof HttpURLConnection)
+ {
+ HttpURLConnection conn = (HttpURLConnection) connection;
+ conn.setRequestMethod("PUT");
+ }
+
+ save(connection.getOutputStream());
+
+ // check the response code for http URLs and throw an exception if an error occured
+ if (connection instanceof HttpURLConnection)
+ {
+ HttpURLConnection conn = (HttpURLConnection) connection;
+ if (conn.getResponseCode() >= HttpURLConnection.HTTP_BAD_REQUEST)
+ {
+ throw new IOException("HTTP Error " + conn.getResponseCode() + " " + conn.getResponseMessage());
+ }
+ }
+ }
+ catch (IOException e)
+ {
+ throw new ConfigurationException("Could not save to URL " + url + " : " + e.getMessage());
+ }
}
}
@@ -647,8 +679,7 @@
{
try
{
- path = ConfigurationUtils.getURL(getBasePath(),
- getFileName()).getPath();
+ path = ConfigurationUtils.getURL(getBasePath(), getFileName()).getPath();
}
catch (MalformedURLException e)
{
@@ -877,8 +908,7 @@
* @param propValue the value of the property
* @param before the before update flag
*/
- protected void fireEvent(int type, String propName, Object propValue,
- boolean before)
+ protected void fireEvent(int type, String propName, Object propValue, boolean before)
{
enterNoReload();
try
@@ -959,8 +989,7 @@
*/
public Object clone()
{
- AbstractFileConfiguration copy = (AbstractFileConfiguration) super
- .clone();
+ AbstractFileConfiguration copy = (AbstractFileConfiguration) super.clone();
copy.setBasePath(null);
copy.setFileName(null);
copy.initReloadingStrategy();
Modified: jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/FileConfiguration.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/FileConfiguration.java?view=diff&rev=529194&r1=529193&r2=529194
==============================================================================
--- jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/FileConfiguration.java (original)
+++ jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/FileConfiguration.java Mon Apr 16 03:40:42 2007
@@ -126,7 +126,7 @@
void save(File file) throws ConfigurationException;
/**
- * Save the configuration to the specified URL if it's a file URL.
+ * Save the configuration to the specified URL.
*
* @param url the URL
*
Modified: jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/plist/XMLPropertyListConfiguration.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/plist/XMLPropertyListConfiguration.java?view=diff&rev=529194&r1=529193&r2=529194
==============================================================================
--- jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/plist/XMLPropertyListConfiguration.java (original)
+++ jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/plist/XMLPropertyListConfiguration.java Mon Apr 16 03:40:42 2007
@@ -506,7 +506,7 @@
}
/**
- * Node extension with addXXX methods to parse the typed data passed by Digester.
+ * Node extension with addXXX methods to parse the typed data passed by the SAX handler.
* <b>Do not use this class !</b> It is used internally by XMLPropertyConfiguration
* to parse the configuration file, it may be removed at any moment in the future.
*/
Modified: jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestFileConfiguration.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestFileConfiguration.java?view=diff&rev=529194&r1=529193&r2=529194
==============================================================================
--- 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 Mon Apr 16 03:40:42 2007
@@ -49,8 +49,7 @@
FileConfiguration config = new PropertiesConfiguration();
config.setURL(new URL("http://jakarta.apache.org/commons/configuration/index.html"));
- assertEquals("base path", "http://jakarta.apache.org/commons/configuration/", config
- .getBasePath());
+ assertEquals("base path", "http://jakarta.apache.org/commons/configuration/", config.getBasePath());
assertEquals("file name", "index.html", config.getFileName());
// file URL
@@ -62,13 +61,10 @@
public void testSetURLWithParams() throws Exception
{
FileConfiguration config = new PropertiesConfiguration();
- URL url = new URL(
- "http://issues.apache.org/bugzilla/show_bug.cgi?id=37886");
+ URL url = new URL("http://issues.apache.org/bugzilla/show_bug.cgi?id=37886");
config.setURL(url);
- assertEquals("Base path incorrect",
- "http://issues.apache.org/bugzilla/", config.getBasePath());
- assertEquals("File name incorrect", "show_bug.cgi", config
- .getFileName());
+ assertEquals("Base path incorrect", "http://issues.apache.org/bugzilla/", config.getBasePath());
+ assertEquals("File name incorrect", "show_bug.cgi", config.getFileName());
assertEquals("URL was not correctly stored", url, config.getURL());
}
@@ -202,9 +198,10 @@
public void testSaveInvalidURL() throws Exception
{
FileConfiguration config = new PropertiesConfiguration();
+
try
{
- config.save(new URL("http://jakarta.apache.org"));
+ config.save(new URL("http://jakarta.apache.org/test.properties"));
fail("Should throw a ConfigurationException!");
}
catch (ConfigurationException cex)
@@ -214,7 +211,7 @@
try
{
- config.save("http://www.apache.org");
+ config.save("http://www.apache.org/test.properties");
fail("Should throw a ConfigurationException!");
}
catch (ConfigurationException cex)
Modified: jakarta/commons/proper/configuration/trunk/xdocs/changes.xml
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/configuration/trunk/xdocs/changes.xml?view=diff&rev=529194&r1=529193&r2=529194
==============================================================================
--- jakarta/commons/proper/configuration/trunk/xdocs/changes.xml (original)
+++ jakarta/commons/proper/configuration/trunk/xdocs/changes.xml Mon Apr 16 03:40:42 2007
@@ -23,6 +23,10 @@
<body>
<release version="1.5-SNAPSHOT" date="in SVN" description="">
+ <action dev="ebourg" type="add" issue="CONFIGURATION-249">
+ File configurations can now be saved to FTP URLs, or any other URL
+ protocol supporting data output.
+ </action>
<action dev="ebourg" type="fix" issue="CONFIGURATION-180">
Fixed a potential issue in DatabaseConfiguration where an error on
closing a statement would prevent the connection from being closed.
Modified: jakarta/commons/proper/configuration/trunk/xdocs/overview.xml
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/configuration/trunk/xdocs/overview.xml?view=diff&rev=529194&r1=529193&r2=529194
==============================================================================
--- jakarta/commons/proper/configuration/trunk/xdocs/overview.xml (original)
+++ jakarta/commons/proper/configuration/trunk/xdocs/overview.xml Mon Apr 16 03:40:42 2007
@@ -82,7 +82,7 @@
</li>
<li>
<strong>ConfigurationConverter</strong>
- Takes a java.util.Properties or an org.aapache.commons.collections.ExtendedProperties
+ Takes a java.util.Properties or an org.apache.commons.collections.ExtendedProperties
and converts it to a Configuration object.
</li>
</ul>
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org