From 2a95c310bb18b7fab8f45d5cd4926f5821841759 Mon Sep 17 00:00:00 2001 From: Richard Elms Date: Fri, 28 Nov 2025 15:57:05 +0100 Subject: [PATCH 1/7] fix docker images (#245) * fix docker images * typo fix --- dockerfiles/Dockerfile.java-common | 2 +- dockerfiles/Dockerfile.java17-mazerunner | 2 +- dockerfiles/Dockerfile.java8-mazerunner | 2 +- dockerfiles/Dockerfile.license-audit | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/dockerfiles/Dockerfile.java-common b/dockerfiles/Dockerfile.java-common index 2d4d1224..4ddde7a6 100644 --- a/dockerfiles/Dockerfile.java-common +++ b/dockerfiles/Dockerfile.java-common @@ -1,4 +1,4 @@ -FROM openjdk:17-jdk-slim +FROM eclipse-temurin:17.0.13_11-jdk-jammy WORKDIR /app RUN apt-get update > /dev/null diff --git a/dockerfiles/Dockerfile.java17-mazerunner b/dockerfiles/Dockerfile.java17-mazerunner index f4fef7ff..c354b9d7 100644 --- a/dockerfiles/Dockerfile.java17-mazerunner +++ b/dockerfiles/Dockerfile.java17-mazerunner @@ -1,4 +1,4 @@ -FROM tomcat:10-jdk17-openjdk-slim +FROM tomcat:10.1-jdk17-temurin-jammy WORKDIR /app RUN apt-get update && DEBIAN_FRONTEND=noninteractive \ diff --git a/dockerfiles/Dockerfile.java8-mazerunner b/dockerfiles/Dockerfile.java8-mazerunner index 123f0e30..c354b9d7 100644 --- a/dockerfiles/Dockerfile.java8-mazerunner +++ b/dockerfiles/Dockerfile.java8-mazerunner @@ -1,4 +1,4 @@ -FROM tomcat:9.0.56-jdk8 +FROM tomcat:10.1-jdk17-temurin-jammy WORKDIR /app RUN apt-get update && DEBIAN_FRONTEND=noninteractive \ diff --git a/dockerfiles/Dockerfile.license-audit b/dockerfiles/Dockerfile.license-audit index c94c939f..d6d5d16c 100644 --- a/dockerfiles/Dockerfile.license-audit +++ b/dockerfiles/Dockerfile.license-audit @@ -1,4 +1,4 @@ -FROM openjdk:17-jdk-slim +FROM eclipse-temurin:17.0.13_11-jdk-jammy RUN apt-get update RUN apt-get install -y ruby-full curl From 71d87db4ea88cd57c019be8987689531fc816632 Mon Sep 17 00:00:00 2001 From: Richard Elms Date: Fri, 5 Dec 2025 15:18:39 +0100 Subject: [PATCH 2/7] Amend secondary instance URL to bugsnag.smartbear.com (#244) --- .../java/com/bugsnag/EndpointConfiguration.java | 10 +++++----- .../test/java/com/bugsnag/ConfigurationTest.java | 16 ++++++++-------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/bugsnag/src/main/java/com/bugsnag/EndpointConfiguration.java b/bugsnag/src/main/java/com/bugsnag/EndpointConfiguration.java index d129028d..60e8582a 100644 --- a/bugsnag/src/main/java/com/bugsnag/EndpointConfiguration.java +++ b/bugsnag/src/main/java/com/bugsnag/EndpointConfiguration.java @@ -4,9 +4,9 @@ public class EndpointConfiguration { private static final String DEFAULT_NOTIFY_ENDPOINT = "https://notify.bugsnag.com"; private static final String DEFAULT_SESSION_ENDPOINT = "https://sessions.bugsnag.com"; - private static final String HUB_NOTIFY_ENDPOINT = "https://notify.insighthub.smartbear.com"; - private static final String HUB_SESSION_ENDPOINT = "https://sessions.insighthub.smartbear.com"; - private static final String HUB_KEY_PREFIX = "00000"; + private static final String SECONDARY_NOTIFY_ENDPOINT = "https://notify.bugsnag.smartbear.com"; + private static final String SECONDARY_SESSION_ENDPOINT = "https://sessions.bugsnag.smartbear.com"; + private static final String SECONDARY_KEY_PREFIX = "00000"; private final String notifyEndpoint; private final String sessionEndpoint; @@ -30,8 +30,8 @@ public EndpointConfiguration(String notify, String sessions) { * Constructs an EndpointConfiguration with default notify and session endpoints. */ public static EndpointConfiguration fromApiKey(String apiKey) { - if (apiKey != null && apiKey.startsWith(HUB_KEY_PREFIX)) { - return new EndpointConfiguration(HUB_NOTIFY_ENDPOINT, HUB_SESSION_ENDPOINT); + if (apiKey != null && apiKey.startsWith(SECONDARY_KEY_PREFIX)) { + return new EndpointConfiguration(SECONDARY_NOTIFY_ENDPOINT, SECONDARY_SESSION_ENDPOINT); } else { return new EndpointConfiguration(DEFAULT_NOTIFY_ENDPOINT, DEFAULT_SESSION_ENDPOINT); } diff --git a/bugsnag/src/test/java/com/bugsnag/ConfigurationTest.java b/bugsnag/src/test/java/com/bugsnag/ConfigurationTest.java index f45d28bd..1cb97831 100644 --- a/bugsnag/src/test/java/com/bugsnag/ConfigurationTest.java +++ b/bugsnag/src/test/java/com/bugsnag/ConfigurationTest.java @@ -26,7 +26,7 @@ public class ConfigurationTest { - private static final String HUB_KEY = "00000aaaaaaaaaaaaaaaaaaaaaaaaaaa"; + private static final String SECONDARY_KEY = "00000aaaaaaaaaaaaaaaaaaaaaaaaaaa"; private static final String CLASSIC_KEY = "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"; private Configuration config; @@ -176,14 +176,14 @@ public void testStaticEndpointHelpers() { assertEquals(defaultSessionEndpoint, normalConfig.getSessionEndpoint()); - String hubNotifyEndpoint = "https://notify.insighthub.smartbear.com"; - String hubSessionEndpoint = "https://sessions.insighthub.smartbear.com"; - EndpointConfiguration hubConfig = EndpointConfiguration.fromApiKey(HUB_KEY); + String secondaryNotifyEndpoint = "https://notify.bugsnag.smartbear.com"; + String secondarySessionEndpoint = "https://sessions.bugsnag.smartbear.com"; + EndpointConfiguration secondaryConfig = EndpointConfiguration.fromApiKey(SECONDARY_KEY); - assertEquals(hubNotifyEndpoint, - hubConfig.getNotifyEndpoint()); - assertEquals(hubSessionEndpoint, - hubConfig.getSessionEndpoint()); + assertEquals(secondaryNotifyEndpoint, + secondaryConfig.getNotifyEndpoint()); + assertEquals(secondarySessionEndpoint, + secondaryConfig.getSessionEndpoint()); } From 1c84ce4560ed0fe139ffbfeb0a85f2c18253a05c Mon Sep 17 00:00:00 2001 From: SB-sachinp Date: Mon, 13 Apr 2026 16:24:17 +0530 Subject: [PATCH 3/7] Fix: remove bugsnag.buildReport(exception); & remove bugsnag.setTimeout --- .../src/main/java/com/bugsnag/BugsnagAppender.java | 7 ------- .../java/com/bugsnag/JakartaServletCallbackTest.java | 12 ++++++------ .../java/com/bugsnag/JavaxServletCallbackTest.java | 12 ++++++------ 3 files changed, 12 insertions(+), 19 deletions(-) diff --git a/bugsnag/src/main/java/com/bugsnag/BugsnagAppender.java b/bugsnag/src/main/java/com/bugsnag/BugsnagAppender.java index 5d3cd23d..41313b5a 100644 --- a/bugsnag/src/main/java/com/bugsnag/BugsnagAppender.java +++ b/bugsnag/src/main/java/com/bugsnag/BugsnagAppender.java @@ -250,9 +250,6 @@ private Bugsnag createBugsnag() { bugsnag.setReleaseStage(releaseStage); } - if (timeout > 0) { - bugsnag.setTimeout(timeout); - } if (filteredProperties.size() > 0) { bugsnag.setFilters(filteredProperties.toArray(new String[0])); @@ -503,10 +500,6 @@ public void setSendThreads(boolean sendThreads) { */ public void setTimeout(int timeout) { this.timeout = timeout; - - if (bugsnag != null) { - bugsnag.setTimeout(timeout); - } } /** diff --git a/bugsnag/src/test/java/com/bugsnag/JakartaServletCallbackTest.java b/bugsnag/src/test/java/com/bugsnag/JakartaServletCallbackTest.java index 5bd78ec4..fd699d0e 100644 --- a/bugsnag/src/test/java/com/bugsnag/JakartaServletCallbackTest.java +++ b/bugsnag/src/test/java/com/bugsnag/JakartaServletCallbackTest.java @@ -81,7 +81,8 @@ public void closeBugsnag() { @SuppressWarnings("unchecked") @Test public void testRequestMetadataAdded() { - Report report = generateReport(new java.lang.Exception("Spline reticulation failed")); + java.lang.Exception exception = new java.lang.Exception("Spline reticulation failed"); + Report report = new Report(bugsnag.getConfig(), exception); JakartaServletCallback callback = new JakartaServletCallback(); callback.beforeNotify(report); @@ -118,7 +119,8 @@ public void testRequestMetadataAdded() { @Test public void testRequestContextSet() { - Report report = generateReport(new java.lang.Exception("Spline reticulation failed")); + java.lang.Exception exception = new java.lang.Exception("Spline reticulation failed"); + Report report = new Report(bugsnag.getConfig(), exception); JakartaServletCallback callback = new JakartaServletCallback(); callback.beforeNotify(report); @@ -127,7 +129,8 @@ public void testRequestContextSet() { @Test public void testExistingContextNotOverridden() { - Report report = generateReport(new java.lang.Exception("Spline reticulation failed")); + java.lang.Exception exception = new java.lang.Exception("Spline reticulation failed"); + Report report = new Report(bugsnag.getConfig(), exception); report.setContext("Honey nut corn flakes"); JakartaServletCallback callback = new JakartaServletCallback(); callback.beforeNotify(report); @@ -135,9 +138,6 @@ public void testExistingContextNotOverridden() { assertEquals("Honey nut corn flakes", report.getContext()); } - private Report generateReport(java.lang.Exception exception) { - return bugsnag.buildReport(exception); - } private Enumeration stringsToEnumeration(String... strings) { return Collections.enumeration(Arrays.asList(strings)); diff --git a/bugsnag/src/test/java/com/bugsnag/JavaxServletCallbackTest.java b/bugsnag/src/test/java/com/bugsnag/JavaxServletCallbackTest.java index bd51a02b..611d3faf 100644 --- a/bugsnag/src/test/java/com/bugsnag/JavaxServletCallbackTest.java +++ b/bugsnag/src/test/java/com/bugsnag/JavaxServletCallbackTest.java @@ -81,7 +81,8 @@ public void closeBugsnag() { @SuppressWarnings("unchecked") @Test public void testRequestMetadataAdded() { - Report report = generateReport(new java.lang.Exception("Spline reticulation failed")); + java.lang.Exception exception = new java.lang.Exception("Spline reticulation failed"); + Report report = new Report(bugsnag.getConfig(), exception); JavaxServletCallback callback = new JavaxServletCallback(); callback.beforeNotify(report); @@ -118,7 +119,8 @@ public void testRequestMetadataAdded() { @Test public void testRequestContextSet() { - Report report = generateReport(new java.lang.Exception("Spline reticulation failed")); + java.lang.Exception exception = new java.lang.Exception("Spline reticulation failed"); + Report report = new Report(bugsnag.getConfig(), exception); JavaxServletCallback callback = new JavaxServletCallback(); callback.beforeNotify(report); @@ -127,7 +129,8 @@ public void testRequestContextSet() { @Test public void testExistingContextNotOverridden() { - Report report = generateReport(new java.lang.Exception("Spline reticulation failed")); + java.lang.Exception exception = new java.lang.Exception("Spline reticulation failed"); + Report report = new Report(bugsnag.getConfig(), exception); report.setContext("Honey nut corn flakes"); JavaxServletCallback callback = new JavaxServletCallback(); callback.beforeNotify(report); @@ -135,9 +138,6 @@ public void testExistingContextNotOverridden() { assertEquals("Honey nut corn flakes", report.getContext()); } - private Report generateReport(java.lang.Exception exception) { - return bugsnag.buildReport(exception); - } private Enumeration stringsToEnumeration(String... strings) { return Collections.enumeration(Arrays.asList(strings)); From dda627e4cb12cf9bf7a9ec87db29a3f8278d8842 Mon Sep 17 00:00:00 2001 From: SB-sachinp Date: Mon, 13 Apr 2026 17:18:22 +0530 Subject: [PATCH 4/7] Fix: remove bugsnag.buildReport(exception); & remove bugsnag.setTimeout --- .../java/com/bugsnag/JakartaServletCallbackTest.java | 9 +++------ .../test/java/com/bugsnag/JavaxServletCallbackTest.java | 9 +++------ 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/bugsnag/src/test/java/com/bugsnag/JakartaServletCallbackTest.java b/bugsnag/src/test/java/com/bugsnag/JakartaServletCallbackTest.java index fd699d0e..615f5cc0 100644 --- a/bugsnag/src/test/java/com/bugsnag/JakartaServletCallbackTest.java +++ b/bugsnag/src/test/java/com/bugsnag/JakartaServletCallbackTest.java @@ -81,8 +81,7 @@ public void closeBugsnag() { @SuppressWarnings("unchecked") @Test public void testRequestMetadataAdded() { - java.lang.Exception exception = new java.lang.Exception("Spline reticulation failed"); - Report report = new Report(bugsnag.getConfig(), exception); + Report report = new Report(bugsnag.getConfig(), new java.lang.Exception("Spline reticulation failed")); JakartaServletCallback callback = new JakartaServletCallback(); callback.beforeNotify(report); @@ -119,8 +118,7 @@ public void testRequestMetadataAdded() { @Test public void testRequestContextSet() { - java.lang.Exception exception = new java.lang.Exception("Spline reticulation failed"); - Report report = new Report(bugsnag.getConfig(), exception); + Report report = new Report(bugsnag.getConfig(), new java.lang.Exception("Spline reticulation failed")); JakartaServletCallback callback = new JakartaServletCallback(); callback.beforeNotify(report); @@ -129,8 +127,7 @@ public void testRequestContextSet() { @Test public void testExistingContextNotOverridden() { - java.lang.Exception exception = new java.lang.Exception("Spline reticulation failed"); - Report report = new Report(bugsnag.getConfig(), exception); + Report report = new Report(bugsnag.getConfig(), new java.lang.Exception("Spline reticulation failed")); report.setContext("Honey nut corn flakes"); JakartaServletCallback callback = new JakartaServletCallback(); callback.beforeNotify(report); diff --git a/bugsnag/src/test/java/com/bugsnag/JavaxServletCallbackTest.java b/bugsnag/src/test/java/com/bugsnag/JavaxServletCallbackTest.java index 611d3faf..368f5d0b 100644 --- a/bugsnag/src/test/java/com/bugsnag/JavaxServletCallbackTest.java +++ b/bugsnag/src/test/java/com/bugsnag/JavaxServletCallbackTest.java @@ -81,8 +81,7 @@ public void closeBugsnag() { @SuppressWarnings("unchecked") @Test public void testRequestMetadataAdded() { - java.lang.Exception exception = new java.lang.Exception("Spline reticulation failed"); - Report report = new Report(bugsnag.getConfig(), exception); + Report report = new Report(bugsnag.getConfig(), new java.lang.Exception("Spline reticulation failed")); JavaxServletCallback callback = new JavaxServletCallback(); callback.beforeNotify(report); @@ -119,8 +118,7 @@ public void testRequestMetadataAdded() { @Test public void testRequestContextSet() { - java.lang.Exception exception = new java.lang.Exception("Spline reticulation failed"); - Report report = new Report(bugsnag.getConfig(), exception); + Report report = new Report(bugsnag.getConfig(), new java.lang.Exception("Spline reticulation failed")); JavaxServletCallback callback = new JavaxServletCallback(); callback.beforeNotify(report); @@ -129,8 +127,7 @@ public void testRequestContextSet() { @Test public void testExistingContextNotOverridden() { - java.lang.Exception exception = new java.lang.Exception("Spline reticulation failed"); - Report report = new Report(bugsnag.getConfig(), exception); + Report report = new Report(bugsnag.getConfig(), new java.lang.Exception("Spline reticulation failed")); report.setContext("Honey nut corn flakes"); JavaxServletCallback callback = new JavaxServletCallback(); callback.beforeNotify(report); From 35cde711b62584cb30b14a2a80046671e5cc843b Mon Sep 17 00:00:00 2001 From: SB-sachinp Date: Tue, 21 Apr 2026 17:12:20 +0530 Subject: [PATCH 5/7] Fix: resolve checkstyle line length violations in JakartaServletCallbackTest.java - Break long lines (>120 chars) across multiple lines - Lines 84, 121, 130: BugsnagEvent constructor calls split to comply with checkstyle --- .../java/com/bugsnag/JakartaServletCallbackTest.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/bugsnag/src/test/java/com/bugsnag/JakartaServletCallbackTest.java b/bugsnag/src/test/java/com/bugsnag/JakartaServletCallbackTest.java index 5e1e6c68..3725472f 100644 --- a/bugsnag/src/test/java/com/bugsnag/JakartaServletCallbackTest.java +++ b/bugsnag/src/test/java/com/bugsnag/JakartaServletCallbackTest.java @@ -81,7 +81,8 @@ public void closeBugsnag() { @SuppressWarnings("unchecked") @Test public void testRequestMetadataAdded() { - BugsnagEvent event = new BugsnagEvent(bugsnag.getConfig(), new java.lang.Exception("Spline reticulation failed")); + BugsnagEvent event = new BugsnagEvent(bugsnag.getConfig(), + new java.lang.Exception("Spline reticulation failed")); JakartaServletCallback callback = new JakartaServletCallback(); callback.onError(event); @@ -118,7 +119,8 @@ public void testRequestMetadataAdded() { @Test public void testRequestContextSet() { - BugsnagEvent event = new BugsnagEvent(bugsnag.getConfig(), new java.lang.Exception("Spline reticulation failed")); + BugsnagEvent event = new BugsnagEvent(bugsnag.getConfig(), + new java.lang.Exception("Spline reticulation failed")); JakartaServletCallback callback = new JakartaServletCallback(); callback.onError(event); @@ -127,7 +129,8 @@ public void testRequestContextSet() { @Test public void testExistingContextNotOverridden() { - BugsnagEvent event = new BugsnagEvent(bugsnag.getConfig(), new java.lang.Exception("Spline reticulation failed")); + BugsnagEvent event = new BugsnagEvent(bugsnag.getConfig(), + new java.lang.Exception("Spline reticulation failed")); event.setContext("Honey nut corn flakes"); JakartaServletCallback callback = new JakartaServletCallback(); callback.onError(event); From 51f9c511a7bca9c6201ec6e0275fbbc60dd7d1c6 Mon Sep 17 00:00:00 2001 From: SB-sachinp Date: Wed, 22 Apr 2026 14:19:43 +0530 Subject: [PATCH 6/7] Fix: remove bugsnag.buildReport(exception); & remove bugsnag.setTimeout --- .../src/main/java/com/bugsnag/Bugsnag.java | 56 +++++++------------ .../java/com/bugsnag/BugsnagAppender.java | 8 --- .../com/bugsnag/BugsnagFeatureFlagTest.java | 23 +++++--- .../com/bugsnag/EventFeatureFlagTest.java | 29 ++++++---- 4 files changed, 52 insertions(+), 64 deletions(-) diff --git a/bugsnag/src/main/java/com/bugsnag/Bugsnag.java b/bugsnag/src/main/java/com/bugsnag/Bugsnag.java index ac705502..59d9329c 100644 --- a/bugsnag/src/main/java/com/bugsnag/Bugsnag.java +++ b/bugsnag/src/main/java/com/bugsnag/Bugsnag.java @@ -318,43 +318,10 @@ public void setSendThreads(ThreadSendPolicy sendThreads) { config.setSendThreads(sendThreads); } - /** - * Set a timeout (in ms) to use when delivering Bugsnag error reports and - * sessions. - * This is a convenient shorthand for bugsnag.getDelivery().setTimeout(); - * - * @param timeout the timeout to set (in ms) - * @see #setDelivery - */ - public void setTimeout(int timeout) { - Delivery delivery = config.getDelivery(); - if (delivery instanceof HttpDelivery) { - ((HttpDelivery) delivery).setTimeout(timeout); - } - - Delivery sessionDelivery = config.getSessionDelivery(); - if (sessionDelivery instanceof HttpDelivery) { - ((HttpDelivery) sessionDelivery).setTimeout(timeout); - } - } - // // Notification // - /** - * Build an Report object to send to Bugsnag. - * - * @param throwable the exception to send to Bugsnag - * @return the report object - * @see BugsnagEvent - * @see #notify(BugsnagEvent) - */ - public BugsnagEvent buildReport(Throwable throwable) { - HandledState handledState = HandledState.newInstance( - HandledState.SeverityReasonType.REASON_HANDLED_EXCEPTION); - return new BugsnagEvent(config, throwable, handledState, Thread.currentThread(), featureFlagStore); - } /** * Notify Bugsnag of a handled exception. @@ -363,7 +330,11 @@ public BugsnagEvent buildReport(Throwable throwable) { * @return true unless the error report was ignored */ public boolean notify(Throwable throwable) { - return notify(buildReport(throwable)); + HandledState handledState = HandledState.newInstance( + HandledState.SeverityReasonType.REASON_HANDLED_EXCEPTION); + BugsnagEvent event = new BugsnagEvent(config, throwable, handledState, + Thread.currentThread(), featureFlagStore); + return notify(event); } /** @@ -374,7 +345,11 @@ public boolean notify(Throwable throwable) { * @return true unless the error report was ignored */ public boolean notify(Throwable throwable, OnErrorCallback callback) { - return notify(buildReport(throwable), callback); + HandledState handledState = HandledState.newInstance( + HandledState.SeverityReasonType.REASON_HANDLED_EXCEPTION); + BugsnagEvent event = new BugsnagEvent(config, throwable, handledState, + Thread.currentThread(), featureFlagStore); + return notify(event, callback); } /** @@ -429,7 +404,6 @@ public boolean notify(Throwable throwable, Severity severity, OnErrorCallback ca * @param event the {@link BugsnagEvent} object to send to Bugsnag * @return true unless the error report was ignored * @see BugsnagEvent - * @see #buildReport */ public boolean notify(BugsnagEvent event) { return notify(event, null); @@ -448,7 +422,6 @@ boolean notify(Throwable throwable, HandledState handledState, Thread currentThr * @param reportCallback the {@link OnErrorCallback} object to run for this Report * @return false if the error report was ignored * @see BugsnagEvent - * @see #buildReport */ public boolean notify(BugsnagEvent event, OnErrorCallback reportCallback) { if (event == null) { @@ -748,4 +721,13 @@ public void clearFeatureFlags() { FeatureFlagStore copyFeatureFlagStore() { return featureFlagStore.copy(); } + + /** + * Get a copy of the feature flag store (package-private for testing). + * + * @return a copy of the feature flag store + */ + FeatureFlagStore getFeatureFlagStoreCopy() { + return featureFlagStore.copy(); + } } diff --git a/bugsnag/src/main/java/com/bugsnag/BugsnagAppender.java b/bugsnag/src/main/java/com/bugsnag/BugsnagAppender.java index 1e3ac360..ce6f41dd 100644 --- a/bugsnag/src/main/java/com/bugsnag/BugsnagAppender.java +++ b/bugsnag/src/main/java/com/bugsnag/BugsnagAppender.java @@ -71,8 +71,6 @@ public class BugsnagAppender extends UnsynchronizedAppenderBase { /** Whether thread state should be sent to Bugsnag. */ private ThreadSendPolicy sendThreads = ThreadSendPolicy.NEVER; - /** Bugsnag API request timeout. */ - private int timeout; /** Application version. */ private String appVersion; @@ -534,12 +532,6 @@ public void setSendThreads(ThreadSendPolicy sendThreads) { } } - /** - * @see Bugsnag#setTimeout(int) - */ - public void setTimeout(int timeout) { - this.timeout = timeout; - } /** * @see Bugsnag#setAppVersion(String) diff --git a/bugsnag/src/test/java/com/bugsnag/BugsnagFeatureFlagTest.java b/bugsnag/src/test/java/com/bugsnag/BugsnagFeatureFlagTest.java index 20ab1404..bb631f00 100644 --- a/bugsnag/src/test/java/com/bugsnag/BugsnagFeatureFlagTest.java +++ b/bugsnag/src/test/java/com/bugsnag/BugsnagFeatureFlagTest.java @@ -26,11 +26,18 @@ public void tearDown() { bugsnag.close(); } + private BugsnagEvent createEvent(Bugsnag client, Exception exception) { + HandledState handledState = HandledState.newInstance( + HandledState.SeverityReasonType.REASON_HANDLED_EXCEPTION); + return new BugsnagEvent(client.getConfig(), exception, handledState, + Thread.currentThread(), client.getFeatureFlagStoreCopy()); + } + @Test public void testAddFeatureFlag() { bugsnag.addFeatureFlag("flag1", "variant-a"); - BugsnagEvent event = bugsnag.buildReport(new RuntimeException("Test")); + BugsnagEvent event = createEvent(bugsnag, new RuntimeException("Test")); List flags = event.getFeatureFlags(); assertEquals(1, flags.size()); @@ -42,7 +49,7 @@ public void testAddFeatureFlag() { public void testAddFeatureFlagWithoutVariant() { bugsnag.addFeatureFlag("flag1"); - BugsnagEvent event = bugsnag.buildReport(new RuntimeException("Test")); + BugsnagEvent event = createEvent(bugsnag, new RuntimeException("Test")); List flags = event.getFeatureFlags(); assertEquals(1, flags.size()); @@ -58,7 +65,7 @@ public void testAddFeatureFlags() { bugsnag.addFeatureFlags(flagsToAdd); - BugsnagEvent event = bugsnag.buildReport(new RuntimeException("Test")); + BugsnagEvent event = createEvent(bugsnag, new RuntimeException("Test")); List flags = event.getFeatureFlags(); assertEquals(2, flags.size()); @@ -72,7 +79,7 @@ public void testClearFeatureFlag() { bugsnag.addFeatureFlag("flag2", "variant-b"); bugsnag.clearFeatureFlag("flag1"); - BugsnagEvent event = bugsnag.buildReport(new RuntimeException("Test")); + BugsnagEvent event = createEvent(bugsnag, new RuntimeException("Test")); List flags = event.getFeatureFlags(); assertEquals(1, flags.size()); @@ -85,7 +92,7 @@ public void testClearFeatureFlags() { bugsnag.addFeatureFlag("flag2", "variant-b"); bugsnag.clearFeatureFlags(); - BugsnagEvent event = bugsnag.buildReport(new RuntimeException("Test")); + BugsnagEvent event = createEvent(bugsnag, new RuntimeException("Test")); List flags = event.getFeatureFlags(); assertEquals(0, flags.size()); @@ -99,7 +106,7 @@ public void testClientFlagsInheritFromConfiguration() { Bugsnag client = new Bugsnag("api-key", false); client.getConfig().addFeatureFlag("config-flag", "config-variant"); - BugsnagEvent event = client.buildReport(new RuntimeException("Test")); + BugsnagEvent event = createEvent(client, new RuntimeException("Test")); List flags = event.getFeatureFlags(); assertEquals(1, flags.size()); @@ -118,7 +125,7 @@ public void testClientFlagsOverrideConfigurationFlags() { client.getConfig().addFeatureFlag("flag1", "config-variant"); client.addFeatureFlag("flag1", "client-variant"); - BugsnagEvent event = client.buildReport(new RuntimeException("Test")); + BugsnagEvent event = createEvent(client, new RuntimeException("Test")); List flags = event.getFeatureFlags(); assertEquals(1, flags.size()); @@ -139,7 +146,7 @@ public void testFeatureFlagOrderPreservedAcrossScopes() { client.getConfig().addFeatureFlag("flag2", "config-variant"); client.addFeatureFlag("flag3", "client-variant"); - BugsnagEvent event = client.buildReport(new RuntimeException("Test")); + BugsnagEvent event = createEvent(client, new RuntimeException("Test")); List flags = event.getFeatureFlags(); assertEquals(3, flags.size()); diff --git a/bugsnag/src/test/java/com/bugsnag/EventFeatureFlagTest.java b/bugsnag/src/test/java/com/bugsnag/EventFeatureFlagTest.java index 52287070..75e2ca87 100644 --- a/bugsnag/src/test/java/com/bugsnag/EventFeatureFlagTest.java +++ b/bugsnag/src/test/java/com/bugsnag/EventFeatureFlagTest.java @@ -26,9 +26,16 @@ public void tearDown() { bugsnag.close(); } + private BugsnagEvent createEvent(Bugsnag client, Exception exception) { + HandledState handledState = HandledState.newInstance( + HandledState.SeverityReasonType.REASON_HANDLED_EXCEPTION); + return new BugsnagEvent(client.getConfig(), exception, handledState, + Thread.currentThread(), client.getFeatureFlagStoreCopy()); + } + @Test public void testAddFeatureFlagOnReport() { - BugsnagEvent event = bugsnag.buildReport(new RuntimeException("Test")); + BugsnagEvent event = createEvent(bugsnag, new RuntimeException("Test")); event.addFeatureFlag("report-flag", "report-variant"); List flags = event.getFeatureFlags(); @@ -40,7 +47,7 @@ public void testAddFeatureFlagOnReport() { @Test public void testAddFeatureFlagWithoutVariant() { - BugsnagEvent event = bugsnag.buildReport(new RuntimeException("Test")); + BugsnagEvent event = createEvent(bugsnag, new RuntimeException("Test")); event.addFeatureFlag("report-flag"); List flags = event.getFeatureFlags(); @@ -56,7 +63,7 @@ public void testAddFeatureFlags() { flagsToAdd.add(FeatureFlag.of("flag1", "variant-a")); flagsToAdd.add(FeatureFlag.of("flag2", "variant-b")); - BugsnagEvent event = bugsnag.buildReport(new RuntimeException("Test")); + BugsnagEvent event = createEvent(bugsnag, new RuntimeException("Test")); event.addFeatureFlags(flagsToAdd); List flags = event.getFeatureFlags(); @@ -68,7 +75,7 @@ public void testAddFeatureFlags() { @Test public void testClearFeatureFlag() { - BugsnagEvent event = bugsnag.buildReport(new RuntimeException("Test")); + BugsnagEvent event = createEvent(bugsnag, new RuntimeException("Test")); event.addFeatureFlag("flag1", "variant-a"); event.addFeatureFlag("flag2", "variant-b"); event.clearFeatureFlag("flag1"); @@ -81,7 +88,7 @@ public void testClearFeatureFlag() { @Test public void testClearFeatureFlags() { - BugsnagEvent event = bugsnag.buildReport(new RuntimeException("Test")); + BugsnagEvent event = createEvent(bugsnag, new RuntimeException("Test")); event.addFeatureFlag("flag1", "variant-a"); event.addFeatureFlag("flag2", "variant-b"); event.clearFeatureFlags(); @@ -95,7 +102,7 @@ public void testClearFeatureFlags() { public void testReportFlagsInheritFromClient() { bugsnag.addFeatureFlag("client-flag", "client-variant"); - BugsnagEvent event = bugsnag.buildReport(new RuntimeException("Test")); + BugsnagEvent event = createEvent(bugsnag, new RuntimeException("Test")); List flags = event.getFeatureFlags(); assertEquals(1, flags.size()); @@ -107,7 +114,7 @@ public void testReportFlagsInheritFromClient() { public void testReportFlagsOverrideClientFlags() { bugsnag.addFeatureFlag("flag1", "client-variant"); - BugsnagEvent event = bugsnag.buildReport(new RuntimeException("Test")); + BugsnagEvent event = createEvent(bugsnag, new RuntimeException("Test")); event.addFeatureFlag("flag1", "report-variant"); List flags = event.getFeatureFlags(); @@ -128,7 +135,7 @@ public void testFeatureFlagOrderAcrossAllScopes() { bugsnag.addFeatureFlag("flag3", "client-variant"); // Add flags to report (one new, one override) - BugsnagEvent event = bugsnag.buildReport(new RuntimeException("Test")); + BugsnagEvent event = createEvent(bugsnag, new RuntimeException("Test")); event.addFeatureFlag("flag3", "report-variant"); event.addFeatureFlag("flag4", "report-variant"); @@ -152,7 +159,7 @@ public void testClearAndReAddChangesPosition() { bugsnag.getConfig().addFeatureFlag("flag2", "value2"); bugsnag.getConfig().clearFeatureFlag("flag1"); - BugsnagEvent event = bugsnag.buildReport(new RuntimeException("Test")); + BugsnagEvent event = createEvent(bugsnag, new RuntimeException("Test")); event.addFeatureFlag("flag1", "value1-readded"); List flags = event.getFeatureFlags(); @@ -166,7 +173,7 @@ public void testClearAndReAddChangesPosition() { @Test public void testFeatureFlagChaining() { - BugsnagEvent event = bugsnag.buildReport(new RuntimeException("Test")); + BugsnagEvent event = createEvent(bugsnag, new RuntimeException("Test")); event.addFeatureFlag("flag1", "variant-a") .addFeatureFlag("flag2", "variant-b") @@ -192,7 +199,7 @@ public void testMultipleScopesMaintainInsertionOrder() { // Report adds flag1 with updated value (overrides config value but keeps position) // and adds flag2 with updated value - BugsnagEvent event = bugsnag.buildReport(new RuntimeException("Test")); + BugsnagEvent event = createEvent(bugsnag, new RuntimeException("Test")); event.addFeatureFlag("flag1", "value1-updated"); event.addFeatureFlag("flag2", "value2-updated"); From f0d25fcbff574243350533acd885895c72f039bc Mon Sep 17 00:00:00 2001 From: SB-sachinp Date: Thu, 23 Apr 2026 13:40:20 +0530 Subject: [PATCH 7/7] Build Kite error fix. --- bugsnag/src/test/java/com/bugsnag/EventFeatureFlagTest.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/bugsnag/src/test/java/com/bugsnag/EventFeatureFlagTest.java b/bugsnag/src/test/java/com/bugsnag/EventFeatureFlagTest.java index 75e2ca87..98abc148 100644 --- a/bugsnag/src/test/java/com/bugsnag/EventFeatureFlagTest.java +++ b/bugsnag/src/test/java/com/bugsnag/EventFeatureFlagTest.java @@ -1,6 +1,7 @@ package com.bugsnag; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; import org.junit.After; import org.junit.Before; @@ -54,12 +55,12 @@ public void testAddFeatureFlagWithoutVariant() { assertEquals(1, flags.size()); assertEquals("report-flag", flags.get(0).getName()); - assertEquals(null, flags.get(0).getVariant()); + assertNull(flags.get(0).getVariant()); } @Test public void testAddFeatureFlags() { - List flagsToAdd = new ArrayList(); + List flagsToAdd = new ArrayList<>(); flagsToAdd.add(FeatureFlag.of("flag1", "variant-a")); flagsToAdd.add(FeatureFlag.of("flag2", "variant-b"));