Author: mbecke Date: Sun Jul 31 11:10:38 2005 New Revision: 226671 URL: http://svn.apache.org/viewcvs?rev=226671&view=rev Log: SimpleHttpConnectionManager now logs warnings when it detects it is being used incorrectly.
PR: 35815 Contributed by Michael Becke Reviewed by Ortwin Glueck and Oleg Kalnichevski Modified: jakarta/commons/proper/httpclient/trunk/release_notes.txt jakarta/commons/proper/httpclient/trunk/src/java/org/apache/commons/httpclient/SimpleHttpConnectionManager.java jakarta/commons/proper/httpclient/trunk/src/test/org/apache/commons/httpclient/auth/TestBasicAuth.java Modified: jakarta/commons/proper/httpclient/trunk/release_notes.txt URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/httpclient/trunk/release_notes.txt?rev=226671&r1=226670&r2=226671&view=diff ============================================================================== --- jakarta/commons/proper/httpclient/trunk/release_notes.txt (original) +++ jakarta/commons/proper/httpclient/trunk/release_notes.txt Sun Jul 31 11:10:38 2005 @@ -2,8 +2,11 @@ Changes since Release Candidate 3: * 35642 - Do not retry if host is unreachable. This ensures a connection timeout - will be obeied. + will be obeyed. Contributed by Ortwin Glück <oglueck at apache.org> + + * 35815 - SimpleHttpConnectionManager now logs warnings when it detects it is + being used incorrectly. Release 3.0 Release Candidate 3 ------------------- Modified: jakarta/commons/proper/httpclient/trunk/src/java/org/apache/commons/httpclient/SimpleHttpConnectionManager.java URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/httpclient/trunk/src/java/org/apache/commons/httpclient/SimpleHttpConnectionManager.java?rev=226671&r1=226670&r2=226671&view=diff ============================================================================== --- jakarta/commons/proper/httpclient/trunk/src/java/org/apache/commons/httpclient/SimpleHttpConnectionManager.java (original) +++ jakarta/commons/proper/httpclient/trunk/src/java/org/apache/commons/httpclient/SimpleHttpConnectionManager.java Sun Jul 31 11:10:38 2005 @@ -33,6 +33,8 @@ import java.io.InputStream; import org.apache.commons.httpclient.params.HttpConnectionManagerParams; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; /** * A connection manager that provides access to a single HttpConnection. This @@ -49,6 +51,13 @@ */ public class SimpleHttpConnectionManager implements HttpConnectionManager { + private static final Log LOG = LogFactory.getLog(SimpleHttpConnectionManager.class); + + private static final String MISUSE_MESSAGE = + "SimpleHttpConnectionManager being used incorrectly. Be sure that" + + " HttpMethod.releaseConnection() is always called and that only one thread" + + " and/or method is using this connection manager at a time."; + /** * Since the same connection is about to be reused, make sure the * previous request was completely processed, and if not @@ -81,6 +90,14 @@ */ private long idleStartTime = Long.MAX_VALUE; + /** + * Used to test if [EMAIL PROTECTED] #httpConnection} is currently in use + * (i.e. checked out). This is only used as a sanity check to help + * debug cases where this connection manager is being used incorrectly. + * It will not be used to enforce thread safety. + */ + private volatile boolean inUse = false; + public SimpleHttpConnectionManager() { } @@ -157,6 +174,9 @@ // remove the connection from the timeout handler idleStartTime = Long.MAX_VALUE; + + if (inUse) LOG.warn(MISUSE_MESSAGE); + inUse = true; return httpConnection; } @@ -181,6 +201,9 @@ finishLastResponse(httpConnection); + if (!inUse) LOG.warn(MISUSE_MESSAGE); + inUse = false; + // track the time the connection was made idle idleStartTime = System.currentTimeMillis(); } Modified: jakarta/commons/proper/httpclient/trunk/src/test/org/apache/commons/httpclient/auth/TestBasicAuth.java URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/httpclient/trunk/src/test/org/apache/commons/httpclient/auth/TestBasicAuth.java?rev=226671&r1=226670&r2=226671&view=diff ============================================================================== --- jakarta/commons/proper/httpclient/trunk/src/test/org/apache/commons/httpclient/auth/TestBasicAuth.java (original) +++ jakarta/commons/proper/httpclient/trunk/src/test/org/apache/commons/httpclient/auth/TestBasicAuth.java Sun Jul 31 11:10:38 2005 @@ -61,6 +61,14 @@ */ public class TestBasicAuth extends HttpClientTestBase { + static { + System.setProperty("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.SimpleLog"); + System.setProperty("org.apache.commons.logging.simplelog.showdatetime", "true"); + System.setProperty("org.apache.commons.logging.simplelog.log.httpclient.wire", "debug"); + System.setProperty("org.apache.commons.logging.simplelog.log.org.apache.commons.httpclient", "debug"); + + } + // ------------------------------------------------------------ Constructor public TestBasicAuth(final String testName) throws IOException { super(testName); @@ -75,8 +83,10 @@ // ------------------------------------------------------- TestCase Methods public static Test suite() { + + TestSuite suite = new TestSuite(TestBasicAuth.class); - ProxyTestDecorator.addTests(suite); +// ProxyTestDecorator.addTests(suite); return suite; } @@ -306,6 +316,7 @@ } public void testBasicAuthenticationWithMutlipleRealms2() throws Exception { + System.out.println("NOW"); UsernamePasswordCredentials creds = new UsernamePasswordCredentials("testuser2", "testpass2"); --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]