getindata / flink-http-connector

Http Connector for Apache Flink. Provides sources and sinks for Datastream , Table and SQL APIs.
Apache License 2.0
150 stars 43 forks source link

Drop Dependency for Apache HttpClient #17

Closed kristoffSC closed 2 years ago

kristoffSC commented 2 years ago

Signed-off-by: Krzysztof Chmielewski krzysztof.chmielewski@getindata.com

Description

This PR removes dependency on org.apache.httpcomponents.httpclient. This dependency was used by HTTP Lookup Source to build HTTP query. In fact we were using only this part from that library even though this library can act as a Http Client.

The dependency in production code has been dropped (moved to test scope because it is expected by Wiremock).

Since there is no lightweight Java library that would provide functionality of httpclient UTIBuilder.class, the code for this class was copied and altered from org.apache.httpcomponents.httpclient GitHub.

The copied classes are marked with original Apache 2.0 licence and additional information about original source and fact that code have been changed by us was added to the licence description.

Classes are in com.getindata.connectors.http.internal.utils.uri package.

The downside of this solution is that we had to include some complex code to our base code and add necessary test coverage for it.

The plus side is that we now dot have unnecessary libraries and classes in target jar that we were not able to exclude even with maven settings.

PR Checklist
github-actions[bot] commented 2 years ago
File Coverage [97.08%] :green_apple:
ConfigException.java 100% :green_apple:
JsonResultTableConverter.java 100% :green_apple:
TokenParser.java 100% :green_apple:
NameValuePair.java 100% :green_apple:
CharArrayBuffer.java 100% :green_apple:
HttpSinkWriter.java 100% :green_apple:
URLEncodedUtils.java 98.51% :green_apple:
URIBuilder.java 93.24% :green_apple:
RestTablePollingClient.java 89% :green_apple:
ParserCursor.java 88.89% :green_apple:
Constants.java 70% :green_apple:
Total Project Coverage 96% :green_apple:
github-actions[bot] commented 2 years ago
File Coverage [97.08%] :green_apple:
ConfigException.java 100% :green_apple:
JsonResultTableConverter.java 100% :green_apple:
TokenParser.java 100% :green_apple:
NameValuePair.java 100% :green_apple:
CharArrayBuffer.java 100% :green_apple:
HttpSinkWriter.java 100% :green_apple:
URLEncodedUtils.java 98.51% :green_apple:
URIBuilder.java 93.24% :green_apple:
RestTablePollingClient.java 89% :green_apple:
ParserCursor.java 88.89% :green_apple:
Constants.java 70% :green_apple:
Total Project Coverage 96% :green_apple:
github-actions[bot] commented 2 years ago
File Coverage [97.08%] :green_apple:
ConfigException.java 100% :green_apple:
JsonResultTableConverter.java 100% :green_apple:
TokenParser.java 100% :green_apple:
NameValuePair.java 100% :green_apple:
CharArrayBuffer.java 100% :green_apple:
HttpSinkWriter.java 100% :green_apple:
URLEncodedUtils.java 98.51% :green_apple:
URIBuilder.java 93.24% :green_apple:
RestTablePollingClient.java 89% :green_apple:
ParserCursor.java 88.89% :green_apple:
Constants.java 70% :green_apple:
Total Project Coverage 96% :green_apple:
kristoffSC commented 2 years ago

In my opinion, it would be great to add information which parts of the original Apache code have been changed, as comments (apart from the obvious formatting/linter changes).

@swtwsk To be honest I've lost track of this. Two examples would be buildString() method and NameValuePair class which originally was an interface.

github-actions[bot] commented 2 years ago
File Coverage [97.25%] :green_apple:
ConfigException.java 100% :green_apple:
JsonResultTableConverter.java 100% :green_apple:
TokenParser.java 100% :green_apple:
NameValuePair.java 100% :green_apple:
CharArrayBuffer.java 100% :green_apple:
HttpSinkWriter.java 100% :green_apple:
URLEncodedUtils.java 98.51% :green_apple:
URIBuilder.java 93.24% :green_apple:
RestTablePollingClient.java 89% :green_apple:
ParserCursor.java 88.89% :green_apple:
Total Project Coverage 96.07% :green_apple: