Skip to content
This repository was archived by the owner on Feb 23, 2023. It is now read-only.

Commit 30aaeb5

Browse files
committed
Support string annotation values in ClassProxyHint
1 parent bb7dece commit 30aaeb5

File tree

2 files changed

+26
-7
lines changed

2 files changed

+26
-7
lines changed

spring-aot/src/test/java/org/springframework/nativex/HintTests.java

+22-2
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,6 @@ public void classProxyDescriptors() {
253253
List<HintApplication> hints = t.getApplicableHints();
254254
assertEquals(1,hints.size());
255255
HintApplication hint = hints.get(0);
256-
System.out.println(hint);
257256
List<ProxyDescriptor> proxyDescriptors = hint.getProxyDescriptors();
258257
assertThat(proxyDescriptors).hasSize(1);
259258
assertThat(proxyDescriptors.get(0).isClassProxy()).isTrue();
@@ -264,8 +263,29 @@ public void classProxyDescriptors() {
264263
}
265264

266265
@NativeHint(
267-
classProxies = @ClassProxyHint(targetClass = String.class, interfaces = Serializable.class,proxyFeatures = ProxyBits.EXPOSE_PROXY)
266+
classProxies = @ClassProxyHint(targetClass = String.class, interfaces = Serializable.class, proxyFeatures = ProxyBits.EXPOSE_PROXY)
268267
)
269268
static class TestClass8 {
270269
}
270+
271+
@Test
272+
public void classProxyDescriptors2() {
273+
Type t = typeSystem.resolveName(TestClass9.class.getName());
274+
List<HintApplication> hints = t.getApplicableHints();
275+
assertEquals(1,hints.size());
276+
HintApplication hint = hints.get(0);
277+
List<ProxyDescriptor> proxyDescriptors = hint.getProxyDescriptors();
278+
assertThat(proxyDescriptors).hasSize(1);
279+
assertThat(proxyDescriptors.get(0).isClassProxy()).isTrue();
280+
ClassProxyDescriptor cpd = (ClassProxyDescriptor)proxyDescriptors.get(0);
281+
assertThat(cpd.getTargetClassType()).isEqualTo("java.lang.String");
282+
assertThat(cpd.getInterfaceTypes().get(0)).isEqualTo("java.util.List");
283+
assertThat(cpd.getProxyFeatures()).isEqualTo(ProxyBits.EXPOSE_PROXY);
284+
}
285+
286+
@NativeHint(
287+
classProxies = @ClassProxyHint(targetClassName = "java.lang.String", interfaceNames = "java.util.List", proxyFeatures = ProxyBits.EXPOSE_PROXY)
288+
)
289+
static class TestClass9 {
290+
}
271291
}

spring-native/src/main/java/org/springframework/nativex/hint/ClassProxyHint.java

+4-5
Original file line numberDiff line numberDiff line change
@@ -30,24 +30,23 @@
3030
@Retention(RetentionPolicy.RUNTIME)
3131
public @interface ClassProxyHint {
3232

33-
// TODO sort out defaults for these members
34-
Class<?> targetClass();
33+
Class<?> targetClass() default Object.class;
3534

36-
// Class<?>[] targetClassName();
35+
String targetClassName() default "java.lang.Object";
3736

3837
/**
3938
* Preferred way to configure interfaces for a class proxy.
4039
* @return the types
4140
*/
4241
Class<?>[] interfaces() default {};
43-
42+
4443
/**
4544
* Alternative way to configure interfaces for a class proxy, should be used when type visibility
4645
* prevents using {@link Class} references, or for nested types which should be specific using a {@code $} separator
4746
* (for example {@code com.example.Foo$Bar}).
4847
* @return the type names
4948
*/
50-
// String[] interfaceNames() default {};
49+
String[] interfaceNames() default {};
5150

5251
int proxyFeatures() default ProxyBits.NONE;
5352

0 commit comments

Comments
 (0)