You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2009/02/26 17:07:05 UTC
svn commit: r748192 - in /cxf/trunk/rt/transports/http/src:
main/java/org/apache/cxf/transport/http/HTTPConduit.java
test/java/org/apache/cxf/transport/http/HTTPConduitURLEasyMockTest.java
Author: dkulp
Date: Thu Feb 26 16:07:04 2009
New Revision: 748192
URL: http://svn.apache.org/viewvc?rev=748192&view=rev
Log:
Another thread safety fix to try and get the JAXWS test that randomly fails on Hudson to pass. (couldn't get it to fail on either of my boxes)
Modified:
cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java
cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/http/HTTPConduitURLEasyMockTest.java
Modified: cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java?rev=748192&r1=748191&r2=748192&view=diff
==============================================================================
--- cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java (original)
+++ cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java Thu Feb 26 16:07:04 2009
@@ -442,13 +442,22 @@
* UnitTest that will of course break, should the calls to the URL Connection
* Factory get altered.
*/
- protected void retrieveConnectionFactory() {
+ protected synchronized void retrieveConnectionFactory() {
connectionFactory = AbstractHTTPTransportFactory.getConnectionFactory(this);
}
- protected void retrieveConnectionFactory(String url) {
+ protected synchronized void retrieveConnectionFactory(String url) {
connectionFactory = AbstractHTTPTransportFactory.getConnectionFactory(this, url);
}
+
+ protected synchronized HttpURLConnectionFactory getConnectionFactory(URL url) {
+ if (connectionFactory == null
+ || !url.getProtocol().equals(connectionFactory.getProtocol())) {
+ retrieveConnectionFactory(url.toString());
+ }
+
+ return connectionFactory;
+ }
/**
* Prepare to send an outbound HTTP message over this http conduit to a
* particular endpoint.
@@ -481,9 +490,8 @@
// The need to cache the request is off by default
boolean needToCacheRequest = false;
- HttpURLConnection connection =
- connectionFactory.createConnection(
- getProxy(clientSidePolicy), currentURL);
+ HttpURLConnection connection = getConnectionFactory(currentURL)
+ .createConnection(getProxy(clientSidePolicy), currentURL);
connection.setDoOutput(true);
//TODO using Message context to decided HTTP send properties
@@ -632,7 +640,7 @@
connection.connect();
trustDecider.establishTrust(
getConduitName(),
- connectionFactory.getConnectionInfo(connection),
+ getConnectionFactory(connection.getURL()).getConnectionInfo(connection),
message);
if (LOG.isLoggable(Level.FINE)) {
LOG.log(Level.FINE, "Trust Decider "
@@ -692,13 +700,6 @@
}
result = getURL().toString();
message.put(Message.ENDPOINT_ADDRESS, result);
- } else {
- if (connectionFactory == null
- || !result.startsWith(connectionFactory.getProtocol() + ":/")) {
-
- connectionFactory = null;
- retrieveConnectionFactory(result);
- }
}
// REVISIT: is this really correct?
@@ -1612,15 +1613,7 @@
// Disconnect the old, and in with the new.
connection.disconnect();
- if (connectionFactory.getProtocol().equals(newURL.getProtocol())) {
- connection =
- connectionFactory.createConnection(
- getProxy(clientSidePolicy), newURL);
- } else {
- connection = AbstractHTTPTransportFactory.getConnectionFactory(this, newURL.toString())
- .createConnection(getProxy(clientSidePolicy), newURL);
- }
-
+ connection = getConnectionFactory(newURL).createConnection(getProxy(clientSidePolicy), newURL);
connection.setDoOutput(true);
// TODO: using Message context to deceided HTTP send properties
connection.setConnectTimeout((int)getClient().getConnectionTimeout());
Modified: cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/http/HTTPConduitURLEasyMockTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/http/HTTPConduitURLEasyMockTest.java?rev=748192&r1=748191&r2=748192&view=diff
==============================================================================
--- cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/http/HTTPConduitURLEasyMockTest.java (original)
+++ cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/http/HTTPConduitURLEasyMockTest.java Thu Feb 26 16:07:04 2009
@@ -93,6 +93,10 @@
protected void retrieveConnectionFactory() {
// do nothing. i.e do not change the connectionFactory field.
}
+ protected void retrieveConnectionFactory(String s) {
+ // do nothing. i.e do not change the connectionFactory field.
+ }
+
}
/**
* @throws java.lang.Exception