Lets consider one of the latest (4.2.x) releases of HttpComponents.
Please explain how generally an instance of HttpClient is related to instance of HttpConnection (such as ManagedClientConnectionImpl) and also ClientConnectionManager.
Who knows about who ?
I will refer to them below ommiting [Http] prefix. So, HttpClient -> Client
I understand that Client keeps reference to ClientConnectionManager.
Does that mean that Client also has reference to underlying Connection object ?
Does ConnectionManager knows about all Clients linked to it ?
How HttpGet, which is used by HttpClient to perform execute, knows about stream, exposed thru response's Entity ? (which it does, because we can close the stream by calling .abort() on HttpGet object.) Is HttpGet instance also linked to Connection object ?
I am confused and would appreciate detailed overview answering the questions above. To give examples, you could use any specific implementations, such as DefaultHttpClient, ManagedClientConnectionImpl, BasicClientConnectionManager, if it would make understanding easier.