Skip to content

Commit 70435b6

Browse files
committed
guard against race conditions
1 parent 719207e commit 70435b6

File tree

1 file changed

+9
-8
lines changed

1 file changed

+9
-8
lines changed

bugsnag/src/main/java/com/bugsnag/Configuration.java

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import java.util.List;
2121
import java.util.Map;
2222
import java.util.Set;
23+
import java.util.Collections;
2324
import java.util.concurrent.ConcurrentLinkedQueue;
2425
import java.util.concurrent.atomic.AtomicBoolean;
2526

@@ -142,7 +143,7 @@ public void setEndpoints(String notify, String sessions) throws IllegalArgumentE
142143
* @throws IllegalArgumentException if the endpoint configuration is null or if
143144
* the notify endpoint is empty or null
144145
*/
145-
public void setEndpoints(EndpointConfiguration endpointConfiguration) throws IllegalArgumentException {
146+
public synchronized void setEndpoints(EndpointConfiguration endpointConfiguration) throws IllegalArgumentException {
146147
if (endpointConfiguration == null) {
147148
throw new IllegalArgumentException("Endpoint configuration cannot be null.");
148149
}
@@ -245,35 +246,35 @@ public void setSessionDelivery(Delivery sessionDelivery) {
245246
}
246247

247248
public String[] getRedactedKeys() {
248-
return redactedKeys;
249+
return redactedKeys == null ? null : redactedKeys.clone();
249250
}
250251

251252
public void setRedactedKeys(String[] redactedKeys) {
252-
this.redactedKeys = redactedKeys;
253+
this.redactedKeys = redactedKeys == null ? null : redactedKeys.clone();
253254
}
254255

255256
public String[] getDiscardClasses() {
256-
return discardClasses;
257+
return discardClasses == null ? null : discardClasses.clone();
257258
}
258259

259260
public void setDiscardClasses(String[] discardClasses) {
260-
this.discardClasses = discardClasses;
261+
this.discardClasses = discardClasses == null ? null : discardClasses.clone();
261262
}
262263

263264
public Set<String> getEnabledReleaseStages() {
264-
return enabledReleaseStages;
265+
return enabledReleaseStages == null ? null : Collections.unmodifiableSet(enabledReleaseStages);
265266
}
266267

267268
public void setEnabledReleaseStages(Set<String> enabledReleaseStages) {
268269
this.enabledReleaseStages = enabledReleaseStages;
269270
}
270271

271272
public String[] getProjectPackages() {
272-
return projectPackages;
273+
return projectPackages == null ? null : projectPackages.clone();
273274
}
274275

275276
public void setProjectPackages(String[] projectPackages) {
276-
this.projectPackages = projectPackages;
277+
this.projectPackages = projectPackages == null ? null : projectPackages.clone();
277278
}
278279

279280
public String getReleaseStage() {

0 commit comments

Comments
 (0)