Skip to content

Commit b63731c

Browse files
authored
Merge pull request #56 from exceptionless/remove-exception-throwing-from-clients
Remove exception throwing from clients
2 parents 459d965 + d1cbd8c commit b63731c

13 files changed

Lines changed: 69 additions & 78 deletions

File tree

src/main/java/com/exceptionless/exceptionlessclient/ExceptionlessClient.java

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@
22

33
import com.exceptionless.exceptionlessclient.configuration.Configuration;
44
import com.exceptionless.exceptionlessclient.configuration.ConfigurationManager;
5+
import com.exceptionless.exceptionlessclient.enums.EventPropertyKey;
6+
import com.exceptionless.exceptionlessclient.enums.EventType;
57
import com.exceptionless.exceptionlessclient.models.Event;
68
import com.exceptionless.exceptionlessclient.models.EventPluginContext;
79
import com.exceptionless.exceptionlessclient.models.PluginContext;
810
import com.exceptionless.exceptionlessclient.models.UserDescription;
9-
import com.exceptionless.exceptionlessclient.enums.EventPropertyKey;
10-
import com.exceptionless.exceptionlessclient.enums.EventType;
11-
import com.exceptionless.exceptionlessclient.submission.SubmissionResponse;
1211
import com.exceptionless.exceptionlessclient.plugins.EventPluginRunner;
12+
import com.exceptionless.exceptionlessclient.submission.SubmissionResponse;
1313
import com.exceptionless.exceptionlessclient.utils.VisibleForTesting;
1414
import lombok.Builder;
1515
import lombok.Getter;
@@ -269,9 +269,16 @@ public SubmissionResponse updateEmailAndDescription(
269269
.postUserDescription(
270270
referenceId,
271271
UserDescription.builder().description(description).emailAddress(email).build());
272+
if (response.hasException()) {
273+
log.error(
274+
String.format("Failed to submit user email and description for event: %s", referenceId),
275+
response.getException());
276+
}
272277
if (!response.isSuccess()) {
273278
log.error(
274-
String.format("Failed to submit user email and description for event: %s", referenceId));
279+
String.format(
280+
"Failed to submit user email and description for event: %s, code: %s",
281+
referenceId, response.getCode()));
275282
}
276283

277284
return response;

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

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

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

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

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

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

33
import com.exceptionless.exceptionlessclient.configuration.Configuration;
4-
import com.exceptionless.exceptionlessclient.exceptions.SubmissionClientException;
54
import com.exceptionless.exceptionlessclient.models.Event;
65
import com.exceptionless.exceptionlessclient.models.storage.StorageItem;
7-
import com.exceptionless.exceptionlessclient.submission.SubmissionResponse;
86
import com.exceptionless.exceptionlessclient.storage.StorageProviderIF;
97
import com.exceptionless.exceptionlessclient.submission.SubmissionClientIF;
8+
import com.exceptionless.exceptionlessclient.submission.SubmissionResponse;
109
import com.exceptionless.exceptionlessclient.utils.VisibleForTesting;
1110
import lombok.Builder;
1211
import lombok.extern.slf4j.Slf4j;
@@ -137,11 +136,13 @@ public void process() {
137136
log.info(
138137
String.format("Sending %s events to %s", events.size(), configuration.getServerUrl()));
139138
SubmissionResponse response = submissionClient.postEvents(events);
139+
if (response.hasException()) {
140+
log.error("Error submitting events from queue", response.getException());
141+
suspendProcessing();
142+
return;
143+
}
140144
processSubmissionResponse(response, storedEvents);
141145
eventPosted(response, events);
142-
} catch (SubmissionClientException e) {
143-
log.error("Error submitting events from queue", e);
144-
suspendProcessing();
145146
} finally {
146147
synchronized (this) {
147148
processingQueue = false;

src/main/java/com/exceptionless/exceptionlessclient/settings/DefaultSettingsClient.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.exceptionless.exceptionlessclient.settings;
22

33
import com.exceptionless.exceptionlessclient.configuration.Configuration;
4-
import com.exceptionless.exceptionlessclient.exceptions.SettingsClientException;
54
import com.exceptionless.exceptionlessclient.utils.Utils;
65
import com.exceptionless.exceptionlessclient.utils.VisibleForTesting;
76
import com.fasterxml.jackson.core.type.TypeReference;
@@ -64,7 +63,7 @@ public SettingsResponse getSettings(long version) {
6463
.settings(serverSettings)
6564
.build();
6665
} catch (Exception e) {
67-
throw new SettingsClientException(e);
66+
return SettingsResponse.builder().exception(e).build();
6867
}
6968
}
7069
}

src/main/java/com/exceptionless/exceptionlessclient/settings/SettingsManager.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.exceptionless.exceptionlessclient.settings;
22

3-
import com.exceptionless.exceptionlessclient.exceptions.SettingsClientException;
43
import com.exceptionless.exceptionlessclient.models.storage.StorageItem;
54
import com.exceptionless.exceptionlessclient.storage.StorageProviderIF;
65
import lombok.Builder;
@@ -80,8 +79,6 @@ public void updateSettings() {
8079
storageProvider.getSettings().save(response.getSettings());
8180
propertyChangeSupport.firePropertyChange(
8281
Property.SETTINGS, prevValue, response.getSettings());
83-
} catch (SettingsClientException e) {
84-
log.error(String.format("Error retrieving settings for v%s", getVersion()), e);
8582
} finally {
8683
synchronized (this) {
8784
updatingSettings = false;
@@ -90,6 +87,12 @@ public void updateSettings() {
9087
}
9188

9289
private boolean shouldNotUpdate(SettingsResponse response) {
90+
if (response.hasException()) {
91+
log.error(
92+
String.format("Error retrieving settings for v%s", getVersion()),
93+
response.getException());
94+
return true;
95+
}
9396
if (response.isNotModified()) {
9497
log.debug("No need to update, settings are not modified");
9598
return true;

src/main/java/com/exceptionless/exceptionlessclient/settings/SettingsResponse.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ public class SettingsResponse {
99
int code;
1010
String body;
1111
ServerSettings settings;
12+
Exception exception;
1213

1314
public boolean isSuccess() {
1415
return code >= 200 && code <= 299;
@@ -17,4 +18,8 @@ public boolean isSuccess() {
1718
public boolean isNotModified() {
1819
return code == 304;
1920
}
21+
22+
public boolean hasException() {
23+
return exception != null;
24+
}
2025
}

src/main/java/com/exceptionless/exceptionlessclient/submission/DefaultSubmissionClient.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.exceptionless.exceptionlessclient.submission;
22

33
import com.exceptionless.exceptionlessclient.configuration.Configuration;
4-
import com.exceptionless.exceptionlessclient.exceptions.SubmissionClientException;
54
import com.exceptionless.exceptionlessclient.models.Event;
65
import com.exceptionless.exceptionlessclient.models.UserDescription;
76
import com.exceptionless.exceptionlessclient.settings.SettingsManager;
@@ -84,7 +83,7 @@ private SubmissionResponse postSubmission(String url, Object data) {
8483
.body(body == null ? "" : body.string())
8584
.build();
8685
} catch (Exception e) {
87-
throw new SubmissionClientException(e);
86+
return SubmissionResponse.builder().exception(e).build();
8887
}
8988
}
9089

@@ -122,7 +121,7 @@ public void sendHeartBeat(String sessionIdOrUserId, boolean closeSession) {
122121
sessionIdOrUserId));
123122
}
124123
} catch (Exception e) {
125-
throw new SubmissionClientException(e);
124+
log.error("Error while submitting heartbeat", e);
126125
}
127126
}
128127
}

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
public class SubmissionResponse {
99
int code;
1010
String body;
11+
Exception exception;
1112

1213
public boolean isSuccess() {
1314
return code >= 200 && code <= 299;
@@ -36,4 +37,8 @@ public boolean isNotFound() {
3637
public boolean isRequestEntityTooLarge() {
3738
return code == 413;
3839
}
40+
41+
public boolean hasException() {
42+
return exception != null;
43+
}
3944
}

src/test/java/com/exceptionless/exceptionlessclient/queue/DefaultEventQueueTest.java

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,11 @@
22

33
import com.exceptionless.exceptionlessclient.TestFixtures;
44
import com.exceptionless.exceptionlessclient.configuration.Configuration;
5-
import com.exceptionless.exceptionlessclient.exceptions.SubmissionClientException;
65
import com.exceptionless.exceptionlessclient.models.Event;
7-
import com.exceptionless.exceptionlessclient.submission.SubmissionResponse;
86
import com.exceptionless.exceptionlessclient.storage.InMemoryStorage;
97
import com.exceptionless.exceptionlessclient.storage.InMemoryStorageProvider;
108
import com.exceptionless.exceptionlessclient.submission.DefaultSubmissionClient;
9+
import com.exceptionless.exceptionlessclient.submission.SubmissionResponse;
1110
import org.junit.jupiter.api.BeforeEach;
1211
import org.junit.jupiter.api.Test;
1312
import org.junit.jupiter.api.extension.ExtendWith;
@@ -111,7 +110,9 @@ public void itShouldNotPostEmptyEvents() {
111110
public void itShouldSuspendProcessingOnClientException() {
112111
storage.save(event);
113112

114-
doThrow(new SubmissionClientException("test")).when(submissionClient).postEvents(List.of(event));
113+
doReturn(SubmissionResponse.builder().exception(new RuntimeException("test")).build())
114+
.when(submissionClient)
115+
.postEvents(List.of(event));
115116

116117
queue.onEventsPosted(testHandler);
117118
queue.process();
@@ -250,11 +251,9 @@ public void itShouldReduceSubmissionBatchSizeIfRequestEntitiesAreTooLarge() {
250251
queue.process();
251252

252253
// One invocation with full batch
253-
verify(submissionClient, times(1))
254-
.postEvents(argThat(argument -> argument.size() == 3));
254+
verify(submissionClient, times(1)).postEvents(argThat(argument -> argument.size() == 3));
255255
// One invocation with reduced batch
256-
verify(submissionClient, times(1))
257-
.postEvents(argThat(argument -> argument.size() == 2));
256+
verify(submissionClient, times(1)).postEvents(argThat(argument -> argument.size() == 2));
258257
}
259258

260259
@Test
@@ -303,11 +302,9 @@ public void itShouldResetSubmissionBatchSizeOnNextSuccessfulResponse() {
303302

304303
// Two invocations with full batch; First with the default size and next after a successful
305304
// response
306-
verify(submissionClient, times(2))
307-
.postEvents(argThat(argument -> argument.size() == 3));
305+
verify(submissionClient, times(2)).postEvents(argThat(argument -> argument.size() == 3));
308306
// One invocation with reduced batch
309-
verify(submissionClient, times(1))
310-
.postEvents(argThat(argument -> argument.size() == 2));
307+
verify(submissionClient, times(1)).postEvents(argThat(argument -> argument.size() == 2));
311308
}
312309

313310
@Test

0 commit comments

Comments
 (0)