diff --git a/pom.xml b/pom.xml
index 9d4d936..69cb561 100644
--- a/pom.xml
+++ b/pom.xml
@@ -148,15 +148,6 @@
deploy
-
- org.apache.maven.plugins
- maven-compiler-plugin
- 3.6.1
-
- 1.7
- 1.7
-
-
org.apache.maven.plugins
maven-surefire-plugin
@@ -169,7 +160,10 @@
jar
- 2.9.8
+ 2.15.2
+ 2.0.7
+ 11
+ 11
@@ -190,35 +184,32 @@
org.slf4j
slf4j-api
- 1.7.25
+ ${slf4j.version}
- com.squareup.okhttp3
- okhttp
- 3.11.0
+ org.projectlombok
+ lombok
+ 1.18.28
+ provided
+
+
org.slf4j
slf4j-simple
- 1.7.25
+ ${slf4j.version}
test
- junit
- junit
- 4.12
+ org.junit.jupiter
+ junit-jupiter-api
+ 5.10.0
test
org.mockito
mockito-core
- 1.10.19
- test
-
-
- org.assertj
- assertj-core
- 2.7.0
+ 5.4.0
test
diff --git a/src/main/java/com/appoptics/metrics/client/AbstractMeasure.java b/src/main/java/com/appoptics/metrics/client/AbstractMeasure.java
deleted file mode 100644
index 8bc164f..0000000
--- a/src/main/java/com/appoptics/metrics/client/AbstractMeasure.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package com.appoptics.metrics.client;
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Objects;
-
-abstract class AbstractMeasure implements IMeasure {
- final String name;
- Map metricAttributes = Collections.emptyMap();
- Integer period;
- Long epoch;
-
- public AbstractMeasure(AbstractMeasure measure) {
- this.name = measure.name;
- this.metricAttributes = measure.metricAttributes;
- this.period = measure.period;
- this.epoch = measure.epoch;
- }
-
- public AbstractMeasure(String name) {
- this.name = name;
- }
-
- @Override
- public Map toMap() {
- Map map = new HashMap();
- map.put("name", Sanitizer.METRIC_NAME_SANITIZER.apply(name));
- Maps.putIfNotNull(map, "period", period);
- Maps.putIfNotEmpty(map, "attributes", metricAttributes);
- return map;
- }
-
- public String getName() {
- return name;
- }
-
- @Override
- public boolean equals(Object o) {
- if (this == o) return true;
- if (!(o instanceof AbstractMeasure)) return false;
- AbstractMeasure that = (AbstractMeasure) o;
- return Objects.equals(name, that.name) &&
- Objects.equals(metricAttributes, that.metricAttributes) &&
- Objects.equals(period, that.period) &&
- Objects.equals(epoch, that.epoch);
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(name, metricAttributes, period, epoch);
- }
-}
-
diff --git a/src/main/java/com/appoptics/metrics/client/AppopticsClient.java b/src/main/java/com/appoptics/metrics/client/AppopticsClient.java
index ca7eabc..7cb0479 100644
--- a/src/main/java/com/appoptics/metrics/client/AppopticsClient.java
+++ b/src/main/java/com/appoptics/metrics/client/AppopticsClient.java
@@ -4,6 +4,7 @@
import java.util.*;
import java.util.concurrent.*;
import java.util.concurrent.ThreadPoolExecutor.CallerRunsPolicy;
+import java.util.function.Function;
/**
* The main class that should be used to access the AppOptics API
@@ -12,12 +13,10 @@ public class AppopticsClient {
private static final String LIB_VERSION = Versions.getVersion("META-INF/maven/com.appoptics.metrics/appoptics-api-java/pom.properties", AppopticsClient.class);
private final URI uri;
private final int batchSize;
- private final Duration connectTimeout;
- private final Duration readTimeout;
- private final IPoster poster;
+ private final DefaultPoster poster;
private final ExecutorService executor;
private final ResponseConverter responseConverter = new ResponseConverter();
- private final Map measurementPostHeaders = new HashMap();
+ private final Map measurementPostHeaders = new HashMap<>();
public static AppopticsClientBuilder builder(String token) {
return new AppopticsClientBuilder(token);
@@ -26,18 +25,13 @@ public static AppopticsClientBuilder builder(String token) {
AppopticsClient(AppopticsClientAttributes attrs) {
this.uri = URIs.removePath(attrs.uri);
this.batchSize = attrs.batchSize;
- this.connectTimeout = attrs.connectTimeout;
- this.readTimeout = attrs.readTimeout;
this.poster = attrs.poster;
- BlockingQueue queue = new SynchronousQueue();
- ThreadFactory threadFactory = new ThreadFactory() {
- @Override
- public Thread newThread(Runnable r) {
- Thread thread = new Thread(r);
- thread.setName("appoptics-client");
- thread.setDaemon(true);
- return thread;
- }
+ BlockingQueue queue = new SynchronousQueue<>();
+ ThreadFactory threadFactory = r -> {
+ Thread thread = new Thread(r);
+ thread.setName("appoptics-client");
+ thread.setDaemon(true);
+ return thread;
};
this.executor = new ThreadPoolExecutor(0, attrs.maxInflightRequests, 10, TimeUnit.SECONDS, queue, threadFactory, new CallerRunsPolicy());
measurementPostHeaders.put("Content-Type", "application/json");
@@ -52,12 +46,7 @@ public PostMeasuresResult postMeasures(Measures measures) {
}
Future> future = null;
if (!measures.isEmpty()) {
- future = postMeasures("/v1/measurements", measures, responseConverter, new IBuildsPayload() {
- @Override
- public byte[] build(Measures measures) {
- return buildPayload(measures);
- }
- });
+ future = postMeasures(measures, responseConverter, this::buildPayload);
}
if (future != null) {
result.results.addAll(Futures.get(future));
@@ -65,37 +54,33 @@ public byte[] build(Measures measures) {
return result;
}
- private Future> postMeasures(final String uri,
- final Measures measures,
- final IResponseConverter responseConverter,
- final IBuildsPayload payloadBuilder) {
- return executor.submit(new Callable>() {
- @Override
- public List call() throws Exception {
- List results = new LinkedList();
- for (Measures batch : measures.partition(AppopticsClient.this.batchSize)) {
- byte[] payload = payloadBuilder.build(batch);
- try {
- HttpResponse response = poster.post(fullUrl(uri), connectTimeout, readTimeout, measurementPostHeaders, payload);
- results.add(responseConverter.convert(payload, response));
- } catch (Exception e) {
- results.add(responseConverter.convert(payload, e));
- }
+ private Future> postMeasures(final Measures measures,
+ final ResponseConverter responseConverter,
+ final Function payloadBuilder) {
+ return executor.submit(() -> {
+ List results = new LinkedList<>();
+ for (Measures batch : measures.partition(AppopticsClient.this.batchSize)) {
+ byte[] payload = payloadBuilder.apply(batch);
+ try {
+ var response = poster.post(fullUrl(), measurementPostHeaders, payload);
+ results.add(responseConverter.convert(payload, response));
+ } catch (Exception e) {
+ results.add(responseConverter.convert(payload, e));
}
- return results;
}
+ return results;
});
}
private byte[] buildPayload(Measures measures) {
- final Map payload = new HashMap();
+ final Map payload = new HashMap<>();
Maps.putIfNotNull(payload, "time", measures.getEpoch());
Maps.putIfNotNull(payload, "period", measures.getPeriod());
if (!measures.getTags().isEmpty()) {
payload.put("tags", Tags.toMap(measures.getTags()));
}
- List