Skip to content

Commit 4573e93

Browse files
lblodergetsentry-botadinauer
authored
Fix not eligible for auto proxying warnings (#3154)
* mark all aop related configurations and beans with @ROLE infrastructure to fix the not eligible for auto-proxying warnings caused and remove hub dependency * Format code * add changelog * make api * restore advice constructors * fix tests --------- Co-authored-by: Sentry Github Bot <bot+github-bot@sentry.io> Co-authored-by: Alexander Dinauer <alexander.dinauer@sentry.io>
1 parent 2465853 commit 4573e93

33 files changed

+203
-46
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@
1212
- Add options and sampling logic ([#3121](https://github.com/getsentry/sentry-java/pull/3121))
1313
- Add ContentProvider and start profile ([#3128](https://github.com/getsentry/sentry-java/pull/3128))
1414

15+
### Fixes
16+
17+
- Fix not eligible for auto proxying warnings ([#3154](https://github.com/getsentry/sentry-java/pull/3154))
18+
1519
### Breaking changes
1620

1721
- Remove `HostnameVerifier` option as it's flagged by security tools of some app stores ([#3150](https://github.com/getsentry/sentry-java/pull/3150))

sentry-spring-jakarta/api/sentry-spring-jakarta.api

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -95,13 +95,14 @@ public abstract interface annotation class io/sentry/spring/jakarta/checkin/Sent
9595
}
9696

9797
public class io/sentry/spring/jakarta/checkin/SentryCheckInAdvice : org/aopalliance/intercept/MethodInterceptor {
98+
public fun <init> ()V
9899
public fun <init> (Lio/sentry/IHub;)V
99100
public fun invoke (Lorg/aopalliance/intercept/MethodInvocation;)Ljava/lang/Object;
100101
}
101102

102103
public class io/sentry/spring/jakarta/checkin/SentryCheckInAdviceConfiguration {
103104
public fun <init> ()V
104-
public fun sentryCheckInAdvice (Lio/sentry/IHub;)Lorg/aopalliance/aop/Advice;
105+
public fun sentryCheckInAdvice ()Lorg/aopalliance/aop/Advice;
105106
public fun sentryCheckInAdvisor (Lorg/springframework/aop/Pointcut;Lorg/aopalliance/aop/Advice;)Lorg/springframework/aop/Advisor;
106107
}
107108

@@ -124,6 +125,7 @@ public abstract interface annotation class io/sentry/spring/jakarta/exception/Se
124125
}
125126

126127
public class io/sentry/spring/jakarta/exception/SentryCaptureExceptionParameterAdvice : org/aopalliance/intercept/MethodInterceptor {
128+
public fun <init> ()V
127129
public fun <init> (Lio/sentry/IHub;)V
128130
public fun invoke (Lorg/aopalliance/intercept/MethodInvocation;)Ljava/lang/Object;
129131
}
@@ -139,7 +141,7 @@ public class io/sentry/spring/jakarta/exception/SentryCaptureExceptionParameterP
139141

140142
public class io/sentry/spring/jakarta/exception/SentryExceptionParameterAdviceConfiguration {
141143
public fun <init> ()V
142-
public fun sentryCaptureExceptionParameterAdvice (Lio/sentry/IHub;)Lorg/aopalliance/aop/Advice;
144+
public fun sentryCaptureExceptionParameterAdvice ()Lorg/aopalliance/aop/Advice;
143145
public fun sentryCaptureExceptionParameterAdvisor (Lorg/springframework/aop/Pointcut;Lorg/aopalliance/aop/Advice;)Lorg/springframework/aop/Advisor;
144146
}
145147

@@ -190,9 +192,9 @@ public final class io/sentry/spring/jakarta/graphql/SentrySpringSubscriptionHand
190192

191193
public class io/sentry/spring/jakarta/tracing/SentryAdviceConfiguration {
192194
public fun <init> ()V
193-
public fun sentrySpanAdvice (Lio/sentry/IHub;)Lorg/aopalliance/aop/Advice;
195+
public fun sentrySpanAdvice ()Lorg/aopalliance/aop/Advice;
194196
public fun sentrySpanAdvisor (Lorg/springframework/aop/Pointcut;Lorg/aopalliance/aop/Advice;)Lorg/springframework/aop/Advisor;
195-
public fun sentryTransactionAdvice (Lio/sentry/IHub;)Lorg/aopalliance/aop/Advice;
197+
public fun sentryTransactionAdvice ()Lorg/aopalliance/aop/Advice;
196198
public fun sentryTransactionAdvisor (Lorg/springframework/aop/Pointcut;Lorg/aopalliance/aop/Advice;)Lorg/springframework/aop/Advisor;
197199
}
198200

@@ -203,6 +205,7 @@ public abstract interface annotation class io/sentry/spring/jakarta/tracing/Sent
203205
}
204206

205207
public class io/sentry/spring/jakarta/tracing/SentrySpanAdvice : org/aopalliance/intercept/MethodInterceptor {
208+
public fun <init> ()V
206209
public fun <init> (Lio/sentry/IHub;)V
207210
public fun invoke (Lorg/aopalliance/intercept/MethodInvocation;)Ljava/lang/Object;
208211
}
@@ -240,6 +243,7 @@ public abstract interface annotation class io/sentry/spring/jakarta/tracing/Sent
240243
}
241244

242245
public class io/sentry/spring/jakarta/tracing/SentryTransactionAdvice : org/aopalliance/intercept/MethodInterceptor {
246+
public fun <init> ()V
243247
public fun <init> (Lio/sentry/IHub;)V
244248
public fun invoke (Lorg/aopalliance/intercept/MethodInvocation;)Ljava/lang/Object;
245249
}

sentry-spring-jakarta/src/main/java/io/sentry/spring/jakarta/checkin/SentryCheckInAdvice.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import io.sentry.CheckIn;
55
import io.sentry.CheckInStatus;
66
import io.sentry.DateUtils;
7+
import io.sentry.HubAdapter;
78
import io.sentry.IHub;
89
import io.sentry.SentryLevel;
910
import io.sentry.protocol.SentryId;
@@ -29,6 +30,10 @@
2930
public class SentryCheckInAdvice implements MethodInterceptor {
3031
private final @NotNull IHub hub;
3132

33+
public SentryCheckInAdvice() {
34+
this(HubAdapter.getInstance());
35+
}
36+
3237
public SentryCheckInAdvice(final @NotNull IHub hub) {
3338
this.hub = Objects.requireNonNull(hub, "hub is required");
3439
}

sentry-spring-jakarta/src/main/java/io/sentry/spring/jakarta/checkin/SentryCheckInAdviceConfiguration.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,32 @@
11
package io.sentry.spring.jakarta.checkin;
22

33
import com.jakewharton.nopen.annotation.Open;
4-
import io.sentry.IHub;
54
import org.aopalliance.aop.Advice;
65
import org.jetbrains.annotations.ApiStatus;
76
import org.jetbrains.annotations.NotNull;
87
import org.springframework.aop.Advisor;
98
import org.springframework.aop.Pointcut;
109
import org.springframework.aop.support.DefaultPointcutAdvisor;
1110
import org.springframework.beans.factory.annotation.Qualifier;
11+
import org.springframework.beans.factory.config.BeanDefinition;
1212
import org.springframework.context.annotation.Bean;
1313
import org.springframework.context.annotation.Configuration;
14+
import org.springframework.context.annotation.Role;
1415

1516
@Configuration(proxyBeanMethods = false)
1617
@Open
1718
@ApiStatus.Experimental
19+
@Role(BeanDefinition.ROLE_INFRASTRUCTURE)
1820
public class SentryCheckInAdviceConfiguration {
1921

2022
@Bean
21-
public @NotNull Advice sentryCheckInAdvice(final @NotNull IHub hub) {
22-
return new SentryCheckInAdvice(hub);
23+
@Role(BeanDefinition.ROLE_INFRASTRUCTURE)
24+
public @NotNull Advice sentryCheckInAdvice() {
25+
return new SentryCheckInAdvice();
2326
}
2427

2528
@Bean
29+
@Role(BeanDefinition.ROLE_INFRASTRUCTURE)
2630
public @NotNull Advisor sentryCheckInAdvisor(
2731
final @NotNull @Qualifier("sentryCheckInPointcut") Pointcut sentryCheckInPointcut,
2832
final @NotNull @Qualifier("sentryCheckInAdvice") Advice sentryCheckInAdvice) {

sentry-spring-jakarta/src/main/java/io/sentry/spring/jakarta/checkin/SentryCheckInPointcutConfiguration.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,16 @@
77
import org.springframework.aop.support.ComposablePointcut;
88
import org.springframework.aop.support.annotation.AnnotationClassFilter;
99
import org.springframework.aop.support.annotation.AnnotationMatchingPointcut;
10+
import org.springframework.beans.factory.config.BeanDefinition;
1011
import org.springframework.context.annotation.Bean;
1112
import org.springframework.context.annotation.Configuration;
13+
import org.springframework.context.annotation.Role;
1214

1315
/** AOP pointcut configuration for {@link SentryCheckIn}. */
1416
@Configuration(proxyBeanMethods = false)
1517
@Open
1618
@ApiStatus.Experimental
19+
@Role(BeanDefinition.ROLE_INFRASTRUCTURE)
1720
public class SentryCheckInPointcutConfiguration {
1821

1922
/**
@@ -22,6 +25,7 @@ public class SentryCheckInPointcutConfiguration {
2225
* @return pointcut used by {@link SentryCheckInAdvice}.
2326
*/
2427
@Bean
28+
@Role(BeanDefinition.ROLE_INFRASTRUCTURE)
2529
public @NotNull Pointcut sentryCheckInPointcut() {
2630
return new ComposablePointcut(new AnnotationClassFilter(SentryCheckIn.class, true))
2731
.union(new AnnotationMatchingPointcut(null, SentryCheckIn.class));

sentry-spring-jakarta/src/main/java/io/sentry/spring/jakarta/exception/SentryCaptureExceptionParameterAdvice.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package io.sentry.spring.jakarta.exception;
22

33
import com.jakewharton.nopen.annotation.Open;
4+
import io.sentry.HubAdapter;
45
import io.sentry.IHub;
56
import io.sentry.exception.ExceptionMechanismException;
67
import io.sentry.protocol.Mechanism;
@@ -23,6 +24,10 @@ public class SentryCaptureExceptionParameterAdvice implements MethodInterceptor
2324
private static final String MECHANISM_TYPE = "SentrySpring6CaptureExceptionParameterAdvice";
2425
private final @NotNull IHub hub;
2526

27+
public SentryCaptureExceptionParameterAdvice() {
28+
this(HubAdapter.getInstance());
29+
}
30+
2631
public SentryCaptureExceptionParameterAdvice(final @NotNull IHub hub) {
2732
this.hub = Objects.requireNonNull(hub, "hub is required");
2833
}

sentry-spring-jakarta/src/main/java/io/sentry/spring/jakarta/exception/SentryCaptureExceptionParameterPointcutConfiguration.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,15 @@
66
import org.springframework.aop.support.ComposablePointcut;
77
import org.springframework.aop.support.annotation.AnnotationClassFilter;
88
import org.springframework.aop.support.annotation.AnnotationMatchingPointcut;
9+
import org.springframework.beans.factory.config.BeanDefinition;
910
import org.springframework.context.annotation.Bean;
1011
import org.springframework.context.annotation.Configuration;
12+
import org.springframework.context.annotation.Role;
1113

1214
/** AOP pointcut configuration for {@link SentryCaptureExceptionParameter}. */
1315
@Configuration(proxyBeanMethods = false)
1416
@Open
17+
@Role(BeanDefinition.ROLE_INFRASTRUCTURE)
1518
public class SentryCaptureExceptionParameterPointcutConfiguration {
1619

1720
/**
@@ -20,6 +23,7 @@ public class SentryCaptureExceptionParameterPointcutConfiguration {
2023
* @return pointcut used by {@link SentryCaptureExceptionParameterAdvice}.
2124
*/
2225
@Bean
26+
@Role(BeanDefinition.ROLE_INFRASTRUCTURE)
2327
public @NotNull Pointcut sentryCaptureExceptionParameterPointcut() {
2428
return new ComposablePointcut(
2529
new AnnotationClassFilter(SentryCaptureExceptionParameter.class, true))

sentry-spring-jakarta/src/main/java/io/sentry/spring/jakarta/exception/SentryExceptionParameterAdviceConfiguration.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,31 @@
11
package io.sentry.spring.jakarta.exception;
22

33
import com.jakewharton.nopen.annotation.Open;
4-
import io.sentry.IHub;
54
import org.aopalliance.aop.Advice;
65
import org.jetbrains.annotations.NotNull;
76
import org.springframework.aop.Advisor;
87
import org.springframework.aop.Pointcut;
98
import org.springframework.aop.support.DefaultPointcutAdvisor;
109
import org.springframework.beans.factory.annotation.Qualifier;
10+
import org.springframework.beans.factory.config.BeanDefinition;
1111
import org.springframework.context.annotation.Bean;
1212
import org.springframework.context.annotation.Configuration;
13+
import org.springframework.context.annotation.Role;
1314

1415
/** Creates advice infrastructure for {@link SentryCaptureExceptionParameter}. */
1516
@Configuration(proxyBeanMethods = false)
1617
@Open
18+
@Role(BeanDefinition.ROLE_INFRASTRUCTURE)
1719
public class SentryExceptionParameterAdviceConfiguration {
1820

1921
@Bean
20-
public @NotNull Advice sentryCaptureExceptionParameterAdvice(final @NotNull IHub hub) {
21-
return new SentryCaptureExceptionParameterAdvice(hub);
22+
@Role(BeanDefinition.ROLE_INFRASTRUCTURE)
23+
public @NotNull Advice sentryCaptureExceptionParameterAdvice() {
24+
return new SentryCaptureExceptionParameterAdvice();
2225
}
2326

2427
@Bean
28+
@Role(BeanDefinition.ROLE_INFRASTRUCTURE)
2529
public @NotNull Advisor sentryCaptureExceptionParameterAdvisor(
2630
final @NotNull @Qualifier("sentryCaptureExceptionParameterPointcut") Pointcut
2731
sentryCaptureExceptionParameterPointcut,

sentry-spring-jakarta/src/main/java/io/sentry/spring/jakarta/tracing/SentryAdviceConfiguration.java

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,45 @@
11
package io.sentry.spring.jakarta.tracing;
22

33
import com.jakewharton.nopen.annotation.Open;
4-
import io.sentry.IHub;
54
import org.aopalliance.aop.Advice;
65
import org.jetbrains.annotations.NotNull;
76
import org.springframework.aop.Advisor;
87
import org.springframework.aop.Pointcut;
98
import org.springframework.aop.support.DefaultPointcutAdvisor;
109
import org.springframework.beans.factory.annotation.Qualifier;
10+
import org.springframework.beans.factory.config.BeanDefinition;
1111
import org.springframework.context.annotation.Bean;
1212
import org.springframework.context.annotation.Configuration;
13+
import org.springframework.context.annotation.Role;
1314

1415
/** Creates advice infrastructure for {@link SentrySpan} and {@link SentryTransaction}. */
1516
@Configuration(proxyBeanMethods = false)
1617
@Open
18+
@Role(BeanDefinition.ROLE_INFRASTRUCTURE)
1719
public class SentryAdviceConfiguration {
1820

1921
@Bean
20-
public @NotNull Advice sentryTransactionAdvice(final @NotNull IHub hub) {
21-
return new SentryTransactionAdvice(hub);
22+
@Role(BeanDefinition.ROLE_INFRASTRUCTURE)
23+
public @NotNull Advice sentryTransactionAdvice() {
24+
return new SentryTransactionAdvice();
2225
}
2326

2427
@Bean
28+
@Role(BeanDefinition.ROLE_INFRASTRUCTURE)
2529
public @NotNull Advisor sentryTransactionAdvisor(
2630
final @NotNull @Qualifier("sentryTransactionPointcut") Pointcut sentryTransactionPointcut,
2731
final @NotNull @Qualifier("sentryTransactionAdvice") Advice sentryTransactionAdvice) {
2832
return new DefaultPointcutAdvisor(sentryTransactionPointcut, sentryTransactionAdvice);
2933
}
3034

3135
@Bean
32-
public @NotNull Advice sentrySpanAdvice(final @NotNull IHub hub) {
33-
return new SentrySpanAdvice(hub);
36+
@Role(BeanDefinition.ROLE_INFRASTRUCTURE)
37+
public @NotNull Advice sentrySpanAdvice() {
38+
return new SentrySpanAdvice();
3439
}
3540

3641
@Bean
42+
@Role(BeanDefinition.ROLE_INFRASTRUCTURE)
3743
public @NotNull Advisor sentrySpanAdvisor(
3844
final @NotNull @Qualifier("sentrySpanPointcut") Pointcut sentrySpanPointcut,
3945
final @NotNull @Qualifier("sentrySpanAdvice") Advice sentrySpanAdvice) {

sentry-spring-jakarta/src/main/java/io/sentry/spring/jakarta/tracing/SentrySpanAdvice.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package io.sentry.spring.jakarta.tracing;
22

33
import com.jakewharton.nopen.annotation.Open;
4+
import io.sentry.HubAdapter;
45
import io.sentry.IHub;
56
import io.sentry.ISpan;
67
import io.sentry.SpanStatus;
@@ -23,6 +24,10 @@ public class SentrySpanAdvice implements MethodInterceptor {
2324
private static final String TRACE_ORIGIN = "auto.function.spring_jakarta.advice";
2425
private final @NotNull IHub hub;
2526

27+
public SentrySpanAdvice() {
28+
this(HubAdapter.getInstance());
29+
}
30+
2631
public SentrySpanAdvice(final @NotNull IHub hub) {
2732
this.hub = Objects.requireNonNull(hub, "hub is required");
2833
}

0 commit comments

Comments
 (0)