Skip to content

Commit aa35889

Browse files
Add test.
1 parent 5021740 commit aa35889

File tree

2 files changed

+45
-1
lines changed

2 files changed

+45
-1
lines changed

sentry-spring/src/main/java/io/sentry/spring/SentryInitBeanPostProcessor.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,14 @@
22

33
import com.jakewharton.nopen.annotation.Open;
44
import io.sentry.EventProcessor;
5+
import io.sentry.HubAdapter;
6+
import io.sentry.IHub;
57
import io.sentry.ITransportFactory;
68
import io.sentry.Integration;
79
import io.sentry.Sentry;
810
import io.sentry.SentryOptions;
911
import io.sentry.SentryOptions.TracesSamplerCallback;
12+
import io.sentry.util.Objects;
1013
import org.jetbrains.annotations.NotNull;
1114
import org.jetbrains.annotations.Nullable;
1215
import org.springframework.beans.BeansException;
@@ -24,6 +27,17 @@ public class SentryInitBeanPostProcessor
2427
implements BeanPostProcessor, ApplicationContextAware, DisposableBean {
2528
private @Nullable ApplicationContext applicationContext;
2629

30+
private final @NotNull IHub hub;
31+
32+
public SentryInitBeanPostProcessor() {
33+
this(HubAdapter.getInstance());
34+
}
35+
36+
SentryInitBeanPostProcessor(final @NotNull IHub hub) {
37+
Objects.requireNonNull(hub, "hub is required");
38+
this.hub = hub;
39+
}
40+
2741
@Override
2842
@SuppressWarnings({"unchecked", "deprecation"})
2943
public @NotNull Object postProcessAfterInitialization(
@@ -76,6 +90,6 @@ public void setApplicationContext(final @NotNull ApplicationContext applicationC
7690

7791
@Override
7892
public void destroy() {
79-
Sentry.close();
93+
hub.close();
8094
}
8195
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package io.sentry.spring
2+
3+
import com.nhaarman.mockitokotlin2.mock
4+
import com.nhaarman.mockitokotlin2.verify
5+
import io.sentry.IHub
6+
import org.springframework.context.annotation.AnnotationConfigApplicationContext
7+
import org.springframework.context.annotation.Bean
8+
import org.springframework.context.annotation.Configuration
9+
import kotlin.test.Test
10+
11+
class SentryInitBeanPostProcessorTest {
12+
13+
@Test
14+
fun closesSentryOnApplicationContextDestroy() {
15+
val ctx = AnnotationConfigApplicationContext(TestConfig::class.java)
16+
val hub = ctx.getBean(IHub::class.java)
17+
ctx.close()
18+
verify(hub).close()
19+
}
20+
21+
@Configuration
22+
open class TestConfig {
23+
24+
@Bean(destroyMethod = "")
25+
open fun hub() = mock<IHub>()
26+
27+
@Bean
28+
open fun sentryInitBeanPostProcessor() = SentryInitBeanPostProcessor(hub())
29+
}
30+
}

0 commit comments

Comments
 (0)