Skip to content

Commit b2d70de

Browse files
authored
#24 - Bug: Nested Class return wrong name (#15)
1 parent a103701 commit b2d70de

3 files changed

Lines changed: 50 additions & 2 deletions

File tree

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ plugins {
1010
}
1111

1212
group 'com.formkiq'
13-
version '1.5.0'
13+
version '1.5.1'
1414

1515
dependencies {
1616
annotationProcessor group: 'com.google.auto.service', name: 'auto-service', version: '1.1.1'

src/main/java/com/formkiq/graalvm/processors/GraalvmReflectAnnontationProcessor.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@
5353
import javax.lang.model.element.TypeElement;
5454
import javax.lang.model.type.MirroredTypeException;
5555
import javax.lang.model.type.TypeMirror;
56+
import javax.lang.model.util.Elements;
5657
import javax.lang.model.util.Types;
5758
import javax.tools.FileObject;
5859
import javax.tools.StandardLocation;
@@ -194,7 +195,7 @@ private String getClassNameByType(final Element element) {
194195
result = result.getEnclosingElement();
195196
}
196197

197-
className = te.getQualifiedName().toString();
198+
className = getBinaryName(te);
198199

199200
if (!simpleNames.isEmpty()) {
200201
String e = element.getEnclosingElement().toString();
@@ -210,6 +211,11 @@ private String getClassNameByType(final Element element) {
210211
return className;
211212
}
212213

214+
public String getBinaryName(final TypeElement typeElement) {
215+
Elements elements = processingEnv.getElementUtils();
216+
return elements.getBinaryName(typeElement).toString();
217+
}
218+
213219
/**
214220
* Get {@link Reflect}.
215221
*

src/test/java/com/formkiq/graalvm/processors/GraalvmReflectAnnontationProcessorTest.java

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -835,6 +835,48 @@ public record TestRecord(String name) {}
835835
assertEquals(Boolean.TRUE, map.get(0).get("allDeclaredFields"));
836836
}
837837

838+
/**
839+
* test nested java record.
840+
*
841+
* @throws IOException IOException
842+
*/
843+
@Test
844+
public void testNestedRecordAnnotations() throws IOException {
845+
JavaFileObject recordSource = JavaFileObjects.forSourceString("com.example.TestRecord", """
846+
package com.example;
847+
848+
import com.formkiq.graalvm.annotations.Reflectable;
849+
850+
@Reflectable
851+
public record TestRecord(String name) {
852+
@Reflectable
853+
public record NestedTestRecord(String name) {
854+
}
855+
}
856+
""");
857+
Compilation compilation =
858+
javac().withProcessors(new GraalvmReflectAnnontationProcessor()).compile(recordSource);
859+
860+
List<Map<String, Object>> map = getReflectConf(compilation, "com.example");
861+
862+
assertEquals(2, map.size());
863+
assertEquals("com.example.TestRecord", map.get(0).get("name"));
864+
assertEquals(Boolean.TRUE, map.get(0).get("allPublicConstructors"));
865+
assertEquals(Boolean.TRUE, map.get(0).get("allPublicMethods"));
866+
assertEquals(Boolean.TRUE, map.get(0).get("allPublicFields"));
867+
assertEquals(Boolean.FALSE, map.get(0).get("allDeclaredConstructors"));
868+
assertEquals(Boolean.TRUE, map.get(0).get("allDeclaredMethods"));
869+
assertEquals(Boolean.TRUE, map.get(0).get("allDeclaredFields"));
870+
871+
assertEquals("com.example.TestRecord$NestedTestRecord", map.get(1).get("name"));
872+
assertEquals(Boolean.TRUE, map.get(0).get("allPublicConstructors"));
873+
assertEquals(Boolean.TRUE, map.get(0).get("allPublicMethods"));
874+
assertEquals(Boolean.TRUE, map.get(0).get("allPublicFields"));
875+
assertEquals(Boolean.FALSE, map.get(0).get("allDeclaredConstructors"));
876+
assertEquals(Boolean.TRUE, map.get(0).get("allDeclaredMethods"));
877+
assertEquals(Boolean.TRUE, map.get(0).get("allDeclaredFields"));
878+
}
879+
838880
/**
839881
* test java record.
840882
*

0 commit comments

Comments
 (0)