Skip to content

Commit c051856

Browse files
committed
Removed configuration from DefaultSubmissionClient
1 parent 8f9cf46 commit c051856

File tree

8 files changed

+77
-49
lines changed

8 files changed

+77
-49
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454
<dependency>
5555
<groupId>org.mockito</groupId>
5656
<artifactId>mockito-core</artifactId>
57-
<version>2.21.0</version>
57+
<version>2.25.1</version>
5858
<scope>test</scope>
5959
</dependency>
6060
<dependency>

src/main/java/com/exceptionless/exceptionlessclient/configuration/ConfigurationManager.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,10 @@ public ConfigurationManager(
127127
submissionClient == null
128128
? DefaultSubmissionClient.builder()
129129
.settingsManager(this.settingsManager)
130-
.configuration(this.configuration)
130+
.submissionClientTimeoutInMillis(this.submissionClientTimeoutInMillis)
131+
.serverUrl(this.serverUrl)
132+
.apiKey(this.apiKey)
133+
.heartbeatServerUrl(this.heartbeatServerUrl)
131134
.build()
132135
: submissionClient;
133136
this.queue =
@@ -194,7 +197,7 @@ private void checkApiKeyIsValid() {
194197
}
195198

196199
throw new InvalidApiKeyException(
197-
String.format("Apikey is not valid: [%s]", this.configuration.getApiKey()));
200+
String.format("Apikey is not valid: [%s]", this.apiKey.get()));
198201
}
199202

200203
private void addLogCapturer(LogCapturerIF logCatpurer) {

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

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

3-
import com.exceptionless.exceptionlessclient.configuration.Configuration;
3+
import com.exceptionless.exceptionlessclient.configuration.ValueProvider;
44
import com.exceptionless.exceptionlessclient.models.Event;
55
import com.exceptionless.exceptionlessclient.models.UserDescription;
66
import com.exceptionless.exceptionlessclient.settings.SettingsManager;
@@ -21,35 +21,49 @@ public class DefaultSubmissionClient implements SubmissionClientIF {
2121
private static final String CONFIGURATION_VERSION_HEADER = "x-exceptionless-configversion";
2222
private static final String RATE_LIMITING_HEADER = "x-ratelimit-remaining";
2323

24-
private final Configuration configuration;
2524
private final SettingsManager settingsManager;
26-
private final OkHttpClient httpClient;
25+
private final OkHttpClient defaultHttpClient;
26+
private final ValueProvider<Integer> submissionClientTimeoutInMillis;
27+
private final ValueProvider<String> serverUrl;
28+
private final ValueProvider<String> apiKey;
29+
private final ValueProvider<String> heartbeatServerUrl;
2730

2831
@Builder
29-
public DefaultSubmissionClient(Configuration configuration, SettingsManager settingsManager) {
30-
this.configuration = configuration;
31-
this.settingsManager = settingsManager;
32-
this.httpClient =
33-
new OkHttpClient()
34-
.newBuilder()
35-
.connectTimeout(Duration.ofMillis(configuration.getSubmissionClientTimeoutInMillis()))
36-
.build();
32+
public DefaultSubmissionClient(
33+
SettingsManager settingsManager,
34+
ValueProvider<Integer> submissionClientTimeoutInMillis,
35+
ValueProvider<String> serverUrl,
36+
ValueProvider<String> apiKey,
37+
ValueProvider<String> heartbeatServerUrl) {
38+
this(
39+
new OkHttpClient().newBuilder().build(),
40+
settingsManager,
41+
submissionClientTimeoutInMillis,
42+
serverUrl,
43+
apiKey,
44+
heartbeatServerUrl);
3745
}
3846

3947
@VisibleForTesting
4048
DefaultSubmissionClient(
41-
Configuration configuration, SettingsManager settingsManager, OkHttpClient httpClient) {
42-
this.configuration = configuration;
49+
OkHttpClient defaultHttpClient,
50+
SettingsManager settingsManager,
51+
ValueProvider<Integer> submissionClientTimeoutInMillis,
52+
ValueProvider<String> serverUrl,
53+
ValueProvider<String> apiKey,
54+
ValueProvider<String> heartbeatServerUrl) {
4355
this.settingsManager = settingsManager;
44-
this.httpClient = httpClient;
56+
this.defaultHttpClient = defaultHttpClient;
57+
this.submissionClientTimeoutInMillis = submissionClientTimeoutInMillis;
58+
this.serverUrl = serverUrl;
59+
this.apiKey = apiKey;
60+
this.heartbeatServerUrl = heartbeatServerUrl;
4561
}
4662

4763
@Override
4864
public SubmissionResponse postEvents(List<Event> events) {
4965
return postSubmission(
50-
String.format(
51-
"%s/api/v2/events?access_token=%s",
52-
configuration.getServerUrl(), configuration.getApiKey()),
66+
String.format("%s/api/v2/events?access_token=%s", serverUrl.get(), apiKey.get()),
5367
events.stream().map(SubmissionMapper::toRequest).collect(Collectors.toList()));
5468
}
5569

@@ -58,7 +72,7 @@ public SubmissionResponse postUserDescription(String referenceId, UserDescriptio
5872
return postSubmission(
5973
String.format(
6074
"%s/api/v2/events/by-ref/%s/user-description?access_token=%s",
61-
configuration.getServerUrl(), referenceId, configuration.getApiKey()),
75+
serverUrl.get(), referenceId, apiKey.get()),
6276
SubmissionMapper.toRequest(description));
6377
}
6478

@@ -71,7 +85,13 @@ private SubmissionResponse postSubmission(String url, Object data) {
7185
.post(RequestBody.create(requestJSON, MediaType.parse("application/json")))
7286
.build();
7387

74-
Response response = httpClient.newCall(request).execute();
88+
Response response =
89+
defaultHttpClient
90+
.newBuilder()
91+
.connectTimeout(Duration.ofMillis(submissionClientTimeoutInMillis.get()))
92+
.build()
93+
.newCall(request)
94+
.execute();
7595

7696
if (response.isSuccessful()) {
7797
updateSettingsFromHeaders(response);
@@ -109,14 +129,20 @@ public void sendHeartBeat(String sessionIdOrUserId, boolean closeSession) {
109129
.url(
110130
String.format(
111131
"%s/api/v2/events/session/heartbeat?id=%s&close=%s&access_token=%s",
112-
configuration.getHeartbeatServerUrl(),
132+
heartbeatServerUrl.get(),
113133
URLEncoder.encode(sessionIdOrUserId, StandardCharsets.UTF_8),
114134
closeSession,
115-
configuration.getApiKey()))
135+
apiKey.get()))
116136
.get()
117137
.build();
118138

119-
Response response = httpClient.newCall(request).execute();
139+
Response response =
140+
defaultHttpClient
141+
.newBuilder()
142+
.connectTimeout(Duration.ofMillis(submissionClientTimeoutInMillis.get()))
143+
.build()
144+
.newCall(request)
145+
.execute();
120146

121147
if (!response.isSuccessful()) {
122148
log.error(

src/test/java/com/exceptionless/exceptionlessclient/TestFixtures.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ public static Configuration.ConfigurationBuilder aDefaultConfiguration() {
1515

1616
public static ConfigurationManager.ConfigurationManagerBuilder aDefaultConfigurationManager() {
1717
return ConfigurationManager.builder()
18+
.apiKey("12456790abcdef")
1819
.configuration(aDefaultConfiguration().build())
1920
.queue(Mockito.mock(DefaultEventQueue.class))
2021
.storageProvider(InMemoryStorageProvider.builder().build());

src/test/java/com/exceptionless/exceptionlessclient/configuration/ConfigurationManagerTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public void itThrowsInvalidApiKeyExceptionForInvalidApiKeys() {
5555
assertThatThrownBy(
5656
() ->
5757
TestFixtures.aDefaultConfigurationManager()
58-
.configuration(Configuration.builder().apiKey("xxx").build())
58+
.apiKey("xxx")
5959
.build())
6060
.isInstanceOf(InvalidApiKeyException.class)
6161
.hasMessage("Apikey is not valid: [xxx]");
@@ -192,7 +192,7 @@ public void itCanUseSessions() {
192192
@Test
193193
public void itCanDetectChanges() {
194194
configurationManager.onChanged(handler);
195-
configurationManager.getConfiguration().setApiKey("test-api-key");
195+
configurationManager.setApiKey("test-api-key");
196196

197197
verify(handler, times(1)).accept(configurationManager);
198198
}

src/test/java/com/exceptionless/exceptionlessclient/plugins/preconfigured/ConfigurationDefaultsPluginTest.java

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

3-
import com.exceptionless.exceptionlessclient.configuration.Configuration;
43
import com.exceptionless.exceptionlessclient.configuration.ConfigurationManager;
54
import com.exceptionless.exceptionlessclient.models.Event;
65
import com.exceptionless.exceptionlessclient.models.EventPluginContext;
@@ -22,10 +21,7 @@ public class ConfigurationDefaultsPluginTest {
2221
public void setup() {
2322
plugin = ConfigurationDefaultsPlugin.builder().build();
2423
context = EventPluginContext.from(Event.builder().build());
25-
configurationManager =
26-
ConfigurationManager.builder()
27-
.configuration(Configuration.builder().apiKey("12456790abcdef").build())
28-
.build();
24+
configurationManager = ConfigurationManager.builder().apiKey("12456790abcdef").build();
2925
}
3026

3127
@Test

src/test/java/com/exceptionless/exceptionlessclient/plugins/preconfigured/DuplicateCheckerPluginTest.java

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

3-
import com.exceptionless.exceptionlessclient.TestFixtures;
43
import com.exceptionless.exceptionlessclient.configuration.ConfigurationManager;
54
import com.exceptionless.exceptionlessclient.enums.EventPropertyKey;
65
import com.exceptionless.exceptionlessclient.models.Event;
@@ -46,10 +45,7 @@ public void setup() {
4645
.count(EVENT_COUNT)
4746
.build());
4847
configurationManager =
49-
ConfigurationManager.builder()
50-
.configuration(TestFixtures.aDefaultConfiguration().build())
51-
.queue(eventQueue)
52-
.build();
48+
ConfigurationManager.builder().apiKey("12456790abcdef").queue(eventQueue).build();
5349
}
5450

5551
@Test

src/test/java/com/exceptionless/exceptionlessclient/submission/DefaultSubmissionClientTest.java

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

3-
import com.exceptionless.exceptionlessclient.TestFixtures;
4-
import com.exceptionless.exceptionlessclient.configuration.Configuration;
3+
import com.exceptionless.exceptionlessclient.configuration.ValueProvider;
54
import com.exceptionless.exceptionlessclient.models.Event;
65
import com.exceptionless.exceptionlessclient.models.UserDescription;
76
import com.exceptionless.exceptionlessclient.settings.SettingsManager;
@@ -10,9 +9,11 @@
109
import org.junit.jupiter.api.Test;
1110
import org.junit.jupiter.api.extension.ExtendWith;
1211
import org.mockito.Mock;
12+
import org.mockito.Mockito;
1313
import org.mockito.junit.jupiter.MockitoExtension;
1414

1515
import java.io.IOException;
16+
import java.time.Duration;
1617
import java.util.List;
1718
import java.util.Map;
1819

@@ -31,22 +32,25 @@ public class DefaultSubmissionClientTest {
3132

3233
@BeforeEach
3334
public void setup() {
34-
Configuration configuration =
35-
TestFixtures.aDefaultConfiguration()
36-
.serverUrl("http://test-server-url")
37-
.heartbeatServerUrl("http://test-heartbeat-server-url")
38-
.apiKey("test-api-key")
39-
.submissionClientTimeoutInMillis(10)
40-
.build();
41-
42-
submissionClient = new DefaultSubmissionClient(configuration, settingsManager, httpClient);
35+
submissionClient =
36+
new DefaultSubmissionClient(
37+
httpClient,
38+
settingsManager,
39+
ValueProvider.of(10),
40+
ValueProvider.of("http://test-server-url"),
41+
ValueProvider.of("test-api-key"),
42+
ValueProvider.of("http://test-heartbeat-server-url"));
4343
responseBuilder =
4444
new Response.Builder()
4545
.request(new Request.Builder().url("http://test-url").build())
4646
.protocol(Protocol.HTTP_2)
4747
.body(ResponseBody.create("test-body", MediaType.get("text/plain")))
4848
.message("test-message")
4949
.code(200);
50+
OkHttpClient.Builder mockBuilder = Mockito.mock(OkHttpClient.Builder.class);
51+
doReturn(mockBuilder).when(httpClient).newBuilder();
52+
doReturn(mockBuilder).when(mockBuilder).connectTimeout(Duration.ofMillis(10));
53+
doReturn(httpClient).when(mockBuilder).build();
5054
}
5155

5256
@Test
@@ -174,7 +178,9 @@ public void itCanHandleAllExceptionsWhilePostingUserDescription() {
174178
Exception exception = new RuntimeException("test");
175179
doThrow(exception).when(httpClient).newCall(any());
176180

177-
SubmissionResponse response = submissionClient.postUserDescription("test-reference-id", UserDescription.builder().build());
181+
SubmissionResponse response =
182+
submissionClient.postUserDescription(
183+
"test-reference-id", UserDescription.builder().build());
178184

179185
assertThat(response.hasException()).isTrue();
180186
assertThat(response.getException()).isSameAs(exception);

0 commit comments

Comments
 (0)