Skip to content

Commit 9eb0a06

Browse files
authored
Merge pull request #63 from SourceLabOrg/spp/guavaRemove
Remove Guava
2 parents 137bd57 + dcf1d55 commit 9eb0a06

33 files changed

+453
-67
lines changed

CHANGELOG.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,21 @@
22
The format is based on [Keep a Changelog](http://keepachangelog.com/)
33
and this project adheres to [Semantic Versioning](http://semver.org/).
44

5+
## 4.0.0 (12/10/2021)
6+
7+
**Note:** Major release version updated purely out of abundance of caution.
8+
9+
Internal dependency on Google Guava was removed. Functionally nothing about this library's
10+
API has changed as a result of removing this dependency. However, if you were making use of Google Guava via a transitive
11+
dependency previously provided by this library, you will need to update your project to include this dependency directly.
12+
13+
### New Features
14+
- Update [/connector/\<connector name\>/restart](https://docs.confluent.io/platform/current/connect/references/restapi.html#post--connectors-(string-name)-restart) requests to support the `includeTasks` and `onlyFailed` parameters added in Kafka-Connect version 3.0.0.
15+
16+
#### Internal Dependency Updates
17+
- Removed Google Guava as a dependency.
18+
- com.fasterxml.jackson.core from 2.12.2 -> 2.13.0.
19+
520
## 3.1.3 (08/11/2021)
621
- [Issue-55](https://github.com/SourceLabOrg/kafka-connect-client/issues/55) Create new HttpContext for every request.
722
- [PR-59](https://github.com/SourceLabOrg/kafka-connect-client/pull/59) Adds supported method to modify the underlying configuration of HttpClient via HttpClientConfigHooks interface.

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ This client library is released on Maven Central. Add a new dependency to your
1212
<dependency>
1313
<groupId>org.sourcelab</groupId>
1414
<artifactId>kafka-connect-client</artifactId>
15-
<version>3.1.3</version>
15+
<version>4.0.0</version>
1616
</dependency>
1717
```
1818

pom.xml

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>org.sourcelab</groupId>
88
<artifactId>kafka-connect-client</artifactId>
9-
<version>3.1.3</version>
9+
<version>4.0.0</version>
1010
<packaging>jar</packaging>
1111

1212
<!-- Require Maven 3.3.9 -->
@@ -46,14 +46,11 @@
4646
<properties>
4747
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
4848

49-
<!-- guava version -->
50-
<guava.version>30.1.1-jre</guava.version>
51-
5249
<!-- Http Components version -->
5350
<http-components.version>4.5.13</http-components.version>
5451

5552
<!-- Jackson version -->
56-
<jackson.version>2.12.2</jackson.version>
53+
<jackson.version>2.13.0</jackson.version>
5754

5855
<!-- Define which version of junit you'll be running -->
5956
<junit.version>4.13.1</junit.version>
@@ -64,7 +61,7 @@
6461
<checkstyle.version>8.32</checkstyle.version>
6562

6663
<!-- Log4J Version -->
67-
<log4j2.version>2.14.1</log4j2.version>
64+
<log4j2.version>2.15.0</log4j2.version>
6865
<slf4j.version>1.7.32</slf4j.version>
6966

7067
<!-- test toggling -->
@@ -85,13 +82,6 @@
8582
<version>${http-components.version}</version>
8683
</dependency>
8784

88-
<!-- Guava for Preconditions and URI Escaping -->
89-
<dependency>
90-
<groupId>com.google.guava</groupId>
91-
<artifactId>guava</artifactId>
92-
<version>${guava.version}</version>
93-
</dependency>
94-
9585
<!-- For parsing XML responses to POJOs -->
9686
<dependency>
9787
<groupId>com.fasterxml.jackson.core</groupId>

src/main/java/org/sourcelab/kafka/connect/apiclient/request/delete/DeleteConnector.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@
1717

1818
package org.sourcelab.kafka.connect.apiclient.request.delete;
1919

20+
import org.sourcelab.kafka.connect.apiclient.util.UrlEscapingUtil;
21+
2022
import java.io.IOException;
2123
import java.util.Objects;
2224

23-
import static com.google.common.net.UrlEscapers.urlPathSegmentEscaper;
24-
2525
/**
2626
* Defines a request to delete a connector.
2727
*/
@@ -39,7 +39,7 @@ public DeleteConnector(final String connectorName) {
3939

4040
@Override
4141
public String getApiEndpoint() {
42-
return "/connectors/" + urlPathSegmentEscaper().escape(connectorName);
42+
return "/connectors/" + UrlEscapingUtil.escapePath(connectorName);
4343
}
4444

4545
@Override

src/main/java/org/sourcelab/kafka/connect/apiclient/request/get/GetConnector.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,11 @@
1919

2020
import org.sourcelab.kafka.connect.apiclient.request.JacksonFactory;
2121
import org.sourcelab.kafka.connect.apiclient.request.dto.ConnectorDefinition;
22+
import org.sourcelab.kafka.connect.apiclient.util.UrlEscapingUtil;
2223

2324
import java.io.IOException;
2425
import java.util.Objects;
2526

26-
import static com.google.common.net.UrlEscapers.urlPathSegmentEscaper;
27-
2827
/**
2928
* Defines request to get details about a deployed connector.
3029
*/
@@ -43,7 +42,7 @@ public GetConnector(final String connectorName) {
4342

4443
@Override
4544
public String getApiEndpoint() {
46-
return "/connectors/" + urlPathSegmentEscaper().escape(connectorName);
45+
return "/connectors/" + UrlEscapingUtil.escapePath(connectorName);
4746
}
4847

4948
@Override

src/main/java/org/sourcelab/kafka/connect/apiclient/request/get/GetConnectorConfig.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,12 @@
1818
package org.sourcelab.kafka.connect.apiclient.request.get;
1919

2020
import org.sourcelab.kafka.connect.apiclient.request.JacksonFactory;
21+
import org.sourcelab.kafka.connect.apiclient.util.UrlEscapingUtil;
2122

2223
import java.io.IOException;
2324
import java.util.Map;
2425
import java.util.Objects;
2526

26-
import static com.google.common.net.UrlEscapers.urlPathSegmentEscaper;
27-
2827
/**
2928
* Defines a request for getting the configuration for a connector.
3029
*/
@@ -43,7 +42,7 @@ public GetConnectorConfig(final String connectorName) {
4342

4443
@Override
4544
public String getApiEndpoint() {
46-
return "/connectors/" + urlPathSegmentEscaper().escape(connectorName) + "/config";
45+
return "/connectors/" + UrlEscapingUtil.escapePath(connectorName) + "/config";
4746
}
4847

4948
@Override

src/main/java/org/sourcelab/kafka/connect/apiclient/request/get/GetConnectorStatus.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,11 @@
1919

2020
import org.sourcelab.kafka.connect.apiclient.request.JacksonFactory;
2121
import org.sourcelab.kafka.connect.apiclient.request.dto.ConnectorStatus;
22+
import org.sourcelab.kafka.connect.apiclient.util.UrlEscapingUtil;
2223

2324
import java.io.IOException;
2425
import java.util.Objects;
2526

26-
import static com.google.common.net.UrlEscapers.urlPathSegmentEscaper;
27-
2827
/**
2928
* Defines request to get the status of a connector.
3029
*/
@@ -43,7 +42,7 @@ public GetConnectorStatus(final String connectorName) {
4342

4443
@Override
4544
public String getApiEndpoint() {
46-
return "/connectors/" + urlPathSegmentEscaper().escape(connectorName) + "/status";
45+
return "/connectors/" + UrlEscapingUtil.escapePath(connectorName) + "/status";
4746
}
4847

4948
@Override

src/main/java/org/sourcelab/kafka/connect/apiclient/request/get/GetConnectorTaskStatus.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,11 @@
1919

2020
import org.sourcelab.kafka.connect.apiclient.request.JacksonFactory;
2121
import org.sourcelab.kafka.connect.apiclient.request.dto.TaskStatus;
22+
import org.sourcelab.kafka.connect.apiclient.util.UrlEscapingUtil;
2223

2324
import java.io.IOException;
2425
import java.util.Objects;
2526

26-
import static com.google.common.net.UrlEscapers.urlPathSegmentEscaper;
27-
2827
/**
2928
* Defines a request to get the status of a connector's task.
3029
*/
@@ -46,7 +45,7 @@ public GetConnectorTaskStatus(final String connectorName, final int taskId) {
4645

4746
@Override
4847
public String getApiEndpoint() {
49-
return "/connectors/" + urlPathSegmentEscaper().escape(connectorName) + "/tasks/" + taskId + "/status";
48+
return "/connectors/" + UrlEscapingUtil.escapePath(connectorName) + "/tasks/" + taskId + "/status";
5049
}
5150

5251
@Override

src/main/java/org/sourcelab/kafka/connect/apiclient/request/get/GetConnectorTasks.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,13 @@
1919

2020
import org.sourcelab.kafka.connect.apiclient.request.JacksonFactory;
2121
import org.sourcelab.kafka.connect.apiclient.request.dto.Task;
22+
import org.sourcelab.kafka.connect.apiclient.util.UrlEscapingUtil;
2223

2324
import java.io.IOException;
2425
import java.util.Arrays;
2526
import java.util.Collection;
2627
import java.util.Objects;
2728

28-
import static com.google.common.net.UrlEscapers.urlPathSegmentEscaper;
29-
3029
/**
3130
* Defines request to get tasks for a connector.
3231
*/
@@ -45,7 +44,7 @@ public GetConnectorTasks(final String connectorName) {
4544

4645
@Override
4746
public String getApiEndpoint() {
48-
return "/connectors/" + urlPathSegmentEscaper().escape(connectorName) + "/tasks";
47+
return "/connectors/" + UrlEscapingUtil.escapePath(connectorName) + "/tasks";
4948
}
5049

5150
@Override

src/main/java/org/sourcelab/kafka/connect/apiclient/request/get/GetConnectorTopics.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,11 @@
1919

2020
import org.sourcelab.kafka.connect.apiclient.request.JacksonFactory;
2121
import org.sourcelab.kafka.connect.apiclient.request.dto.ConnectorTopics;
22+
import org.sourcelab.kafka.connect.apiclient.util.UrlEscapingUtil;
2223

2324
import java.io.IOException;
2425
import java.util.Objects;
2526

26-
import static com.google.common.net.UrlEscapers.urlPathSegmentEscaper;
27-
2827
/**
2928
* Returns a list of connector topic names.
3029
* There is no defined order in which the topics are returned and consecutive calls may return the same topic names
@@ -47,7 +46,7 @@ public GetConnectorTopics(final String connectorName) {
4746

4847
@Override
4948
public String getApiEndpoint() {
50-
return "/connectors/" + urlPathSegmentEscaper().escape(connectorName) + "/topics";
49+
return "/connectors/" + UrlEscapingUtil.escapePath(connectorName) + "/topics";
5150
}
5251

5352
@Override

src/main/java/org/sourcelab/kafka/connect/apiclient/request/post/PostConnectorRestart.java

Lines changed: 49 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,17 +17,23 @@
1717

1818
package org.sourcelab.kafka.connect.apiclient.request.post;
1919

20+
import org.sourcelab.kafka.connect.apiclient.util.UrlEscapingUtil;
21+
2022
import java.io.IOException;
23+
import java.util.ArrayList;
24+
import java.util.HashMap;
25+
import java.util.List;
26+
import java.util.Map;
2127
import java.util.Objects;
2228

23-
import static com.google.common.net.UrlEscapers.urlPathSegmentEscaper;
24-
2529
/**
2630
* Defines a request to restart a connector.
2731
*/
2832
public final class PostConnectorRestart implements PostRequest<Boolean> {
2933
private final String connectorName;
3034

35+
private Map<String, Boolean> options = new HashMap<>();
36+
3137
/**
3238
* Constructor.
3339
* @param connectorName Name of connector to restart
@@ -37,9 +43,48 @@ public PostConnectorRestart(final String connectorName) {
3743
this.connectorName = connectorName;
3844
}
3945

46+
/**
47+
* Only available from Kafka Connect version 3.0.0 and up.
48+
* @param includeTasks Specifies whether to restart the connector instance and task instances (includeTasks=true`) or
49+
* just the connector instance (includeTasks=false).
50+
* @return self reference for method chaining.
51+
*/
52+
public PostConnectorRestart withIncludeTasks(final boolean includeTasks)
53+
{
54+
options.put("includeTasks", includeTasks);
55+
return this;
56+
}
57+
58+
/**
59+
* Only available from Kafka Connect version 3.0.0 and up.
60+
* @param onlyFailed specifies whether to restart just the instances with a FAILED status (onlyFailed=true)
61+
* or all instances (onlyFailed=false).
62+
* @return self reference for method chaining.
63+
*/
64+
public PostConnectorRestart withOnlyFailed(final boolean onlyFailed)
65+
{
66+
options.put("onlyFailed", onlyFailed);
67+
return this;
68+
}
69+
4070
@Override
4171
public String getApiEndpoint() {
42-
return "/connectors/" + urlPathSegmentEscaper().escape(connectorName) + "/restart";
72+
// Define base URL
73+
String url = "/connectors/" + UrlEscapingUtil.escapePath(connectorName) + "/restart";
74+
75+
// Optionally add additional request parameters if explicitly defined.
76+
final List<String> params = new ArrayList<>();
77+
for (final Map.Entry<String, Boolean> option : options.entrySet()) {
78+
// skip null
79+
if (option.getValue() == null) {
80+
continue;
81+
}
82+
params.add(option.getKey() + "=" + (option.getValue() ? "true" : "false"));
83+
}
84+
if (params.size() > 0) {
85+
url = url + "?" + String.join("&", params);
86+
}
87+
return url;
4388
}
4489

4590
@Override
@@ -49,6 +94,7 @@ public Object getRequestBody() {
4994

5095
@Override
5196
public Boolean parseResponse(final String responseStr) throws IOException {
97+
// Note: this doesn't currently support 202 responses which would normally contain a response body :/
5298
return true;
5399
}
54100
}

src/main/java/org/sourcelab/kafka/connect/apiclient/request/post/PostConnectorTaskRestart.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,11 @@
1818
package org.sourcelab.kafka.connect.apiclient.request.post;
1919

2020

21+
import org.sourcelab.kafka.connect.apiclient.util.UrlEscapingUtil;
22+
2123
import java.io.IOException;
2224
import java.util.Objects;
2325

24-
import static com.google.common.net.UrlEscapers.urlPathSegmentEscaper;
25-
2626
/**
2727
* Defines request to restart a connector's task.
2828
*/
@@ -43,7 +43,7 @@ public PostConnectorTaskRestart(final String connectorName, final int taskId) {
4343

4444
@Override
4545
public String getApiEndpoint() {
46-
return "/connectors/" + urlPathSegmentEscaper().escape(connectorName) + "/tasks/" + taskId + "/restart";
46+
return "/connectors/" + UrlEscapingUtil.escapePath(connectorName) + "/tasks/" + taskId + "/restart";
4747
}
4848

4949
@Override

src/main/java/org/sourcelab/kafka/connect/apiclient/request/put/PutConnectorConfig.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,14 @@
1919

2020
import org.sourcelab.kafka.connect.apiclient.request.JacksonFactory;
2121
import org.sourcelab.kafka.connect.apiclient.request.dto.ConnectorDefinition;
22+
import org.sourcelab.kafka.connect.apiclient.util.UrlEscapingUtil;
2223

2324
import java.io.IOException;
2425
import java.util.Collections;
2526
import java.util.HashMap;
2627
import java.util.Map;
2728
import java.util.Objects;
2829

29-
import static com.google.common.net.UrlEscapers.urlPathSegmentEscaper;
30-
3130
/**
3231
* Defines request to update a connectors configuration.
3332
*/
@@ -49,7 +48,7 @@ public PutConnectorConfig(final String connectorName, final Map<String, String>
4948

5049
@Override
5150
public String getApiEndpoint() {
52-
return "/connectors/" + urlPathSegmentEscaper().escape(connectorName) + "/config";
51+
return "/connectors/" + UrlEscapingUtil.escapePath(connectorName) + "/config";
5352
}
5453

5554
@Override

src/main/java/org/sourcelab/kafka/connect/apiclient/request/put/PutConnectorPause.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@
1717

1818
package org.sourcelab.kafka.connect.apiclient.request.put;
1919

20+
import org.sourcelab.kafka.connect.apiclient.util.UrlEscapingUtil;
21+
2022
import java.io.IOException;
2123
import java.util.Objects;
2224

23-
import static com.google.common.net.UrlEscapers.urlPathSegmentEscaper;
24-
2525
/**
2626
* Defines request to pause a connector.
2727
*/
@@ -39,7 +39,7 @@ public PutConnectorPause(final String connectorName) {
3939

4040
@Override
4141
public String getApiEndpoint() {
42-
return "/connectors/" + urlPathSegmentEscaper().escape(connectorName) + "/pause";
42+
return "/connectors/" + UrlEscapingUtil.escapePath(connectorName) + "/pause";
4343
}
4444

4545
@Override

0 commit comments

Comments
 (0)