Author: ebourg
Date: Tue May 22 05:37:13 2007
New Revision: 540562
URL: http://svn.apache.org/viewvc?view=rev&rev=540562
Log:
Added a test case for saving a configuration to a web server using a PUT
request (CONFIGURATION-249)
Minor code simplification in AbstractFileConfiguration
Modified:
jakarta/commons/proper/configuration/trunk/project.xml
jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/AbstractFileConfiguration.java
jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestPropertiesConfiguration.java
Modified: jakarta/commons/proper/configuration/trunk/project.xml
URL:
http://svn.apache.org/viewvc/jakarta/commons/proper/configuration/trunk/project.xml?view=diff&rev=540562&r1=540561&r2=540562
==============================================================================
--- jakarta/commons/proper/configuration/trunk/project.xml (original)
+++ jakarta/commons/proper/configuration/trunk/project.xml Tue May 22 05:37:13
2007
@@ -418,6 +418,26 @@
</dependency>
<dependency>
+ <groupId>jetty</groupId>
+ <artifactId>jetty</artifactId>
+ <version>6.0.2</version>
+ <properties>
+ <scope>test</scope>
+ </properties>
+ </dependency>
+
+ <dependency>
+ <groupId>jetty</groupId>
+ <artifactId>jetty-util</artifactId>
+ <version>6.0.2</version>
+ <properties>
+ <scope>test</scope>
+ </properties>
+ </dependency>
+
+ <!-- Plugins -->
+
+ <dependency>
<groupId>maven-plugins</groupId>
<artifactId>maven-tasks-plugin</artifactId>
<version>1.1.0</version>
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=540562&r1=540561&r2=540562
==============================================================================
---
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
Tue May 22 05:37:13 2007
@@ -621,16 +621,13 @@
{
return null;
}
+ else if (sourceURL != null)
+ {
+ return ConfigurationUtils.fileFromURL(sourceURL);
+ }
else
{
- if (sourceURL != null)
- {
- return ConfigurationUtils.fileFromURL(sourceURL);
- }
- else
- {
- return ConfigurationUtils.getFile(getBasePath(),
getFileName());
- }
+ return ConfigurationUtils.getFile(getBasePath(), getFileName());
}
}
Modified:
jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestPropertiesConfiguration.java
URL:
http://svn.apache.org/viewvc/jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestPropertiesConfiguration.java?view=diff&rev=540562&r1=540561&r2=540562
==============================================================================
---
jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestPropertiesConfiguration.java
(original)
+++
jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestPropertiesConfiguration.java
Tue May 22 05:37:13 2007
@@ -18,6 +18,8 @@
package org.apache.commons.configuration;
import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
@@ -28,10 +30,18 @@
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
import org.apache.commons.configuration.reloading.FileChangedReloadingStrategy;
import junit.framework.TestCase;
+import org.mortbay.jetty.Handler;
+import org.mortbay.jetty.Request;
+import org.mortbay.jetty.Server;
+import org.mortbay.jetty.handler.AbstractHandler;
+import org.mortbay.util.IO;
/**
* Test for loading and saving properties files.
@@ -172,6 +182,66 @@
assertEquals("true", config2.getString("configuration.loaded"));
}
+ public void testSaveToHTTPServer() throws Exception
+ {
+ // set up the web server
+ Handler handler = new AbstractHandler()
+ {
+ public void handle(String target, HttpServletRequest request,
HttpServletResponse response, int dispatch) throws IOException, ServletException
+ {
+ File file = new File("." + target);
+
+ if ("GET".equals(request.getMethod())) {
+ if (file.exists() && file.isFile()) {
+ response.setStatus(HttpServletResponse.SC_OK);
+ response.setContentType("text/plain");
+ FileInputStream in = new FileInputStream(file);
+ try
+ {
+ IO.copy(in, response.getOutputStream());
+ }
+ finally
+ {
+ in.close();
+ }
+
+ } else {
+ response.setStatus(HttpServletResponse.SC_NOT_FOUND);
+ }
+
+ } else if ("PUT".equals(request.getMethod())) {
+ FileOutputStream out = new FileOutputStream(file);
+ try
+ {
+ IO.copy(request.getInputStream(), out);
+ }
+ finally
+ {
+ out.close();
+ }
+
+ response.setStatus(HttpServletResponse.SC_OK);
+ } else {
+ response.setStatus(HttpServletResponse.SC_NOT_IMPLEMENTED);
+ }
+
+ ((Request) request).setHandled(true);
+ }
+ };
+
+ Server server = new Server(65432);
+ server.setHandler(handler);
+ server.start();
+
+ // save the configuration
+ URL url = new
URL("http://localhost:65432/target/testsave-httpput.properties");
+ conf.save(url);
+
+ // reload the configuration
+ Configuration config2 = new PropertiesConfiguration(url);
+ assertEquals("true", config2.getString("configuration.loaded"));
+ }
+
public void testInMemoryCreatedSave() throws Exception
{
// remove the file previously saved if necessary
@@ -201,10 +271,8 @@
for (Iterator i = pc.getKeys(); i.hasNext();)
{
String key = (String) i.next();
- assertTrue("The saved configuration doesn't contain the key '" +
key + "'",
- checkConfig.containsKey(key));
- assertEquals("Value of the '" + key + "' property",
- pc.getProperty(key), checkConfig.getProperty(key));
+ assertTrue("The saved configuration doesn't contain the key '" +
key + "'", checkConfig.containsKey(key));
+ assertEquals("Value of the '" + key + "' property",
pc.getProperty(key), checkConfig.getProperty(key));
}
// Save it again, verifing a save with a filename works.
@@ -349,8 +417,7 @@
setUpSavedProperties();
conf.clearProperty("c");
PropertiesConfiguration checkConfig = checkSavedConfig();
- assertFalse("The saved configuration contain the key '" + "c" + "'",
- checkConfig.containsKey("c"));
+ assertFalse("The saved configuration contain the key '" + "c" + "'",
checkConfig.containsKey("c"));
}
/**
@@ -359,8 +426,7 @@
*
* @throws IOException if an I/O error occurs
*/
- private void setUpSavedProperties() throws IOException,
- ConfigurationException
+ private void setUpSavedProperties() throws IOException,
ConfigurationException
{
PrintWriter out = null;
@@ -400,15 +466,12 @@
private PropertiesConfiguration checkSavedConfig()
throws ConfigurationException
{
- PropertiesConfiguration checkConfig = new PropertiesConfiguration(
- testSavePropertiesFile);
+ PropertiesConfiguration checkConfig = new
PropertiesConfiguration(testSavePropertiesFile);
for (Iterator i = conf.getKeys(); i.hasNext();)
{
String key = (String) i.next();
- assertTrue("The saved configuration doesn't contain the key '"
- + key + "'", checkConfig.containsKey(key));
- assertEquals("Value of the '" + key + "' property", conf
- .getProperty(key), checkConfig.getProperty(key));
+ assertTrue("The saved configuration doesn't contain the key '" +
key + "'", checkConfig.containsKey(key));
+ assertEquals("Value of the '" + key + "' property",
conf.getProperty(key), checkConfig.getProperty(key));
}
return checkConfig;
}
@@ -575,8 +638,7 @@
String content = out.toString();
assertTrue("Header could not be found", content.indexOf("# My header"
+ EOL + EOL) == 0);
- assertTrue("Property could not be found", content
- .indexOf("prop = value" + EOL) > 0);
+ assertTrue("Property could not be found", content.indexOf("prop =
value" + EOL) > 0);
}
/**
@@ -619,8 +681,7 @@
conf.setLayout(layout);
conf.propertyLoaded("layoutLoadedProperty", "yes");
assertEquals("Layout's load() was called", 0, layout.loadCalls);
- assertEquals("Property not added", "yes", conf
- .getString("layoutLoadedProperty"));
+ assertEquals("Property not added", "yes",
conf.getString("layoutLoadedProperty"));
}
/**
@@ -630,29 +691,23 @@
{
DummyLayout layout = new DummyLayout(conf);
conf.setLayout(layout);
- conf.propertyLoaded(PropertiesConfiguration.getInclude(),
- "testClasspath.properties,testEqual.properties");
- assertEquals("Layout's load() was not correctly called", 2,
- layout.loadCalls);
- assertFalse("Property was added", conf
- .containsKey(PropertiesConfiguration.getInclude()));
+ conf.propertyLoaded(PropertiesConfiguration.getInclude(),
"testClasspath.properties,testEqual.properties");
+ assertEquals("Layout's load() was not correctly called", 2,
layout.loadCalls);
+ assertFalse("Property was added",
conf.containsKey(PropertiesConfiguration.getInclude()));
}
/**
* Tests propertyLoaded() for an include property, when includes are
* disabled.
*/
- public void testPropertyLoadedIncludeNotAllowed()
- throws ConfigurationException
+ public void testPropertyLoadedIncludeNotAllowed() throws
ConfigurationException
{
DummyLayout layout = new DummyLayout(conf);
conf.setLayout(layout);
conf.setIncludesAllowed(false);
- conf.propertyLoaded(PropertiesConfiguration.getInclude(),
- "testClassPath.properties,testEqual.properties");
+ conf.propertyLoaded(PropertiesConfiguration.getInclude(),
"testClassPath.properties,testEqual.properties");
assertEquals("Layout's load() was called", 0, layout.loadCalls);
- assertFalse("Property was added", conf
- .containsKey(PropertiesConfiguration.getInclude()));
+ assertFalse("Property was added",
conf.containsKey(PropertiesConfiguration.getInclude()));
}
/**
@@ -660,16 +715,11 @@
*/
public void testIsCommentLine()
{
- assertTrue("Comment not detected", PropertiesConfiguration
- .isCommentLine("# a comment"));
- assertTrue("Alternative comment not detected", PropertiesConfiguration
- .isCommentLine("! a comment"));
- assertTrue("Comment with no space not detected",
- PropertiesConfiguration.isCommentLine("#a comment"));
- assertTrue("Comment with leading space not detected",
- PropertiesConfiguration.isCommentLine(" ! a comment"));
- assertFalse("Wrong comment", PropertiesConfiguration
- .isCommentLine(" a#comment"));
+ assertTrue("Comment not detected",
PropertiesConfiguration.isCommentLine("# a comment"));
+ assertTrue("Alternative comment not detected",
PropertiesConfiguration.isCommentLine("! a comment"));
+ assertTrue("Comment with no space not detected",
PropertiesConfiguration.isCommentLine("#a comment"));
+ assertTrue("Comment with leading space not detected",
PropertiesConfiguration.isCommentLine(" ! a comment"));
+ assertFalse("Wrong comment", PropertiesConfiguration.isCommentLine("
a#comment"));
}
/**
@@ -679,22 +729,16 @@
public void testClone() throws ConfigurationException
{
PropertiesConfiguration copy = (PropertiesConfiguration) conf.clone();
- assertNotSame("Copy has same layout object", conf.getLayout(), copy
- .getLayout());
- assertEquals("Wrong number of event listeners for original", 1, conf
- .getConfigurationListeners().size());
- assertEquals("Wrong number of event listeners for clone", 1, copy
- .getConfigurationListeners().size());
- assertSame("Wrong event listener for original", conf.getLayout(), conf
- .getConfigurationListeners().iterator().next());
- assertSame("Wrong event listener for clone", copy.getLayout(), copy
- .getConfigurationListeners().iterator().next());
+ assertNotSame("Copy has same layout object", conf.getLayout(),
copy.getLayout());
+ assertEquals("Wrong number of event listeners for original", 1,
conf.getConfigurationListeners().size());
+ assertEquals("Wrong number of event listeners for clone", 1,
copy.getConfigurationListeners().size());
+ assertSame("Wrong event listener for original", conf.getLayout(),
conf.getConfigurationListeners().iterator().next());
+ assertSame("Wrong event listener for clone", copy.getLayout(),
copy.getConfigurationListeners().iterator().next());
StringWriter outConf = new StringWriter();
conf.save(outConf);
StringWriter outCopy = new StringWriter();
copy.save(outCopy);
- assertEquals("Output from copy is different", outConf.toString(),
- outCopy.toString());
+ assertEquals("Output from copy is different", outConf.toString(),
outCopy.toString());
}
/**
@@ -704,8 +748,7 @@
{
conf = new PropertiesConfiguration();
PropertiesConfiguration copy = (PropertiesConfiguration) conf.clone();
- assertNotSame("Layout objects are the same", conf.getLayout(), copy
- .getLayout());
+ assertNotSame("Layout objects are the same", conf.getLayout(),
copy.getLayout());
}
/**
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]