Skip to content

Commit d303ad5

Browse files
committed
Reverting shared library annotation processing configs
1 parent 7a629f9 commit d303ad5

File tree

10 files changed

+124
-90
lines changed

10 files changed

+124
-90
lines changed

aptools/src/main/java/com/mageddo/aptools/ClassUtils.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public static boolean doPackageOwnClass(String packageName, String className) {
2020
return getClassPackage(className).contains(packageName);
2121
}
2222

23-
public static List<String> findNestClasses(String clazz) {
23+
public static List<Class<?>> findNestClasses(Class<?> clazz) {
2424
throw new UnsupportedOperationException("Not able to find class nested classes yet");
2525
}
2626

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ if (JavaVersion.current() != JavaVersion.VERSION_1_8) {
2020

2121
subprojects {
2222

23-
apply plugin: "java"
23+
apply plugin: "java-library"
2424

2525
repositories {
2626
mavenLocal()
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-6.0-bin.zip
44
zipStoreBase=GRADLE_USER_HOME
55
zipStorePath=wrapper/dists

reflection-config-generator/acceptance-tests/src/main/java/com/acme/ReflectionConfig.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,6 @@
2222
@Reflection(
2323
scanPackage = "com.acme.subpackage",
2424
declaredFields = true
25-
),
26-
@Reflection(
27-
scanPackage = "com.fasterxml.jackson.core.util",
28-
scanLibs = true
2925
)
3026
})
3127
public class ReflectionConfig {
Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,34 @@
1+
plugins {
2+
id "com.github.johnrengelman.shadow" version "5.2.0"
3+
}
4+
5+
def mainClassName = "nativeimage.core.thirdparty.Main"
6+
7+
jar {
8+
manifest {
9+
attributes(
10+
"Main-Class": mainClassName
11+
)
12+
}
13+
}
14+
15+
shadowJar {
16+
mergeServiceFiles()
17+
transform(com.github.jengelman.gradle.plugins.shadow.transformers.PropertiesFileTransformer) {
18+
mergeStrategy = "append"
19+
}
20+
}
21+
122
dependencies {
223

3-
compile(project(":aptools"))
4-
compile("org.apache.commons:commons-lang3:3.9")
5-
compile("com.fasterxml.jackson.core:jackson-databind:2.10.1")
6-
compileOnly files(org.gradle.internal.jvm.Jvm.current().toolsJar)
24+
api(project(":aptools"))
25+
compile("org.apache.commons:commons-lang3:3.9")
26+
compile('com.fasterxml.jackson.core:jackson-databind:2.12.7.1')
27+
compile("org.slf4j:slf4j-api:2.0.6")
28+
compileOnly files(org.gradle.internal.jvm.Jvm.current().toolsJar)
729

8-
testCompile group: 'commons-io', name: 'commons-io', version: '2.6'
9-
testCompile "org.junit.jupiter:junit-jupiter:5.4.2"
10-
testCompile "org.mockito:mockito-junit-jupiter:3.1.0"
30+
testCompile group: 'commons-io', name: 'commons-io', version: '2.7'
31+
testCompile "org.junit.jupiter:junit-jupiter:5.4.2"
32+
testCompile "org.mockito:mockito-junit-jupiter:3.1.0"
1133

1234
}

reflection-config-generator/src/main/java/nativeimage/Reflection.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -67,9 +67,4 @@
6767
*/
6868
boolean declaredFields() default false;
6969

70-
/**
71-
* If must scan for package or class in project libs instead of in the source.
72-
*/
73-
boolean scanLibs() default false;
74-
7570
}

reflection-config-generator/src/main/java/nativeimage/core/NativeImageReflectionConfigGenerator.java

Lines changed: 4 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
import nativeimage.core.domain.ReflectionConfig;
2727
import nativeimage.core.io.NativeImagePropertiesWriter;
2828
import nativeimage.core.io.ReflectionConfigWriter;
29-
import static nativeimage.core.thirdparty.ThirdPartyPackageScanner.findPackageClasses;
3029

3130
/**
3231
* Will generate native image reflection config to project source classes.
@@ -36,13 +35,11 @@ public class NativeImageReflectionConfigGenerator implements Processor {
3635
private final Logger log = LoggerFactory.getLogger();
3736
private final ProcessingEnvironment processingEnv;
3837
private final Set<ReflectionConfig> classes;
39-
private final Set<ReflectionConfig> thirdPartyClasses;
4038
private String classPackage;
4139

4240
public NativeImageReflectionConfigGenerator(ProcessingEnvironment processingEnv) {
4341
this.processingEnv = processingEnv;
4442
this.classes = new LinkedHashSet<>();
45-
this.thirdPartyClasses = new LinkedHashSet<>();
4643
}
4744

4845
@Override
@@ -79,42 +76,9 @@ void processElementsForAnnotation(
7976
RoundEnvironment roundEnv, Element element, Reflection reflection
8077
) {
8178
log.debug(
82-
"m=processElementsForAnnotation, scanLibs=%b, reflection=%s",
83-
reflection.scanLibs(), reflection
79+
"m=processElementsForAnnotation, reflection=%s", reflection
8480
);
85-
if (reflection.scanLibs()) {
86-
this.addMatchingProjectLibsClasses(reflection);
87-
} else {
88-
this.addMatchingProjectSourceElements(roundEnv, element, reflection);
89-
}
90-
}
91-
92-
void addMatchingProjectLibsClasses(Reflection reflection) {
93-
if (reflection.scanPackage().isEmpty()) {
94-
this.addClassAndNested(reflection, ReflectionUtils.getClassName(reflection));
95-
} else {
96-
final Set<String> classes = findPackageClasses(reflection.scanPackage());
97-
for (final String clazz : classes) {
98-
this.addClass(clazz, reflection);
99-
}
100-
}
101-
}
102-
103-
void addClassAndNested(Reflection reflection, String clazz) {
104-
this.addClass(clazz, reflection);
105-
for (final String innerClass : ClassUtils.findNestClasses(clazz)) {
106-
this.addClass(innerClass, reflection);
107-
log.debug("m=addMatchingProjectLibsClasses, innerClass=%s", innerClass);
108-
}
109-
}
110-
111-
void addClass(String clazz, Reflection reflection) {
112-
log.debug("m=addClass, clazz=%s", clazz, clazz);
113-
// todo check if the name is correct
114-
for (final ReflectionConfig config : ReflectionConfigBuilder.of(reflection, clazz)) {
115-
this.thirdPartyClasses.remove(config);
116-
this.thirdPartyClasses.add(config);
117-
}
81+
this.addMatchingProjectSourceElements(roundEnv, element, reflection);
11882
}
11983

12084
void addMatchingProjectSourceElements(
@@ -185,38 +149,27 @@ private void writeObjects() {
185149
final String reflectFile = solvePath(classPackage, "reflect.json");
186150
final String reflectFileThirdParty = solvePath(classPackage, "reflect-third-party.json");
187151

188-
this.subtractSourceFromThirdPartyClass();
189-
190152
try (
191153
ReflectionConfigWriter appender =
192154
new ReflectionConfigWriter(this.processingEnv, reflectFile);
193-
194-
ReflectionConfigWriter appenderThirdParty =
195-
new ReflectionConfigWriter(this.processingEnv, reflectFileThirdParty)
196155
) {
197156

198157
appender.writeAll(this.classes);
199-
appenderThirdParty.writeAll(this.thirdPartyClasses);
200158

201159
final URI nativeImageFile = NativeImagePropertiesWriter.write(
202160
this.processingEnv, classPackage, reflectFile, reflectFileThirdParty
203161
);
204162
log.info(
205-
"status=reflect-generation-done, objects=%d, 3rdObjects=%s, path=%s",
206-
this.classes.size(), this.thirdPartyClasses.size(), nativeImageFile
163+
"status=reflect-generation-done, objects=%d, path=%s",
164+
this.classes.size(), nativeImageFile
207165
);
208166

209167
log.debug("objects=%s", this.classes);
210-
log.debug("3rdObjects=%s", this.classes);
211168
} catch (IOException e) {
212169
throw new RuntimeException(e);
213170
}
214171
}
215172

216-
boolean subtractSourceFromThirdPartyClass() {
217-
return this.classes.removeAll(this.thirdPartyClasses);
218-
}
219-
220173
private String getClassPackage() {
221174
return this.classPackage == null ? "graal-reflection-configuration" : this.classPackage;
222175
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package nativeimage.core.thirdparty;
2+
3+
import static nativeimage.core.thirdparty.ThirdPartyPackageScanner.findPackageClasses;
4+
5+
public class Main {
6+
public static void main(String[] args) {
7+
System.out.println("> Finding classes for package: " + args[0]);
8+
for (Class<?> clazz : findPackageClasses(args[0])) {
9+
System.out.println(clazz);
10+
}
11+
}
12+
}
Lines changed: 31 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
package nativeimage.core.thirdparty;
22

3-
import java.util.LinkedHashSet;
43
import java.util.Set;
54

6-
import com.mageddo.aptools.ClassUtils;
75
import com.mageddo.aptools.log.Logger;
86
import com.mageddo.aptools.log.LoggerFactory;
97

108
import org.reflections.Reflections;
11-
import org.reflections.scanners.Scanners;
9+
import org.reflections.scanners.ResourcesScanner;
10+
import org.reflections.scanners.SubTypesScanner;
11+
import org.reflections.util.ClasspathHelper;
12+
import org.reflections.util.ConfigurationBuilder;
13+
import org.reflections.util.FilterBuilder;
1214

1315
public class ThirdPartyPackageScanner {
1416

@@ -19,27 +21,36 @@ public class ThirdPartyPackageScanner {
1921
*
2022
* @param packageName something like com.mageddo
2123
*/
22-
public static Set<String> findPackageClasses(String packageName) {
23-
24-
final Set<String> classes = new Reflections(packageName)
25-
.getAll(Scanners.SubTypes);
26-
27-
final Set<String> filteredClasses = new LinkedHashSet<>();
28-
for (String clazz : classes) {
29-
if (ClassUtils.doPackageOwnClass(packageName, clazz)) {
30-
filteredClasses.add(clazz);
31-
}
32-
}
24+
public static Set<Class<?>> findPackageClasses(String packageName) {
25+
26+
Set<Class<?>> classes = new Reflections(
27+
new ConfigurationBuilder()
28+
.setScanners(new SubTypesScanner(false), new ResourcesScanner())
29+
.addUrls(ClasspathHelper.forJavaClassPath())
30+
.filterInputsBy(new FilterBuilder()
31+
.includePackage(packageName))
32+
)
33+
.getSubTypesOf(Object.class);
34+
35+
// final Set<String> classes = new Reflections(packageName)
36+
// .getAll(Scanners.SubTypes);
37+
38+
// final Set<String> filteredClasses = new LinkedHashSet<>();
39+
// for (String clazz : classes) {
40+
// if (ClassUtils.doPackageOwnClass(packageName, clazz)) {
41+
// filteredClasses.add(clazz);
42+
// }
43+
// }
3344
// final Set<String> filteredClasses = classes
3445
// .stream()
3546
// .filter(it -> ClassUtils.doPackageOwnClass(packageName, it))
3647
// .collect(Collectors.toSet());
3748

38-
log.warn(
39-
"status=packageScanned, classes=%d, afterFilter=%d, package=%s",
40-
classes.size(), filteredClasses.size(), packageName
41-
);
42-
return filteredClasses;
43-
}
49+
// log.debug(
50+
// "status=packageScanned, classes=%d, afterFilter=%d, package=%s",
51+
// classes.size(),filteredClasses.size(),packageName
52+
// );
53+
return classes;
54+
}
4455

4556
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package nativeimage.core.thirdparty;
2+
3+
import java.util.Set;
4+
5+
import com.mageddo.aptools.ClassUtils;
6+
7+
import org.slf4j.Logger;
8+
import org.slf4j.LoggerFactory;
9+
10+
import nativeimage.Reflection;
11+
import static nativeimage.core.ReflectionUtils.getClassName;
12+
import static nativeimage.core.thirdparty.ThirdPartyPackageScanner.findPackageClasses;
13+
14+
public class ThirdPartyReflectionConfigGenerator {
15+
16+
private final Logger log = LoggerFactory.getLogger(getClass());
17+
18+
void addClass(Class<?> clazz, Reflection reflection) {
19+
log.debug("m=addClass, clazz=%s", clazz, clazz);
20+
// todo check if the name is correct
21+
// for (final ReflectionConfig config : ReflectionConfigBuilder.of(reflection, clazz)) {
22+
// }
23+
}
24+
25+
26+
void addClassAndNested(Reflection reflection, Class<?> clazz) {
27+
this.addClass(clazz, reflection);
28+
for (final Class<?> innerClass : ClassUtils.findNestClasses(clazz)) {
29+
this.addClass(innerClass, reflection);
30+
log.debug("m=addMatchingProjectLibsClasses, innerClass=%s", innerClass);
31+
}
32+
}
33+
34+
void addMatchingProjectLibsClasses(Reflection reflection) {
35+
if (reflection.scanPackage().isEmpty()) {
36+
this.addClassAndNested(reflection, ClassUtils.forName(getClassName(reflection)));
37+
} else {
38+
final Set<Class<?>> classes = findPackageClasses(reflection.scanPackage());
39+
for (final Class<?> clazz : classes) {
40+
this.addClass(clazz, reflection);
41+
}
42+
}
43+
}
44+
45+
}

0 commit comments

Comments
 (0)