Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ plugins {
}

group 'com.formkiq'
version '1.5.1'
version '1.5.2'

dependencies {
annotationProcessor group: 'com.google.auto.service', name: 'auto-service', version: '1.1.1'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@
import javax.lang.model.element.Element;
import javax.lang.model.element.ElementKind;
import javax.lang.model.element.ExecutableElement;
import javax.lang.model.element.PackageElement;
import javax.lang.model.element.TypeElement;
import javax.lang.model.type.MirroredTypeException;
import javax.lang.model.type.TypeMirror;
Expand Down Expand Up @@ -81,6 +82,8 @@ public class GraalvmReflectAnnontationProcessor extends AbstractProcessor {
private final Gson gson = new GsonBuilder().disableHtmlEscaping().create();
/** {@link List} of {@link Reflect}. */
private final Map<String, Reflect> reflects = new HashMap<>();
/** Name of Annotation Package. */
private String packageName = "default";

private TypeElement asTypeElement(final TypeMirror typeMirror) {
Types typeUtils = this.processingEnv.getTypeUtils();
Expand Down Expand Up @@ -394,6 +397,8 @@ private void processingReflectable(final RoundEnvironment roundEnv) {

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

setPackageName(element);

String className = getClassNameByType(element);
LOGGER.log(LOGLEVEL, "processing 'Reflectable' annotation on class " + className);

Expand Down Expand Up @@ -429,16 +434,29 @@ private void processingReflectable(final RoundEnvironment roundEnv) {
/**
* Load Reflectable Imports.
*
* @param roundEnv {@link RoundEnvironment}s
* @param roundEnv {@link RoundEnvironment}
*/
private void processingReflectableImports(final RoundEnvironment roundEnv) {

for (Element element : roundEnv.getElementsAnnotatedWith(ReflectableImport.class)) {
setPackageName(element);
processImportedClasses(element);
processImportFiles(element);
}
}

private void setPackageName(final Element element) {
String name = getPackage(element);
if (name != null && !name.isEmpty()) {
this.packageName = name;
}
}

private String getPackage(final Element element) {
PackageElement pkg = processingEnv.getElementUtils().getPackageOf(element);
return pkg.getQualifiedName().toString();
}

/**
* Processing classes with 'ReflectableClass' annotation.
*
Expand Down Expand Up @@ -486,6 +504,8 @@ private void processReflectableClasses(final RoundEnvironment roundEnv) {

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

setPackageName(element);

String className = getClassNameByType(element);
LOGGER.log(LOGLEVEL, "processing 'ReflectableClasses' annotation on class " + className);

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

for (Element element : reflectableClasses) {

setPackageName(element);

String className = getClassNameByType(element);
LOGGER.log(LOGLEVEL, "processing 'ReflectableClasses' annotation on class " + className);

Expand All @@ -524,10 +547,8 @@ private void writeOutput() {

try {

String name = generateReflectConfigPath(this.reflects.keySet());

FileObject file = this.processingEnv.getFiler().createResource(StandardLocation.CLASS_OUTPUT,
"", "META-INF/native-image/" + name + "/reflect-config.json");
"", "META-INF/native-image/" + packageName + "/reflect-config.json");

List<Map<String, Object>> data =
this.reflects.values().stream().map(Reflect::data).collect(Collectors.toList());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ public void testReflectableImport01() throws IOException {
public class Test { }
"""));

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

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

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

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

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

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

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

assertEquals(1, map.size());

Expand Down Expand Up @@ -218,7 +218,7 @@ public void testReflectableClass03() throws IOException {
public class Test { }
"""));

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

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

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

assertEquals(2, map.size());
assertEquals("com.formkiq.graalvm.processors.Test4", map.get(0).get("name"));
Expand Down
Loading