diff --git a/httpclient/src/main/java/org/apache/http/impl/conn/DefaultManagedHttpClientConnection.java b/httpclient/src/main/java/org/apache/http/impl/conn/DefaultManagedHttpClientConnection.java
new file mode 100644
index 000000000..d7315b2b0
--- /dev/null
+++ b/httpclient/src/main/java/org/apache/http/impl/conn/DefaultManagedHttpClientConnection.java
@@ -0,0 +1,132 @@
+/*
+ * ====================================================================
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * .
+ *
+ */
+
+package org.apache.http.impl.conn;
+
+import java.io.IOException;
+import java.io.InterruptedIOException;
+import java.net.Socket;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CharsetEncoder;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import javax.net.ssl.SSLSession;
+import javax.net.ssl.SSLSocket;
+
+import org.apache.http.HttpRequest;
+import org.apache.http.HttpResponse;
+import org.apache.http.config.MessageConstraints;
+import org.apache.http.conn.ManagedHttpClientConnection;
+import org.apache.http.entity.ContentLengthStrategy;
+import org.apache.http.impl.DefaultBHttpClientConnection;
+import org.apache.http.io.HttpMessageParserFactory;
+import org.apache.http.io.HttpMessageWriterFactory;
+import org.apache.http.protocol.HttpContext;
+
+/**
+ * @since 4.3
+ */
+public class DefaultManagedHttpClientConnection extends DefaultBHttpClientConnection
+ implements ManagedHttpClientConnection, HttpContext {
+
+ private final String id;
+ private final Map attributes;
+
+ private volatile boolean shutdown;
+
+ public DefaultManagedHttpClientConnection(
+ final String id,
+ final int buffersize,
+ final int fragmentSizeHint,
+ final CharsetDecoder chardecoder,
+ final CharsetEncoder charencoder,
+ final MessageConstraints constraints,
+ final ContentLengthStrategy incomingContentStrategy,
+ final ContentLengthStrategy outgoingContentStrategy,
+ final HttpMessageWriterFactory requestWriterFactory,
+ final HttpMessageParserFactory responseParserFactory) {
+ super(buffersize, fragmentSizeHint, chardecoder, charencoder,
+ constraints, incomingContentStrategy, outgoingContentStrategy,
+ requestWriterFactory, responseParserFactory);
+ this.id = id;
+ this.attributes = new ConcurrentHashMap();
+ }
+
+ public DefaultManagedHttpClientConnection(
+ final String id,
+ final int buffersize) {
+ this(id, buffersize, buffersize, null, null, null, null, null, null, null);
+ }
+
+ public String getId() {
+ return this.id;
+ }
+
+ @Override
+ public void shutdown() throws IOException {
+ this.shutdown = true;
+ super.shutdown();
+ }
+
+ public Object getAttribute(final String id) {
+ return this.attributes.get(id);
+ }
+
+ public Object removeAttribute(final String id) {
+ return this.attributes.remove(id);
+ }
+
+ public void setAttribute(final String id, final Object obj) {
+ this.attributes.put(id, obj);
+ }
+
+ @Override
+ public void bind(final Socket socket) throws IOException {
+ if (this.shutdown) {
+ socket.close(); // allow this to throw...
+ // ...but if it doesn't, explicitly throw one ourselves.
+ throw new InterruptedIOException("Connection already shutdown");
+ }
+ super.bind(socket);
+ }
+
+ @Override
+ public Socket getSocket() {
+ return super.getSocket();
+ }
+
+ public SSLSession getSSLSession() {
+ final Socket socket = super.getSocket();
+ if (socket instanceof SSLSocket) {
+ return ((SSLSocket) socket).getSession();
+ } else {
+ return null;
+ }
+ }
+
+}
diff --git a/httpclient/src/main/java/org/apache/http/impl/conn/ManagedHttpClientConnectionImpl.java b/httpclient/src/main/java/org/apache/http/impl/conn/LoggingManagedHttpClientConnection.java
similarity index 69%
rename from httpclient/src/main/java/org/apache/http/impl/conn/ManagedHttpClientConnectionImpl.java
rename to httpclient/src/main/java/org/apache/http/impl/conn/LoggingManagedHttpClientConnection.java
index 52ee63a04..50099984d 100644
--- a/httpclient/src/main/java/org/apache/http/impl/conn/ManagedHttpClientConnectionImpl.java
+++ b/httpclient/src/main/java/org/apache/http/impl/conn/LoggingManagedHttpClientConnection.java
@@ -27,19 +27,6 @@
package org.apache.http.impl.conn;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InterruptedIOException;
-import java.io.OutputStream;
-import java.net.Socket;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CharsetEncoder;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
-import javax.net.ssl.SSLSession;
-import javax.net.ssl.SSLSocket;
-
import org.apache.commons.logging.Log;
import org.apache.http.Header;
import org.apache.http.HttpRequest;
@@ -52,18 +39,25 @@ import org.apache.http.io.HttpMessageParserFactory;
import org.apache.http.io.HttpMessageWriterFactory;
import org.apache.http.protocol.HttpContext;
-class ManagedHttpClientConnectionImpl extends DefaultBHttpClientConnection
- implements ManagedHttpClientConnection, HttpContext {
+import javax.net.ssl.SSLSession;
+import javax.net.ssl.SSLSocket;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InterruptedIOException;
+import java.io.OutputStream;
+import java.net.Socket;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CharsetEncoder;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+class LoggingManagedHttpClientConnection extends DefaultManagedHttpClientConnection {
- private final String id;
private final Log log;
private final Log headerlog;
private final Wire wire;
- private final Map attributes;
- private volatile boolean shutdown;
-
- public ManagedHttpClientConnectionImpl(
+ public LoggingManagedHttpClientConnection(
final String id,
final Log log,
final Log headerlog,
@@ -77,24 +71,18 @@ class ManagedHttpClientConnectionImpl extends DefaultBHttpClientConnection
final ContentLengthStrategy outgoingContentStrategy,
final HttpMessageWriterFactory requestWriterFactory,
final HttpMessageParserFactory responseParserFactory) {
- super(buffersize, fragmentSizeHint, chardecoder, charencoder,
+ super(id, buffersize, fragmentSizeHint, chardecoder, charencoder,
constraints, incomingContentStrategy, outgoingContentStrategy,
requestWriterFactory, responseParserFactory);
- this.id = id;
this.log = log;
this.headerlog = headerlog;
- this.wire = new Wire(wirelog, this.id);
- this.attributes = new ConcurrentHashMap();
- }
-
- public String getId() {
- return this.id;
+ this.wire = new Wire(wirelog, id);
}
@Override
public void close() throws IOException {
if (this.log.isDebugEnabled()) {
- this.log.debug(this.id + ": Close connection");
+ this.log.debug(getId() + ": Close connection");
}
super.close();
}
@@ -102,9 +90,8 @@ class ManagedHttpClientConnectionImpl extends DefaultBHttpClientConnection
@Override
public void shutdown() throws IOException {
if (this.log.isDebugEnabled()) {
- this.log.debug(this.id + ": Shutdown connection");
+ this.log.debug(getId() + ": Shutdown connection");
}
- this.shutdown = true;
super.shutdown();
}
@@ -129,10 +116,10 @@ class ManagedHttpClientConnectionImpl extends DefaultBHttpClientConnection
@Override
protected void onResponseReceived(final HttpResponse response) {
if (response != null && this.headerlog.isDebugEnabled()) {
- this.headerlog.debug(this.id + " << " + response.getStatusLine().toString());
+ this.headerlog.debug(getId() + " << " + response.getStatusLine().toString());
final Header[] headers = response.getAllHeaders();
for (final Header header : headers) {
- this.headerlog.debug(this.id + " << " + header.toString());
+ this.headerlog.debug(getId() + " << " + header.toString());
}
}
}
@@ -140,48 +127,12 @@ class ManagedHttpClientConnectionImpl extends DefaultBHttpClientConnection
@Override
protected void onRequestSubmitted(final HttpRequest request) {
if (request != null && this.headerlog.isDebugEnabled()) {
- this.headerlog.debug(id + " >> " + request.getRequestLine().toString());
+ this.headerlog.debug(getId() + " >> " + request.getRequestLine().toString());
final Header[] headers = request.getAllHeaders();
for (final Header header : headers) {
- this.headerlog.debug(this.id + " >> " + header.toString());
+ this.headerlog.debug(getId() + " >> " + header.toString());
}
}
}
- public Object getAttribute(final String id) {
- return this.attributes.get(id);
- }
-
- public Object removeAttribute(final String id) {
- return this.attributes.remove(id);
- }
-
- public void setAttribute(final String id, final Object obj) {
- this.attributes.put(id, obj);
- }
-
- @Override
- public void bind(final Socket socket) throws IOException {
- if (this.shutdown) {
- socket.close(); // allow this to throw...
- // ...but if it doesn't, explicitly throw one ourselves.
- throw new InterruptedIOException("Connection already shutdown");
- }
- super.bind(socket);
- }
-
- @Override
- public Socket getSocket() {
- return super.getSocket();
- }
-
- public SSLSession getSSLSession() {
- final Socket socket = super.getSocket();
- if (socket instanceof SSLSocket) {
- return ((SSLSocket) socket).getSession();
- } else {
- return null;
- }
- }
-
}
diff --git a/httpclient/src/main/java/org/apache/http/impl/conn/ManagedHttpClientConnectionFactory.java b/httpclient/src/main/java/org/apache/http/impl/conn/ManagedHttpClientConnectionFactory.java
index b91a6ddef..ccd6fa887 100644
--- a/httpclient/src/main/java/org/apache/http/impl/conn/ManagedHttpClientConnectionFactory.java
+++ b/httpclient/src/main/java/org/apache/http/impl/conn/ManagedHttpClientConnectionFactory.java
@@ -57,7 +57,7 @@ public class ManagedHttpClientConnectionFactory
public static final ManagedHttpClientConnectionFactory INSTANCE = new ManagedHttpClientConnectionFactory();
- private final Log log = LogFactory.getLog(ManagedHttpClientConnectionImpl.class);
+ private final Log log = LogFactory.getLog(DefaultManagedHttpClientConnection.class);
private final Log headerlog = LogFactory.getLog("org.apache.http.headers");
private final Log wirelog = LogFactory.getLog("org.apache.http.wire");
@@ -101,7 +101,7 @@ public class ManagedHttpClientConnectionFactory
charencoder.onUnmappableCharacter(unmappableInputAction);
}
final String id = "http-outgoing-" + Long.toString(COUNTER.getAndIncrement());
- return new ManagedHttpClientConnectionImpl(
+ return new LoggingManagedHttpClientConnection(
id,
log,
headerlog,