Skip to content

Commit b530c39

Browse files
authored
notifyReleaseStages -> enabledReleaseStages (#239)
1 parent 9c140d8 commit b530c39

File tree

14 files changed

+64
-56
lines changed

14 files changed

+64
-56
lines changed

bugsnag/src/main/java/com/bugsnag/Bugsnag.java

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -253,11 +253,15 @@ public void setIgnoreClasses(String... ignoreClasses) {
253253
* Set for which releaseStages errors should be sent to Bugsnag.
254254
* Use this to stop errors from development builds being sent.
255255
*
256-
* @param notifyReleaseStages a list of releaseStages to notify for
256+
* @param enabledReleaseStages a list of releaseStages to notify for
257257
* @see #setReleaseStage
258258
*/
259-
public void setNotifyReleaseStages(String... notifyReleaseStages) {
260-
config.notifyReleaseStages = notifyReleaseStages;
259+
public void setEnabledReleaseStages(String... enabledReleaseStages) {
260+
if (enabledReleaseStages == null || enabledReleaseStages.length == 0) {
261+
config.enabledReleaseStages = Collections.emptySet();
262+
} else {
263+
config.enabledReleaseStages = Set.of(enabledReleaseStages);
264+
}
261265
}
262266

263267
/**
@@ -289,7 +293,7 @@ public void setProxy(Proxy proxy) {
289293
* Set the current "release stage" of your application.
290294
*
291295
* @param releaseStage the release stage of the app
292-
* @see #setNotifyReleaseStages
296+
* @see #setEnabledReleaseStages
293297
*/
294298
public void setReleaseStage(String releaseStage) {
295299
config.releaseStage = releaseStage;
@@ -302,14 +306,15 @@ public void setReleaseStage(String releaseStage) {
302306
* environment.
303307
*
304308
* @param sendThreads should we send thread state with error reports
305-
* @see #setNotifyReleaseStages
309+
* @see #setEnabledReleaseStages
306310
*/
307311
public void setSendThreads(boolean sendThreads) {
308312
config.sendThreads = sendThreads;
309313
}
310314

311315
/**
312-
* Set a timeout (in ms) to use when delivering Bugsnag error reports and sessions.
316+
* Set a timeout (in ms) to use when delivering Bugsnag error reports and
317+
* sessions.
313318
* This is a convenient shorthand for bugsnag.getDelivery().setTimeout();
314319
*
315320
* @param timeout the timeout to set (in ms)
@@ -440,9 +445,9 @@ public boolean notify(Report report, Callback reportCallback) {
440445
return false;
441446
}
442447

443-
// Don't notify unless releaseStage is in notifyReleaseStages
448+
// Don't notify unless releaseStage is in enabledReleaseStages
444449
if (!config.shouldNotifyForReleaseStage()) {
445-
LOGGER.debug("Error not reported to Bugsnag - {} is not in 'notifyReleaseStages'",
450+
LOGGER.debug("Error not reported to Bugsnag - {} is not in 'enabledReleaseStages'",
446451
config.releaseStage);
447452
return false;
448453
}

bugsnag/src/main/java/com/bugsnag/BugsnagAppender.java

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public class BugsnagAppender extends UnsynchronizedAppenderBase<ILoggingEvent> {
5555
private Set<String> ignoredClasses = new HashSet<String>();
5656

5757
/** Release stages that should be notified. */
58-
private Set<String> notifyReleaseStages = new HashSet<String>();
58+
private Set<String> enabledReleaseStages = new HashSet<String>();
5959

6060
/** Project packages. */
6161
private Set<String> projectPackages = new HashSet<String>();
@@ -254,20 +254,20 @@ private Bugsnag createBugsnag() {
254254
bugsnag.setTimeout(timeout);
255255
}
256256

257-
if (redactedKeys.size() > 0) {
257+
if (!redactedKeys.isEmpty()) {
258258
bugsnag.setRedactedKeys(redactedKeys.toArray(new String[0]));
259259
}
260260

261261
bugsnag.setIgnoreClasses(ignoredClasses.toArray(new String[0]));
262262

263-
if (notifyReleaseStages.size() > 0) {
264-
bugsnag.setNotifyReleaseStages(notifyReleaseStages.toArray(new String[0]));
263+
if (!enabledReleaseStages.isEmpty()) {
264+
bugsnag.setEnabledReleaseStages(enabledReleaseStages.toArray(new String[0]));
265265
}
266266

267267
bugsnag.setProjectPackages(projectPackages.toArray(new String[0]));
268268
bugsnag.setSendThreads(sendThreads);
269269

270-
// Add a callback to put global meta data on every report
270+
// Add a callback to put global metadata on every report
271271
bugsnag.addCallback(new Callback() {
272272
@Override
273273
public void beforeNotify(Report report) {
@@ -417,25 +417,30 @@ public void setIgnoredClasses(String ignoredClasses) {
417417
}
418418
}
419419

420+
@Deprecated
421+
public void setNotifyReleaseStage(String notifyReleaseStage) {
422+
setEnabledReleaseStage(notifyReleaseStage);
423+
}
424+
420425
/**
421-
* @see Bugsnag#setNotifyReleaseStages(String...)
426+
* @see Bugsnag#setEnabledReleaseStages(String...)
422427
*/
423-
public void setNotifyReleaseStage(String notifyReleaseStage) {
424-
this.notifyReleaseStages.add(notifyReleaseStage);
428+
public void setEnabledReleaseStage(String enabledReleaseStage) {
429+
this.enabledReleaseStages.add(enabledReleaseStage);
425430

426431
if (bugsnag != null) {
427-
bugsnag.setNotifyReleaseStages(this.notifyReleaseStages.toArray(new String[0]));
432+
bugsnag.setEnabledReleaseStages(this.enabledReleaseStages.toArray(new String[0]));
428433
}
429434
}
430435

431436
/**
432-
* @see Bugsnag#setNotifyReleaseStages(String...)
437+
* @see Bugsnag#setEnabledReleaseStages(String...)
433438
*/
434-
public void setNotifyReleaseStages(String notifyReleaseStages) {
435-
this.notifyReleaseStages.addAll(split(notifyReleaseStages));
439+
public void setEnabledReleaseStages(String enabledReleaseStages) {
440+
this.enabledReleaseStages.addAll(split(enabledReleaseStages));
436441

437442
if (bugsnag != null) {
438-
bugsnag.setNotifyReleaseStages(this.notifyReleaseStages.toArray(new String[0]));
443+
bugsnag.setEnabledReleaseStages(this.enabledReleaseStages.toArray(new String[0]));
439444
}
440445
}
441446

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

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import java.util.HashMap;
2020
import java.util.List;
2121
import java.util.Map;
22+
import java.util.Set;
2223
import java.util.concurrent.ConcurrentLinkedQueue;
2324
import java.util.concurrent.atomic.AtomicBoolean;
2425

@@ -36,9 +37,9 @@ public class Configuration {
3637
public Delivery delivery;
3738
public EndpointConfiguration endpointConfiguration;
3839
public Delivery sessionDelivery;
39-
public String[] redactedKeys = new String[]{"password", "secret", "Authorization", "Cookie"};
40+
public String[] redactedKeys = new String[] {"password", "secret", "Authorization", "Cookie"};
4041
public String[] ignoreClasses;
41-
public String[] notifyReleaseStages = null;
42+
public Set<String> enabledReleaseStages = null;
4243
public String[] projectPackages;
4344
public String releaseStage;
4445
public boolean sendThreads = false;
@@ -66,12 +67,10 @@ public class Configuration {
6667
}
6768

6869
boolean shouldNotifyForReleaseStage() {
69-
if (notifyReleaseStages == null) {
70+
if (enabledReleaseStages == null) {
7071
return true;
7172
}
72-
73-
List<String> stages = Arrays.asList(notifyReleaseStages);
74-
return stages.contains(releaseStage);
73+
return enabledReleaseStages.contains(releaseStage);
7574
}
7675

7776
boolean shouldIgnoreClass(String className) {

bugsnag/src/test/java/com/bugsnag/AppenderTest.java

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -150,20 +150,16 @@ public void testBugsnagConfig() {
150150
assertTrue(redactedKeys.contains("credit_card_number"));
151151

152152
assertEquals(2, config.ignoreClasses.length);
153-
ArrayList<String> ignoreClasses
154-
= new ArrayList<String>(Arrays.asList(config.ignoreClasses));
153+
ArrayList<String> ignoreClasses = new ArrayList<String>(Arrays.asList(config.ignoreClasses));
155154
assertTrue(ignoreClasses.contains("com.example.Custom"));
156155
assertTrue(ignoreClasses.contains("java.io.IOException"));
157156

158-
assertEquals(2, config.notifyReleaseStages.length);
159-
ArrayList<String> notifyReleaseStages
160-
= new ArrayList<String>(Arrays.asList(config.notifyReleaseStages));
161-
assertTrue(notifyReleaseStages.contains("development"));
162-
assertTrue(notifyReleaseStages.contains("test"));
157+
assertEquals(2, config.enabledReleaseStages.size());
158+
assertTrue(config.enabledReleaseStages.contains("development"));
159+
assertTrue(config.enabledReleaseStages.contains("test"));
163160

164161
assertEquals(2, config.projectPackages.length);
165-
ArrayList<String> projectPackages
166-
= new ArrayList<String>(Arrays.asList(config.projectPackages));
162+
ArrayList<String> projectPackages = new ArrayList<String>(Arrays.asList(config.projectPackages));
167163
assertTrue(projectPackages.contains("com.company.package2"));
168164
assertTrue(projectPackages.contains("com.company.package1"));
169165

@@ -208,7 +204,7 @@ public void testIgnoreClasses() {
208204
}
209205

210206
@Test
211-
public void testNotifyReleaseStages() {
207+
public void testEnabledReleaseStages() {
212208
// Send a log with the release stage set to an excluded one
213209
appender.setReleaseStage("ignoredReleaseStage");
214210
LOGGER.warn("Release stage ignored", new RuntimeException("test"));

bugsnag/src/test/java/com/bugsnag/BugsnagTest.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,14 @@
1717
import org.junit.Test;
1818

1919
import java.io.ByteArrayOutputStream;
20+
2021
import java.net.InetSocketAddress;
2122
import java.net.Proxy;
23+
2224
import java.util.HashMap;
2325
import java.util.Map;
2426
import java.util.Set;
2527

26-
2728
public class BugsnagTest {
2829

2930
private Bugsnag bugsnag;
@@ -73,25 +74,25 @@ public void testIgnoreClasses() {
7374
}
7475

7576
@Test
76-
public void testNotifyReleaseStages() {
77+
public void testEnabledReleaseStages() {
7778
bugsnag.setDelivery(BugsnagTestUtils.generateDelivery());
7879

7980
bugsnag.setReleaseStage("production");
8081

8182
// Never send
82-
bugsnag.setNotifyReleaseStages();
83+
bugsnag.setEnabledReleaseStages();
8384
assertFalse(bugsnag.notify(new Throwable()));
8485

8586
// Ignore 'production'
86-
bugsnag.setNotifyReleaseStages("staging", "development");
87+
bugsnag.setEnabledReleaseStages("staging");
8788
assertFalse(bugsnag.notify(new Throwable()));
8889

8990
// Allow 'production'
90-
bugsnag.setNotifyReleaseStages("production");
91+
bugsnag.setEnabledReleaseStages("production");
9192
assertTrue(bugsnag.notify(new Throwable()));
9293

9394
// Allow 'production' and others
94-
bugsnag.setNotifyReleaseStages("production", "staging", "development");
95+
bugsnag.setEnabledReleaseStages("production");
9596
assertTrue(bugsnag.notify(new Throwable()));
9697
}
9798

bugsnag/src/test/java/com/bugsnag/SessionTrackerTest.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import org.junit.Before;
1515
import org.junit.Test;
1616

17+
import java.util.Collections;
1718
import java.util.Date;
1819
import java.util.List;
1920
import java.util.Map;
@@ -133,15 +134,15 @@ public void run() {
133134

134135
@Test
135136
public void disabledReleaseStage() {
136-
configuration.notifyReleaseStages = new String[]{"prod"};
137+
configuration.enabledReleaseStages = Collections.singleton("prod");
137138
configuration.releaseStage = "dev";
138139
sessionTracker.startSession(new Date(), false);
139140
assertNull(sessionTracker.getSession());
140141
}
141142

142143
@Test
143144
public void enabledReleaseStage() {
144-
configuration.notifyReleaseStages = new String[]{"prod"};
145+
configuration.enabledReleaseStages = Collections.singleton("prod");
145146
configuration.releaseStage = "prod";
146147
sessionTracker.startSession(new Date(), false);
147148
assertNotNull(sessionTracker.getSession());

bugsnag/src/test/resources/logback.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@
1313
<ignoredClass>java.io.IOException</ignoredClass>
1414
<ignoredClass>com.example.Custom</ignoredClass>
1515

16-
<notifyReleaseStage>test</notifyReleaseStage>
17-
<notifyReleaseStage>development</notifyReleaseStage>
16+
<enabledReleaseStage>test</enabledReleaseStage>
17+
<enabledReleaseStage>development</enabledReleaseStage>
1818

1919
<projectPackage>com.company.package1</projectPackage>
2020
<projectPackage>com.company.package2</projectPackage>

examples/logback/src/main/resources/logback.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@
2323
<!--<ignoredClass>java.io.IOException</ignoredClass>-->
2424
<!--<ignoredClass>com.example.Custom</ignoredClass>-->
2525

26-
<!--<notifyReleaseStage>production</notifyReleaseStage>-->
27-
<!--<notifyReleaseStage>development</notifyReleaseStage>-->
26+
<!--<enabledReleaseStage>production</enabledReleaseStage>-->
27+
<!--<enabledReleaseStage>development</enabledReleaseStage>-->
2828

2929
<!--<projectPackage>com.company.package1</projectPackage>-->
3030
<!--<projectPackage>com.company.package2</projectPackage>-->

features/fixtures/logback/ignore_release_stage_config.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
<releaseStage>staging</releaseStage>
88
<appVersion>1.0.0</appVersion>
99

10-
<notifyReleaseStage>production</notifyReleaseStage>
11-
<notifyReleaseStage>development</notifyReleaseStage>
10+
<enabledReleaseStage>production</enabledReleaseStage>
11+
<enabledReleaseStage>development</enabledReleaseStage>
1212

1313
<endpoint>http://localhost:9339/notify</endpoint>
1414
</appender>

features/fixtures/scenarios/src/main/java/com/bugsnag/mazerunner/scenarios/ArrayNotifyReleaseStageScenario.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public ArrayNotifyReleaseStageScenario(Bugsnag bugsnag) {
1414
@Override
1515
public void run() {
1616
bugsnag.setReleaseStage("prod");
17-
bugsnag.setNotifyReleaseStages("dev", "prod");
17+
bugsnag.setEnabledReleaseStages("dev", "prod");
1818
bugsnag.notify(generateException());
1919
}
2020
}

0 commit comments

Comments
 (0)