Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[cross-project-issues-dev] httpclient5/jna5 vs. httpclient45/jna45 in Eclipse and Simrel

Howdy,

Some time ago, ECF was requested to update to use httpclient/httpcomponents 5 rather than 4.5 [1], so that JNA 5 could be used rather than JNA 4.5.

For context, ECF filetransfer depends on 3 apache bundles from Orbit:   org.apache.httpcomponents.httpclient 4.5.10, org.apache.httpcomponents.httpcore 4.4.12 and org.apache.httpcomponents.httpclient.win 4.5.10.  The o.a.httpcomponents.httpclient.win jar is the one that has the dependency on JNA 4.5.  The others do not.   I am not the author of the ECF code that uses httpcomponents4.5.win...rather Carsten Reckord and company contributed this.    It requires a specific proxy environment with win32 just to test.

[1] led to [2].   [2] requests that ECF move to httpclient5, so that the httpcomponents4.5 dependency on JNA 4.5 could be eliminated (as httpclient5.win depends upon JNA 5).   I've done the work to move the bulk of the ECF source code over to httpclient5 as reported on [2].

However, as described in comment [3], there remain two things to be done that I cannot do:

1) Get the httpcomponents5.win jar into Orbit as a properly formed bundle so we can consume it for step 2.   Currently at maven central [4] 5.0.2 version is currently just a jar (no bundle meta-data).

2) Write/contribute a httpclient5.win32 version of ECF provider code that uses this apache client5.win jar.   Since the package naming of httpclient5.win has changed, this can be used with the existing httpclient45.win32 provider.  Although I expect this to be straightforward for Carsten or others given the existing httpclient45.win32 source [5] and his familiarity with that code, it has to actually be tested in the appropriate proxy environment.

I don't have the Orbit rights, or resources to do 1, nor the resources or environment (testing) to do 2.

My question to all:  Is there enough desire and resources for the above two things to happen in time for 2021-06?    If so, how and who?

If these cannot be made to happen then ECF will contribute an updated httpclient45 version, but it will *still* depend upon/require JNA 4.5 be present for the 4.5.10 version of org.apache.httpcomponents.httpclient.win.   I don't know if this is a problem or not (multiple versions of JNA in platform?).

Two additional things:

a) I see that at maven central httpclient 5 is up to 5.1.0.   The only version of httpclient 5 in Orbit currently is 5.0.2 (excepting client5.win...which isn't there at all as described above).

b) Up to now we've had a convention that all simrel projects use the same version of httpclient...as the simrel had some unexplained problems with dependency confusion with multiple versions of httpclient in the simrel repo.   If the we are going to continue to have this restriction, and ECF moves to httpclient5 for 2021-06 (1 and 2 get done, etc), then this would imply that *all* simrel consumers of httpclient would have to move to httpclient5.   This is a much bigger deal since httpclient5 broke backward compatibility by renaming packages so all the sources that use httpclient apis would have to be recompiled (at least).

If the answer to the 2021-06 question is 'yes' then all this has to happen pretty fast...as the platform API freeze is end of May, we should almost certainly do some testing before the freeze, and I'm resource limited.

For specific contributions and discussion please go to [2].

Scott

[1] https://bugs.eclipse.org/bugs/show_bug.cgi?id=565796

[2] https://bugs.eclipse.org/bugs/show_bug.cgi?id=566100

[3] https://bugs.eclipse.org/bugs/show_bug.cgi?id=566100#c22

[4] https://search.maven.org/artifact/org.apache.httpcomponents.client5/httpclient5-win/5.0.2/jar

[5] https://git.eclipse.org/c/ecf/org.eclipse.ecf.git/tree/providers/bundles/org.eclipse.ecf.provider.filetransfer.httpclient45.win32




Back to the top