Skip to content

Commit 6bd65be

Browse files
committed
Fix packageName generated in the native-image META-INF folder
1 parent b2d70de commit 6bd65be

File tree

3 files changed

+34
-13
lines changed

3 files changed

+34
-13
lines changed

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.1'
13+
version '1.5.2'
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: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
import javax.lang.model.element.Element;
5151
import javax.lang.model.element.ElementKind;
5252
import javax.lang.model.element.ExecutableElement;
53+
import javax.lang.model.element.PackageElement;
5354
import javax.lang.model.element.TypeElement;
5455
import javax.lang.model.type.MirroredTypeException;
5556
import javax.lang.model.type.TypeMirror;
@@ -81,6 +82,8 @@ public class GraalvmReflectAnnontationProcessor extends AbstractProcessor {
8182
private final Gson gson = new GsonBuilder().disableHtmlEscaping().create();
8283
/** {@link List} of {@link Reflect}. */
8384
private final Map<String, Reflect> reflects = new HashMap<>();
85+
/** Name of Annotation Package. */
86+
private String packageName = "default";
8487

8588
private TypeElement asTypeElement(final TypeMirror typeMirror) {
8689
Types typeUtils = this.processingEnv.getTypeUtils();
@@ -245,7 +248,7 @@ public boolean process(final Set<? extends TypeElement> annotations,
245248

246249
if (roundEnv.processingOver()) {
247250

248-
writeOutput();
251+
writeOutput(packageName);
249252

250253
} else {
251254

@@ -394,6 +397,8 @@ private void processingReflectable(final RoundEnvironment roundEnv) {
394397

395398
for (Element element : roundEnv.getElementsAnnotatedWith(Reflectable.class)) {
396399

400+
setPackageName(element);
401+
397402
String className = getClassNameByType(element);
398403
LOGGER.log(LOGLEVEL, "processing 'Reflectable' annotation on class " + className);
399404

@@ -429,16 +434,29 @@ private void processingReflectable(final RoundEnvironment roundEnv) {
429434
/**
430435
* Load Reflectable Imports.
431436
*
432-
* @param roundEnv {@link RoundEnvironment}s
437+
* @param roundEnv {@link RoundEnvironment}
433438
*/
434439
private void processingReflectableImports(final RoundEnvironment roundEnv) {
435440

436441
for (Element element : roundEnv.getElementsAnnotatedWith(ReflectableImport.class)) {
442+
setPackageName(element);
437443
processImportedClasses(element);
438444
processImportFiles(element);
439445
}
440446
}
441447

448+
private void setPackageName(final Element element) {
449+
String name = getPackage(element);
450+
if (name != null && !name.isEmpty()) {
451+
this.packageName = name;
452+
}
453+
}
454+
455+
private String getPackage(final Element element) {
456+
PackageElement pkg = processingEnv.getElementUtils().getPackageOf(element);
457+
return pkg.getQualifiedName().toString();
458+
}
459+
442460
/**
443461
* Processing classes with 'ReflectableClass' annotation.
444462
*
@@ -486,6 +504,8 @@ private void processReflectableClasses(final RoundEnvironment roundEnv) {
486504

487505
for (Element element : roundEnv.getElementsAnnotatedWith(ReflectableClasses.class)) {
488506

507+
setPackageName(element);
508+
489509
String className = getClassNameByType(element);
490510
LOGGER.log(LOGLEVEL, "processing 'ReflectableClasses' annotation on class " + className);
491511

@@ -504,6 +524,9 @@ private void processReflectableClasses(final RoundEnvironment roundEnv) {
504524
Set.of(ReflectableClass.class, ReflectableClass.ReflectableClasses.class));
505525

506526
for (Element element : reflectableClasses) {
527+
528+
setPackageName(element);
529+
507530
String className = getClassNameByType(element);
508531
LOGGER.log(LOGLEVEL, "processing 'ReflectableClasses' annotation on class " + className);
509532

@@ -520,14 +543,12 @@ private String removePartsContainingDotFollowedByCapital(final String input) {
520543
}
521544

522545
/** Write Output File. */
523-
private void writeOutput() {
546+
private void writeOutput(final String packageName) {
524547

525548
try {
526549

527-
String name = generateReflectConfigPath(this.reflects.keySet());
528-
529550
FileObject file = this.processingEnv.getFiler().createResource(StandardLocation.CLASS_OUTPUT,
530-
"", "META-INF/native-image/" + name + "/reflect-config.json");
551+
"", "META-INF/native-image/" + packageName + "/reflect-config.json");
531552

532553
List<Map<String, Object>> data =
533554
this.reflects.values().stream().map(Reflect::data).collect(Collectors.toList());

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ public void testReflectableImport01() throws IOException {
5656
public class Test { }
5757
"""));
5858

59-
List<Map<String, Object>> map = getReflectConf(compilation, "com.formkiq.graalvm.processors");
59+
List<Map<String, Object>> map = getReflectConf(compilation, "test");
6060

6161
assertEquals(1, map.size());
6262
assertEquals("com.formkiq.graalvm.processors.Test3", map.get(0).get("name"));
@@ -100,7 +100,7 @@ public void testReflectableClasses01() throws IOException {
100100
public class Test { }
101101
"""));
102102

103-
List<Map<String, Object>> map = getReflectConf(compilation, "com.formkiq.graalvm.processors");
103+
List<Map<String, Object>> map = getReflectConf(compilation, "test");
104104

105105
assertEquals(1, map.size());
106106
assertEquals("com.formkiq.graalvm.processors.Test4", map.get(0).get("name"));
@@ -144,7 +144,7 @@ public void testReflectableClass01() throws IOException {
144144
public class Test { }
145145
"""));
146146

147-
List<Map<String, Object>> map = getReflectConf(compilation, "com.formkiq.graalvm.processors");
147+
List<Map<String, Object>> map = getReflectConf(compilation, "test");
148148

149149
assertEquals(1, map.size());
150150
assertEquals("com.formkiq.graalvm.processors.Test4", map.get(0).get("name"));
@@ -190,7 +190,7 @@ public void testReflectableClass02() throws IOException {
190190
public class Test { }
191191
"""));
192192

193-
List<Map<String, Object>> map = getReflectConf(compilation, "com.formkiq.graalvm.processors");
193+
List<Map<String, Object>> map = getReflectConf(compilation, "test");
194194

195195
assertEquals(1, map.size());
196196

@@ -218,7 +218,7 @@ public void testReflectableClass03() throws IOException {
218218
public class Test { }
219219
"""));
220220

221-
List<Map<String, Object>> map = getReflectConf(compilation, "com.formkiq.graalvm.processors");
221+
List<Map<String, Object>> map = getReflectConf(compilation, "test");
222222

223223
assertEquals(1, map.size());
224224
assertEquals("com.formkiq.graalvm.processors.Test5$Test5Inner", map.get(0).get("name"));
@@ -250,7 +250,7 @@ public void testReflectableClass04() throws IOException {
250250
public class Test { }
251251
"""));
252252

253-
List<Map<String, Object>> map = getReflectConf(compilation, "com.formkiq.graalvm.processors");
253+
List<Map<String, Object>> map = getReflectConf(compilation, "test");
254254

255255
assertEquals(2, map.size());
256256
assertEquals("com.formkiq.graalvm.processors.Test4", map.get(0).get("name"));

0 commit comments

Comments
 (0)