Author: oheger
Date: Sun May 27 13:17:33 2007
New Revision: 542030
URL: http://svn.apache.org/viewvc?view=rev&rev=542030
Log:
Removed dependency to jetty. Tests for saving to a HTTP URL are now using a
mock URLConnection. Coverage rate is not affected.
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=542030&r1=542029&r2=542030
==============================================================================
--- jakarta/commons/proper/configuration/trunk/project.xml (original)
+++ jakarta/commons/proper/configuration/trunk/project.xml Sun May 27 13:17:33
2007
@@ -417,24 +417,6 @@
</properties>
</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>
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=542030&r1=542029&r2=542030
==============================================================================
---
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
Sun May 27 13:17:33 2007
@@ -457,7 +457,7 @@
}
catch (IOException e)
{
- throw new ConfigurationException("Could not save to URL " +
url + " : " + e.getMessage());
+ throw new ConfigurationException("Could not save to URL " +
url, e);
}
}
}
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=542030&r1=542029&r2=542030
==============================================================================
---
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
Sun May 27 13:17:33 2007
@@ -18,30 +18,25 @@
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.OutputStream;
import java.io.PrintWriter;
import java.io.Reader;
import java.io.StringReader;
import java.io.StringWriter;
+import java.net.HttpURLConnection;
import java.net.URL;
+import java.net.URLConnection;
+import java.net.URLStreamHandler;
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.
@@ -177,66 +172,6 @@
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
@@ -786,6 +721,51 @@
}
/**
+ * Tests saving a file-based configuration to a HTTP server.
+ */
+ public void testSaveToHTTPServerSuccess() throws Exception
+ {
+ if (testSavePropertiesFile.exists())
+ {
+ assertTrue("Could not delete test file", testSavePropertiesFile
+ .delete());
+ }
+
+ MockHttpURLStreamHandler handler = new MockHttpURLStreamHandler(
+ HttpURLConnection.HTTP_OK, testSavePropertiesFile);
+ URL url = new URL(null, "http://jakarta.apache.org", handler);
+ conf.save(url);
+ MockHttpURLConnection con = handler.getMockConnection();
+ assertTrue("Wrong output flag", con.getDoOutput());
+ assertEquals("Wrong method", "PUT", con.getRequestMethod());
+
+ PropertiesConfiguration checkConfig = new PropertiesConfiguration(
+ testSavePropertiesFile);
+ ConfigurationAssert.assertEquals(conf, checkConfig);
+ }
+
+ /**
+ * Tests saving a file-based configuration to a HTTP server when the server
+ * reports a failure. This should cause an exception.
+ */
+ public void testSaveToHTTPServerFail() throws Exception
+ {
+ MockHttpURLStreamHandler handler = new MockHttpURLStreamHandler(
+ HttpURLConnection.HTTP_BAD_REQUEST, testSavePropertiesFile);
+ URL url = new URL(null, "http://jakarta.apache.org", handler);
+ try
+ {
+ conf.save(url);
+ fail("Response code was not checked!");
+ }
+ catch (ConfigurationException cex)
+ {
+ assertTrue("Wrong root cause: " + cex,
+ cex.getCause() instanceof IOException);
+ }
+ }
+
+ /**
* A dummy layout implementation for checking whether certain methods are
* correctly called by the configuration.
*/
@@ -802,6 +782,81 @@
public void load(Reader in) throws ConfigurationException
{
loadCalls++;
+ }
+ }
+
+ /**
+ * A mock implementation of a HttpURLConnection used for testing saving to
+ * a HTTP server.
+ */
+ static class MockHttpURLConnection extends HttpURLConnection
+ {
+ /** The response code to return.*/
+ private int responseCode;
+
+ /** The output file. The output stream will point to this file.*/
+ private File outputFile;
+
+ protected MockHttpURLConnection(URL u, int respCode, File outFile)
+ {
+ super(u);
+ responseCode = respCode;
+ outputFile = outFile;
+ }
+
+ public void disconnect()
+ {
+ }
+
+ public boolean usingProxy()
+ {
+ return false;
+ }
+
+ public void connect() throws IOException
+ {
+ }
+
+ public int getResponseCode() throws IOException
+ {
+ return responseCode;
+ }
+
+ public OutputStream getOutputStream() throws IOException
+ {
+ return new FileOutputStream(outputFile);
+ }
+ }
+
+ /**
+ * A mock stream handler for working with the mock HttpURLConnection.
+ */
+ static class MockHttpURLStreamHandler extends URLStreamHandler
+ {
+ /** Stores the response code.*/
+ private int responseCode;
+
+ /** Stores the output file.*/
+ private File outputFile;
+
+ /** Stores the connection.*/
+ private MockHttpURLConnection connection;
+
+ public MockHttpURLStreamHandler(int respCode, File outFile)
+ {
+ responseCode = respCode;
+ outputFile = outFile;
+ }
+
+ public MockHttpURLConnection getMockConnection()
+ {
+ return connection;
+ }
+
+ protected URLConnection openConnection(URL u) throws IOException
+ {
+ connection = new MockHttpURLConnection(u, responseCode,
outputFile);
+ return connection;
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]