diff --git a/pom.xml b/pom.xml
index 8895ba8f6..ea8f32230 100644
--- a/pom.xml
+++ b/pom.xml
@@ -254,6 +254,7 @@
com.google.guava
guava
21.0
+ test
com.squareup.retrofit2
diff --git a/src/main/java/org/influxdb/InfluxDBFactory.java b/src/main/java/org/influxdb/InfluxDBFactory.java
index 01c3281fa..309e2e7b7 100644
--- a/src/main/java/org/influxdb/InfluxDBFactory.java
+++ b/src/main/java/org/influxdb/InfluxDBFactory.java
@@ -2,10 +2,10 @@
import org.influxdb.impl.InfluxDBImpl;
-import com.google.common.base.Preconditions;
-import com.google.common.base.Strings;
-
import okhttp3.OkHttpClient;
+import org.influxdb.impl.Preconditions;
+
+import java.util.Objects;
/**
@@ -25,7 +25,7 @@ public enum InfluxDBFactory {
* @return a InfluxDB adapter suitable to access a InfluxDB.
*/
public static InfluxDB connect(final String url) {
- Preconditions.checkArgument(!Strings.isNullOrEmpty(url), "The URL may not be null or empty.");
+ Preconditions.checkNonEmptyString(url, "url");
return new InfluxDBImpl(url, null, null, new OkHttpClient.Builder());
}
@@ -42,8 +42,8 @@ public static InfluxDB connect(final String url) {
* @return a InfluxDB adapter suitable to access a InfluxDB.
*/
public static InfluxDB connect(final String url, final String username, final String password) {
- Preconditions.checkArgument(!Strings.isNullOrEmpty(url), "The URL may not be null or empty.");
- Preconditions.checkArgument(!Strings.isNullOrEmpty(username), "The username may not be null or empty.");
+ Preconditions.checkNonEmptyString(url, "url");
+ Preconditions.checkNonEmptyString(username, "username");
return new InfluxDBImpl(url, username, password, new OkHttpClient.Builder());
}
@@ -57,8 +57,8 @@ public static InfluxDB connect(final String url, final String username, final St
* @return a InfluxDB adapter suitable to access a InfluxDB.
*/
public static InfluxDB connect(final String url, final OkHttpClient.Builder client) {
- Preconditions.checkArgument(!Strings.isNullOrEmpty(url), "The URL may not be null or empty.");
- Preconditions.checkNotNull(client, "The client may not be null.");
+ Preconditions.checkNonEmptyString(url, "url");
+ Objects.requireNonNull(client, "client");
return new InfluxDBImpl(url, null, null, client);
}
@@ -78,9 +78,9 @@ public static InfluxDB connect(final String url, final OkHttpClient.Builder clie
*/
public static InfluxDB connect(final String url, final String username, final String password,
final OkHttpClient.Builder client) {
- Preconditions.checkArgument(!Strings.isNullOrEmpty(url), "The URL may not be null or empty.");
- Preconditions.checkArgument(!Strings.isNullOrEmpty(username), "The username may not be null or empty.");
- Preconditions.checkNotNull(client, "The client may not be null.");
+ Preconditions.checkNonEmptyString(url, "url");
+ Preconditions.checkNonEmptyString(username, "username");
+ Objects.requireNonNull(client, "client");
return new InfluxDBImpl(url, username, password, client);
}
}
diff --git a/src/main/java/org/influxdb/dto/BatchPoints.java b/src/main/java/org/influxdb/dto/BatchPoints.java
index 0f39540d7..e56ced195 100644
--- a/src/main/java/org/influxdb/dto/BatchPoints.java
+++ b/src/main/java/org/influxdb/dto/BatchPoints.java
@@ -1,17 +1,15 @@
package org.influxdb.dto;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Objects;
+import java.util.TreeMap;
import org.influxdb.InfluxDB.ConsistencyLevel;
-import com.google.common.base.Preconditions;
-import com.google.common.base.Strings;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-import com.google.common.collect.Ordering;
+import org.influxdb.impl.Preconditions;
/**
* {Purpose of This Type}.
@@ -49,8 +47,8 @@ public static Builder database(final String database) {
public static final class Builder {
private final String database;
private String retentionPolicy;
- private final Map tags = Maps.newTreeMap(Ordering.natural());
- private final List points = Lists.newArrayList();
+ private final Map tags = new TreeMap<>();
+ private final List points = new ArrayList<>();
private ConsistencyLevel consistency;
/**
@@ -124,8 +122,7 @@ public Builder consistency(final ConsistencyLevel consistencyLevel) {
* @return the created BatchPoints.
*/
public BatchPoints build() {
- Preconditions.checkArgument(!Strings.isNullOrEmpty(this.database),
- "Database must not be null or empty.");
+ Preconditions.checkNonEmptyString(this.database, "database");
BatchPoints batchPoints = new BatchPoints();
batchPoints.setDatabase(this.database);
for (Point point : this.points) {
diff --git a/src/main/java/org/influxdb/dto/Point.java b/src/main/java/org/influxdb/dto/Point.java
index 2a6251037..6156b21fc 100644
--- a/src/main/java/org/influxdb/dto/Point.java
+++ b/src/main/java/org/influxdb/dto/Point.java
@@ -10,11 +10,9 @@
import java.util.Objects;
import java.util.TreeMap;
import java.util.concurrent.TimeUnit;
+import java.util.function.Function;
-import com.google.common.base.Preconditions;
-import com.google.common.base.Strings;
-import com.google.common.escape.Escaper;
-import com.google.common.escape.Escapers;
+import org.influxdb.impl.Preconditions;
/**
* Representation of a InfluxDB database Point.
@@ -29,16 +27,10 @@ public class Point {
private TimeUnit precision = TimeUnit.NANOSECONDS;
private Map fields;
- private static final Escaper FIELD_ESCAPER = Escapers.builder()
- .addEscape('\\', "\\\\")
- .addEscape('"', "\\\"")
- .build();
- private static final Escaper KEY_ESCAPER = Escapers.builder()
- .addEscape(' ', "\\ ")
- .addEscape(',', "\\,")
- .addEscape('=', "\\=")
- .build();
-
+ private static final Function FIELD_ESCAPER = s ->
+ s.replace("\\", "\\\\").replace("\"", "\\\"");
+ private static final Function KEY_ESCAPER = s ->
+ s.replace(" ", "\\ ").replace(",", "\\,").replace("=", "\\=");
private static final int MAX_FRACTION_DIGITS = 340;
private static final ThreadLocal NUMBER_FORMATTER =
ThreadLocal.withInitial(() -> {
@@ -97,8 +89,8 @@ public static final class Builder {
* @return the Builder instance.
*/
public Builder tag(final String tagName, final String value) {
- Preconditions.checkArgument(tagName != null);
- Preconditions.checkArgument(value != null);
+ Objects.requireNonNull(tagName, "tagName");
+ Objects.requireNonNull(value, "value");
if (!tagName.isEmpty() && !value.isEmpty()) {
tags.put(tagName, value);
}
@@ -169,9 +161,7 @@ public Builder addField(final String field, final Number value) {
}
public Builder addField(final String field, final String value) {
- if (value == null) {
- throw new IllegalArgumentException("Field value cannot be null");
- }
+ Objects.requireNonNull(value, "value");
fields.put(field, value);
return this;
@@ -197,7 +187,7 @@ public Builder fields(final Map fieldsToAdd) {
* @return the Builder instance.
*/
public Builder time(final long timeToSet, final TimeUnit precisionToSet) {
- Preconditions.checkNotNull(precisionToSet, "Precision must be not null!");
+ Objects.requireNonNull(precisionToSet, "precisionToSet");
this.time = timeToSet;
this.precision = precisionToSet;
return this;
@@ -209,12 +199,8 @@ public Builder time(final long timeToSet, final TimeUnit precisionToSet) {
* @return the newly created Point.
*/
public Point build() {
- Preconditions
- .checkArgument(!Strings.isNullOrEmpty(this.measurement),
- "Point name must not be null or empty.");
- Preconditions
- .checkArgument(this.fields.size() > 0,
- "Point must have at least one field specified.");
+ Preconditions.checkNonEmptyString(this.measurement, "measurement");
+ Preconditions.checkPositiveNumber(this.fields.size(), "fields size");
Point point = new Point();
point.setFields(this.fields);
point.setMeasurement(this.measurement);
@@ -343,9 +329,9 @@ public String lineProtocol() {
private void concatenatedTags(final StringBuilder sb) {
for (Entry tag : this.tags.entrySet()) {
sb.append(',')
- .append(KEY_ESCAPER.escape(tag.getKey()))
+ .append(KEY_ESCAPER.apply(tag.getKey()))
.append('=')
- .append(KEY_ESCAPER.escape(tag.getValue()));
+ .append(KEY_ESCAPER.apply(tag.getValue()));
}
sb.append(' ');
}
@@ -357,7 +343,7 @@ private void concatenatedFields(final StringBuilder sb) {
continue;
}
- sb.append(KEY_ESCAPER.escape(field.getKey())).append('=');
+ sb.append(KEY_ESCAPER.apply(field.getKey())).append('=');
if (value instanceof Number) {
if (value instanceof Double || value instanceof Float || value instanceof BigDecimal) {
sb.append(NUMBER_FORMATTER.get().format(value));
@@ -366,7 +352,7 @@ private void concatenatedFields(final StringBuilder sb) {
}
} else if (value instanceof String) {
String stringValue = (String) value;
- sb.append('"').append(FIELD_ESCAPER.escape(stringValue)).append('"');
+ sb.append('"').append(FIELD_ESCAPER.apply(stringValue)).append('"');
} else {
sb.append(value);
}
@@ -390,7 +376,7 @@ private static class MeasurementStringBuilder {
private final int length;
MeasurementStringBuilder(final String measurement) {
- this.sb.append(KEY_ESCAPER.escape(measurement));
+ this.sb.append(KEY_ESCAPER.apply(measurement));
this.length = sb.length();
}
diff --git a/src/main/java/org/influxdb/dto/Pong.java b/src/main/java/org/influxdb/dto/Pong.java
index 22ab79e33..0245a1fde 100644
--- a/src/main/java/org/influxdb/dto/Pong.java
+++ b/src/main/java/org/influxdb/dto/Pong.java
@@ -1,7 +1,5 @@
package org.influxdb.dto;
-import com.google.common.base.MoreObjects;
-
/**
* Representation of the response for a influxdb ping.
*
@@ -47,11 +45,7 @@ public void setResponseTime(final long responseTime) {
*/
@Override
public String toString() {
- return MoreObjects
- .toStringHelper(this.getClass())
- .add("version", this.version)
- .add("responseTime", this.responseTime)
- .toString();
+ return "Pong{version=" + version + ", responseTime=" + responseTime + "}";
}
}
diff --git a/src/main/java/org/influxdb/impl/BatchProcessor.java b/src/main/java/org/influxdb/impl/BatchProcessor.java
index cea38f0b4..c637282c2 100644
--- a/src/main/java/org/influxdb/impl/BatchProcessor.java
+++ b/src/main/java/org/influxdb/impl/BatchProcessor.java
@@ -1,9 +1,11 @@
package org.influxdb.impl;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
+import java.util.Objects;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.Executors;
import java.util.concurrent.LinkedBlockingQueue;
@@ -18,9 +20,6 @@
import org.influxdb.dto.BatchPoints;
import org.influxdb.dto.Point;
-import com.google.common.base.Preconditions;
-import com.google.common.collect.Maps;
-
/**
* A BatchProcessor can be attached to a InfluxDB Instance to collect single point writes and
* aggregates them to BatchPoints to get a better write performance.
@@ -114,12 +113,12 @@ public Builder exceptionHandler(final BiConsumer, Throwable> han
* @return the BatchProcessor instance.
*/
public BatchProcessor build() {
- Preconditions.checkNotNull(this.influxDB, "influxDB may not be null");
- Preconditions.checkArgument(this.actions > 0, "actions should > 0");
- Preconditions.checkArgument(this.flushInterval > 0, "flushInterval should > 0");
- Preconditions.checkNotNull(this.flushIntervalUnit, "flushIntervalUnit may not be null");
- Preconditions.checkNotNull(this.threadFactory, "threadFactory may not be null");
- Preconditions.checkNotNull(this.exceptionHandler, "exceptionHandler may not be null");
+ Objects.requireNonNull(this.influxDB, "influxDB");
+ Preconditions.checkPositiveNumber(this.actions, "actions");
+ Preconditions.checkPositiveNumber(this.flushInterval, "flushInterval");
+ Objects.requireNonNull(this.flushIntervalUnit, "flushIntervalUnit");
+ Objects.requireNonNull(this.threadFactory, "threadFactory");
+ Objects.requireNonNull(this.exceptionHandler, "exceptionHandler");
return new BatchProcessor(this.influxDB, this.threadFactory, this.actions, this.flushIntervalUnit,
this.flushInterval, exceptionHandler);
}
@@ -212,9 +211,9 @@ void write() {
return;
}
//for batch on HTTP.
- Map batchKeyToBatchPoints = Maps.newHashMap();
+ Map batchKeyToBatchPoints = new HashMap<>();
//for batch on UDP.
- Map> udpPortToBatchPoints = Maps.newHashMap();
+ Map> udpPortToBatchPoints = new HashMap<>();
List batchEntries = new ArrayList<>(this.queue.size());
this.queue.drainTo(batchEntries);
currentBatch = new ArrayList<>(batchEntries.size());
diff --git a/src/main/java/org/influxdb/impl/InfluxDBImpl.java b/src/main/java/org/influxdb/impl/InfluxDBImpl.java
index 3c191d8a7..ca71f451b 100644
--- a/src/main/java/org/influxdb/impl/InfluxDBImpl.java
+++ b/src/main/java/org/influxdb/impl/InfluxDBImpl.java
@@ -1,11 +1,6 @@
package org.influxdb.impl;
-import com.google.common.base.Joiner;
-import com.google.common.base.Preconditions;
-import com.google.common.base.Stopwatch;
-import com.google.common.base.Strings;
-import com.google.common.collect.Lists;
import com.squareup.moshi.JsonAdapter;
import com.squareup.moshi.Moshi;
@@ -43,6 +38,7 @@
import java.net.SocketException;
import java.net.UnknownHostException;
import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadFactory;
@@ -212,7 +208,7 @@ public boolean isBatchEnabled() {
@Override
public Pong ping() {
- Stopwatch watch = Stopwatch.createStarted();
+ final long started = System.currentTimeMillis();
Call call = this.influxDBService.ping();
try {
Response response = call.execute();
@@ -226,7 +222,7 @@ public Pong ping() {
}
Pong pong = new Pong();
pong.setVersion(version);
- pong.setResponseTime(watch.elapsed(TimeUnit.MILLISECONDS));
+ pong.setResponseTime(System.currentTimeMillis() - started);
return pong;
} catch (IOException e) {
throw new InfluxDBIOException(e);
@@ -298,8 +294,7 @@ public void write(final String database, final String retentionPolicy, final Con
@Override
public void write(final String database, final String retentionPolicy, final ConsistencyLevel consistency,
final List records) {
- final String joinedRecords = Joiner.on("\n").join(records);
- write(database, retentionPolicy, consistency, joinedRecords);
+ write(database, retentionPolicy, consistency, String.join("\n", records));
}
/**
@@ -335,8 +330,7 @@ private void initialDatagramSocket() {
*/
@Override
public void write(final int udpPort, final List records) {
- final String joinedRecords = Joiner.on("\n").join(records);
- write(udpPort, joinedRecords);
+ write(udpPort, String.join("\n", records));
}
/**
@@ -414,7 +408,7 @@ public QueryResult query(final Query query, final TimeUnit timeUnit) {
*/
@Override
public void createDatabase(final String name) {
- Preconditions.checkArgument(!Strings.isNullOrEmpty(name), "Database name may not be null or empty");
+ Preconditions.checkNonEmptyString(name, "name");
String createDatabaseQueryString = String.format("CREATE DATABASE \"%s\"", name);
if (this.version().startsWith("0.")) {
createDatabaseQueryString = String.format("CREATE DATABASE IF NOT EXISTS \"%s\"", name);
@@ -441,7 +435,7 @@ public List describeDatabases() {
// {"results":[{"series":[{"name":"databases","columns":["name"],"values":[["mydb"]]}]}]}
// Series [name=databases, columns=[name], values=[[mydb], [unittest_1433605300968]]]
List> databaseNames = result.getResults().get(0).getSeries().get(0).getValues();
- List databases = Lists.newArrayList();
+ List databases = new ArrayList<>();
if (databaseNames != null) {
for (List