Skip to content

Commit 4702e6a

Browse files
authored
Merge pull request #24 from exceptionless/testing
Small fixes
2 parents 57e4814 + 8d8b756 commit 4702e6a

File tree

18 files changed

+344
-299
lines changed

18 files changed

+344
-299
lines changed

pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,11 @@
3939
<artifactId>jackson-datatype-jsr310</artifactId>
4040
<version>2.10.0</version>
4141
</dependency>
42+
<dependency>
43+
<groupId>com.squareup.okhttp3</groupId>
44+
<artifactId>okhttp</artifactId>
45+
<version>4.9.1</version>
46+
</dependency>
4247
<!--Test Dependencies-->
4348
<dependency>
4449
<groupId>org.junit.jupiter</groupId>

samples/example-app/pom.xml

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

77
<groupId>com.exceptionless</groupId>
88
<artifactId>example-app</artifactId>
9-
<version>1.0-beta1</version>
9+
<version>1.0</version>
1010

1111
<dependencies>
1212
<dependency>
1313
<groupId>com.exceptionless</groupId>
1414
<artifactId>exceptionless-client</artifactId>
15-
<version>1.0</version>
15+
<version>1.0-beta1</version>
1616
</dependency>
1717
</dependencies>
1818

Lines changed: 27 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,40 @@
11
package com.exceptionless.sample.app;
22

33
import com.exceptionless.exceptionlessclient.ExceptionlessClient;
4+
import com.exceptionless.exceptionlessclient.models.EventPluginContext;
45

56
public class Main {
6-
public static void main(String[] args) {
7-
ExceptionlessClient client =
8-
ExceptionlessClient.from(
9-
System.getenv("EXCEPTIONLESS_SAMPLE_APP_API_KEY"),
10-
System.getenv("EXCEPTIONLESS_SAMPLE_APP_SERVER_URL"));
11-
12-
client.getConfigurationManager().useSessions();
13-
14-
client.submitSessionStart();
7+
private static final ExceptionlessClient client =
8+
ExceptionlessClient.from(
9+
System.getenv("EXCEPTIONLESS_SAMPLE_APP_API_KEY"),
10+
System.getenv("EXCEPTIONLESS_SAMPLE_APP_SERVER_URL"));
1511

12+
public static void sampleEventSubmissions() {
1613
client.submitException(new RuntimeException("Test exception"));
17-
client.submitUnhandledException(new RuntimeException("Test exception"),"Test submission method");
14+
client.submitUnhandledException(
15+
new RuntimeException("Test exception"), "Test submission method");
1816
client.submitFeatureUsage("Test feature");
1917
client.submitLog("Test log");
2018
client.submitNotFound("Test resource");
19+
}
2120

22-
client.submitSessionEnd("Test user id");
21+
public static void sampleUseOfSessions() {
22+
client.getConfigurationManager().useSessions();
23+
client.submitEvent(
24+
EventPluginContext.from(client.createSessionStart().userIdentity("test-user").build()));
25+
client.submitSessionEnd("test-user");
26+
}
27+
28+
public static void sampleUseOfUpdatingEmailAndDescription() {
29+
client.submitEvent(
30+
EventPluginContext.from(
31+
client.createLog("test-log").referenceId("test-reference-id").build()));
32+
client.updateEmailAndDescription("test-reference-id", "[email protected]", "test-description");
33+
}
34+
35+
public static void main(String[] args) {
36+
sampleEventSubmissions();
37+
sampleUseOfUpdatingEmailAndDescription();
38+
sampleUseOfSessions();
2339
}
2440
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.exceptionless.exceptionlessclient.exceptions;
2+
3+
public class SettingsClientException extends RuntimeException{
4+
public SettingsClientException(Throwable cause) {
5+
super(cause);
6+
}
7+
8+
public SettingsClientException(String message) {
9+
super(message);
10+
}
11+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.exceptionless.exceptionlessclient.exceptions;
2+
3+
public class SubmissionClientException extends RuntimeException {
4+
public SubmissionClientException(Throwable cause) {
5+
super(cause);
6+
}
7+
8+
public SubmissionClientException(String message) {
9+
super(message);
10+
}
11+
}

src/main/java/com/exceptionless/exceptionlessclient/exceptions/SubmissionException.java

Lines changed: 0 additions & 11 deletions
This file was deleted.

src/main/java/com/exceptionless/exceptionlessclient/models/submission/SettingsResponse.java

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,15 @@
99
@Value
1010
@NonFinal
1111
public class SettingsResponse {
12-
@Builder.Default Boolean success = false;
12+
int code;
13+
String body;
1314
ServerSettings settings;
14-
Exception exception;
15-
String message;
1615

17-
public Boolean isSuccess() {
18-
return success;
16+
public boolean isSuccess() {
17+
return code >= 200 && code <= 299;
18+
}
19+
20+
public boolean isNotModified() {
21+
return code == 304;
1922
}
2023
}

src/main/java/com/exceptionless/exceptionlessclient/models/submission/SubmissionResponse.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,34 +8,34 @@
88
@Value
99
@NonFinal
1010
public class SubmissionResponse {
11-
int statusCode;
12-
String message;
11+
int code;
12+
String body;
1313

1414
public boolean isSuccess() {
15-
return statusCode >= 200 && statusCode <= 299;
15+
return code >= 200 && code <= 299;
1616
}
1717

1818
public boolean isBadRequest() {
19-
return statusCode == 400;
19+
return code == 400;
2020
}
2121

2222
public boolean isServiceUnavailable() {
23-
return statusCode == 503;
23+
return code == 503;
2424
}
2525

2626
public boolean isPaymentRequired() {
27-
return statusCode == 402;
27+
return code == 402;
2828
}
2929

3030
public boolean unableToAuthenticate() {
31-
return statusCode == 401 || statusCode == 403;
31+
return code == 401 || code == 403;
3232
}
3333

3434
public boolean isNotFound() {
35-
return statusCode == 404;
35+
return code == 404;
3636
}
3737

3838
public boolean isRequestEntityTooLarge() {
39-
return statusCode == 413;
39+
return code == 413;
4040
}
4141
}

src/main/java/com/exceptionless/exceptionlessclient/queue/DefaultEventQueue.java

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.exceptionless.exceptionlessclient.queue;
22

33
import com.exceptionless.exceptionlessclient.configuration.Configuration;
4-
import com.exceptionless.exceptionlessclient.exceptions.SubmissionException;
4+
import com.exceptionless.exceptionlessclient.exceptions.SubmissionClientException;
55
import com.exceptionless.exceptionlessclient.models.Event;
66
import com.exceptionless.exceptionlessclient.models.storage.StorageItem;
77
import com.exceptionless.exceptionlessclient.models.submission.SubmissionResponse;
@@ -83,7 +83,7 @@ private boolean shouldSuspendProcessing() {
8383
}
8484

8585
@VisibleForTesting
86-
Boolean isProcessingCurrentlySuspended(){
86+
Boolean isProcessingCurrentlySuspended() {
8787
return shouldSuspendProcessing();
8888
}
8989

@@ -113,7 +113,7 @@ private boolean shouldDiscard() {
113113

114114
@Override
115115
public void process() {
116-
synchronized (this){
116+
synchronized (this) {
117117
if (processingQueue) {
118118
LOG.trace("Currently processing queue; Returning...");
119119
return;
@@ -136,11 +136,11 @@ public void process() {
136136
SubmissionResponse response = submissionClient.postEvents(events);
137137
processSubmissionResponse(response, storedEvents);
138138
eventPosted(response, events);
139-
} catch (SubmissionException e) {
140-
LOG.error("Error processing queue", e);
139+
} catch (SubmissionClientException e) {
140+
LOG.error("Error submitting events from queue", e);
141141
suspendProcessing();
142142
} finally {
143-
synchronized (this){
143+
synchronized (this) {
144144
processingQueue = false;
145145
}
146146
}
@@ -176,7 +176,10 @@ private void processSubmissionResponse(
176176
}
177177

178178
if (response.isNotFound() || response.isBadRequest()) {
179-
LOG.error(String.format("Error while trying to submit data: %s", response.getMessage()));
179+
LOG.error(
180+
String.format(
181+
"Error while trying to submit data, Code:%s, Body:%s",
182+
response.getCode(), response.getBody()));
180183
suspendProcessing(Duration.ofMinutes(4));
181184
removeEvents(storedEvents);
182185
return;
@@ -195,7 +198,9 @@ private void processSubmissionResponse(
195198
return;
196199
}
197200

198-
LOG.error(String.format("Error submitting events: %s", response.getMessage()));
201+
LOG.error(
202+
String.format(
203+
"Error submitting events, Code: %s, Body: %s", response.getCode(), response.getBody()));
199204
suspendProcessing();
200205
}
201206

Lines changed: 34 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,64 +1,71 @@
11
package com.exceptionless.exceptionlessclient.settings;
22

33
import com.exceptionless.exceptionlessclient.configuration.Configuration;
4+
import com.exceptionless.exceptionlessclient.exceptions.SettingsClientException;
45
import com.exceptionless.exceptionlessclient.models.submission.SettingsResponse;
56
import com.exceptionless.exceptionlessclient.utils.Utils;
67
import com.exceptionless.exceptionlessclient.utils.VisibleForTesting;
78
import com.fasterxml.jackson.core.type.TypeReference;
89
import lombok.Builder;
10+
import okhttp3.OkHttpClient;
11+
import okhttp3.Request;
12+
import okhttp3.Response;
13+
import okhttp3.ResponseBody;
914

10-
import java.net.URI;
11-
import java.net.http.HttpClient;
12-
import java.net.http.HttpRequest;
13-
import java.net.http.HttpResponse;
1415
import java.time.Duration;
1516

1617
public class DefaultSettingsClient implements SettingsClientIF {
1718
private final Configuration configuration;
18-
private final HttpClient httpClient;
19+
private final OkHttpClient httpClient;
1920

2021
@Builder
2122
public DefaultSettingsClient(Configuration configuration) {
2223
this.configuration = configuration;
23-
this.httpClient = HttpClient.newHttpClient();
24+
this.httpClient =
25+
new OkHttpClient()
26+
.newBuilder()
27+
.connectTimeout(Duration.ofMillis(configuration.getSettingsClientTimeoutInMillis()))
28+
.build();
2429
}
2530

2631
@VisibleForTesting
27-
DefaultSettingsClient(Configuration configuration, HttpClient httpClient) {
32+
DefaultSettingsClient(Configuration configuration, OkHttpClient httpClient) {
2833
this.configuration = configuration;
2934
this.httpClient = httpClient;
3035
}
3136

3237
@Override
3338
public SettingsResponse getSettings(long version) {
3439
try {
35-
URI uri =
36-
new URI(
37-
String.format(
38-
"%s/api/v2/projects/config?v=%s&access_token=%s",
39-
configuration.getServerUrl(), version, configuration.getApiKey()));
40-
41-
HttpRequest request =
42-
HttpRequest.newBuilder()
43-
.uri(uri)
44-
.GET()
45-
.header("User-Agent", Configuration.USER_AGENT)
46-
.timeout(Duration.ofMillis(configuration.getSettingsClientTimeoutInMillis()))
40+
Request request =
41+
new Request.Builder()
42+
.url(
43+
String.format(
44+
"%s/api/v2/projects/config?v=%s&access_token=%s",
45+
configuration.getServerUrl(), version, configuration.getApiKey()))
46+
.get()
4747
.build();
4848

49-
HttpResponse<String> response =
50-
httpClient.send(request, HttpResponse.BodyHandlers.ofString());
49+
Response response = httpClient.newCall(request).execute();
5150

52-
if (response.statusCode() != 200) {
53-
return SettingsResponse.builder().success(false).message(response.body()).build();
51+
ResponseBody body = response.body();
52+
String bodyStr = body == null ? null : body.string();
53+
if (bodyStr == null) {
54+
return SettingsResponse.builder().code(response.code()).body("").build();
55+
}
56+
if (response.code() / 100 != 2) {
57+
return SettingsResponse.builder().code(response.code()).body(bodyStr).build();
5458
}
5559

5660
ServerSettings serverSettings =
57-
Utils.JSON_MAPPER.readValue(response.body(), new TypeReference<ServerSettings>() {});
58-
59-
return SettingsResponse.builder().success(true).settings(serverSettings).build();
61+
Utils.JSON_MAPPER.readValue(bodyStr, new TypeReference<ServerSettings>() {});
62+
return SettingsResponse.builder()
63+
.code(response.code())
64+
.body(bodyStr)
65+
.settings(serverSettings)
66+
.build();
6067
} catch (Exception e) {
61-
return SettingsResponse.builder().success(false).exception(e).message(e.getMessage()).build();
68+
throw new SettingsClientException(e);
6269
}
6370
}
6471
}

0 commit comments

Comments
 (0)