mirror of
https://github.com/spring-projects/spring-framework.git
synced 2026-10-07 23:49:08 +00:00
Merge branch '7.0.x'
This commit is contained in:
@@ -128,7 +128,7 @@ abstract class CoroutinesUtils {
|
||||
for (KFunction<?> candidate : KClasses.getDeclaredMemberFunctions(superClass)) {
|
||||
if (candidate.getName().equals(function.getName()) && candidate.isSuspend() &&
|
||||
hasSameParameterTypes(function, candidate, superType) &&
|
||||
candidate.getReturnType().getClassifier() != valueKClass) {
|
||||
!valueKClass.equals(candidate.getReturnType().getClassifier())) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
+33
@@ -282,6 +282,28 @@ class CglibAopProxyKotlinTests {
|
||||
assertThat(proxy.returnValue()).isEqualTo(ValueClass("bar"))
|
||||
}
|
||||
|
||||
@Test
|
||||
suspend fun proxiedSuspendedInvocationValueClassOverridingValueClass() {
|
||||
val proxyFactory = ProxyFactory(ValueClassOverridingValueClassBean())
|
||||
proxyFactory.isProxyTargetClass = true
|
||||
proxyFactory.addAdvice(MethodInterceptor {
|
||||
ValueClass("bar")
|
||||
})
|
||||
val proxy = proxyFactory.proxy as ValueClassOverridingValueClassBean
|
||||
assertThat(proxy.returnValue()).isEqualTo(ValueClass("bar"))
|
||||
}
|
||||
|
||||
@Test
|
||||
suspend fun proxiedSuspendedInvocationValueClassOverridingValueClassProceed() {
|
||||
val proxyFactory = ProxyFactory(ValueClassOverridingValueClassBean())
|
||||
proxyFactory.isProxyTargetClass = true
|
||||
proxyFactory.addAdvice(MethodInterceptor {
|
||||
it.proceed()
|
||||
})
|
||||
val proxy = proxyFactory.proxy as ValueClassOverridingValueClassBean
|
||||
assertThat(proxy.returnValue()).isEqualTo(ValueClass("foo"))
|
||||
}
|
||||
|
||||
@Test
|
||||
suspend fun proxiedSuspendedInvocationValueClassOverridingGeneric() {
|
||||
val proxyFactory = ProxyFactory(ValueClassOverridingGenericBean())
|
||||
@@ -473,6 +495,17 @@ class CglibAopProxyKotlinTests {
|
||||
}
|
||||
}
|
||||
|
||||
interface ValueClassBean {
|
||||
suspend fun returnValue(): ValueClass
|
||||
}
|
||||
|
||||
open class ValueClassOverridingValueClassBean : ValueClassBean {
|
||||
override suspend fun returnValue(): ValueClass {
|
||||
delay(10.milliseconds)
|
||||
return ValueClass("foo")
|
||||
}
|
||||
}
|
||||
|
||||
interface GenericBean<T> {
|
||||
suspend fun returnValue(): T
|
||||
}
|
||||
|
||||
+35
@@ -252,6 +252,26 @@ class JdkDynamicAopProxyKotlinTests {
|
||||
assertThat(proxy.returnValue()).isEqualTo(ValueClass("bar"))
|
||||
}
|
||||
|
||||
@Test
|
||||
suspend fun proxiedSuspendedInvocationValueClassOverridingValueClass() {
|
||||
val proxyFactory = ProxyFactory(ValueClassOverridingValueClassBeanImpl())
|
||||
proxyFactory.addAdvice(MethodInterceptor {
|
||||
ValueClass("bar")
|
||||
})
|
||||
val proxy = proxyFactory.proxy as ValueClassOverridingValueClassBean
|
||||
assertThat(proxy.returnValue()).isEqualTo(ValueClass("bar"))
|
||||
}
|
||||
|
||||
@Test
|
||||
suspend fun proxiedSuspendedInvocationValueClassOverridingValueClassProceed() {
|
||||
val proxyFactory = ProxyFactory(ValueClassOverridingValueClassBeanImpl())
|
||||
proxyFactory.addAdvice(MethodInterceptor {
|
||||
it.proceed()
|
||||
})
|
||||
val proxy = proxyFactory.proxy as ValueClassOverridingValueClassBean
|
||||
assertThat(proxy.returnValue()).isEqualTo(ValueClass("foo"))
|
||||
}
|
||||
|
||||
@Test
|
||||
suspend fun proxiedSuspendedInvocationValueClassOverridingGeneric() {
|
||||
val proxyFactory = ProxyFactory(ValueClassOverridingGenericBeanImpl())
|
||||
@@ -421,6 +441,21 @@ class JdkDynamicAopProxyKotlinTests {
|
||||
}
|
||||
}
|
||||
|
||||
interface ValueClassBean {
|
||||
suspend fun returnValue(): ValueClass
|
||||
}
|
||||
|
||||
interface ValueClassOverridingValueClassBean : ValueClassBean {
|
||||
override suspend fun returnValue(): ValueClass
|
||||
}
|
||||
|
||||
class ValueClassOverridingValueClassBeanImpl : ValueClassOverridingValueClassBean {
|
||||
override suspend fun returnValue(): ValueClass {
|
||||
delay(10.milliseconds)
|
||||
return ValueClass("foo")
|
||||
}
|
||||
}
|
||||
|
||||
interface GenericBean<T> {
|
||||
suspend fun returnValue(): T
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user