Skip to content

Commit d944e96

Browse files
vinh0604majst01
authored andcommitted
Fix issue of connecting to influxdb without username/password on okhttp 4.x.x (#644)
* Fix issue of connecting InfluxDB without username / password in OkHttp 4+ Add BasicAuthInterceptor to OkHttpClient.Builder only when username and password are not nul * Use InfluxDB instead of InfluxDBImpl * Fix import style and remove redundant casting * Add test case to cover the condition check for adding BasicAuthInterceptor into OkHttp client * Remove the condition check for adding BasicAuthInterceptor in the internal constructor used by test.
1 parent 8090798 commit d944e96

File tree

4 files changed

+24
-13
lines changed

4 files changed

+24
-13
lines changed

pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -280,12 +280,12 @@
280280
<dependency>
281281
<groupId>com.squareup.okhttp3</groupId>
282282
<artifactId>okhttp</artifactId>
283-
<version>3.14.4</version>
283+
<version>4.2.2</version>
284284
</dependency>
285285
<dependency>
286286
<groupId>com.squareup.okhttp3</groupId>
287287
<artifactId>logging-interceptor</artifactId>
288-
<version>3.14.4</version>
288+
<version>4.2.2</version>
289289
</dependency>
290290
</dependencies>
291291
<profiles>

src/main/java/org/influxdb/impl/BatchProcessor.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public final class BatchProcessor {
3535
protected final BlockingQueue<AbstractBatchEntry> queue;
3636
private final ScheduledExecutorService scheduler;
3737
private final BiConsumer<Iterable<Point>, Throwable> exceptionHandler;
38-
final InfluxDBImpl influxDB;
38+
final InfluxDB influxDB;
3939
final int actions;
4040
private final TimeUnit flushIntervalUnit;
4141
private final int flushInterval;
@@ -48,7 +48,7 @@ public final class BatchProcessor {
4848
* The Builder to create a BatchProcessor instance.
4949
*/
5050
public static final class Builder {
51-
private final InfluxDBImpl influxDB;
51+
private final InfluxDB influxDB;
5252
private ThreadFactory threadFactory = Executors.defaultThreadFactory();
5353
private int actions;
5454
private TimeUnit flushIntervalUnit;
@@ -77,7 +77,7 @@ public Builder threadFactory(final ThreadFactory threadFactory) {
7777
* is mandatory.
7878
*/
7979
public Builder(final InfluxDB influxDB) {
80-
this.influxDB = (InfluxDBImpl) influxDB;
80+
this.influxDB = influxDB;
8181
}
8282

8383
/**
@@ -259,7 +259,7 @@ public static Builder builder(final InfluxDB influxDB) {
259259
return new Builder(influxDB);
260260
}
261261

262-
BatchProcessor(final InfluxDBImpl influxDB, final BatchWriter batchWriter, final ThreadFactory threadFactory,
262+
BatchProcessor(final InfluxDB influxDB, final BatchWriter batchWriter, final ThreadFactory threadFactory,
263263
final int actions, final TimeUnit flushIntervalUnit, final int flushInterval, final int jitterInterval,
264264
final BiConsumer<Iterable<Point>, Throwable> exceptionHandler,
265265
final ConsistencyLevel consistencyLevel, final TimeUnit precision) {

src/main/java/org/influxdb/impl/InfluxDBImpl.java

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -147,9 +147,12 @@ public InfluxDBImpl(final String url, final String username, final String passwo
147147
setLogLevel(LOG_LEVEL);
148148

149149
this.gzipRequestInterceptor = new GzipRequestInterceptor();
150-
OkHttpClient.Builder clonedOkHttpBuilder = okHttpBuilder.build().newBuilder();
151-
clonedOkHttpBuilder.addInterceptor(loggingInterceptor).addInterceptor(gzipRequestInterceptor).
152-
addInterceptor(new BasicAuthInterceptor(username, password));
150+
OkHttpClient.Builder clonedOkHttpBuilder = okHttpBuilder.build().newBuilder()
151+
.addInterceptor(loggingInterceptor)
152+
.addInterceptor(gzipRequestInterceptor);
153+
if (username != null && password != null) {
154+
clonedOkHttpBuilder.addInterceptor(new BasicAuthInterceptor(username, password));
155+
}
153156
Factory converterFactory = null;
154157
switch (responseFormat) {
155158
case MSGPACK:
@@ -195,9 +198,11 @@ public InfluxDBImpl(final String url, final String username, final String passwo
195198
setLogLevel(LOG_LEVEL);
196199

197200
this.gzipRequestInterceptor = new GzipRequestInterceptor();
198-
OkHttpClient.Builder clonedBuilder = client.build().newBuilder();
199-
this.client = clonedBuilder.addInterceptor(loggingInterceptor).addInterceptor(gzipRequestInterceptor).
200-
addInterceptor(new BasicAuthInterceptor(username, password)).build();
201+
OkHttpClient.Builder clonedBuilder = client.build().newBuilder()
202+
.addInterceptor(loggingInterceptor)
203+
.addInterceptor(gzipRequestInterceptor)
204+
.addInterceptor(new BasicAuthInterceptor(username, password));
205+
this.client = clonedBuilder.build();
201206
this.retrofit = new Retrofit.Builder().baseUrl(url)
202207
.client(this.client)
203208
.addConverterFactory(MoshiConverterFactory.create()).build();

src/test/java/org/influxdb/InfluxDBFactoryTest.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,17 @@ public class InfluxDBFactoryTest {
2121
* Test for a {@link InfluxDBFactory #connect(String)}.
2222
*/
2323
@Test
24-
public void testCreateInfluxDBInstanceWithoutUserNameAndPassword() {
24+
public void testShouldNotUseBasicAuthWhenCreateInfluxDBInstanceWithoutUserNameAndPassword() {
2525
InfluxDB influxDB = InfluxDBFactory.connect("http://" + TestUtils.getInfluxIP() + ":" + TestUtils.getInfluxPORT(true));
2626
verifyInfluxDBInstance(influxDB);
2727
}
2828

29+
@Test
30+
public void testShouldNotUseBasicAuthWhenCreateInfluxDBInstanceWithUserNameAndWithoutPassword() {
31+
InfluxDB influxDB = InfluxDBFactory.connect("http://" + TestUtils.getInfluxIP() + ":" + TestUtils.getInfluxPORT(true), "admin", null);
32+
verifyInfluxDBInstance(influxDB);
33+
}
34+
2935
private void verifyInfluxDBInstance(InfluxDB influxDB) {
3036
Assertions.assertNotNull(influxDB);
3137
Pong pong = influxDB.ping();

0 commit comments

Comments
 (0)