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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy